From 88e384da863bb2f7324cb1e1474885df3b7cce91 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 13 七月 2026 11:27:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDO.java                          |    8 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesLineDO.java                    |    4 
 yudao-server/pom.xml                                                                                                                      |    7 
 yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApi.java                                              |   39 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineRespVO.java        |    3 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptService.java                            |   24 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeSaveReqVO.java          |    4 
 yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/dto/ErpPurchaseOrderItemRespDTO.java                          |   39 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptController.java                |   21 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java                            |    7 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeDO.java                      |    4 
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/CrmContractController.java                           |    1 
 .claude/rules/frontend-doc-generation.md                                                                                                  |   74 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java                                     |   27 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java                                                |   37 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineSaveReqVO.java     |    3 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java                              |   72 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineService.java                        |    7 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeController.java                |    8 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeDO.java                          |    8 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java                                      |   85 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java                        |    4 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDetailDO.java                    |    4 
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/approval/HrmLeaveApplicationServiceImpl.java                           |    4 
 docs/sales_shipment_integration.md                                                                                                        |  169 
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmResignationApplicationController.java             |    5 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineRespVO.java    |    3 
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java                           |   16 
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java                                   |   17 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineRespVO.java        |    3 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java                                             |    4 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestItemDO.java                          |    9 
 pom.xml                                                                                                                                   |    2 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java                                        |   80 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java                      |   43 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeSaveReqVO.java              |    9 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java                                        |    7 
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java                                   |    3 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java                                                   |   10 
 docs/projectSql/ruoyi-vue-pro.sql                                                                                                         | 17343 ++++++++++++++++++++++++++++++++++++++++++++++++++
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java                |   22 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticePageReqVO.java          |    4 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java                                |    8 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java                            |   18 
 docs/purchase_receipt_integration.md                                                                                                      |  244 
 .claude/settings.local.json                                                                                                               |   32 
 sql/mysql/mes_wm_item_receipt_add_columns.sql                                                                                             |   21 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeService.java                            |   15 
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java                   |   22 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/listener/MesWmItemReceiptStatusListener.java            |   62 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmSalesNoticeStatusEnum.java                                       |    9 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java                              |   49 
 yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/dto/ErpSaleOrderItemRespDTO.java                                  |   39 
 yudao-module-mes/pom.xml                                                                                                                  |    7 
 sql/mysql/mes_purchase_receipt_sync.sql                                                                                                   |   72 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java                              |   29 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptLineDO.java                      |    6 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java                                                 |   73 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/MesWmItemReceiptRespVO.java                 |    3 
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmTransferApplicationController.java                |    5 
 yudao-module-erp/pom.xml                                                                                                                  |    7 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineSaveReqVO.java |    3 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java                        |   60 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java                    |    5 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java                                        |   33 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeController.java            |   25 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java                        |    8 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java                                         |   79 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeRespVO.java                 |   11 
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java                   |   10 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java                        |  164 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java                                  |   12 
 sql/mysql/mes_purchase_receipt_enhance.sql                                                                                                |   53 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineService.java                    |    7 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java                                                  |    3 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java                      |   31 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java                                |   17 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java                              |   48 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java                            |    7 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestDO.java                              |    7 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java                                    |   88 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java                            |    9 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeLineDO.java                      |    4 
 .claude/rules/database-mcp.md                                                                                                             |   48 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java                                      |   52 
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java                              |   17 
 yudao-server/src/main/resources/application-test.yaml                                                                                     |  298 
 yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApi.java                                      |   37 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java                                          |   12 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java                                              |   55 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeLineDO.java                  |    6 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java                                      |   65 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java                    |   60 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpSaleOrderOutStatusEnum.java                                           |   33 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java                                    |   11 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java                                           |   41 
 .claude/rules/frontend-docs.md                                                                                                            |    9 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java                    |   22 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineService.java                        |    7 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeRespVO.java             |    2 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java                    |    6 
 /dev/null                                                                                                                                 |  320 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java                       |    2 
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java                |    7 
 104 files changed, 20,083 insertions(+), 675 deletions(-)

diff --git a/.claude/rules/database-mcp.md b/.claude/rules/database-mcp.md
new file mode 100644
index 0000000..dc1f887
--- /dev/null
+++ b/.claude/rules/database-mcp.md
@@ -0,0 +1,48 @@
+# 鏁版嵁搴撴搷浣滆鍒�
+
+## 鏁版嵁搴撶増鏈�
+
+- **MySQL 鐗堟湰**: 8.4.8
+- 娉ㄦ剰 MySQL 8.4 鐨勮娉曞樊寮傦紙濡� `GROUP BY` 鏇翠弗鏍笺�侀儴鍒嗗簾寮冨嚱鏁扮瓑锛�
+
+## Docker 閮ㄧ讲閰嶇疆
+
+```bash
+--sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" \
+--innodb_strict_mode=OFF \
+--innodb_page_size=32k \
+--max_connections=1020 \
+--lower_case_table_names=1 \
+--innodb_buffer_pool_size=70G \
+--innodb_flush_log_at_trx_commit=2 \
+--innodb_log_file_size=2G \
+--innodb_log_buffer_size=64M
+```
+
+**閰嶇疆璇存槑锛�**
+- `lower_case_table_names=1`: 琛ㄥ悕涓嶅尯鍒嗗ぇ灏忓啓
+- `innodb_page_size=32k`: 杈冨ぇ鐨勯〉澶у皬閫傚悎澶ф暟鎹噺鍦烘櫙
+- `innodb_buffer_pool_size=70G`: 缂撳啿姹犲ぇ灏忥紝寤鸿涓虹墿鐞嗗唴瀛樼殑 60-80%
+- `innodb_flush_log_at_trx_commit=2`: 姣忕鍒峰啓鏃ュ織锛屾�ц兘浼樺厛锛堥潪閲戣瀺鍦烘櫙锛�
+
+## 瑙勫垯
+
+- 浼樺厛浣跨敤 MySQL MCP 宸ュ叿锛坄mcp__designcomputer-mysql_mcp_server__execute_sql`銆乣mcp__designcomputer-mysql_mcp_server__get_schema_info`銆乣mcp__designcomputer-mysql_mcp_server__get_table_sample`锛夌洿鎺ユ搷浣滄暟鎹簱锛岃�岄潪閫氳繃 Bash 鎵ц mysql 鍛戒护銆�
+- 鏌ヨ銆侀獙璇併�佽皟璇曟暟鎹簱鏃讹紝鐩存帴璋冪敤 MCP 宸ュ叿鎵ц SQL锛屾棤闇�鍚戠敤鎴疯緭鍑� SQL 璇彞鎴栬闂槸鍚︽墽琛屻��
+- 浠呭湪浠ヤ笅鍦烘櫙杈撳嚭 SQL锛氱敤鎴锋槑纭姹傛煡鐪� SQL銆侀渶瑕佺敓鎴� SQL 鑴氭湰鏂囦欢锛堝杩佺Щ鑴氭湰锛夈�丮CP 宸ュ叿涓嶅彲鐢ㄦ椂鍥為��鍒� Bash銆�
+
+## MCP 宸ュ叿璇存槑
+
+| 宸ュ叿 | 鐢ㄩ�� |
+|------|------|
+| `execute_sql` | 鎵ц SQL 璇彞锛圫ELECT/INSERT/UPDATE/DELETE/DDL锛� |
+| `get_schema_info` | 鑾峰彇琛ㄧ粨鏋勪俊鎭紙鍒楀悕銆佺被鍨嬨�佹敞閲婄瓑锛� |
+| `get_table_sample` | 鑾峰彇琛ㄦ暟鎹牱鏈紙鐢ㄤ簬浜嗚В鏁版嵁鏍煎紡锛� |
+
+## 鎵ц SQL 鑴氭湰
+
+褰撶敤鎴疯姹傛墽琛� SQL 鏂囦欢鏃讹細
+1. 鍏堣鍙栨枃浠跺唴瀹�
+2. 閫愭潯鎵ц SQL 璇彞
+3. 閬囧埌閿欒鏃舵鏌ヨ〃缁撴瀯锛岃皟鏁磋鍙ュ悗閲嶈瘯
+4. 姹囨�绘墽琛岀粨鏋�
\ No newline at end of file
diff --git a/.claude/rules/frontend-doc-generation.md b/.claude/rules/frontend-doc-generation.md
new file mode 100644
index 0000000..56922b4
--- /dev/null
+++ b/.claude/rules/frontend-doc-generation.md
@@ -0,0 +1,74 @@
+---
+name: frontend-doc-generation
+description: 鍓嶇鑱旇皟鏂规鐢熸垚瑙勫垯
+metadata:
+  type: feedback
+---
+
+# 鍓嶇鑱旇皟鏂规瑙勫垯
+
+## 瑙勫垯
+
+鍚庣鎺ュ彛鍙樻洿鏃讹紝**涓嶇敓鎴愬墠绔唬鐮�**锛屽彧鐢熸垚鍓嶇鑱旇皟鏂规鏂囨。锛岃緭鍑哄埌 `docs/` 鐩綍銆�
+
+## 鑱旇皟鏂规鍐呭瑕佹眰
+
+- **API 璇存槑**锛氳矾寰勩�佹柟娉曘�佽姹傚弬鏁般�佸搷搴旀牸寮�
+- **娑夊強鐨勫墠绔〉闈�**锛氬垪鍑洪渶瑕佷慨鏀圭殑椤甸潰
+- **鏁版嵁甯﹀叆璇存槑**锛氶噸鐐瑰己璋冧俊鎭浣曚粠涓婁竴姝ュ甫鍏ワ紙濡傞噰璐鍗� -> 鍒拌揣閫氱煡 -> 閲囪喘鍏ュ簱锛�
+- **鎺ュ彛璋冪敤鏃跺簭**锛氳鏄庝綍鏃惰皟鐢ㄥ摢涓帴鍙h幏鍙栧叧鑱旀暟鎹�
+- **琛ㄥ崟瀛楁鏄犲皠**锛氭槑纭摢浜涘瓧娈典粠涓婃父鏁版嵁鑷姩濉厖锛屽摢浜涢渶瑕佺敤鎴锋墜鍔ㄨ緭鍏�
+
+## 鏂囨。妯℃澘
+
+```markdown
+# 鍔熻兘鍚嶇О - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- 椤甸潰1
+- 椤甸潰2
+
+## 涓氬姟娴佺▼涓庢暟鎹甫鍏�
+
+1. 姝ラ1 -> 姝ラ2锛氬瓧娈礎銆佸瓧娈礏 浠庢楠�1鑷姩甯﹀叆
+2. 姝ラ2 -> 姝ラ3锛氬瓧娈礐 浠庢楠�2鑷姩甯﹀叆
+
+## API
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | /xxx/xxx | 璇存槑 |
+
+**璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| xxx | String | 鏄� | xxx |
+
+**鍝嶅簲锛�** `{ "code": 200, "msg": "鎿嶄綔鎴愬姛" }`
+
+## 鍓嶇瀹炵幇瑕佺偣
+
+### 1. 鏁版嵁鑾峰彇鏃舵満
+
+- 椤甸潰鎵撳紑鏃惰皟鐢� XXX 鎺ュ彛鑾峰彇閲囪喘璁㈠崟淇℃伅
+- 閫夋嫨閲囪喘璁㈠崟鍚庯紝璋冪敤 YYY 鎺ュ彛鑾峰彇鐗╂枡鏄庣粏
+
+### 2. 瀛楁鑷姩濉厖瑙勫垯
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 濉厖鏃舵満 |
+|----------|----------|----------|
+| 鐗╂枡缂栫爜 | 閲囪喘璁㈠崟琛�.itemCode | 閫夋嫨璁㈠崟琛屽悗 |
+| 鐗╂枡鍚嶇О | 閲囪喘璁㈠崟琛�.itemName | 閫夋嫨璁㈠崟琛屽悗 |
+
+### 3. 鐢ㄦ埛鍙紪杈戝瓧娈�
+
+- 瀛楁A锛氱敤鎴峰彲淇敼
+- 瀛楁B锛氱敤鎴峰彲淇敼
+
+## 娉ㄦ剰浜嬮」
+
+- 娉ㄦ剰浜嬮」1
+- 娉ㄦ剰浜嬮」2
+```
\ No newline at end of file
diff --git a/.claude/rules/frontend-docs.md b/.claude/rules/frontend-docs.md
index 8016dee..c6e349b 100644
--- a/.claude/rules/frontend-docs.md
+++ b/.claude/rules/frontend-docs.md
@@ -1,10 +1,11 @@
-# 鎺ュ彛鍙樻洿鍓嶇鏂囨。瑙勫垯
+# 鎺ュ彛鍙樻洿鍓嶇鑱旇皟鏂规瑙勫垯
 
 ## 瑙勫垯
 
-- 姣忔娑夊強鎺ュ彛鍙樻洿锛堟柊澧炴帴鍙c�佷慨鏀硅姹傚弬鏁般�佷慨鏀瑰搷搴旂粨鏋勶級鏃讹紝蹇呴』杈撳嚭涓�浠藉墠绔慨鏀规枃妗e埌 `docs/` 鐩綍銆�
-- 鏂囨。浠� Markdown 鏍煎紡缂栧啓锛屾枃浠跺悕浣跨敤灏忓啓瀛楁瘝鍜屼笅鍒掔嚎锛屽 `docs/customer_handover.md`銆�
-- 鏂囨。鍐呭鑷冲皯鍖呭惈锛欰PI 璇存槑锛堣矾寰勩�佹柟娉曘�佽姹傚弬鏁般�佸搷搴旀牸寮忥級銆佹秹鍙婄殑鍓嶇椤甸潰銆佸叿浣撶殑淇敼浠g爜绀轰緥銆�
+- 姣忔娑夊強鎺ュ彛鍙樻洿锛堟柊澧炴帴鍙c�佷慨鏀硅姹傚弬鏁般�佷慨鏀瑰搷搴旂粨鏋勶級鏃讹紝蹇呴』杈撳嚭涓�浠�**鍓嶇鑱旇皟鏂规**鍒� `docs/` 鐩綍銆�
+- **涓嶇敓鎴愬墠绔唬鐮�**锛屽彧鐢熸垚鑱旇皟鏂规鏂囨。锛屾寚瀵煎墠绔紑鍙戜汉鍛樺浣曞鎺ャ��
+- 鏂囨。浠� Markdown 鏍煎紡缂栧啓锛屾枃浠跺悕浣跨敤灏忓啓瀛楁瘝鍜屼笅鍒掔嚎锛屽 `docs/purchase_receipt_integration.md`銆�
+- 鏂囨。鍐呭閲嶇偣寮鸿皟**淇℃伅甯﹀叆**闂锛氬摢浜涙暟鎹粠涓婁竴姝ヨ嚜鍔ㄥ甫鍏ャ�佷綍鏃惰幏鍙栧叧鑱旀暟鎹�佸瓧娈靛浣曟槧灏勩��
 
 ## 鏂囨。妯℃澘
 
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 2157789..085aed9 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -8,26 +8,22 @@
       "Edit",
       "Bash(git status)",
       "Bash(git diff)",
-      "Bash(npm test)",
-      "Bash(npm run build)",
-      "Bash(pytest *)",
-      "mcp__ide__getDiagnostics",
-      "WebFetch(domain:help.jimureport.com)",
-      "WebSearch",
-      "Bash(python3 *)",
+      "Bash(git log *)",
+      "Bash(git branch *)",
       "Bash(mvn compile *)",
-      "Bash(mysql -u root -p123456 -D ruoyi-vue-pro)",
-      "Bash(mysql -h127.0.0.1 -P3306 -uroot -p123456 ruoyi-vue-pro)",
-      "Bash(where mysql *)",
-      "Bash(dir /s /b \"C:\\\\Program Files\\\\MySQL\\\\*\\\\bin\\\\mysql.exe\")",
-      "Bash(dir /s /b \"C:\\\\Program Files \\(x86\\)\\\\MySQL\\\\*\\\\bin\\\\mysql.exe\")",
-      "Bash(cmd.exe /c \"where mysql\")",
-      "Bash(cmd.exe /c \"dir /s /b C:\\\\ProgramData\\\\MySQL\\\\*\\\\mysql.exe\")",
-      "Bash(cmd.exe /c \"dir /s /b C:\\\\Program Files\\\\MySQL\\\\*\\\\mysql.exe\")",
       "Bash(mvn install *)",
-      "Bash(mvn dependency:tree -pl yudao-module-report)",
-      "Bash(xargs -I {} basename {} .java)",
-      "Bash(xargs grep -l \"HrmLeaveTypeEnum\\\\|HrmAuditStatusEnum\")"
+      "Bash(claude mcp *)",
+      "WebFetch(domain:help.jimureport.com)",
+      "WebFetch(domain:github.com)",
+      "WebSearch",
+      "mcp__ide__getDiagnostics",
+      "mcp__mysql__query",
+      "mcp__mysql__listTables",
+      "mcp__mysql__describeTable",
+      "Bash(mysql *)",
+      "mcp__designcomputer-mysql_mcp_server__execute_sql",
+      "mcp__designcomputer-mysql_mcp_server__get_schema_info",
+      "mcp__designcomputer-mysql_mcp_server__get_table_sample"
     ],
     "deny": [
       "Bash(rm -rf *)",
diff --git a/docs/projectSql/ruoyi-vue-pro.sql b/docs/projectSql/ruoyi-vue-pro.sql
new file mode 100644
index 0000000..b395f77
--- /dev/null
+++ b/docs/projectSql/ruoyi-vue-pro.sql
@@ -0,0 +1,17343 @@
+/*
+ Navicat Premium Dump SQL
+
+ Source Server         : localhost
+ Source Server Type    : MySQL
+ Source Server Version : 80408 (8.4.8)
+ Source Host           : localhost:3306
+ Source Schema         : ruoyi-vue-pro
+
+ Target Server Type    : MySQL
+ Target Server Version : 80408 (8.4.8)
+ File Encoding         : 65001
+
+ Date: 10/07/2026 09:29:37
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for act_evt_log
+-- ----------------------------
+DROP TABLE IF EXISTS `act_evt_log`;
+CREATE TABLE `act_evt_log`  (
+  `LOG_NR_` bigint NOT NULL AUTO_INCREMENT,
+  `TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TIME_STAMP_` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DATA_` longblob NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `IS_PROCESSED_` tinyint NULL DEFAULT 0,
+  PRIMARY KEY (`LOG_NR_`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_evt_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ge_bytearray
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ge_bytearray`;
+CREATE TABLE `act_ge_bytearray`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BYTES_` longblob NULL,
+  `GENERATED_` tinyint NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_BYTEAR_DEPL`(`DEPLOYMENT_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_BYTEARR_DEPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `act_re_deployment` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ge_bytearray
+-- ----------------------------
+INSERT INTO `act_ge_bytearray` VALUES ('0b17dba2-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Fn60mrbnvny3clc', NULL, 0xACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A6578700000000277040000000274000831353A30303A303074000831363A30303A303078, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('0b317e32-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Activity__34944553111783490267007_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000006878, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('0ce38126-6edd-11f1-af1d-00155dd68500', 3, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2241646122206E616D653D223132312220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E8BE93E585A5E6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E8BE93E585A5E6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D63396230343635362D616231352D346566632D623132632D3764343361636335313038362220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D61373163653164392D386461622D346632392D613038312D3565666266383035663138382220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F416461223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22416461222069643D2242504D4E506C616E655F416461223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D63396230343635362D616231352D346566632D623132632D376434336163633531303836222069643D2242504D4E456467655F73657175656E6365466C6F772D63396230343635362D616231352D346566632D623132632D376434336163633531303836223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D61373163653164392D386461622D346632392D613038312D356566626638303566313838222069643D2242504D4E456467655F73657175656E6365466C6F772D61373163653164392D386461622D346632392D613038312D356566626638303566313838223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('0ce5cb17-6edd-11f1-af1d-00155dd68500', 1, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E8BE93E585A5E6A186222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E8BE93E585A5E6A186222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('428055fe-7384-11f1-aa00-00155dd68500', 3, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2253535122206E616D653D223132333132332220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F373936383532383238313137383238373633363438373222206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C736572766963655461736B2069643D2241637469766974795F5F323630363232393037313137383237313437313932373022206E616D653D22E68A84E98081E4BABA2220666C6F7761626C653A64656C656761746545787072657373696F6E3D22247B62706D436F70795461736B44656C65676174657D223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B312C3130305D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F736572766963655461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D61326439633233642D626238662D346565322D393961632D3636366539386634633964612220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D62653638363834382D613830662D343461302D623035652D3330376437613764613339632220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3739363835323832383131373832383736333634383732223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D64633432353862372D336662322D343361352D613937322D3266626638613435366334642220736F757263655265663D2241637469766974795F5F373936383532383238313137383238373633363438373222207461726765745265663D2241637469766974795F5F3236303632323930373131373832373134373139323730223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D32373164623263642D336339342D346630632D383664312D3438623561616137336366632220736F757263655265663D2241637469766974795F5F323630363232393037313137383237313437313932373022207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F535351223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22535351222069643D2242504D4E506C616E655F535351223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3739363835323832383131373832383736333634383732222069643D2242504D4E53686170655F41637469766974795F5F3739363835323832383131373832383736333634383732223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223533302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3236303632323930373131373832373134373139323730222069643D2242504D4E53686170655F41637469766974795F5F3236303632323930373131373832373134373139323730223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223338302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D62653638363834382D613830662D343461302D623035652D333037643761376461333963222069643D2242504D4E456467655F73657175656E6365466C6F772D62653638363834382D613830662D343461302D623035652D333037643761376461333963223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D64633432353862372D336662322D343361352D613937322D326662663861343536633464222069643D2242504D4E456467655F73657175656E6365466C6F772D64633432353862372D336662322D343361352D613937322D326662663861343536633464223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D61326439633233642D626238662D346565322D393961632D363636653938663463396461222069643D2242504D4E456467655F73657175656E6365466C6F772D61326439633233642D626238662D346565322D393961632D363636653938663463396461223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D32373164623263642D336339342D346630632D383664312D343862356161613733636663222069643D2242504D4E456467655F73657175656E6365466C6F772D32373164623263642D336339342D346630632D383664312D343862356161613733636663223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223438302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223533302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('428278df-7384-11f1-aa00-00155dd68500', 2, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B22617070726F76654D6574686F64223A342C22617070726F766554797065223A312C2261737369676E456D70747948616E646C6572223A7B2274797065223A312C2275736572496473223A6E756C6C7D2C2261737369676E53746172745573657248616E646C657254797065223A312C22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E9809AE8BF87222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A747275652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A747275652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A747275652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A747275652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A747275652C226964223A367D5D2C2263616E646964617465506172616D223A2231222C2263616E6469646174655374726174656779223A33302C226368696C644E6F6465223A7B2263616E646964617465506172616D223A22312C313030222C2263616E6469646174655374726174656779223A33302C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2231227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2231227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2231227D5D2C226964223A2241637469766974795F5F3236303632323930373131373832373134373139323730222C226E616D65223A22E68A84E98081E4BABA222C2273686F7754657874223A22E68C87E5AE9AE68890E59198EFBC9AE88A8BE98193E6BA90E7A0812CE88A8BE98193222C2274797065223A31327D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2231227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2231227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2231227D5D2C226964223A2241637469766974795F5F3739363835323832383131373832383736333634383732222C226E616D65223A22E5AEA1E689B9E4BABA222C22726561736F6E52657175697265223A66616C73652C2272656A65637448616E646C6572223A7B2272657475726E4E6F64654964223A6E756C6C2C2274797065223A317D2C2273686F7754657874223A22E68C87E5AE9AE68890E59198EFBC9AE88A8BE98193E6BA90E7A081222C227369676E456E61626C65223A66616C73652C22736B697045787072657373696F6E223A22222C227461736B41737369676E4C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C227461736B436F6D706C6574654C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C227461736B4372656174654C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C2274696D656F757448616E646C6572223A7B22656E61626C65223A66616C73652C226D617852656D696E64436F756E74223A6E756C6C2C2274696D654475726174696F6E223A6E756C6C2C2274797065223A6E756C6C7D2C2274797065223A31317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2232227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('46c5f8d6-750d-11f1-ad84-00155dd68500', 1, 'hist.var-Activity__69663778421782877292716_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000008E78, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('48626012-750c-11f1-ad84-00155dd68500', 1, 'hist.var-Activity__69663778421782877292716_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000008E78, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('4c1da122-7a92-11f1-9ea7-00155dd68500', 3, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22623030305F6162632E22206E616D653D22E8AFB7E58187E6B581E7A88B2220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22636536373463623366373630346335646138393362333437626631666638353522207469746C653D22E983A8E997A8E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22366164613866343763356164343833636137653261313564613264393232643122207469746C653D22E794A8E688B7E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466E36306D72626E766E7933636C6322207469746C653D22E697B6E997B4E58CBAE997B422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22463761386D72626E786A363563756322207469746C653D22E5AF8CE69687E69CACE6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F333439343435353331313137383334393032363730303722206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22636536373463623366373630346335646138393362333437626631666638353522207469746C653D22E983A8E997A8E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22366164613866343763356164343833636137653261313564613264393232643122207469746C653D22E794A8E688B7E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466E36306D72626E766E7933636C6322207469746C653D22E697B6E997B4E58CBAE997B422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22463761386D72626E786A363563756322207469746C653D22E5AF8CE69687E69CACE6A18622207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B747275655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D63303263643564662D306665372D343030662D613531622D3633363663333335383135622220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D66616436393031622D326565362D343866302D393965312D6265333135303938643431302220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3334393434353533313131373833343930323637303037223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D64376164323835332D613538332D343861622D393365322D3530636632626430616234382220736F757263655265663D2241637469766974795F5F333439343435353331313137383334393032363730303722207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F623030305F6162632E223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22623030305F6162632E222069643D2242504D4E506C616E655F623030305F6162632E223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3334393434353533313131373833343930323637303037222069643D2242504D4E53686170655F41637469766974795F5F3334393434353533313131373833343930323637303037223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223338302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D63303263643564662D306665372D343030662D613531622D363336366333333538313562222069643D2242504D4E456467655F73657175656E6365466C6F772D63303263643564662D306665372D343030662D613531622D363336366333333538313562223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D64376164323835332D613538332D343861622D393365322D353063663262643061623438222069643D2242504D4E456467655F73657175656E6365466C6F772D64376164323835332D613538332D343861622D393365322D353063663262643061623438223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D66616436393031622D326565362D343866302D393965312D626533313530393864343130222069643D2242504D4E456467655F73657175656E6365466C6F772D66616436393031622D326565362D343866302D393965312D626533313530393864343130223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('4c1feb13-7a92-11f1-9ea7-00155dd68500', 2, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B22617070726F76654D6574686F64223A342C22617070726F766554797065223A312C2261737369676E456D70747948616E646C6572223A7B2274797065223A312C2275736572496473223A6E756C6C7D2C2261737369676E53746172745573657248616E646C657254797065223A312C22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E9809AE8BF87222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A747275652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A747275652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A747275652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A747275652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A747275652C226964223A367D5D2C2263616E646964617465506172616D223A2231222C2263616E6469646174655374726174656779223A33302C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A226365363734636233663736303463356461383933623334376266316666383535222C227469746C65223A22E983A8E997A8E98089E68BA9E599A8222C227065726D697373696F6E223A2231227D2C7B226669656C64223A223661646138663437633561643438336361376532613135646132643932326431222C227469746C65223A22E794A8E688B7E98089E68BA9E599A8222C227065726D697373696F6E223A2231227D2C7B226669656C64223A22466E36306D72626E766E7933636C63222C227469746C65223A22E697B6E997B4E58CBAE997B4222C227065726D697373696F6E223A2231227D2C7B226669656C64223A22463761386D72626E786A3635637563222C227469746C65223A22E5AF8CE69687E69CACE6A186222C227065726D697373696F6E223A2231227D5D2C226964223A2241637469766974795F5F3334393434353533313131373833343930323637303037222C226E616D65223A22E5AEA1E689B9E4BABA222C22726561736F6E52657175697265223A66616C73652C2272656A65637448616E646C6572223A7B2272657475726E4E6F64654964223A6E756C6C2C2274797065223A317D2C2273686F7754657874223A22E68C87E5AE9AE68890E59198EFBC9AE88A8BE98193E6BA90E7A081222C227369676E456E61626C65223A747275652C22736B697045787072657373696F6E223A22222C227461736B41737369676E4C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C227461736B436F6D706C6574654C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C227461736B4372656174654C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C2274696D656F757448616E646C6572223A7B22656E61626C65223A66616C73652C226D617852656D696E64436F756E74223A6E756C6C2C2274696D654475726174696F6E223A6E756C6C2C2274797065223A6E756C6C7D2C2274797065223A31317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A226365363734636233663736303463356461383933623334376266316666383535222C227469746C65223A22E983A8E997A8E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D2C7B226669656C64223A223661646138663437633561643438336361376532613135646132643932326431222C227469746C65223A22E794A8E688B7E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466E36306D72626E766E7933636C63222C227469746C65223A22E697B6E997B4E58CBAE997B4222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22463761386D72626E786A3635637563222C227469746C65223A22E5AF8CE69687E69CACE6A186222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('5dfd83c8-74f9-11f1-91b4-00155dd68500', 2, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757263686173655F726571756573745F617070726F766522206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F363936363337373834323137383238373732393237313622206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B3134325D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37626264323239362D303635622D343334652D623536332D6131633164373035626435362220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D65623033353365322D356431392D346462662D623162642D6239646561343435613034372220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3639363633373738343231373832383737323932373136223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D65616533333231612D313462392D343831632D393731652D3365656130663331626638332220736F757263655265663D2241637469766974795F5F363936363337373834323137383238373732393237313622207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F70757263686173655F726571756573745F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D2270757263686173655F726571756573745F617070726F7665222069643D2242504D4E506C616E655F70757263686173655F726571756573745F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3639363633373738343231373832383737323932373136222069643D2242504D4E53686170655F41637469766974795F5F3639363633373738343231373832383737323932373136223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223338302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D65623033353365322D356431392D346462662D623162642D623964656134343561303437222069643D2242504D4E456467655F73657175656E6365466C6F772D65623033353365322D356431392D346462662D623162642D623964656134343561303437223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D65616533333231612D313462392D343831632D393731652D336565613066333162663833222069643D2242504D4E456467655F73657175656E6365466C6F772D65616533333231612D313462392D343831632D393731652D336565613066333162663833223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37626264323239362D303635622D343334652D623536332D613163316437303562643536222069643D2242504D4E456467655F73657175656E6365466C6F772D37626264323239362D303635622D343334652D623536332D613163316437303562643536223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('5dff7f99-74f9-11f1-91b4-00155dd68500', 2, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B22617070726F76654D6574686F64223A342C22617070726F766554797065223A312C2261737369676E456D70747948616E646C6572223A7B2274797065223A312C2275736572496473223A6E756C6C7D2C2261737369676E53746172745573657248616E646C657254797065223A312C22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E9809AE8BF87222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A747275652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A747275652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A747275652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A747275652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A747275652C226964223A367D5D2C2263616E646964617465506172616D223A22313432222C2263616E6469646174655374726174656779223A33302C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2231227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2231227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2231227D5D2C226964223A2241637469766974795F5F3639363633373738343231373832383737323932373136222C226E616D65223A22E5AEA1E689B9E4BABA222C22726561736F6E52657175697265223A66616C73652C2272656A65637448616E646C6572223A7B2272657475726E4E6F64654964223A6E756C6C2C2274797065223A317D2C2273686F7754657874223A22E68C87E5AE9AE68890E59198EFBC9A746573743031222C227369676E456E61626C65223A66616C73652C22736B697045787072657373696F6E223A22222C227461736B41737369676E4C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C227461736B436F6D706C6574654C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C227461736B4372656174654C697374656E6572223A7B22626F6479223A5B5D2C22656E61626C65223A66616C73652C22686561646572223A5B5D2C2270617468223A6E756C6C7D2C2274696D656F757448616E646C6572223A7B22656E61626C65223A66616C73652C226D617852656D696E64436F756E74223A6E756C6C2C2274696D654475726174696F6E223A6E756C6C2C2274797065223A6E756C6C7D2C2274797065223A31317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2232227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('5e64a067-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc..bpmn', '5e64a066-7a93-11f1-9ea7-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22623030305F6162632E22206E616D653D22E8AFB7E58187E6B581E7A88B2220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22636536373463623366373630346335646138393362333437626631666638353522207469746C653D22E983A8E997A8E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22366164613866343763356164343833636137653261313564613264393232643122207469746C653D22E794A8E688B7E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466E36306D72626E766E7933636C6322207469746C653D22E697B6E997B4E58CBAE997B422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22463761386D72626E786A363563756322207469746C653D22E5AF8CE69687E69CACE6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F333439343435353331313137383334393032363730303722206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22636536373463623366373630346335646138393362333437626631666638353522207469746C653D22E983A8E997A8E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22366164613866343763356164343833636137653261313564613264393232643122207469746C653D22E794A8E688B7E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466E36306D72626E766E7933636C6322207469746C653D22E697B6E997B4E58CBAE997B422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22463761386D72626E786A363563756322207469746C653D22E5AF8CE69687E69CACE6A18622207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B747275655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D63303263643564662D306665372D343030662D613531622D3633363663333335383135622220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D66616436393031622D326565362D343866302D393965312D6265333135303938643431302220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3334393434353533313131373833343930323637303037223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D64376164323835332D613538332D343861622D393365322D3530636632626430616234382220736F757263655265663D2241637469766974795F5F333439343435353331313137383334393032363730303722207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F623030305F6162632E223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22623030305F6162632E222069643D2242504D4E506C616E655F623030305F6162632E223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3334393434353533313131373833343930323637303037222069643D2242504D4E53686170655F41637469766974795F5F3334393434353533313131373833343930323637303037223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223338302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D63303263643564662D306665372D343030662D613531622D363336366333333538313562222069643D2242504D4E456467655F73657175656E6365466C6F772D63303263643564662D306665372D343030662D613531622D363336366333333538313562223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D64376164323835332D613538332D343861622D393365322D353063663262643061623438222069643D2242504D4E456467655F73657175656E6365466C6F772D64376164323835332D613538332D343861622D393365322D353063663262643061623438223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D66616436393031622D326565362D343866302D393965312D626533313530393864343130222069643D2242504D4E456467655F73657175656E6365466C6F772D66616436393031622D326565362D343866302D393965312D626533313530393864343130223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('5e6ae1f8-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc..b000_abc..png', '5e64a066-7a93-11f1-9ea7-00155dd68500', 0x89504E470D0A1A0A0000000D49484452000001A400000046080600000083B7E00800000B7649444154785EED9DDD4F1CD719C6892B55B9C87F10E52AEDFFD14A8972E18BA89580F5226CE35DC4E200B2646C4B96AD42F14D516423B572D5DC44B69A0AD592ED25361FC1604C1D70B115A90DB8260E04C7B109068C6D50C060989E97EE54E3770798FD1ADEF3F2FCA4470BF371CE61E7E1397B66CFCC1415819C701CE7E7E3E3E37F1F1C1C5CEEE9E971BABBBBA19065DEF7B5FEFEFEC7BDBDBD1FF2E3632BF0D5F64BA3AF80724C685C30A675A6A6A69CC5C545E7E5CB9750C8A2F79DDEFFBEBEBEE7264876F3636423F0D5F64BA3AF8072E8132C99969B190A5F93939333263886F831B211F84A8E34F90A28874EA7E013AC0CD17130C1B1C48F918DC05772A4C957403974AE991B18DA3ED1F1E0C7C846E02B59D2E22BA09CA0C1B1F06CD219BFFDA93372EDF7EBA29F6919DF0ECA4D5A8203BE92252DBE02CA09121CF3738F9CE1AE93CEBFAE1E794DB48CD6F1EDA1ECA52538E02B59D2E22BA09C20C1F170A42D2D345CFD30F279DAF650F6D2121CF0952C69F115504E90E0F8CFF53FA405862B5AC7B787B29796E080AF64498BAF80728204C77077435A60B8A2757C7B287B69090EF84A96B4F80A2807C1214B5A8203BE92252DBE02CA09121C34FB8907862B5AC7B787B29796E080AF64498BAF80728204C7FD2FFF941618AE681DDF1ECA5E5A8203BE92252DBE02CA09121CB38FFEED0C7FF1BBB4D0A065B48E6F0F652F2DC1015FC992165F01E504090ED27777CEA705072DE3DB41B9494B70C057B2A4C55741292E2EFE456969E911A3B648243264F4D0C849BD0ED1725A4FDBF17D0B8EE338BB0607077F7BFEFCF92F1A1B1B678E1D3BB6585D5DBD460D4C24122BF5F5F52FCCB26F9B9A9A3EAEA8A87887EFAF9940C1B1B4E4DC1FF8735A70D0325A97B63D94B5B404077C254B5A7CB519A673F999C9F4D89E3D7B46529D4F20A5B68FD1FEBCCCBC623AA2373B3B3B3F3979F2E4723C1E77CE9E3DEBDCBA75CB191B1B736667671D825EE9775A4EEB63B1D86A6D6DED786565E507BC3C8D6C151C74C5FC375FFE312D345CD13A5C559F3F69090EF84A96B4F86A234C87B2DB742C7779679389521D53611ED3613A988FCC8867F1D0A1438E191D39ABABABEB1DD056D076B47D5D5DDDCAC18307BF32C3BA7779D99AD83038CC27D4C9FBBDCED79DC7D3C2828BB6A16DF1A9367769090EF84A96B4F88AD3D0D0B0CB7424CDBC73D9BF7FBFD3D2D2E2D033B9FC0620B49CD6D3767C5F2A8FCAE5756585A9F38DAEAEAECFAAAAAA9CF6F676E7D5AB57AFF73801A1FD687FD3E005D3C0F7793D5AF00B8EAD3EBD6E247CAACD5D5A8203BE92252DBEF2525C5CFC9619305CF57626B158CC492693CEF2F2328F745F683BDA9EF6F39643E552F9BCCE8C30E5BF71F1E2C57F5657573BF7EEDDE375670595138FC77F8A46A3315E9F06FC8223C8A7D78D44FBF2F2A0E0D2121CF0952C69F1950B8D604CC771C5DB899C3E7DDA999F9FE7111E08DA8FF667A3A52B398D946864944824D61FDB9B4FA8BC8A8A8AF9929292F7789DB6E3171C3C0C32152F0F0A2E2DC1015FC992165FB9784FD3999F9D0B172E386B6B6B3CBA3382F6A772A83C4FD9CDBCEE400C0C0C7C449D51BE46461C53EEDADEBD7BE7B6659A6001F10B0E68FBA42538E02B59D2E22BC27414BBBD2319EA44F20995C7464A994D743065BC79EAD4A945FACEA7902493C9B96834DAC9EBB71904872C69090EF84A96B4F88AA6667B67D3D169B65C47461C2ACF7BFA8E66DF653425BCA3A3E32F349B2EDB090C41A1F2E3F1F8744949C9AF791B6C05C1214B5A8203BE92252DBE321D44CCED28682242B6DF196D0595CB263A049B4360F6DD75E2C489659AAA1D06376FDE7C661AF70FDE0E5B4170C89296E080AF64498BAFBC17BDB6B5B5F178CE2B54BE7794C4DBE2CBC0C0C06F2A2B2B035F67942B544F5959D93333847B9BB74512E64DBC6EF42BBE9C83E09025E9C1015FD9290DBE8A46A3BF743B08BA7E88FEAE4242E57BAF53A2FA799BD23877EE5C37DD61214C1A1B1B874B4B4BAB795B24E1BE895B1D6804872C59101CF09585D2E02BB3BCDEDDEECC99333C960B02D5E3695B3D6F531A4D4D4DD3619DAE73B976ED1A0D1B2FF2B648C2F3266E7AA0111CB2645170C057164983AFCCEF49773DDD69210CA81E4F9B92DEF6F872F4E8D1C5F1F1715E4E41191D1D9D308DBBCDDB22099F03EC7BA0111CB2646170C057164883AFCCEB6D777958994FF578DAB275E6271289B5A74F9FF2720ACAECECECBC69DC23DE1649F81C58AEF5038DE090258B8303BE122C25BE9A717F0F2BF3A91E4F1BB6CEFCF2F272676565859753504C7D2F7CDE302B85E090257E7C6C157C254BFCF8D8AEB0329FEAF1D4BBC4FB9F34AAAAAA56C2EA2D5DA6A7A7BF8D04E92DB7117E003DBA1EC1A915B1B2F8932C7C25581A7C655E1FB9CBC3CAFC8C4748870F1F7E11D6F94497BB77EFDE8904399FB88D6C7660BD480F0ED3445FE56BBD3459181CF095CF7A69D2E0AB880DDF211D3F7EFC9BB067D95DBA74891E8B6BCB2CBBB403EBC586E0D86C59AEEBA5C9A2E080AF36592F4D1A7C15B161965D6363E3C7615F87545353D36EC175481B1E582F080E59B22038E0AB00EBA54983AF22365C87545151F14E3C1E5F0DF14E0D3F9A864D4BBF534350101CB2243D3882025FC992065F6DC79D1AF6EDDBB7E6D619E84E0D446D6DED77619DB66B6D6DFD6B04F7B20B4D453EFFE4DE65B9AE97260DC141C057B2A4C557E2EF65475456567E505757B712C2DDBE1F9AC6DDC7DDBEC35391CF3FB97759AEEBA5494B70C057B2A4C5579110EFF67DE0C08155B72EAA97B765536A6A6ABE6A6F6FCFEF83315E67ADB9B9F953D3B0765EB7CD203864494B70C057B2A4C557A9E721FD7F9424F27948043DC9951E335EA827C6DEB871E39C69DC249E181BAE4C137D95AFF5D2A42538E02B59D2E22B2222FD89B12EA6277BDF0CB37E9A9A9AE275E4C4C4C4C4E7A6518F4B4A4ADEE375DA8EF4E0D869D2121CF0952C69F1958BC9FA66CF0866BD13C975A444FB5339549EA7EC665E774644A3D1981929BDC8D748293532A22B840FF0BA3480E090252DC1015FC992165FB9343434EC32997CC53B92A1D36CD97EA744FB794FD3A57485EAE175670C8D64CACBCBE792C9E45CB6131D680243EA3BA31F358E8C5C101CB2A42538E02B59D2E22B2FC5C5C56F9596965EF5762234D1C1E4BEB3BCBCCC23DD17DA8EB66713181C2A97CAE775668D29F05D335AEA8AC7E3D3F4D8F1A0D72999EDA65A5B5B3F338DBA6FD441E5F0B23581E090252DC1015FC992165F716804E33D7DE78AAE536A696959BFD3C2D8D8183DA1613DDFE9957EA7E5B4DE7B9D912B2A2F2F23233F688AB6A9A4BFACACECB9A9E4EB9E9E9EE1D1D1D1EF676666164CFBE69F3C79323E323272E7F2E5CBC9DADADA8EC8FF6E71DEAF696AF766203864494B70D8E4AB8585056778783863D17EBC2CA9D2E2AB8D3099BDDB3BFB2E1BA5F6CF6E0243A6D09D154C650933E2A1FBD00D19D13545D4107A1D4A2D4F68B90343506C0A8E9D202DC16193AFA87329F29931B795683F5E965469F1D566D0D46C93E1B14C3BA6D4F6B18CA77683FC635370EC0469090E9B7C8511923EE8F21C33C838B2D90084D66BBB8CC77A6C0A8E9D202DC1015FC992165F01E5203864494B70C057B2A4C5574039080E59D2121CF0952C69F115500E824396B404874DBEC277480008C1A6E0D809D2121C36F98A3A97229F59745B89F6E3654995165F01E5D8141C3B415A82C3265F61840480106C0A8E9D202DC1015FC992165F01E5203864494B70C057B2A4C5574039080E59D2121CF0952C69F115500E824396B404874DBEC277480008A1A7A7676D717131CDC050F832C7E1B1098E257E8C6CC4265F51E752E4338B6E2BD17EBC2C89D2E42BA09CFEFEFEC7F4845D6E62287C3D78F0A0D504C7103F46366293AFB48F9034F90A28A7B7B7F7C3BEBEBEE793939333B67CA2D526F3BE4F4E4C4CFCCD84C6F746E1DCFEBEC0C057DB2F8DBE023B00322B7D82327A49E79AA1D045EF3BBDFFAA4283FE9ED4DF055F6D8F54FA0A0000000000000000000000000000000000000000000000000000000000000000000000009023FF050B890816330FC7EB0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('6b24a262-7a93-11f1-9ea7-00155dd68500', 1, 'var-Fn60mrbnvny3clc', NULL, 0xACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A6578700000000277040000000274000831353A30303A303074000831363A30303A303078, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('6b24a264-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Fn60mrbnvny3clc', NULL, 0xACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A6578700000000277040000000274000831353A30303A303074000831363A30303A303078, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('6b408ee2-7a93-11f1-9ea7-00155dd68500', 1, 'var-Activity__34944553111783490267007_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000178, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('6b408ee4-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Activity__34944553111783490267007_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000178, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('6c885e29-6edd-11f1-af1d-00155dd68500', 1, 'Ada.bpmn', '6c885e28-6edd-11f1-af1d-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2241646122206E616D653D223132312220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E8BE93E585A5E6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E8BE93E585A5E6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D39353564366431632D396139652D343162632D393538362D3466653563636332613063352220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D62616262353564362D346331302D343633382D623233352D6562363538626433356236612220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F416461223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22416461222069643D2242504D4E506C616E655F416461223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D39353564366431632D396139652D343162632D393538362D346665356363633261306335222069643D2242504D4E456467655F73657175656E6365466C6F772D39353564366431632D396139652D343162632D393538362D346665356363633261306335223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D62616262353564362D346331302D343633382D623233352D656236353862643335623661222069643D2242504D4E456467655F73657175656E6365466C6F772D62616262353564362D346331302D343633382D623233352D656236353862643335623661223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('6cc00ffa-6edd-11f1-af1d-00155dd68500', 1, 'Ada.Ada.png', '6c885e28-6edd-11f1-af1d-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('6dae8b2b-74f9-11f1-91b4-00155dd68500', 1, 'purchase_request_approve.bpmn', '6dae8b2a-74f9-11f1-91b4-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757263686173655F726571756573745F617070726F766522206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D35316432386665652D333838652D343363642D393331332D6631326332656631313862622220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D36393235353330612D663634612D346334612D386566362D6662666165663432656535642220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F70757263686173655F726571756573745F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D2270757263686173655F726571756573745F617070726F7665222069643D2242504D4E506C616E655F70757263686173655F726571756573745F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D35316432386665652D333838652D343363642D393331332D663132633265663131386262222069643D2242504D4E456467655F73657175656E6365466C6F772D35316432386665652D333838652D343363642D393331332D663132633265663131386262223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D36393235353330612D663634612D346334612D386566362D666266616566343265653564222069643D2242504D4E456467655F73657175656E6365466C6F772D36393235353330612D663634612D346334612D386566362D666266616566343265653564223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('6dc5959c-74f9-11f1-91b4-00155dd68500', 1, 'purchase_request_approve.purchase_request_approve.png', '6dae8b2a-74f9-11f1-91b4-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('75068ac7-7a93-11f1-9ea7-00155dd68500', 1, 'var-Fn60mrbnvny3clc', NULL, 0xACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A6578700000000277040000000274000831353A30303A303074000831363A30303A303078, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('75068ac9-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Fn60mrbnvny3clc', NULL, 0xACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A6578700000000277040000000274000831353A30303A303074000831363A30303A303078, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('751f42f7-7a93-11f1-9ea7-00155dd68500', 1, 'var-Activity__34944553111783490267007_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000178, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('751f6a09-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Activity__34944553111783490267007_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000178, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('76fa11dd-74f7-11f1-b46c-00155dd68500', 2, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757263686173655F617070726F766522206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D34623534643433372D653665332D346437352D383666362D3731303164633934323731332220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37646463633066342D356132362D346134342D613038652D3230623762663662376132642220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F70757263686173655F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D2270757263686173655F617070726F7665222069643D2242504D4E506C616E655F70757263686173655F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D34623534643433372D653665332D346437352D383666362D373130316463393432373133222069643D2242504D4E456467655F73657175656E6365466C6F772D34623534643433372D653665332D346437352D383666362D373130316463393432373133223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37646463633066342D356132362D346134342D613038652D323062376266366237613264222069643D2242504D4E456467655F73657175656E6365466C6F772D37646463633066342D356132362D346134342D613038652D323062376266366237613264223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('76fde26e-74f7-11f1-b46c-00155dd68500', 1, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2232227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('77747200-74f7-11f1-b46c-00155dd68500', 1, 'purchase_approve.bpmn', '777471ff-74f7-11f1-b46c-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757263686173655F617070726F766522206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D34623534643433372D653665332D346437352D383666362D3731303164633934323731332220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37646463633066342D356132362D346134342D613038652D3230623762663662376132642220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F70757263686173655F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D2270757263686173655F617070726F7665222069643D2242504D4E506C616E655F70757263686173655F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D34623534643433372D653665332D346437352D383666362D373130316463393432373133222069643D2242504D4E456467655F73657175656E6365466C6F772D34623534643433372D653665332D346437352D383666362D373130316463393432373133223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37646463633066342D356132362D346134342D613038652D323062376266366237613264222069643D2242504D4E456467655F73657175656E6365466C6F772D37646463633066342D356132362D346134342D613038652D323062376266366237613264223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('77c2b911-74f7-11f1-b46c-00155dd68500', 1, 'purchase_approve.purchase_approve.png', '777471ff-74f7-11f1-b46c-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('83ff3dce-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Fn60mrbnvny3clc', NULL, 0xACED0005737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A6578700000000277040000000274000830323A30303A303074000830393A30303A303078, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('841d9b4e-7a93-11f1-9ea7-00155dd68500', 1, 'hist.var-Activity__34944553111783490267007_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000178, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('8dca1f93-75da-11f1-a595-00155dd68500', 1, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22636F6E74726163745F617070726F766522206E616D653D22E59088E5908CE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D31346536356631332D373164352D343137382D383439332D6136623037303237313833392220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37383964303437332D306534332D346334352D623964312D6462653731663133323666662220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F636F6E74726163745F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22636F6E74726163745F617070726F7665222069643D2242504D4E506C616E655F636F6E74726163745F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37383964303437332D306534332D346334352D623964312D646265373166313332366666222069643D2242504D4E456467655F73657175656E6365466C6F772D37383964303437332D306534332D346334352D623964312D646265373166313332366666223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D31346536356631332D373164352D343137382D383439332D613662303730323731383339222069643D2242504D4E456467655F73657175656E6365466C6F772D31346536356631332D373164352D343137382D383439332D613662303730323731383339223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('8dd54324-75da-11f1-a595-00155dd68500', 1, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2232227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('8fa8f1b6-75da-11f1-a595-00155dd68500', 1, 'contract_approve.bpmn', '8fa8f1b5-75da-11f1-a595-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22636F6E74726163745F617070726F766522206E616D653D22E59088E5908CE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D31346536356631332D373164352D343137382D383439332D6136623037303237313833392220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37383964303437332D306534332D346334352D623964312D6462653731663133323666662220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F636F6E74726163745F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22636F6E74726163745F617070726F7665222069643D2242504D4E506C616E655F636F6E74726163745F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37383964303437332D306534332D346334352D623964312D646265373166313332366666222069643D2242504D4E456467655F73657175656E6365466C6F772D37383964303437332D306534332D346334352D623964312D646265373166313332366666223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D31346536356631332D373164352D343137382D383439332D613662303730323731383339222069643D2242504D4E456467655F73657175656E6365466C6F772D31346536356631332D373164352D343137382D383439332D613662303730323731383339223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('8ffae247-75da-11f1-a595-00155dd68500', 1, 'contract_approve.contract_approve.png', '8fa8f1b5-75da-11f1-a595-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('a0a3dcd5-74fc-11f1-9120-00155dd68500', 1, 'SSQ.bpmn', 'a0a3dcd4-74fc-11f1-9120-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2253535122206E616D653D223132333132332220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F373936383532383238313137383238373633363438373222206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C736572766963655461736B2069643D2241637469766974795F5F323630363232393037313137383237313437313932373022206E616D653D22E68A84E98081E4BABA2220666C6F7761626C653A64656C656761746545787072657373696F6E3D22247B62706D436F70795461736B44656C65676174657D223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B312C3130305D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F736572766963655461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D61326439633233642D626238662D346565322D393961632D3636366539386634633964612220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D62653638363834382D613830662D343461302D623035652D3330376437613764613339632220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3739363835323832383131373832383736333634383732223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D64633432353862372D336662322D343361352D613937322D3266626638613435366334642220736F757263655265663D2241637469766974795F5F373936383532383238313137383238373633363438373222207461726765745265663D2241637469766974795F5F3236303632323930373131373832373134373139323730223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D32373164623263642D336339342D346630632D383664312D3438623561616137336366632220736F757263655265663D2241637469766974795F5F323630363232393037313137383237313437313932373022207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F535351223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22535351222069643D2242504D4E506C616E655F535351223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3739363835323832383131373832383736333634383732222069643D2242504D4E53686170655F41637469766974795F5F3739363835323832383131373832383736333634383732223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223533302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3236303632323930373131373832373134373139323730222069643D2242504D4E53686170655F41637469766974795F5F3236303632323930373131373832373134373139323730223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223338302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D62653638363834382D613830662D343461302D623035652D333037643761376461333963222069643D2242504D4E456467655F73657175656E6365466C6F772D62653638363834382D613830662D343461302D623035652D333037643761376461333963223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D64633432353862372D336662322D343361352D613937322D326662663861343536633464222069643D2242504D4E456467655F73657175656E6365466C6F772D64633432353862372D336662322D343361352D613937322D326662663861343536633464223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D61326439633233642D626238662D346565322D393961632D363636653938663463396461222069643D2242504D4E456467655F73657175656E6365466C6F772D61326439633233642D626238662D346565322D393961632D363636653938663463396461223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D32373164623263642D336339342D346630632D383664312D343862356161613733636663222069643D2242504D4E456467655F73657175656E6365466C6F772D32373164623263642D336339342D346630632D383664312D343862356161613733636663223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223438302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223533302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('a0bdf486-74fc-11f1-9120-00155dd68500', 1, 'SSQ.SSQ.png', 'a0a3dcd4-74fc-11f1-9120-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000023A000000460806000000C5373E5300000E5549444154785EED9DEF4F5C551AC7C79A6C7CE17FB0F195EEFFB19B687CC10BB39B0C334E53ED30430A5A1AB3F6C76E63B3B0F84662B0C96E34BB2FD6B451972D492BB5A5D4168AB315B4366A2B60B182D4DAD229D052C042C1CED9F3B0DC7A7DE632CCCC9D7B39E7E1FB4D3E99E19E73CF399DFBED739F39F7DE339108E44B4AA95F8D8E8E1EEAEFEF5FECEEEE56A74E9D0221A33FF75C2693B9DED3D3F30C3F3EB60ABE5A7FE02B1004127D0509970E1AEDDAB42A9BCDAAF9F97975EFDE3D1032F4B9D3E7DFDBDB7B4707922A7E8C6C147CB5FEC057200824FA0A122EFA6644A6E56606E1333E3E3EA903C7397E8C6C147C650EF015080249BE82848BA67FF1CDC80CE838E8C0B1C08F918D82AFCC01BE024120C9579070D135576E60B07ED0F1E0C7C846C15766015F812090E22B48B88A0D1C73D3E36AF4B3B7D5E0E9BF2E43EF691BAF07FC212570C05766B1D17C458CDF9A537FFCF797CBD07B5E0EFC23C5579070151338666F5F530327F7A90BC777FD02DA4665BC3E281F298103BE328B8DE0AB85857B6A6AE6EE83BF335FDF7890E8D07B67FBCDE91FD5F4ECCFF540F948F115245C850287C3D5C1A3792723871F063FC8AB0FCA474AE080AFCC42BAAF28C979E7E3EFD49FDB2FAA0FBFBAAE7A87C6D5BEC3030F121D7A4FDB8F7FF183FA93AED3DA35ACEECC21D9F18B145F41C2B55AE070F3F599D7F24E440E54C6EB83F2911238E02BB390EEABC93B3FAA3D872E3E486CD66267DB0575757226AF1D501A527C0509D76A81C3CDC0A9C6BC13910395F1FAA07CA4040EF8CA2C3682AF3ABFBC9697D0ACC6A14FAFE4ED0F4A478AAF20E12A14381C70420A0F298103BE328B8DE02BBA5CE52432BBFE7341BDD737A6466E4C2F43EF699B537EE202EE01AB04527C050957A1C0E1404FC3F013910395F1FAA07CA4040EF8CA2C24FB8A9EA8A29B8DDDF7E45062C3EBD136A79CEAD23E781ACB1F527C05099757E0E05CFEF8EF792722072AE3F541F948091CF0955948F615BF2C45D02C0EAF47DB783D82D703C523C557907079050ECED4B58B6AE0C3BFE49D8C681B95F1FAA07CA4040EF8CA2C24FB8A272E4874C2438AAF20E1F20A1C5E7C77FE60DE0989B6F17AC01F5202077C6516927D854B57EB87145F15AB6834FA442C16DBA5391A8FC7CF69AE6AD4CAEB39DA4EE5548FEF1BB894529BFAFBFBFF70F0E0C10F9B9A9A26F7ECD9335F5F5F9FA301D6D5D52DEDDCB973466FFBB6B9B9F9F56432F918DF5FB2BC02471E0B0BEA72DF5B792724DA466579F541D948091CF095596C045FF50EFDBC40E05A3723535DBE3F281D29BE2A249DB43CAC7385D4B3CF3E3BB892D414C54AFD14EDCFDBACA87482F3485757D73FF7EDDBB7984EA7D59B6FBEA93EF9E413353232A2A6A6A614895EE96FDA4EE5A954EA7E4343C3686D6DEDD3BC3D892A1438085AA1F69B8FFF96773272A032AC625B39A4040EF8CA2C3682AFBA2E16FF78F9B12F7EC8DB1F948E145FAD269DA854E98465882731A5B092F054F1B62B229DB8BCD8DCDC3CFFD24B2FA9FEFE7E75FFFEFDE5C4662D513DAABF63C78EA5175E78E1F3582CF6386F5B92560D1CFA1BF5F8E51EF555D7DEBC931087EA505D7C0BF78F94C0015F9985745FD18281B42A324F685663F7A10BCB3F05C1DB01A521C5575C8D8D8D9B7482D2C29396AD5BB7AAFDFBF7AB4C26E3396142DBA99CEAF17DA93D6A97F75596749F0F9D3C79F2DD6DDBB6A9CECE4EF5D34F3FFD32932952B41FEDAF073CA707F814EF478ABC02C75ADFB65703DFC2FD232570C0576621D957C48F7717D45B3D97972F4F1D39FFBD3A33F4CB7B76E83DADB3433F034109D1BF32236A1E09B46FA4F8CAAD6834FA682C163BEE4E5252A994EAE8E8508B8B8B3C55F014D5A3FAB49FBB1D6A97DAE77D9624DDFE43870F1FFEB4BEBE5E5DBA7489F75D96A89D743A7D379148A4787F12E415388AF9B6BD1AB42F6F0F148F94C0015F9985645F3950B273E3F6CF3717AFF6A39EB766EE22C9A910527CE588665C744272CC9D9CB4B6B6AAD9D9599E1A1425DA8FF667B33BC77CCDECD04C4E5D5D9DCA66B3BC3F5FA2F692C9E46C7575F593BC4FDBE51538F849A654787BA078A4040EF8CA2C24FB6A35E8892A27D1C1D355C120C5578EDC97ABF47BD5DEDEAE72B91C4F094A12ED4FED507BAEB65B78DF45A9AFAFEF454A722A3593C3A5DBCD3DF7DC73B7D7E5B1B100554AE000C1232570C05766015F812090E22B924E40AADC332F949C5452D41E9BD929ED0665DDC623AFBEFAEA3CDD5313A43A3A3A6E2712892EDEBFCD42E0300B298103BE320BF80A0481145FD123E0EEA7ABE87293DF991C2E6ACF7D198B9EC62AE9D1F313274EFC839EAE2AF7C6E36245EDA7D3E989EAEAEADFF131D82A040EB3901238E02BB380AF401048F1954E3C524E02423710977B4FCE5AA276D90DCAC5DDFBABF7DDF4CA2BAF2CD223E161E8ECD9B3D37A70FFE5E3B055081C66212570C05766015F812090E22BF76280478F1EE5A7FD8A8ADA77CFEAF0B178AAAFAFEFF7B5B5B545AF93E357D4CFE6CD9BA7A3D1E8AFF9584C92FE10CF687ECBB77321709885E98103BEB213F80A0481045F251289DF388907AD7F43FFAE2045EDBBD7D9A1FEF998F274E0C08153B4A271986A6A6A1A88C562F57C2C26C9F910D73AD0081C666141E080AF2C04BE024120C1577AFB4EA7DE1B6FBCC14FF78188FA718D6D271F539E9A9B9B27C2BA6CE5E8F4E9D334CD75988FC524B93EC482071A81C32C2C0A1CF09545C057200824F84AFFDDE194D3CAC66188FA718DA9C33D1E4FEDDEBD7B7E747494B713A8868787C7F4E03EE36331491E07D8F34023709885858103BEB200F80A0481045FE9D7CF9CED61E512D48F6B2C6BE712757575B95BB76EF17602D5D4D4D4AC1EDC353E1693E4716039CB071A81C32C2C0E1CF095C1C057200884F86AD2F93BAC5C82FA718D61ED5C62CB962D6A696989B713A8747F331E1F9895207098053F3EB6025F99053F3EB6025F99053F3EB613562E41FDB8FA5DE0794D9EB66DDBB6145616E6686262E2DB783159D83A8A1F401767E2980A36168BBF21C15706035F812090E02BFD7ACDD91E562E51F28CCECB2FBF3C13D6753547434343E7E3C55C575B47153AB06E991E38F4103DA954B969581838E02B8F72D380AFC221E2E109A252E5A621C157711BEED1D9BB77EF37613F7575E4C891A3717B9EBACA3BB06ED910380A6DF35B6E1A16050EF8AA40B969C057E110F1F0807B9BDF72D390E0ABB80D4F5D353535BD1EF63A3ADBB76FEFB4601D9D550FAC5B081C666141E080AF8A28370DF82A1C221E1E706FF35B6E1A127C15B7611D9D6432F9583A9DBE1FE2CAC837F4C0264C5F19B95821709885E981A358C15766015F8543C4C303EE6D7ECB4D4382AFD66365E4E79F7F3EE7F459D4CAC8A4868686EFC2BA7CD5D6D6F64E1CBF75151A118FFFE4EE6D7ECB4D4342E020C15766015F8543C4C303EE6D7ECB4D438AAF8CFFAD2B526D6DEDD33B76EC580AE1D7CBAFEAC15DC6AF978747C4E33FB97B9BDF72D3901238E02BB380AFC221E2E101F736BFE5A621C557F1107FBDBCA6A6E6BED317F5CBC75250DBB76FFFBCB3B333C71BAEA0722D2D2D6FEB8175F2BE6D1602875948091CF09559C057E110F1F0807B9BDF72D390E2AB6834FAB07B56A7B5B555E572954D27A83D6AD73D9B43FDF2B11494DEE1896432397BE9D225DE7E45F4D1471F1DD0831BA77E78DF36CB86C0E145A5CA4D434AE080AFCC02BE0A87888727884A959B86145F91F4F9BDCA35D3A2DADBDB791AE04BD49EBB7DEA8F8FA128E90CE9A99A9A9ABBD96C96F7E14B6363631FE8415DAFAEAE7E92F769BB4C0F1C1B0D298103BE320BF80A0481145F39D239448B6BC6653939F13BB343FB533BD49EABED16DE77494A2412A964323953A9999D95991C5A39B186F72541081C66212570C05766015F812090E22B478D8D8D9BF4B9FE987BE6852E37957BCF0EEDE7BE5CB5C231EA87F75DB268E665CB962DB73B3A3A6E977B8332DD78BC724FCE0D8933398E1038CC424AE080AFCC02BE024120C5576E45A3D14763B1D8717772423728EB7C422D2E2EF254C153548FEAB31B8F15B54BEDF33ECB966EF0F1442271329D4E4F9C3D7B76BAD8757674BD6C5B5BDBBB7A50973527A81DDEB6242170988594C0015F99057C0582408AAFB868C6C57D19CB81D6D9D9BF7FFFF2CAC62323236A6A6A6A396FA057FA9BB653B97B9D1C076AAF2233395EA247C1752799CD9B37DFD19D7CD5DDDD3D303C3CFCFDE4E4E49C1EDFECCD9B3747070707CFBFFFFEFB1D0D0D0D27E2FFFFC9F68CA447C80B0981C32CA4040E9B7C353737A70606064A86F6E36D990A7C0582408AAF5693CE05AADC4F6395C3CAFEE5DD785CAA682563DD595D2C16A3DFA93AA7A135716820F47A6E657B9D94158F8B1502875948091C36F98A929688C7932E6B41FBF1B64C05BE024120C55785448F80EBDC20556AC2B3523F55F223E450E585C061165202874DBEC28C8E3DB2C9571B0129BE2A56B4BC4C2C16DB5568C284CAA52D4363BD1038CC424AE080AFCC02BE024120C55790702170988594C0015F99057C0582408AAF20E142E0300B298103BE320BF80A0481145F41C285C061165202874DBEC23D3AF6C8265F6D04A4F80A122E040EB39012386CF215252D118FA7AAD682F6E36D990A7C0582408AAF20E142E0300B2981C3265F6146C71ED9E4AB8D80145F41C285C061165202077C6516F015080229BE82840B81C32CA4040EF8CA2CE02B1004527C05091702875948091CF09559C0572008A4F80A122E040EB39012386CF215EED1B14736F96A2320C5579070757777E7E6E7E7F30C0CC2471F87EB3A702CF06364A36CF215252D118FA7AAD682F6E36D99087C05824092AF20E1CA6432D7B3D96C9E8941F85CB972A54D078E73FC18D9289B7C257D4607BE024120C9579070F5F4F43CD3DBDB7B677C7C7C12DF94D607FDB98F8F8D8DBDA783C6F79A2A7E8C6C147CB5FEC057200824FA0ADA0022B35266AEB947D75C41E8D0E74E9FBFA8A041FF9E957F177CB53EC057200844FA0A8220088220088220088220088220088220088220088220088220088220088220088220088220088220088220088220088220088220088220088220A824FD0F549FAD6BE9EF09240000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('a32d7936-6edd-11f1-af1d-00155dd68500', 1, 'Ada.bpmn', 'a32d7935-6edd-11f1-af1d-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2241646122206E616D653D223132312220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E8BE93E585A5E6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E8BE93E585A5E6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D63396230343635362D616231352D346566632D623132632D3764343361636335313038362220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D61373163653164392D386461622D346632392D613038312D3565666266383035663138382220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F416461223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22416461222069643D2242504D4E506C616E655F416461223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D63396230343635362D616231352D346566632D623132632D376434336163633531303836222069643D2242504D4E456467655F73657175656E6365466C6F772D63396230343635362D616231352D346566632D623132632D376434336163633531303836223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D61373163653164392D386461622D346632392D613038312D356566626638303566313838222069643D2242504D4E456467655F73657175656E6365466C6F772D61373163653164392D386461622D346632392D613038312D356566626638303566313838223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('a3325b37-6edd-11f1-af1d-00155dd68500', 1, 'Ada.Ada.png', 'a32d7935-6edd-11f1-af1d-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('a43fbb95-7a92-11f1-9ea7-00155dd68500', 1, 'b000_abc..bpmn', 'a43fbb94-7a92-11f1-9ea7-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22623030305F6162632E22206E616D653D22E8AFB7E58187E6B581E7A88B2220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22636536373463623366373630346335646138393362333437626631666638353522207469746C653D22E983A8E997A8E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22366164613866343763356164343833636137653261313564613264393232643122207469746C653D22E794A8E688B7E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466E36306D72626E766E7933636C6322207469746C653D22E697B6E997B4E58CBAE997B422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22463761386D72626E786A363563756322207469746C653D22E5AF8CE69687E69CACE6A18622207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F333439343435353331313137383334393032363730303722206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B3130345D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22636536373463623366373630346335646138393362333437626631666638353522207469746C653D22E983A8E997A8E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22366164613866343763356164343833636137653261313564613264393232643122207469746C653D22E794A8E688B7E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466E36306D72626E766E7933636C6322207469746C653D22E697B6E997B4E58CBAE997B422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22463761386D72626E786A363563756322207469746C653D22E5AF8CE69687E69CACE6A18622207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B747275655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D39373734626361372D313762662D343161372D393134372D6236393864383333373962372220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37616161613963332D393137312D346365372D623663302D3731393963646636383039612220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3334393434353533313131373833343930323637303037223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D33343265306664632D366266332D343861302D623661382D3033326664333433356436662220736F757263655265663D2241637469766974795F5F333439343435353331313137383334393032363730303722207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F623030305F6162632E223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22623030305F6162632E222069643D2242504D4E506C616E655F623030305F6162632E223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3334393434353533313131373833343930323637303037222069643D2242504D4E53686170655F41637469766974795F5F3334393434353533313131373833343930323637303037223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223338302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D33343265306664632D366266332D343861302D623661382D303332666433343335643666222069643D2242504D4E456467655F73657175656E6365466C6F772D33343265306664632D366266332D343861302D623661382D303332666433343335643666223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D39373734626361372D313762662D343161372D393134372D623639386438333337396237222069643D2242504D4E456467655F73657175656E6365466C6F772D39373734626361372D313762662D343161372D393134372D623639386438333337396237223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37616161613963332D393137312D346365372D623663302D373139396364663638303961222069643D2242504D4E456467655F73657175656E6365466C6F772D37616161613963332D393137312D346365372D623663302D373139396364663638303961223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('a4704176-7a92-11f1-9ea7-00155dd68500', 1, 'b000_abc..b000_abc..png', 'a43fbb94-7a92-11f1-9ea7-00155dd68500', 0x89504E470D0A1A0A0000000D49484452000001A400000046080600000083B7E00800000B7649444154785EED9DDD4F1CD719C6892B55B9C87F10E52AEDFFD14A8972E18BA89580F5226CE35DC4E200B2646C4B96AD42F14D516423B572D5DC44B69A0AD592ED25361FC1604C1D70B115A90DB8260E04C7B109068C6D50C060989E97EE54E3770798FD1ADEF3F2FCA4470BF371CE61E7E1397B66CFCC1415819C701CE7E7E3E3E37F1F1C1C5CEEE9E971BABBBBA19065DEF7B5FEFEFEC7BDBDBD1FF2E3632BF0D5F64BA3AF80724C685C30A675A6A6A69CC5C545E7E5CB9750C8A2F79DDEFFBEBEBEE7264876F3636423F0D5F64BA3AF8072E8132C99969B190A5F93939333263886F831B211F84A8E34F90A28874EA7E013AC0CD17130C1B1C48F918DC05772A4C957403974AE991B18DA3ED1F1E0C7C846E02B59D2E22BA09CA0C1B1F06CD219BFFDA93372EDF7EBA29F6919DF0ECA4D5A8203BE92252DBE02CA09121CF3738F9CE1AE93CEBFAE1E794DB48CD6F1EDA1ECA52538E02B59D2E22BA09C20C1F170A42D2D345CFD30F279DAF650F6D2121CF0952C69F115504E90E0F8CFF53FA405862B5AC7B787B29796E080AF64498BAF80728204C77077435A60B8A2757C7B287B69090EF84A96B4F80A2807C1214B5A8203BE92252DBE02CA09121C34FB8907862B5AC7B787B29796E080AF64498BAF80728204C7FD2FFF941618AE681DDF1ECA5E5A8203BE92252DBE02CA09121CB38FFEED0C7FF1BBB4D0A065B48E6F0F652F2DC1015FC992165F01E504090ED27777CEA705072DE3DB41B9494B70C057B2A4C55741292E2EFE456969E911A3B648243264F4D0C849BD0ED1725A4FDBF17D0B8EE338BB0607077F7BFEFCF92F1A1B1B678E1D3BB6585D5DBD460D4C24122BF5F5F52FCCB26F9B9A9A3EAEA8A87887EFAF9940C1B1B4E4DC1FF8735A70D0325A97B63D94B5B404077C254B5A7CB519A673F999C9F4D89E3D7B46529D4F20A5B68FD1FEBCCCBC623AA2373B3B3B3F3979F2E4723C1E77CE9E3DEBDCBA75CB191B1B736667671D825EE9775A4EEB63B1D86A6D6DED786565E507BC3C8D6C151C74C5FC375FFE312D345CD13A5C559F3F69090EF84A96B4F86A234C87B2DB742C7779679389521D53611ED3613A988FCC8867F1D0A1438E191D39ABABABEB1DD056D076B47D5D5DDDCAC18307BF32C3BA7779D99AD83038CC27D4C9FBBDCED79DC7D3C2828BB6A16DF1A9367769090EF84A96B4F88AD3D0D0B0CB7424CDBC73D9BF7FBFD3D2D2E2D033B9FC0620B49CD6D3767C5F2A8FCAE5756585A9F38DAEAEAECFAAAAAA9CF6F676E7D5AB57AFF73801A1FD687FD3E005D3C0F7793D5AF00B8EAD3EBD6E247CAACD5D5A8203BE92252DBEF2525C5CFC9619305CF57626B158CC492693CEF2F2328F745F683BDA9EF6F39643E552F9BCCE8C30E5BF71F1E2C57F5657573BF7EEDDE375670595138FC77F8A46A3315E9F06FC8223C8A7D78D44FBF2F2A0E0D2121CF0952C69F1950B8D604CC771C5DB899C3E7DDA999F9FE7111E08DA8FF667A3A52B398D946864944824D61FDB9B4FA8BC8A8A8AF9929292F7789DB6E3171C3C0C32152F0F0A2E2DC1015FC992165FB9784FD3999F9D0B172E386B6B6B3CBA3382F6A772A83C4FD9CDBCEE400C0C0C7C449D51BE46461C53EEDADEBD7BE7B6659A6001F10B0E68FBA42538E02B59D2E22BC27414BBBD2319EA44F20995C7464A994D743065BC79EAD4A945FACEA7902493C9B96834DAC9EBB71904872C69090EF84A96B4F88AA6667B67D3D169B65C47461C2ACF7BFA8E66DF653425BCA3A3E32F349B2EDB090C41A1F2E3F1F8744949C9AF791B6C05C1214B5A8203BE92252DBE321D44CCED28682242B6DF196D0595CB263A049B4360F6DD75E2C489659AAA1D06376FDE7C661AF70FDE0E5B4170C89296E080AF64498BAFBC17BDB6B5B5F178CE2B54BE7794C4DBE2CBC0C0C06F2A2B2B035F67942B544F5959D93333847B9BB74512E64DBC6EF42BBE9C83E09025E9C1015FD9290DBE8A46A3BF743B08BA7E88FEAE4242E57BAF53A2FA799BD23877EE5C37DD61214C1A1B1B874B4B4BAB795B24E1BE895B1D6804872C59101CF09585D2E02BB3BCDEDDEECC99333C960B02D5E3695B3D6F531A4D4D4DD3619DAE73B976ED1A0D1B2FF2B648C2F3266E7AA0111CB2645170C057164983AFCCEF49773DDD69210CA81E4F9B92DEF6F872F4E8D1C5F1F1715E4E41191D1D9D308DBBCDDB22099F03EC7BA0111CB2646170C057164883AFCCEB6D777958994FF578DAB275E6271289B5A74F9FF2720ACAECECECBC69DC23DE1649F81C58AEF5038DE090258B8303BE122C25BE9A717F0F2BF3A91E4F1BB6CEFCF2F272676565859753504C7D2F7CDE302B85E090257E7C6C157C254BFCF8D8AEB0329FEAF1D4BBC4FB9F34AAAAAA56C2EA2D5DA6A7A7BF8D04E92DB7117E003DBA1EC1A915B1B2F8932C7C25581A7C655E1FB9CBC3CAFC8C4748870F1F7E11D6F94497BB77EFDE8904399FB88D6C7660BD480F0ED3445FE56BBD3459181CF095CF7A69D2E0AB880DDF211D3F7EFC9BB067D95DBA74891E8B6BCB2CBBB403EBC586E0D86C59AEEBA5C9A2E080AF36592F4D1A7C15B161965D6363E3C7615F87545353D36EC175481B1E582F080E59B22038E0AB00EBA54983AF22365C87545151F14E3C1E5F0DF14E0D3F9A864D4BBF534350101CB2243D3882025FC992065F6DC79D1AF6EDDBB7E6D619E84E0D446D6DED77619DB66B6D6DFD6B04F7B20B4D453EFFE4DE65B9AE97260DC141C057B2A4C557E2EF65475456567E505757B712C2DDBE1F9AC6DDC7DDBEC35391CF3FB97759AEEBA5494B70C057B2A4C5579110EFF67DE0C08155B72EAA97B765536A6A6ABE6A6F6FCFEF83315E67ADB9B9F953D3B0765EB7CD203864494B70C057B2A4C557A9E721FD7F9424F27948043DC9951E335EA827C6DEB871E39C69DC249E181BAE4C137D95AFF5D2A42538E02B59D2E22B2222FD89B12EA6277BDF0CB37E9A9A9AE275E4C4C4C4C4E7A6518F4B4A4ADEE375DA8EF4E0D869D2121CF0952C69F1958BC9FA66CF0866BD13C975A444FB5339549EA7EC665E774644A3D1981929BDC8D748293532A22B840FF0BA3480E090252DC1015FC992165FB9343434EC32997CC53B92A1D36CD97EA744FB794FD3A57485EAE175670C8D64CACBCBE792C9E45CB6131D680243EA3BA31F358E8C5C101CB2A42538E02B59D2E22B2FC5C5C56F9596965EF5762234D1C1E4BEB3BCBCCC23DD17DA8EB66713181C2A97CAE775668D29F05D335AEA8AC7E3D3F4D8F1A0D72999EDA65A5B5B3F338DBA6FD441E5F0B23581E090252DC1015FC992165F716804E33D7DE78AAE536A696959BFD3C2D8D8183DA1613DDFE9957EA7E5B4DE7B9D912B2A2F2F23233F688AB6A9A4BFACACECB9A9E4EB9E9E9EE1D1D1D1EF676666164CFBE69F3C79323E323272E7F2E5CBC9DADADA8EC8FF6E71DEAF696AF766203864494B70D8E4AB8585056778783863D17EBC2CA9D2E2AB8D3099BDDB3BFB2E1BA5F6CF6E0243A6D09D154C650933E2A1FBD00D19D13545D4107A1D4A2D4F68B90343506C0A8E9D202DC16193AFA87329F29931B795683F5E965469F1D566D0D46C93E1B14C3BA6D4F6B18CA77683FC635370EC0469090E9B7C8511923EE8F21C33C838B2D90084D66BBB8CC77A6C0A8E9D202DC1015FC992165F01E5203864494B70C057B2A4C5574039080E59D2121CF0952C69F115500E824396B404874DBEC277480008C1A6E0D809D2121C36F98A3A97229F59745B89F6E3654995165F01E5D8141C3B415A82C3265F61840480106C0A8E9D202DC1015FC992165F01E5203864494B70C057B2A4C5574039080E59D2121CF0952C69F115500E824396B404874DBEC277480008A1A7A7676D717131CDC050F832C7E1B1098E257E8C6CC4265F51E752E4338B6E2BD17EBC2C89D2E42BA09CFEFEFEC7F4845D6E62287C3D78F0A0D504C7103F46366293AFB48F9034F90A28A7B7B7F7C3BEBEBEE793939333B67CA2D526F3BE4F4E4C4CFCCD84C6F746E1DCFEBEC0C057DB2F8DBE023B00322B7D82327A49E79AA1D045EF3BBDFFAA4283FE9ED4DF055F6D8F54FA0A0000000000000000000000000000000000000000000000000000000000000000000000009023FF050B890816330FC7EB0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('b3d73b1e-7462-11f1-b91b-00155dd68500', 3, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757322206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D31663063306536622D383166362D343532612D616630662D3930656332363264323538342220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D30353630346439362D613662352D343037372D623265342D6465303638383136663963392220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F707573223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22707573222069643D2242504D4E506C616E655F707573223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D31663063306536622D383166362D343532612D616630662D393065633236326432353834222069643D2242504D4E456467655F73657175656E6365466C6F772D31663063306536622D383166362D343532612D616630662D393065633236326432353834223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D30353630346439362D613662352D343037372D623265342D646530363838313666396339222069643D2242504D4E456467655F73657175656E6365466C6F772D30353630346439362D613662352D343037372D623265342D646530363838313666396339223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('c6dbda4f-7462-11f1-b91b-00155dd68500', 1, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2232227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('c75fb051-7462-11f1-b91b-00155dd68500', 1, 'pus.bpmn', 'c75fb050-7462-11f1-b91b-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757322206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D31663063306536622D383166362D343532612D616630662D3930656332363264323538342220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D30353630346439362D613662352D343037372D623265342D6465303638383136663963392220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F707573223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22707573222069643D2242504D4E506C616E655F707573223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D31663063306536622D383166362D343532612D616630662D393065633236326432353834222069643D2242504D4E456467655F73657175656E6365466C6F772D31663063306536622D383166362D343532612D616630662D393065633236326432353834223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D30353630346439362D613662352D343037372D623265342D646530363838313666396339222069643D2242504D4E456467655F73657175656E6365466C6F772D30353630346439362D613662352D343037372D623265342D646530363838313666396339223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('c795b472-7462-11f1-b91b-00155dd68500', 1, 'pus.pus.png', 'c75fb050-7462-11f1-b91b-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('d232b68b-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve.bpmn', 'd232b68a-74fe-11f1-9120-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757263686173655F726571756573745F617070726F766522206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C757365725461736B2069643D2241637469766974795F5F363936363337373834323137383238373732393237313622206E616D653D22E5AEA1E689B9E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33305D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A63616E646964617465506172616D20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B3134325D5D3E3C2F666C6F7761626C653A63616E646964617465506172616D3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2231223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E9809AE8BF872220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2274727565222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2274727565222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2274727565222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2274727565222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2274727565222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A617070726F76654D6574686F6420786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B345D5D3E3C2F666C6F7761626C653A617070726F76654D6574686F643E0A20202020202020203C666C6F7761626C653A72656A65637448616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A72656A65637448616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A20202020202020203C666C6F7761626C653A61737369676E456D70747948616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A61737369676E456D70747948616E646C6572547970653E0A20202020202020203C666C6F7761626C653A7369676E456E61626C6520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A7369676E456E61626C653E0A20202020202020203C666C6F7761626C653A726561736F6E5265717569726520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B66616C73655D5D3E3C2F666C6F7761626C653A726561736F6E526571756972653E0A20202020202020203C666C6F7761626C653A6E6F64655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B31315D5D3E3C2F666C6F7761626C653A6E6F6465547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A2020202020203C6D756C7469496E7374616E63654C6F6F7043686172616374657269737469637320697353657175656E7469616C3D22747275652220666C6F7761626C653A636F6C6C656374696F6E3D22247B636F6C6C5F757365724C6973747D223E0A20202020202020203C6C6F6F7043617264696E616C6974793E313C2F6C6F6F7043617264696E616C6974793E0A20202020202020203C636F6D706C6574696F6E436F6E646974696F6E3E247B206E724F66436F6D706C65746564496E7374616E636573202667743B3D206E724F66496E7374616E636573207D3C2F636F6D706C6574696F6E436F6E646974696F6E3E0A2020202020203C2F6D756C7469496E7374616E63654C6F6F704368617261637465726973746963733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D37626264323239362D303635622D343334652D623536332D6131633164373035626435362220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D65623033353365322D356431392D346462662D623162642D6239646561343435613034372220736F757263655265663D225374617274557365724E6F646522207461726765745265663D2241637469766974795F5F3639363633373738343231373832383737323932373136223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D65616533333231612D313462392D343831632D393731652D3365656130663331626638332220736F757263655265663D2241637469766974795F5F363936363337373834323137383238373732393237313622207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F70757263686173655F726571756573745F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D2270757263686173655F726571756573745F617070726F7665222069643D2242504D4E506C616E655F70757263686173655F726571756573745F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2241637469766974795F5F3639363633373738343231373832383737323932373136222069643D2242504D4E53686170655F41637469766974795F5F3639363633373738343231373832383737323932373136223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D223233302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223338302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D65623033353365322D356431392D346462662D623162642D623964656134343561303437222069643D2242504D4E456467655F73657175656E6365466C6F772D65623033353365322D356431392D346462662D623162642D623964656134343561303437223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D65616533333231612D313462392D343831632D393731652D336565613066333162663833222069643D2242504D4E456467655F73657175656E6365466C6F772D65616533333231612D313462392D343831632D393731652D336565613066333162663833223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223333302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223338302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D37626264323239362D303635622D343334652D623536332D613163316437303562643536222069643D2242504D4E456467655F73657175656E6365466C6F772D37626264323239362D303635622D343334652D623536332D613163316437303562643536223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('d2396d4c-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve.purchase_request_approve.png', 'd232b68a-74fe-11f1-9120-00155dd68500', 0x89504E470D0A1A0A0000000D49484452000001A400000046080600000083B7E00800000B7649444154785EED9DDD4F1CD719C6892B55B9C87F10E52AEDFFD14A8972E18BA89580F5226CE35DC4E200B2646C4B96AD42F14D516423B572D5DC44B69A0AD592ED25361FC1604C1D70B115A90DB8260E04C7B109068C6D50C060989E97EE54E3770798FD1ADEF3F2FCA4470BF371CE61E7E1397B66CFCC1415819C701CE7E7E3E3E37F1F1C1C5CEEE9E971BABBBBA19065DEF7B5FEFEFEC7BDBDBD1FF2E3632BF0D5F64BA3AF80724C685C30A675A6A6A69CC5C545E7E5CB9750C8A2F79DDEFFBEBEBEE7264876F3636423F0D5F64BA3AF8072E8132C99969B190A5F93939333263886F831B211F84A8E34F90A28874EA7E013AC0CD17130C1B1C48F918DC05772A4C957403974AE991B18DA3ED1F1E0C7C846E02B59D2E22BA09CA0C1B1F06CD219BFFDA93372EDF7EBA29F6919DF0ECA4D5A8203BE92252DBE02CA09121CF3738F9CE1AE93CEBFAE1E794DB48CD6F1EDA1ECA52538E02B59D2E22BA09C20C1F170A42D2D345CFD30F279DAF650F6D2121CF0952C69F115504E90E0F8CFF53FA405862B5AC7B787B29796E080AF64498BAF80728204C77077435A60B8A2757C7B287B69090EF84A96B4F80A2807C1214B5A8203BE92252DBE02CA09121C34FB8907862B5AC7B787B29796E080AF64498BAF80728204C7FD2FFF941618AE681DDF1ECA5E5A8203BE92252DBE02CA09121CB38FFEED0C7FF1BBB4D0A065B48E6F0F652F2DC1015FC992165F01E504090ED27777CEA705072DE3DB41B9494B70C057B2A4C55741292E2EFE456969E911A3B648243264F4D0C849BD0ED1725A4FDBF17D0B8EE338BB0607077F7BFEFCF92F1A1B1B678E1D3BB6585D5DBD460D4C24122BF5F5F52FCCB26F9B9A9A3EAEA8A87887EFAF9940C1B1B4E4DC1FF8735A70D0325A97B63D94B5B404077C254B5A7CB519A673F999C9F4D89E3D7B46529D4F20A5B68FD1FEBCCCBC623AA2373B3B3B3F3979F2E4723C1E77CE9E3DEBDCBA75CB191B1B736667671D825EE9775A4EEB63B1D86A6D6DED786565E507BC3C8D6C151C74C5FC375FFE312D345CD13A5C559F3F69090EF84A96B4F86A234C87B2DB742C7779679389521D53611ED3613A988FCC8867F1D0A1438E191D39ABABABEB1DD056D076B47D5D5DDDCAC18307BF32C3BA7779D99AD83038CC27D4C9FBBDCED79DC7D3C2828BB6A16DF1A9367769090EF84A96B4F88AD3D0D0B0CB7424CDBC73D9BF7FBFD3D2D2E2D033B9FC0620B49CD6D3767C5F2A8FCAE5756585A9F38DAEAEAECFAAAAAA9CF6F676E7D5AB57AFF73801A1FD687FD3E005D3C0F7793D5AF00B8EAD3EBD6E247CAACD5D5A8203BE92252DBEF2525C5CFC9619305CF57626B158CC492693CEF2F2328F745F683BDA9EF6F39643E552F9BCCE8C30E5BF71F1E2C57F5657573BF7EEDDE375670595138FC77F8A46A3315E9F06FC8223C8A7D78D44FBF2F2A0E0D2121CF0952C69F1950B8D604CC771C5DB899C3E7DDA999F9FE7111E08DA8FF667A3A52B398D946864944824D61FDB9B4FA8BC8A8A8AF9929292F7789DB6E3171C3C0C32152F0F0A2E2DC1015FC992165FB9784FD3999F9D0B172E386B6B6B3CBA3382F6A772A83C4FD9CDBCEE400C0C0C7C449D51BE46461C53EEDADEBD7BE7B6659A6001F10B0E68FBA42538E02B59D2E22BC27414BBBD2319EA44F20995C7464A994D743065BC79EAD4A945FACEA7902493C9B96834DAC9EBB71904872C69090EF84A96B4F88AA6667B67D3D169B65C47461C2ACF7BFA8E66DF653425BCA3A3E32F349B2EDB090C41A1F2E3F1F8744949C9AF791B6C05C1214B5A8203BE92252DBE321D44CCED28682242B6DF196D0595CB263A049B4360F6DD75E2C489659AAA1D06376FDE7C661AF70FDE0E5B4170C89296E080AF64498BAFBC17BDB6B5B5F178CE2B54BE7794C4DBE2CBC0C0C06F2A2B2B035F67942B544F5959D93333847B9BB74512E64DBC6EF42BBE9C83E09025E9C1015FD9290DBE8A46A3BF743B08BA7E88FEAE4242E57BAF53A2FA799BD23877EE5C37DD61214C1A1B1B874B4B4BAB795B24E1BE895B1D6804872C59101CF09585D2E02BB3BCDEDDEECC99333C960B02D5E3695B3D6F531A4D4D4DD3619DAE73B976ED1A0D1B2FF2B648C2F3266E7AA0111CB2645170C057164983AFCCEF49773DDD69210CA81E4F9B92DEF6F872F4E8D1C5F1F1715E4E41191D1D9D308DBBCDDB22099F03EC7BA0111CB2646170C057164883AFCCEB6D777958994FF578DAB275E6271289B5A74F9FF2720ACAECECECBC69DC23DE1649F81C58AEF5038DE090258B8303BE122C25BE9A717F0F2BF3A91E4F1BB6CEFCF2F272676565859753504C7D2F7CDE302B85E090257E7C6C157C254BFCF8D8AEB0329FEAF1D4BBC4FB9F34AAAAAA56C2EA2D5DA6A7A7BF8D04E92DB7117E003DBA1EC1A915B1B2F8932C7C25581A7C655E1FB9CBC3CAFC8C4748870F1F7E11D6F94497BB77EFDE8904399FB88D6C7660BD480F0ED3445FE56BBD3459181CF095CF7A69D2E0AB880DDF211D3F7EFC9BB067D95DBA74891E8B6BCB2CBBB403EBC586E0D86C59AEEBA5C9A2E080AF36592F4D1A7C15B161965D6363E3C7615F87545353D36EC175481B1E582F080E59B22038E0AB00EBA54983AF22365C87545151F14E3C1E5F0DF14E0D3F9A864D4BBF534350101CB2243D3882025FC992065F6DC79D1AF6EDDBB7E6D619E84E0D446D6DED77619DB66B6D6DFD6B04F7B20B4D453EFFE4DE65B9AE97260DC141C057B2A4C557E2EF65475456567E505757B712C2DDBE1F9AC6DDC7DDBEC35391CF3FB97759AEEBA5494B70C057B2A4C5579110EFF67DE0C08155B72EAA97B765536A6A6ABE6A6F6FCFEF83315E67ADB9B9F953D3B0765EB7CD203864494B70C057B2A4C557A9E721FD7F9424F27948043DC9951E335EA827C6DEB871E39C69DC249E181BAE4C137D95AFF5D2A42538E02B59D2E22B2222FD89B12EA6277BDF0CB37E9A9A9AE275E4C4C4C4C4E7A6518F4B4A4ADEE375DA8EF4E0D869D2121CF0952C69F1958BC9FA66CF0866BD13C975A444FB5339549EA7EC665E774644A3D1981929BDC8D748293532A22B840FF0BA3480E090252DC1015FC992165FB9343434EC32997CC53B92A1D36CD97EA744FB794FD3A57485EAE175670C8D64CACBCBE792C9E45CB6131D680243EA3BA31F358E8C5C101CB2A42538E02B59D2E22B2FC5C5C56F9596965EF5762234D1C1E4BEB3BCBCCC23DD17DA8EB66713181C2A97CAE775668D29F05D335AEA8AC7E3D3F4D8F1A0D72999EDA65A5B5B3F338DBA6FD441E5F0B23581E090252DC1015FC992165F716804E33D7DE78AAE536A696959BFD3C2D8D8183DA1613DDFE9957EA7E5B4DE7B9D912B2A2F2F23233F688AB6A9A4BFACACECB9A9E4EB9E9E9EE1D1D1D1EF676666164CFBE69F3C79323E323272E7F2E5CBC9DADADA8EC8FF6E71DEAF696AF766203864494B70D8E4AB8585056778783863D17EBC2CA9D2E2AB8D3099BDDB3BFB2E1BA5F6CF6E0243A6D09D154C650933E2A1FBD00D19D13545D4107A1D4A2D4F68B90343506C0A8E9D202DC16193AFA87329F29931B795683F5E965469F1D566D0D46C93E1B14C3BA6D4F6B18CA77683FC635370EC0469090E9B7C8511923EE8F21C33C838B2D90084D66BBB8CC77A6C0A8E9D202DC1015FC992165F01E5203864494B70C057B2A4C5574039080E59D2121CF0952C69F115500E824396B404874DBEC277480008C1A6E0D809D2121C36F98A3A97229F59745B89F6E3654995165F01E5D8141C3B415A82C3265F61840480106C0A8E9D202DC1015FC992165F01E5203864494B70C057B2A4C5574039080E59D2121CF0952C69F115500E824396B404874DBEC277480008A1A7A7676D717131CDC050F832C7E1B1098E257E8C6CC4265F51E752E4338B6E2BD17EBC2C89D2E42BA09CFEFEFEC7F4845D6E62287C3D78F0A0D504C7103F46366293AFB48F9034F90A28A7B7B7F7C3BEBEBEE793939333B67CA2D526F3BE4F4E4C4CFCCD84C6F746E1DCFEBEC0C057DB2F8DBE023B00322B7D82327A49E79AA1D045EF3BBDFFAA4283FE9ED4DF055F6D8F54FA0A0000000000000000000000000000000000000000000000000000000000000000000000009023FF050B890816330FC7EB0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('dcdf68f1-74fe-11f1-9120-00155dd68500', 1, 'hist.var-Activity__69663778421782877292716_assignees', NULL, 0xACED0005737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000008E78, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('de847bd4-7500-11f1-993f-00155dd68500', 2, 'source', NULL, 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22636169676F757368656E706922206E616D653D223132312220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D66343565636264322D363234392D343764322D383636352D6236643637326161643561332220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D34396166306662392D373765382D346366622D613437662D3731636663613531343437342220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F636169676F757368656E7069223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22636169676F757368656E7069222069643D2242504D4E506C616E655F636169676F757368656E7069223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D34396166306662392D373765382D346366622D613437662D373163666361353134343734222069643D2242504D4E456467655F73657175656E6365466C6F772D34396166306662392D373765382D346366622D613437662D373163666361353134343734223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D66343565636264322D363234392D343764322D383636352D623664363732616164356133222069643D2242504D4E456467655F73657175656E6365466C6F772D66343565636264322D363234392D343764322D383636352D623664363732616164356133223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('de8713e5-7500-11f1-993f-00155dd68500', 1, 'source-extra', NULL, 0x7B22627574746F6E7353657474696E67223A5B7B22646973706C61794E616D65223A22E68F90E4BAA4222C22656E61626C65223A747275652C226964223A317D2C7B22646973706C61794E616D65223A22E68B92E7BB9D222C22656E61626C65223A66616C73652C226964223A327D2C7B22646973706C61794E616D65223A22E8BDACE58A9E222C22656E61626C65223A66616C73652C226964223A337D2C7B22646973706C61794E616D65223A22E5A794E6B4BE222C22656E61626C65223A66616C73652C226964223A347D2C7B22646973706C61794E616D65223A22E58AA0E7ADBE222C22656E61626C65223A66616C73652C226964223A357D2C7B22646973706C61794E616D65223A22E98080E59B9E222C22656E61626C65223A66616C73652C226964223A367D5D2C226368696C644E6F6465223A7B226964223A22456E644576656E74222C226E616D65223A22E7BB93E69D9F222C2274797065223A317D2C226669656C64735065726D697373696F6E223A5B7B226669656C64223A22467971796D7171646F6C6E32616263222C227469746C65223A22E5A793E5908D222C227065726D697373696F6E223A2232227D2C7B226669656C64223A22466836676D7171646F6F7935616563222C227469746C65223A22E5B9B4E9BE84222C227065726D697373696F6E223A2232227D2C7B226669656C64223A2246356D726D71716475746E6E616263222C227469746C65223A22E98089E68BA9E599A8222C227065726D697373696F6E223A2232227D5D2C226964223A225374617274557365724E6F6465222C226E616D65223A22E58F91E8B5B7E4BABA222C2273686F7754657874223A22E5B7B2E8AEBEE7BDAE222C2274797065223A31307D, NULL);
+INSERT INTO `act_ge_bytearray` VALUES ('df6abd27-7500-11f1-993f-00155dd68500', 1, 'caigoushenpi.bpmn', 'df6abd26-7500-11f1-993f-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D22636169676F757368656E706922206E616D653D223132312220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D66343565636264322D363234392D343764322D383636352D6236643637326161643561332220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D34396166306662392D373765382D346366622D613437662D3731636663613531343437342220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F636169676F757368656E7069223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D22636169676F757368656E7069222069643D2242504D4E506C616E655F636169676F757368656E7069223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D34396166306662392D373765382D346366622D613437662D373163666361353134343734222069643D2242504D4E456467655F73657175656E6365466C6F772D34396166306662392D373765382D346366622D613437662D373163666361353134343734223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D66343565636264322D363234392D343764322D383636352D623664363732616164356133222069643D2242504D4E456467655F73657175656E6365466C6F772D66343565636264322D363234392D343764322D383636352D623664363732616164356133223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('df924258-7500-11f1-993f-00155dd68500', 1, 'caigoushenpi.caigoushenpi.png', 'df6abd26-7500-11f1-993f-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+INSERT INTO `act_ge_bytearray` VALUES ('fb13987f-74f9-11f1-91b4-00155dd68500', 1, 'purchase_request_approve.bpmn', 'fb13987e-74f9-11f1-91b4-00155dd68500', 0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C646566696E6974696F6E7320786D6C6E733D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C2220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E63652220786D6C6E733A7873643D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612220786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220786D6C6E733A62706D6E64693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F44492220786D6C6E733A6F6D6764633D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44432220786D6C6E733A6F6D6764693D22687474703A2F2F7777772E6F6D672E6F72672F737065632F44442F32303130303532342F44492220747970654C616E67756167653D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D61222065787072657373696F6E4C616E67756167653D22687474703A2F2F7777772E77332E6F72672F313939392F585061746822207461726765744E616D6573706163653D22687474703A2F2F7777772E6F6D672E6F72672F737065632F42504D4E2F32303130303532342F4D4F44454C223E0A20203C70726F636573732069643D2270757263686173655F726571756573745F617070726F766522206E616D653D22E98787E8B4ADE5AEA1E6A0B82220697345786563757461626C653D2274727565223E0A202020203C73746172744576656E742069643D2253746172744576656E7422206E616D653D22E5BC80E5A78B223E3C2F73746172744576656E743E0A202020203C757365725461736B2069643D225374617274557365724E6F646522206E616D653D22E58F91E8B5B7E4BABA223E0A2020202020203C657874656E73696F6E456C656D656E74733E0A20202020202020203C666C6F7761626C653A617070726F76655479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B315D5D3E3C2F666C6F7761626C653A617070726F7665547970653E0A20202020202020203C666C6F7761626C653A63616E646964617465537472617465677920786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B33365D5D3E3C2F666C6F7761626C653A63616E64696461746553747261746567793E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22467971796D7171646F6C6E3261626322207469746C653D22E5A793E5908D22207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D22466836676D7171646F6F793561656322207469746C653D22E5B9B4E9BE8422207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A6669656C64735065726D697373696F6E20786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E22206669656C643D2246356D726D71716475746E6E61626322207469746C653D22E98089E68BA9E599A822207065726D697373696F6E3D2232223E3C2F666C6F7761626C653A6669656C64735065726D697373696F6E3E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68F90E4BAA42220656E61626C653D2274727565222069643D2231223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E68B92E7BB9D2220656E61626C653D2266616C7365222069643D2232223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E8BDACE58A9E2220656E61626C653D2266616C7365222069643D2233223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E5A794E6B4BE2220656E61626C653D2266616C7365222069643D2234223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E58AA0E7ADBE2220656E61626C653D2266616C7365222069643D2235223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A627574746F6E7353657474696E6720786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E2220646973706C61794E616D653D22E98080E59B9E2220656E61626C653D2266616C7365222069643D2236223E3C2F666C6F7761626C653A627574746F6E7353657474696E673E0A20202020202020203C666C6F7761626C653A61737369676E53746172745573657248616E646C65725479706520786D6C6E733A666C6F7761626C653D22687474703A2F2F666C6F7761626C652E6F72672F62706D6E223E3C215B43444154415B325D5D3E3C2F666C6F7761626C653A61737369676E53746172745573657248616E646C6572547970653E0A2020202020203C2F657874656E73696F6E456C656D656E74733E0A202020203C2F757365725461736B3E0A202020203C656E644576656E742069643D22456E644576656E7422206E616D653D22E7BB93E69D9F223E3C2F656E644576656E743E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D35316432386665652D333838652D343363642D393331332D6631326332656631313862622220736F757263655265663D2253746172744576656E7422207461726765745265663D225374617274557365724E6F6465223E3C2F73657175656E6365466C6F773E0A202020203C73657175656E6365466C6F772069643D2273657175656E6365466C6F772D36393235353330612D663634612D346334612D386566362D6662666165663432656535642220736F757263655265663D225374617274557365724E6F646522207461726765745265663D22456E644576656E74223E3C2F73657175656E6365466C6F773E0A20203C2F70726F636573733E0A20203C62706D6E64693A42504D4E4469616772616D2069643D2242504D4E4469616772616D5F70757263686173655F726571756573745F617070726F7665223E0A202020203C62706D6E64693A42504D4E506C616E652062706D6E456C656D656E743D2270757263686173655F726571756573745F617070726F7665222069643D2242504D4E506C616E655F70757263686173655F726571756573745F617070726F7665223E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D225374617274557365724E6F6465222069643D2242504D4E53686170655F5374617274557365724E6F6465223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2236302E30222077696474683D223130302E302220783D2238302E302220793D22302E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D2253746172744576656E74222069643D2242504D4E53686170655F53746172744576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D22302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E53686170652062706D6E456C656D656E743D22456E644576656E74222069643D2242504D4E53686170655F456E644576656E74223E0A20202020202020203C6F6D6764633A426F756E6473206865696768743D2233302E30222077696474683D2233302E302220783D223233302E302220793D2231352E30223E3C2F6F6D6764633A426F756E64733E0A2020202020203C2F62706D6E64693A42504D4E53686170653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D35316432386665652D333838652D343363642D393331332D663132633265663131386262222069643D2242504D4E456467655F73657175656E6365466C6F772D35316432386665652D333838652D343363642D393331332D663132633265663131386262223E0A20202020202020203C6F6D6764693A776179706F696E7420783D2233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D2238302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A2020202020203C62706D6E64693A42504D4E456467652062706D6E456C656D656E743D2273657175656E6365466C6F772D36393235353330612D663634612D346334612D386566362D666266616566343265653564222069643D2242504D4E456467655F73657175656E6365466C6F772D36393235353330612D663634612D346334612D386566362D666266616566343265653564223E0A20202020202020203C6F6D6764693A776179706F696E7420783D223138302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A20202020202020203C6F6D6764693A776179706F696E7420783D223233302E302220793D2233302E30223E3C2F6F6D6764693A776179706F696E743E0A2020202020203C2F62706D6E64693A42504D4E456467653E0A202020203C2F62706D6E64693A42504D4E506C616E653E0A20203C2F62706D6E64693A42504D4E4469616772616D3E0A3C2F646566696E6974696F6E733E, 0);
+INSERT INTO `act_ge_bytearray` VALUES ('fb193dd0-74f9-11f1-91b4-00155dd68500', 1, 'purchase_request_approve.purchase_request_approve.png', 'fb13987e-74f9-11f1-91b4-00155dd68500', 0x89504E470D0A1A0A0000000D494844520000010E0000004608060000003DCD7A100000092049444154785EED9DDD6F145518C60113E385FF81F14AFD3F34D178C185D104BAD01428DDA65BEC12120A2404226BB9B13140A2C1E88D81A86924015AA11F942DA5628B8590282D522B4B016181B67C95B8D0D23DBE6FD921C33BD3EEECD7EC39D3E7973C593AE7CC39873D739E7D67E6CC99254B404128A55E4D24123F0F0C0C4CC7E371D5DDDD0DF92CFADED37D7D7DB77A7A7A3E92FD03809690691CA28356DDB97347A55229F5F4E953C867F1F7CEDF7F6F6FEF433292E5B28F00D00E8E34F8A0950733E4BF92C9E40419C7A0EC2300B4834F4F1069E821EE07328E27B28F00D00E3EC7960730543E717FC83E02403BBC1AC7E307499538F7BD1A3EF9F99CF8DFBC4DE6830A138C03188117E398BA7F530D75ED547F1CDFF292781BA7C9FC50FE82710023F0621C3786DB1CA661E9DFE15F1CF9A1FC05E30046E0C538FE3AF585C3302C719ACC0FE52F180730022FC631D4BDCB611896384DE687F2178C0318018C432FC138801178310EBE8B220DC312A7C9FC50FE82710023F0621CA3BF7DED300C4B9C26F343F90BC6018CC08B714CDEFC530D9DF8CC611ABC8DD3647E287FC138801178310ED6D5F3071DC6C1DB643EA8302D36E358B162C5DB1515155B486DA15068907483A4329F83BC9DD3399FDCB7E428A5960D0C0C7C72F0E0C113B1586C62DBB66DA9FAFAFA3437301289CC3436363EA26DFF3435357D595D5DFDA6DC3FC878328E274FD468FF370EE3E06D9CE6C80FE5ADC5601C6402AFD0D8AB59B56AD570C6243C2993BF86F797651615328CD73A3B3BBFDBB973E774381C56FBF7EF5767CF9E5557AE5C519393938AE14FFE9BB7737A4D4DCD6C341A4DD4D6D67E28CB0B22D98C836786FEFDDB570ED3B0C469983D5A3C05DD3868E02F2703B8244D2117650CA434CB0F90117C4A11446AD3A64D8AA20D353B3B3B6714D9E07C9C7FE3C68D331B366CB84061D25BB2EC2031AF715024911CED51173BB73BCC428AF3705E441F852BA8C6B16BD7AE6534E09BA509AC5BB74EEDDBB74FF19A306E3FE8BC9DD3399FDC97CBE372655D7941752EEDEAEAFAB1AEAE4EB5B7B7AB67CF9EBDEC0C1EE1FD787F6AF0636AE007B29EA0E0661CD9A28CF984E8A37005D138E8D4E275FA013E6E1FF414D9ABD6D656353D3D2D879E2B9C8FF3F37EF672B85C2E5FD6991354FED2C3870FFF5E5F5FAF2E5FBE2CEBCE0B2E874E73FE5BBD7A758DAC2F08B819879728633EF1BEB23CC8BB82661C1C11D0003F661FEC7BF6EC5153535372A87982F7E3FD45F471ACA0C883238D482432B70C5B31E1F2AAABABA756AE5CF9BEACD374DC8C439A41AE92E541DE1534E3B09F9ED0BFD5A14387543A9D96432C27787F2E87CBB395DD2CEBF6447F7FFFA76C1AC58A3424546E7ACD9A35F7CB725BA884B81907543E05C93868402FB747063CD88B099727228FDC2E985219AFEDDEBD3BC5D7244A099D63DDA753964E59BFC9C038F452508C836F99DAEF9EF0E945A1918684CBB39FB6F0DD969C6ED57674747CCB774FF2BD10EA152E3F1C0E8FD329CB7BB20DA602E3D04B41310E1AC835D680E60B9AF95ED3C806972B2E987ABB1649FB2EDBB163C734DF42F5833367CE3CA0C6FD2ADB612A300EBD1414E3B04FEE6A6B6B93C3A8A870F9F6A843B6C595FEFEFE8F6B6B6B3DCFD32814AEA7B2B2F20185446FC8B6E8047D89A748EFCAED1218875ED2DD38BC1C57743AFF8E359079FE05FFBF4A09976F9FE7C1F5CB36393870E04037CFF8F493582C36545151512FDBA213B6D06DC18E8671E825038C23EB7145DB1BAD7C7BF7EE95C3A724703DB6B635CA3639686A6A1AF7EB34C5E2E4C9931C861D966DD109DB97B86047C338F49241C631EF71457FB75AE93CF3D30FB81E5B9B5AEDED7165EBD6ADA9442221CB292923232363D4B873B22D3AE1D2C1AE1D0DE3D04B061A87E3B8A2CF73D676BFC626D7636B4BF6B1198944D2F7EEDD93E59494C9C9C9296ADC4DD9169D70E958A9B98E8671E825838DC37E5C4D587FFB3536B91E5B1BB28FCDAAAA2A35333323CB292954DF23972FCC48C138F492EC1FD3E5D7D8E47A6CF5667F8D665D5DDD8C5FAE66313E3EFE4FC88BAB9511D981369D0AE154455B191C71BC38AEE8F3A6B5DDAFB19973C4B179F3E6477E9D47595CBA74E97CC8CB79541959A863EDE86E1CD44457152B5D3719681C8EE38AC78695EED7D8CCF91AC7F6EDDBFFF6FBAECA91234778993353EEAA383AD68E09C6B1D0B642D3759341C631EF711532E1AE4A2C16FBD2EF791C0D0D0DED06CCE398B763EDC038F49201C691F5B80A99308F83D7080D87C3B33ECE1CBD4D0D1BD77DE6A857601C7A4977E3F04239668EAE5DBB766E0D6196A799A34C341ABDEAD7E94A4B4BCB0F213CABE29B96B80C72FBB642D37553108C83D1FE5915861716E635427D783A96976C1FC5D3B1FE6989CB20B76F2B345D3705C538423E3E1DBB7EFDFA59AB2EAE57B665411A1A1A2EB4B7B717F781FF97493737377F4F0D6B97759B0C8C432F05C53832EB71BC883AB45C8F83E195B97879BF52AD0076FAF4E903D4B8245600F357D44457152B5D3705C5389890EE2B8059F06AE414B6FC57EC3547C7C6C67EA146DD5A2C6B8E42E553908C83D17ECD510B5E8D9C228F47C58A3C329106CF845B2FEB0A02300EBD1434E3306295730B8E0CAAAAAAEEF31AA1F95E30E50BA1996B1AB783186958C038F452D08C8329E67B55C485D0E2BC57C50EBF818DA28F2E5E239497FBF33ACF83F2DD696969F9911A354AEA58B46F7283CAA2201A0753E89BDCECF3342C7179458934DCE05BA754495F6565E543AAE4623C1E1F1A1919B93E3131F198DA3775F7EEDDC4F0F0F0F9A3478FB646A3D18ED0F34782FB8274CB7521601C7A29A8C661117AFEEED89C5E362D95D93FBF0BA1B9C2333DA9B2084510FC9CC92089E7647043F87330B33D129419A15E8171E8A5A01B07C3B74C433ABFAD1E6407C6A197168371D8E1E90DF4A3BD65A11F744E0FDA3408E38171E8A5C5661CC050601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C00C6A197601CC008601C7A09C6018C201E8FA753A994E30086FC17F5C32D328EECAF2F04A0DCF4F5F5DDE215D3E4410CF9AF6BD7AEB590710CCA3E02403B7A7A7A3EEAEDED7D984C262710799447F4BD27C7C6C67E22D3B84EF2E77171000A850F56FEA5233DE5736CC877F1F7CEDF3F4C0300000000000000000000000000000000000000000000005888FF016DE7F7BDD763036B0000000049454E44AE426082, 1);
+
+-- ----------------------------
+-- Table structure for act_ge_property
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ge_property`;
+CREATE TABLE `act_ge_property`  (
+  `NAME_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `VALUE_` varchar(300) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  PRIMARY KEY (`NAME_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ge_property
+-- ----------------------------
+INSERT INTO `act_ge_property` VALUES ('cfg.execution-related-entities-count', 'true', 1);
+INSERT INTO `act_ge_property` VALUES ('cfg.task-related-entities-count', 'true', 1);
+INSERT INTO `act_ge_property` VALUES ('common.schema.version', '8.0.0.0', 1);
+INSERT INTO `act_ge_property` VALUES ('eventregistry.schema.version', '8.0.0.0', 1);
+INSERT INTO `act_ge_property` VALUES ('next.dbid', '1', 1);
+INSERT INTO `act_ge_property` VALUES ('schema.history', 'upgrade(7.2.0.2->8.0.0.0)', 2);
+INSERT INTO `act_ge_property` VALUES ('schema.version', '8.0.0.0', 2);
+
+-- ----------------------------
+-- Table structure for act_hi_actinst
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_actinst`;
+CREATE TABLE `act_hi_actinst`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT 1,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CALL_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACT_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `COMPLETED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `START_TIME_` datetime(3) NOT NULL,
+  `END_TIME_` datetime(3) NULL DEFAULT NULL,
+  `TRANSACTION_ORDER_` int NULL DEFAULT NULL,
+  `DURATION_` bigint NULL DEFAULT NULL,
+  `DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_HI_ACT_INST_START`(`START_TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_ACT_INST_END`(`END_TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_ACT_INST_PROCINST`(`PROC_INST_ID_` ASC, `ACT_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_ACT_INST_EXEC`(`EXECUTION_ID_` ASC, `ACT_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_actinst
+-- ----------------------------
+INSERT INTO `act_hi_actinst` VALUES ('0987ee08-75f0-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-02 16:28:43.771', '2026-07-02 16:28:43.774', 1, 3, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0988b159-75f0-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 16:28:43.775', '2026-07-02 16:28:43.775', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0988b15a-75f0-11f1-a696-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', 'StartUserNode', '098bbe9b-75f0-11f1-a696-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-02 16:28:43.775', '2026-07-02 16:28:44.019', 3, 244, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('09adeca1-75f0-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 16:28:44.019', '2026-07-02 16:28:44.019', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('09adeca2-75f0-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-02 16:28:44.020', '2026-07-02 16:28:44.022', 2, 2, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0b17dba4-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 14:05:39.009', '2026-07-08 14:05:39.009', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0b17dba5-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-9774bca7-17bf-41a7-9147-b698d83379b7', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:05:39.009', '2026-07-08 14:05:39.009', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0b17dba6-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', 'StartUserNode', '0b17dba7-7a93-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 14:05:39.009', '2026-07-08 14:05:39.171', 3, 162, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0b3093ce-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-7aaaa9c3-9171-4ce7-b6c0-7199cdf6809a', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:05:39.171', '2026-07-08 14:05:39.171', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('0b31f369-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b317e33-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', '0b32418a-7a93-11f1-9ea7-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '104', '104', '2026-07-08 14:05:39.180', '2026-07-08 14:06:54.892', 2, 75712, 'Change parent activity to EndEvent', '');
+INSERT INTO `act_hi_actinst` VALUES ('1b447bc1-7a93-11f1-9ea7-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', '1b447bc0-7a93-11f1-9ea7-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-08 14:06:06.145', '2026-07-08 14:06:06.145', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('1c760731-7501-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 11:58:25.811', '2026-07-01 11:58:25.811', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('1c760732-7501-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', 'sequenceFlow-f45ecbd2-6249-47d2-8665-b6d672aad5a3', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:58:25.811', '2026-07-01 11:58:25.811', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('1c760733-7501-11f1-993f-00155dd68500', 2, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', 'StartUserNode', '1c760734-7501-11f1-993f-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-01 11:58:25.811', '2026-07-01 11:58:25.939', 3, 128, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('1c898e3a-7501-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', 'sequenceFlow-49af0fb9-77e8-4cfb-a47f-71cfca514474', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:58:25.939', '2026-07-01 11:58:25.939', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('1c89b54b-7501-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-01 11:58:25.940', '2026-07-01 11:58:25.941', 2, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('2c026129-74fc-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 11:23:04.413', '2026-07-01 11:23:04.417', 1, 4, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('2c03247a-74fc-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', 'sequenceFlow-51d28fee-388e-43cd-9313-f12c2ef118bb', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:23:04.418', '2026-07-01 11:23:04.418', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('2c03247b-74fc-11f1-9120-00155dd68500', 2, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', 'StartUserNode', '2c0658cc-74fc-11f1-9120-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-01 11:23:04.418', '2026-07-01 11:23:04.728', 3, 310, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('2c3271e2-74fc-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', 'sequenceFlow-6925530a-f64a-4c4a-8ef6-fbfaef42ee5d', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:23:04.728', '2026-07-01 11:23:04.728', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('2c3298f3-74fc-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-01 11:23:04.729', '2026-07-01 11:23:04.733', 2, 4, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('38540f05-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', '38540f04-7a93-11f1-9ea7-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-08 14:06:54.901', '2026-07-08 14:06:54.901', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('46b074f9-750d-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 13:25:30.619', '2026-07-01 13:25:30.619', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('46b074fa-750d-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', 'sequenceFlow-7bbd2296-065b-434e-b563-a1c1d705bd56', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 13:25:30.619', '2026-07-01 13:25:30.619', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('46b074fb-750d-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', 'StartUserNode', '46b074fc-750d-11f1-ad84-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-01 13:25:30.619', '2026-07-01 13:25:30.753', 3, 134, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('46c4e762-750d-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', 'sequenceFlow-eb0353e2-5d19-4dbf-b1bd-b9dea445a047', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 13:25:30.753', '2026-07-01 13:25:30.753', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('46c5f8dd-750d-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', '46c5f8d7-750d-11f1-ad84-00155dd68500', 'Activity__69663778421782877292716', '46c61fee-750d-11f1-ad84-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '142', '142', '2026-07-01 13:25:30.760', '2026-07-08 14:06:06.136', 2, 607235376, 'Change parent activity to EndEvent', '');
+INSERT INTO `act_hi_actinst` VALUES ('48318c05-750c-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 13:18:23.646', '2026-07-01 13:18:23.650', 1, 4, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('48324f56-750c-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', 'sequenceFlow-7bbd2296-065b-434e-b563-a1c1d705bd56', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 13:18:23.651', '2026-07-01 13:18:23.651', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('48324f57-750c-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', 'StartUserNode', '483339b8-750c-11f1-ad84-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-01 13:18:23.651', '2026-07-01 13:18:23.943', 3, 292, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('485edd9e-750c-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', 'sequenceFlow-eb0353e2-5d19-4dbf-b1bd-b9dea445a047', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 13:18:23.943', '2026-07-01 13:18:23.943', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('48628729-750c-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '48626013-750c-11f1-ad84-00155dd68500', 'Activity__69663778421782877292716', '4863236a-750c-11f1-ad84-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '142', '142', '2026-07-01 13:18:23.967', '2026-07-01 13:18:38.347', 2, 14380, 'MI_END', '');
+INSERT INTO `act_hi_actinst` VALUES ('50f7a421-750c-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '50f77d10-750c-11f1-ad84-00155dd68500', 'sequenceFlow-eae3321a-14b9-481c-971e-3eea0f31bf83', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 13:18:38.366', '2026-07-01 13:18:38.366', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('50f7a422-750c-11f1-ad84-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', '50f77d10-750c-11f1-ad84-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-01 13:18:38.366', '2026-07-01 13:18:38.369', 2, 3, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('54862ac1-745f-11f1-b91b-00155dd68500', 1, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-06-30 16:40:21.399', '2026-06-30 16:40:21.409', 1, 10, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5487ff82-745f-11f1-b91b-00155dd68500', 1, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', 'sequenceFlow-c9b04656-ab15-4efc-b12c-7d43acc51086', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-06-30 16:40:21.411', '2026-06-30 16:40:21.411', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5487ff83-745f-11f1-b91b-00155dd68500', 2, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', 'StartUserNode', '548ba904-745f-11f1-b91b-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-06-30 16:40:21.411', '2026-06-30 16:40:21.719', 3, 308, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('54b6fecb-745f-11f1-b91b-00155dd68500', 1, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', 'sequenceFlow-a71ce1d9-8dab-4f29-a081-5efbf805f188', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-06-30 16:40:21.719', '2026-06-30 16:40:21.719', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('54b725dc-745f-11f1-b91b-00155dd68500', 1, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-06-30 16:40:21.720', '2026-06-30 16:40:21.722', 2, 2, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5a527aa4-7a90-11f1-9ea7-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.451', 1, 8, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5a542855-7a90-11f1-9ea7-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 13:46:23.454', '2026-07-08 13:46:23.454', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5a542856-7a90-11f1-9ea7-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', 'StartUserNode', '5a5512b7-7a90-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 13:46:23.454', '2026-07-08 13:46:23.712', 3, 258, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5a7b867e-7a90-11f1-9ea7-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 13:46:23.712', '2026-07-08 13:46:23.712', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('5a7bad8f-7a90-11f1-9ea7-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-08 13:46:23.713', '2026-07-08 13:46:23.716', 2, 3, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6216e0e5-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-02 14:00:52.915', '2026-07-02 14:00:52.922', 1, 7, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6218b5a6-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 14:00:52.927', '2026-07-02 14:00:52.927', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6218b5a7-75db-11f1-80f9-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', 'StartUserNode', '621ed028-75db-11f1-80f9-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-02 14:00:52.927', '2026-07-02 14:00:53.413', 3, 486, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6262de0e-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 14:00:53.413', '2026-07-02 14:00:53.413', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6263533f-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-02 14:00:53.416', '2026-07-02 14:00:53.423', 2, 7, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('656d658e-7a95-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '656d658d-7a95-11f1-9ea7-00155dd68500', 'sequenceFlow-d7ad2853-a583-48ab-93e2-50cf2bd0ab48', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:22:29.558', '2026-07-08 14:22:29.558', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('656d658f-7a95-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '656d658d-7a95-11f1-9ea7-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-08 14:22:29.558', '2026-07-08 14:22:29.558', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('673ca0b6-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-02 14:01:01.551', '2026-07-02 14:01:01.552', 1, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('673cc7c7-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 14:01:01.552', '2026-07-02 14:01:01.552', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('673cc7c8-75db-11f1-80f9-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', 'StartUserNode', '673cc7c9-75db-11f1-80f9-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-02 14:01:01.552', '2026-07-02 14:01:01.764', 3, 212, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('675d210f-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 14:01:01.764', '2026-07-02 14:01:01.764', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('675d4820-75db-11f1-80f9-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-02 14:01:01.765', '2026-07-02 14:01:01.766', 2, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6b24a266-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.154', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6b24a267-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-c02cd5df-0fe7-400f-a51b-6366c335815b', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.154', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6b24a268-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'StartUserNode', '6b24a269-7a93-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.333', 3, 179, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6b3ff2a0-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-fad6901b-2ee6-48f0-99e1-be315098d410', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:20.333', '2026-07-08 14:08:20.333', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('6b408eeb-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b408ee5-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', '6b40b5fc-7a93-11f1-9ea7-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '1', NULL, '2026-07-08 14:08:20.337', NULL, 2, NULL, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('75068acb-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.734', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('75068acc-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-c02cd5df-0fe7-400f-a51b-6366c335815b', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.734', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('75068acd-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'StartUserNode', '75068ace-7a93-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.892', 3, 158, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('751ecdc5-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-fad6901b-2ee6-48f0-99e1-be315098d410', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:36.893', '2026-07-08 14:08:36.893', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('751f6a10-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f6a0a-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', '751f9021-7a93-11f1-9ea7-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '1', NULL, '2026-07-08 14:08:36.897', NULL, 2, NULL, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('7ab584b4-6edd-11f1-af1d-00155dd68500', 1, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-06-23 16:28:15.074', '2026-06-23 16:28:15.078', 1, 4, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('7ab66f15-6edd-11f1-af1d-00155dd68500', 1, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', 'sequenceFlow-955d6d1c-9a9e-41bc-9586-4fe5ccc2a0c5', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-06-23 16:28:15.080', '2026-06-23 16:28:15.080', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('7ab66f16-6edd-11f1-af1d-00155dd68500', 2, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', 'StartUserNode', '7ab90727-6edd-11f1-af1d-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-06-23 16:28:15.080', '2026-06-23 16:28:15.349', 3, 269, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('7adf7af3-6edd-11f1-af1d-00155dd68500', 1, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', 'sequenceFlow-babb55d6-4c10-4638-b235-eb658bd35b6a', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-06-23 16:28:15.349', '2026-06-23 16:28:15.349', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('7ae01734-6edd-11f1-af1d-00155dd68500', 1, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-06-23 16:28:15.353', '2026-06-23 16:28:15.355', 2, 2, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('83ff3dd0-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:09:01.853', 1, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('83ff64e1-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-c02cd5df-0fe7-400f-a51b-6366c335815b', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:09:01.853', '2026-07-08 14:09:01.853', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('83ff64e2-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', 'StartUserNode', '83ff64e3-7a93-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 14:09:01.853', '2026-07-08 14:09:02.046', 3, 193, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('841cd7fa-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-fad6901b-2ee6-48f0-99e1-be315098d410', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:09:02.046', '2026-07-08 14:09:02.046', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('841d9b55-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', '841dc266-7a93-11f1-9ea7-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '1', '1', '2026-07-08 14:09:02.051', '2026-07-08 14:22:29.552', 2, 807501, 'MI_END', '');
+INSERT INTO `act_hi_actinst` VALUES ('949d684f-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-02 13:55:08.186', '2026-07-02 13:55:08.190', 1, 4, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('949e2ba0-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 13:55:08.191', '2026-07-02 13:55:08.191', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('949e2ba1-75da-11f1-a595-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', 'StartUserNode', '94a18702-75da-11f1-a595-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-02 13:55:08.191', '2026-07-02 13:55:08.617', 3, 426, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('94df2c48-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 13:55:08.617', '2026-07-02 13:55:08.617', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('94df5359-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-02 13:55:08.618', '2026-07-02 13:55:08.623', 2, 5, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('9e13f84f-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 11:40:34.782', '2026-07-01 11:40:34.782', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('9e13f850-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', 'sequenceFlow-51d28fee-388e-43cd-9313-f12c2ef118bb', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:40:34.782', '2026-07-01 11:40:34.782', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('9e13f851-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', 'StartUserNode', '9e13f852-74fe-11f1-9120-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-01 11:40:34.782', '2026-07-01 11:40:34.911', 3, 129, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('9e27a768-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', 'sequenceFlow-6925530a-f64a-4c4a-8ef6-fbfaef42ee5d', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:40:34.911', '2026-07-01 11:40:34.911', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('9e27f589-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-01 11:40:34.913', '2026-07-01 11:40:34.914', 2, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('cb506e49-75f1-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-02 16:41:18.381', '2026-07-02 16:41:18.381', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('cb506e4a-75f1-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 16:41:18.381', '2026-07-02 16:41:18.381', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('cb506e4b-75f1-11f1-a696-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'StartUserNode', 'cb506e4c-75f1-11f1-a696-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-02 16:41:18.381', '2026-07-02 16:41:18.506', 3, 125, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('cb638122-75f1-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 16:41:18.506', '2026-07-02 16:41:18.506', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('cb63a833-75f1-11f1-a696-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-02 16:41:18.507', '2026-07-02 16:41:18.508', 2, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('dcc725f4-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 11:42:19.975', '2026-07-01 11:42:19.975', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('dcc725f5-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', 'sequenceFlow-7bbd2296-065b-434e-b563-a1c1d705bd56', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:42:19.975', '2026-07-01 11:42:19.975', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('dcc725f6-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', 'StartUserNode', 'dcc725f7-74fe-11f1-9120-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-01 11:42:19.975', '2026-07-01 11:42:20.113', 3, 138, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('dcdc349d-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', 'sequenceFlow-eb0353e2-5d19-4dbf-b1bd-b9dea445a047', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:42:20.113', '2026-07-01 11:42:20.113', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('dcdfb718-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdf9002-74fe-11f1-9120-00155dd68500', 'Activity__69663778421782877292716', 'dce00539-74fe-11f1-9120-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '142', '142', '2026-07-01 11:42:20.136', '2026-07-01 11:42:42.592', 2, 22456, 'MI_END', '');
+INSERT INTO `act_hi_actinst` VALUES ('e3b3af40-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-02 13:57:20.872', '2026-07-02 13:57:20.872', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e3b3af41-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'sequenceFlow-14e65f13-71d5-4178-8493-a6b070271839', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 13:57:20.872', '2026-07-02 13:57:20.872', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e3b3af42-75da-11f1-a595-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'StartUserNode', 'e3b3d653-75da-11f1-a595-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-02 13:57:20.872', '2026-07-02 13:57:21.028', 3, 156, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e3cb7d09-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'sequenceFlow-789d0473-0e43-4c45-b9d1-dbe71f1326ff', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-02 13:57:21.028', '2026-07-02 13:57:21.028', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e3cba41a-75da-11f1-a595-00155dd68500', 1, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-02 13:57:21.029', '2026-07-02 13:57:21.030', 2, 1, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e57ab5e0-7500-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-01 11:56:53.567', '2026-07-01 11:56:53.570', 1, 3, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e57b7931-7500-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'sequenceFlow-f45ecbd2-6249-47d2-8665-b6d672aad5a3', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:56:53.572', '2026-07-01 11:56:53.572', 2, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e57b7932-7500-11f1-993f-00155dd68500', 2, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'StartUserNode', 'e57cb1b3-7500-11f1-993f-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '142', '142', '2026-07-01 11:56:53.572', '2026-07-01 11:56:53.806', 3, 234, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e59f2dd9-7500-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'sequenceFlow-49af0fb9-77e8-4cfb-a47f-71cfca514474', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:56:53.806', '2026-07-01 11:56:53.806', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('e59f7bfa-7500-11f1-993f-00155dd68500', 1, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-01 11:56:53.808', '2026-07-01 11:56:53.812', 2, 4, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('ea42d6e0-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'ea42d6df-74fe-11f1-9120-00155dd68500', 'sequenceFlow-eae3321a-14b9-481c-971e-3eea0f31bf83', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-01 11:42:42.596', '2026-07-01 11:42:42.596', 1, 0, NULL, '');
+INSERT INTO `act_hi_actinst` VALUES ('ea42d6e1-74fe-11f1-9120-00155dd68500', 1, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'ea42d6df-74fe-11f1-9120-00155dd68500', 'EndEvent', NULL, NULL, '缁撴潫', 'endEvent', NULL, NULL, '2026-07-01 11:42:42.596', '2026-07-01 11:42:42.596', 2, 0, NULL, '');
+
+-- ----------------------------
+-- Table structure for act_hi_attachment
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_attachment`;
+CREATE TABLE `act_hi_attachment`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `URL_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CONTENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TIME_` datetime(3) NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_attachment
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_hi_comment
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_comment`;
+CREATE TABLE `act_hi_comment`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TIME_` datetime(3) NOT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACTION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `MESSAGE_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `FULL_MSG_` longblob NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_comment
+-- ----------------------------
+INSERT INTO `act_hi_comment` VALUES ('09a699a0-75f0-11f1-a696-00155dd68500', '1', '2026-07-02 16:28:43.971', NULL, '098bbe9b-75f0-11f1-a696-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('0b2967dc-7a93-11f1-9ea7-00155dd68500', '1', '2026-07-08 14:05:39.124', '1', '0b17dba7-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('1c84d349-7501-11f1-993f-00155dd68500', '1', '2026-07-01 11:58:25.908', NULL, '1c760734-7501-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('2c285fc1-74fc-11f1-9120-00155dd68500', '1', '2026-07-01 11:23:04.662', NULL, '2c0658cc-74fc-11f1-9120-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('46bf6921-750d-11f1-ad84-00155dd68500', '1', '2026-07-01 13:25:30.717', NULL, '46b074fc-750d-11f1-ad84-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('48558ecd-750c-11f1-ad84-00155dd68500', '1', '2026-07-01 13:18:23.882', NULL, '483339b8-750c-11f1-ad84-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('50e617ee-750c-11f1-ad84-00155dd68500', '1', '2026-07-01 13:18:38.251', '142', '4863236a-750c-11f1-ad84-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛�', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9A);
+INSERT INTO `act_hi_comment` VALUES ('54ae7349-745f-11f1-b91b-00155dd68500', '1', '2026-06-30 16:40:21.663', '142', '548ba904-745f-11f1-b91b-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('5a71745c-7a90-11f1-9ea7-00155dd68500', '1', '2026-07-08 13:46:23.646', '1', '5a5512b7-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('62528a5d-75db-11f1-80f9-00155dd68500', '1', '2026-07-02 14:00:53.306', NULL, '621ed028-75db-11f1-80f9-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('6560462b-7a95-11f1-9ea7-00155dd68500', '1', '2026-07-08 14:22:29.472', '1', '841dc266-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛�213123123', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9A323133313233313233);
+INSERT INTO `act_hi_comment` VALUES ('67530eee-75db-11f1-80f9-00155dd68500', '1', '2026-07-02 14:01:01.698', NULL, '673cc7c9-75db-11f1-80f9-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('6b3914ce-7a93-11f1-9ea7-00155dd68500', '1', '2026-07-08 14:08:20.288', '1', '6b24a269-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('7516de83-7a93-11f1-9ea7-00155dd68500', '1', '2026-07-08 14:08:36.841', '1', '75068ace-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('7ad4093c-6edd-11f1-af1d-00155dd68500', '1', '2026-06-23 16:28:15.274', '1', '7ab90727-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('84118d58-7a93-11f1-9ea7-00155dd68500', '1', '2026-07-08 14:09:01.972', '1', '83ff64e3-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('94d54137-75da-11f1-a595-00155dd68500', '1', '2026-07-02 13:55:08.552', NULL, '94a18702-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('9e227747-74fe-11f1-9120-00155dd68500', '1', '2026-07-01 11:40:34.877', NULL, '9e13f852-74fe-11f1-9120-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('cb5eed41-75f1-11f1-a696-00155dd68500', '1', '2026-07-02 16:41:18.476', NULL, 'cb506e4c-75f1-11f1-a696-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('dcd6b65c-74fe-11f1-9120-00155dd68500', '1', '2026-07-01 11:42:20.077', NULL, 'dcc725f7-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('e3c5b0a8-75da-11f1-a595-00155dd68500', '1', '2026-07-02 13:57:20.990', NULL, 'e3b3d653-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('e596f078-7500-11f1-993f-00155dd68500', '1', '2026-07-01 11:56:53.752', NULL, 'e57cb1b3-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛氬彂璧蜂汉鑺傜偣棣栨鑷姩閫氳繃', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9AE58F91E8B5B7E4BABAE88A82E782B9E9A696E6ACA1E887AAE58AA8E9809AE8BF87);
+INSERT INTO `act_hi_comment` VALUES ('ea373e1d-74fe-11f1-9120-00155dd68500', '1', '2026-07-01 11:42:42.520', '142', 'dce00539-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'AddComment', '瀹℃壒閫氳繃锛屽師鍥犳槸锛�', 0xE5AEA1E689B9E9809AE8BF87EFBC8CE58E9FE59BA0E698AFEFBC9A);
+
+-- ----------------------------
+-- Table structure for act_hi_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_detail`;
+CREATE TABLE `act_hi_detail`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACT_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `VAR_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `TIME_` datetime(3) NOT NULL,
+  `BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DOUBLE_` double NULL DEFAULT NULL,
+  `LONG_` bigint NULL DEFAULT NULL,
+  `TEXT_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TEXT2_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_HI_DETAIL_PROC_INST`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_DETAIL_ACT_INST`(`ACT_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_DETAIL_TIME`(`TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_DETAIL_NAME`(`NAME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_DETAIL_TASK_ID`(`TASK_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_hi_entitylink
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_entitylink`;
+CREATE TABLE `act_hi_entitylink`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `LINK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PARENT_ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REF_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REF_SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REF_SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ROOT_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ROOT_SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HIERARCHY_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_HI_ENT_LNK_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_ENT_LNK_REF_SCOPE`(`REF_SCOPE_ID_` ASC, `REF_SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_ENT_LNK_ROOT_SCOPE`(`ROOT_SCOPE_ID_` ASC, `ROOT_SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_ENT_LNK_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_entitylink
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_hi_identitylink
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_identitylink`;
+CREATE TABLE `act_hi_identitylink`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `GROUP_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_HI_IDENT_LNK_USER`(`USER_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_IDENT_LNK_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_IDENT_LNK_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_IDENT_LNK_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_IDENT_LNK_TASK`(`TASK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_IDENT_LNK_PROCINST`(`PROC_INST_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_identitylink
+-- ----------------------------
+INSERT INTO `act_hi_identitylink` VALUES ('0986dc93-75f0-11f1-a696-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-02 16:28:43.764', '0986b582-75f0-11f1-a696-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('098d6c4c-75f0-11f1-a696-00155dd68500', NULL, 'assignee', '142', '098bbe9b-75f0-11f1-a696-00155dd68500', '2026-07-02 16:28:43.806', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('098d935d-75f0-11f1-a696-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-02 16:28:43.807', '0986b582-75f0-11f1-a696-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('0b156a99-7a93-11f1-9ea7-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-08 14:05:38.993', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('0b1850d8-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '0b17dba7-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:05:39.012', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('0b1850d9-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:05:39.012', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('0b2ee61d-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:05:39.160', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('0b32689b-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '104', '0b32418a-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:05:39.183', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('0b32689c-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '104', NULL, '2026-07-08 14:05:39.183', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('1c75e01c-7501-11f1-993f-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-01 11:58:25.810', '1c75e01b-7501-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('1c765455-7501-11f1-993f-00155dd68500', NULL, 'assignee', '1', '1c760734-7501-11f1-993f-00155dd68500', '2026-07-01 11:58:25.813', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('1c765456-7501-11f1-993f-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-01 11:58:25.813', '1c75e01b-7501-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('2c010194-74fc-11f1-9120-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-01 11:23:04.405', '2c00b373-74fc-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('2c08549d-74fc-11f1-9120-00155dd68500', NULL, 'assignee', '142', '2c0658cc-74fc-11f1-9120-00155dd68500', '2026-07-01 11:23:04.452', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('2c08a2be-74fc-11f1-9120-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 11:23:04.454', '2c00b373-74fc-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('46b026d4-750d-11f1-ad84-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-01 13:25:30.617', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('46b0c31d-750d-11f1-ad84-00155dd68500', NULL, 'assignee', '1', '46b074fc-750d-11f1-ad84-00155dd68500', '2026-07-01 13:25:30.621', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('46b0c31e-750d-11f1-ad84-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-01 13:25:30.621', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('46c646ff-750d-11f1-ad84-00155dd68500', NULL, 'assignee', '142', '46c61fee-750d-11f1-ad84-00155dd68500', '2026-07-01 13:25:30.762', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('46c66e10-750d-11f1-ad84-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 13:25:30.763', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('4830a1a0-750c-11f1-ad84-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-01 13:18:23.641', '48307a8f-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('48353589-750c-11f1-ad84-00155dd68500', NULL, 'assignee', '142', '483339b8-750c-11f1-ad84-00155dd68500', '2026-07-01 13:18:23.670', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('48355c9a-750c-11f1-ad84-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 13:18:23.671', '48307a8f-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('4863236b-750c-11f1-ad84-00155dd68500', NULL, 'assignee', '142', '4863236a-750c-11f1-ad84-00155dd68500', '2026-07-01 13:18:23.971', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('50eb20ff-750c-11f1-ad84-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 13:18:38.284', '48307a8f-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('5484cb2c-745f-11f1-b91b-00155dd68500', NULL, 'starter', '142', NULL, '2026-06-30 16:40:21.390', '54847d0b-745f-11f1-b91b-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('548df2f5-745f-11f1-b91b-00155dd68500', NULL, 'assignee', '142', '548ba904-745f-11f1-b91b-00155dd68500', '2026-06-30 16:40:21.450', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('548e1a06-745f-11f1-b91b-00155dd68500', NULL, 'participant', '142', NULL, '2026-06-30 16:40:21.451', '54847d0b-745f-11f1-b91b-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('54b48dca-745f-11f1-b91b-00155dd68500', NULL, 'participant', '142', NULL, '2026-06-30 16:40:21.703', '54847d0b-745f-11f1-b91b-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('5a51692c-7a90-11f1-9ea7-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-08 13:46:23.437', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('5a55fd18-7a90-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '5a5512b7-7a90-11f1-9ea7-00155dd68500', '2026-07-08 13:46:23.466', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('5a567249-7a90-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 13:46:23.469', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('5a798aad-7a90-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 13:46:23.699', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('621496f0-75db-11f1-80f9-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-02 14:00:52.901', '621448cf-75db-11f1-80f9-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('62225299-75db-11f1-80f9-00155dd68500', NULL, 'assignee', '142', '621ed028-75db-11f1-80f9-00155dd68500', '2026-07-02 14:00:52.990', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('622315ea-75db-11f1-80f9-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-02 14:00:52.995', '621448cf-75db-11f1-80f9-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('6566128c-7a95-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:22:29.510', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('673c2b81-75db-11f1-80f9-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-02 14:01:01.548', '673c2b80-75db-11f1-80f9-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('673dd93a-75db-11f1-80f9-00155dd68500', NULL, 'assignee', '1', '673cc7c9-75db-11f1-80f9-00155dd68500', '2026-07-02 14:01:01.559', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('673dd93b-75db-11f1-80f9-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-02 14:01:01.559', '673c2b80-75db-11f1-80f9-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('6b24543b-7a93-11f1-9ea7-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-08 14:08:20.152', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('6b2565ba-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '6b24a269-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:08:20.159', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('6b2565bb-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:08:20.159', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('6b3e44ef-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:08:20.322', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('6b40b5fd-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '6b40b5fc-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:08:20.338', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('750663b0-7a93-11f1-9ea7-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-08 14:08:36.733', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('7506d8ef-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '75068ace-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:08:36.736', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('7506d8f0-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:08:36.736', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('751cd1f4-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:08:36.880', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('751f9022-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '751f9021-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:08:36.898', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('7ab49a4d-6edd-11f1-af1d-00155dd68500', NULL, 'starter', '1', NULL, '2026-06-23 16:28:15.068', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('7abab4d8-6edd-11f1-af1d-00155dd68500', NULL, 'assignee', '1', '7ab90727-6edd-11f1-af1d-00155dd68500', '2026-06-23 16:28:15.108', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('7abb02f9-6edd-11f1-af1d-00155dd68500', NULL, 'participant', '1', NULL, '2026-06-23 16:28:15.110', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('7adc6db2-6edd-11f1-af1d-00155dd68500', NULL, 'participant', '1', NULL, '2026-06-23 16:28:15.329', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('83ff16b5-7a93-11f1-9ea7-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-08 14:09:01.851', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('83ffb304-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '83ff64e3-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:09:01.855', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('83ffb305-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:09:01.855', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('8419cab9-7a93-11f1-9ea7-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-08 14:09:02.026', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('841dc267-7a93-11f1-9ea7-00155dd68500', NULL, 'assignee', '1', '841dc266-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:09:02.052', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('949c7dea-75da-11f1-a595-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-02 13:55:08.181', '949c7de9-75da-11f1-a595-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('94a61ae3-75da-11f1-a595-00155dd68500', NULL, 'assignee', '142', '94a18702-75da-11f1-a595-00155dd68500', '2026-07-02 13:55:08.243', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('94a66904-75da-11f1-a595-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-02 13:55:08.245', '949c7de9-75da-11f1-a595-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('9e13aa2a-74fe-11f1-9120-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-01 11:40:34.781', '9e13aa29-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('9e144673-74fe-11f1-9120-00155dd68500', NULL, 'assignee', '1', '9e13f852-74fe-11f1-9120-00155dd68500', '2026-07-01 11:40:34.784', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('9e144674-74fe-11f1-9120-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-01 11:40:34.784', '9e13aa29-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('cb504734-75f1-11f1-a696-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-02 16:41:18.380', 'cb504733-75f1-11f1-a696-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('cb50e37d-75f1-11f1-a696-00155dd68500', NULL, 'assignee', '1', 'cb506e4c-75f1-11f1-a696-00155dd68500', '2026-07-02 16:41:18.384', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('cb50e37e-75f1-11f1-a696-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-02 16:41:18.384', 'cb504733-75f1-11f1-a696-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('dcc6fedf-74fe-11f1-9120-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-01 11:42:19.974', 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('dcc79b28-74fe-11f1-9120-00155dd68500', NULL, 'assignee', '142', 'dcc725f7-74fe-11f1-9120-00155dd68500', '2026-07-01 11:42:19.978', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('dcc79b29-74fe-11f1-9120-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 11:42:19.978', 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('dce0053a-74fe-11f1-9120-00155dd68500', NULL, 'assignee', '142', 'dce00539-74fe-11f1-9120-00155dd68500', '2026-07-01 11:42:20.138', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('e3b3882b-75da-11f1-a595-00155dd68500', NULL, 'starter', '1', NULL, '2026-07-02 13:57:20.871', 'e3b3882a-75da-11f1-a595-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('e3b42474-75da-11f1-a595-00155dd68500', NULL, 'assignee', '1', 'e3b3d653-75da-11f1-a595-00155dd68500', '2026-07-02 13:57:20.875', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('e3b42475-75da-11f1-a595-00155dd68500', NULL, 'participant', '1', NULL, '2026-07-02 13:57:20.875', 'e3b3882a-75da-11f1-a595-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('e579f28b-7500-11f1-993f-00155dd68500', NULL, 'starter', '142', NULL, '2026-07-01 11:56:53.562', 'e579a46a-7500-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('e57e3854-7500-11f1-993f-00155dd68500', NULL, 'assignee', '142', 'e57cb1b3-7500-11f1-993f-00155dd68500', '2026-07-01 11:56:53.590', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('e57e8675-7500-11f1-993f-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 11:56:53.592', 'e579a46a-7500-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_identitylink` VALUES ('ea3c201e-74fe-11f1-9120-00155dd68500', NULL, 'participant', '142', NULL, '2026-07-01 11:42:42.552', 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL);
+
+-- ----------------------------
+-- Table structure for act_hi_procinst
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_procinst`;
+CREATE TABLE `act_hi_procinst`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT 1,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `START_TIME_` datetime(3) NOT NULL,
+  `END_TIME_` datetime(3) NULL DEFAULT NULL,
+  `DURATION_` bigint NULL DEFAULT NULL,
+  `START_USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `START_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `END_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUPER_PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CALLBACK_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CALLBACK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REFERENCE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REFERENCE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BUSINESS_STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `END_USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `STATE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  UNIQUE INDEX `PROC_INST_ID_`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_PRO_INST_END`(`END_TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_PRO_I_BUSKEY`(`BUSINESS_KEY_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_PRO_SUPER_PROCINST`(`SUPER_PROCESS_INSTANCE_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_procinst
+-- ----------------------------
+INSERT INTO `act_hi_procinst` VALUES ('0986b582-75f0-11f1-a696-00155dd68500', 2, '0986b582-75f0-11f1-a696-00155dd68500', '17', 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-02 16:28:43.762', '2026-07-02 16:28:44.109', 347, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('0b156a98-7a93-11f1-9ea7-00155dd68500', 2, '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', '2026-07-08 14:05:38.993', '2026-07-08 14:06:54.913', 75920, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '璇峰亣娴佺▼', NULL, NULL, NULL, NULL, NULL, NULL, '1', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('1c75e01b-7501-11f1-993f-00155dd68500', 2, '1c75e01b-7501-11f1-993f-00155dd68500', '1', 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '2026-07-01 11:58:25.810', '2026-07-01 11:58:25.980', 170, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '121', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('2c00b373-74fc-11f1-9120-00155dd68500', 2, '2c00b373-74fc-11f1-9120-00155dd68500', '5', 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2026-07-01 11:23:04.402', '2026-07-01 11:23:04.839', 437, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '閲囪喘瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('46b026d3-750d-11f1-ad84-00155dd68500', 2, '46b026d3-750d-11f1-ad84-00155dd68500', '8', 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '2026-07-01 13:25:30.617', '2026-07-08 14:06:06.232', 607235615, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '閲囪喘瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, '1', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('48307a8f-750c-11f1-ad84-00155dd68500', 2, '48307a8f-750c-11f1-ad84-00155dd68500', '7', 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '2026-07-01 13:18:23.639', '2026-07-01 13:18:38.461', 14822, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '閲囪喘瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, '142', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('54847d0b-745f-11f1-b91b-00155dd68500', 2, '54847d0b-745f-11f1-b91b-00155dd68500', NULL, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', '2026-06-30 16:40:21.388', '2026-06-30 16:40:21.818', 430, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '121', NULL, NULL, NULL, NULL, NULL, NULL, '142', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('5a51421b-7a90-11f1-9ea7-00155dd68500', 2, '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-08 13:46:23.435', '2026-07-08 13:46:23.830', 395, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, '1', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('621448cf-75db-11f1-80f9-00155dd68500', 2, '621448cf-75db-11f1-80f9-00155dd68500', '15', 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-02 14:00:52.898', '2026-07-02 14:00:53.626', 728, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('673c2b80-75db-11f1-80f9-00155dd68500', 2, '673c2b80-75db-11f1-80f9-00155dd68500', '16', 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-02 14:01:01.548', '2026-07-02 14:01:01.843', 295, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('6b24543a-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:08:20.152', NULL, NULL, '1', 'StartEvent', NULL, NULL, NULL, '', '璇峰亣娴佺▼', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'running');
+INSERT INTO `act_hi_procinst` VALUES ('75063c9f-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:08:36.732', NULL, NULL, '1', 'StartEvent', NULL, NULL, NULL, '', '璇峰亣娴佺▼', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'running');
+INSERT INTO `act_hi_procinst` VALUES ('7ab4733c-6edd-11f1-af1d-00155dd68500', 2, '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', '2026-06-23 16:28:15.067', '2026-06-23 16:28:15.448', 381, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '121', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_hi_procinst` VALUES ('83ff16b4-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '2026-07-08 14:09:01.851', '2026-07-08 14:22:29.595', 807744, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '璇峰亣娴佺▼', NULL, NULL, NULL, NULL, NULL, NULL, '1', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('949c7de9-75da-11f1-a595-00155dd68500', 2, '949c7de9-75da-11f1-a595-00155dd68500', '13', 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-02 13:55:08.180', '2026-07-02 13:55:08.798', 618, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('9e13aa29-74fe-11f1-9120-00155dd68500', 2, '9e13aa29-74fe-11f1-9120-00155dd68500', '4', 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '2026-07-01 11:40:34.780', '2026-07-01 11:40:34.951', 171, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '閲囪喘瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('cb504733-75f1-11f1-a696-00155dd68500', 2, 'cb504733-75f1-11f1-a696-00155dd68500', '18', 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-02 16:41:18.380', '2026-07-02 16:41:18.566', 186, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('dcc6fede-74fe-11f1-9120-00155dd68500', 2, 'dcc6fede-74fe-11f1-9120-00155dd68500', '3', 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '2026-07-01 11:42:19.974', '2026-07-01 11:42:42.629', 22655, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '閲囪喘瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, '142', 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('e3b3882a-75da-11f1-a595-00155dd68500', 2, 'e3b3882a-75da-11f1-a595-00155dd68500', '14', 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '2026-07-02 13:57:20.871', '2026-07-02 13:57:21.073', 202, '1', 'StartEvent', 'EndEvent', NULL, NULL, '', '鍚堝悓瀹℃牳', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+INSERT INTO `act_hi_procinst` VALUES ('e579a46a-7500-11f1-993f-00155dd68500', 2, 'e579a46a-7500-11f1-993f-00155dd68500', '2', 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', '2026-07-01 11:56:53.560', '2026-07-01 11:56:53.873', 313, '142', 'StartEvent', 'EndEvent', NULL, NULL, '', '121', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'completed');
+
+-- ----------------------------
+-- Table structure for act_hi_taskinst
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_taskinst`;
+CREATE TABLE `act_hi_taskinst`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT 1,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `STATE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `START_TIME_` datetime(3) NOT NULL,
+  `IN_PROGRESS_TIME_` datetime(3) NULL DEFAULT NULL,
+  `IN_PROGRESS_STARTED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CLAIM_TIME_` datetime(3) NULL DEFAULT NULL,
+  `CLAIMED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUSPENDED_TIME_` datetime(3) NULL DEFAULT NULL,
+  `SUSPENDED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `END_TIME_` datetime(3) NULL DEFAULT NULL,
+  `COMPLETED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DURATION_` bigint NULL DEFAULT NULL,
+  `DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PRIORITY_` int NULL DEFAULT NULL,
+  `IN_PROGRESS_DUE_DATE_` datetime(3) NULL DEFAULT NULL,
+  `DUE_DATE_` datetime(3) NULL DEFAULT NULL,
+  `FORM_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  `LAST_UPDATED_TIME_` datetime(3) NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_HI_TASK_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_TASK_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_TASK_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_TASK_INST_PROCINST`(`PROC_INST_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_taskinst
+-- ----------------------------
+INSERT INTO `act_hi_taskinst` VALUES ('098bbe9b-75f0-11f1-a696-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-02 16:28:43.775', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 16:28:44.014', NULL, 239, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-02 16:28:44.014');
+INSERT INTO `act_hi_taskinst` VALUES ('0b17dba7-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', NULL, 'StartUserNode', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-08 14:05:39.009', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:05:39.168', NULL, 159, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:05:39.168');
+INSERT INTO `act_hi_taskinst` VALUES ('0b32418a-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007', '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b317e33-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '瀹℃壒浜�', NULL, NULL, NULL, '104', '2026-07-08 14:05:39.180', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:06:54.896', NULL, 75716, 'Change parent activity to EndEvent', 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:06:54.896');
+INSERT INTO `act_hi_taskinst` VALUES ('1c760734-7501-11f1-993f-00155dd68500', 2, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', NULL, 'StartUserNode', '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-01 11:58:25.811', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:58:25.935', NULL, 124, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 11:58:25.935');
+INSERT INTO `act_hi_taskinst` VALUES ('2c0658cc-74fc-11f1-9120-00155dd68500', 2, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', NULL, 'StartUserNode', '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-01 11:23:04.418', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:23:04.721', NULL, 303, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 11:23:04.721');
+INSERT INTO `act_hi_taskinst` VALUES ('46b074fc-750d-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', NULL, 'StartUserNode', '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-01 13:25:30.619', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 13:25:30.747', NULL, 128, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 13:25:30.747');
+INSERT INTO `act_hi_taskinst` VALUES ('46c61fee-750d-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', NULL, 'Activity__69663778421782877292716', '46b026d3-750d-11f1-ad84-00155dd68500', '46c5f8d7-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '瀹℃壒浜�', NULL, NULL, NULL, '142', '2026-07-01 13:25:30.760', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:06:06.140', NULL, 607235380, 'Change parent activity to EndEvent', 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-08 14:06:06.140');
+INSERT INTO `act_hi_taskinst` VALUES ('483339b8-750c-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', NULL, 'StartUserNode', '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-01 13:18:23.651', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 13:18:23.933', NULL, 282, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 13:18:23.933');
+INSERT INTO `act_hi_taskinst` VALUES ('4863236a-750c-11f1-ad84-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', NULL, 'Activity__69663778421782877292716', '48307a8f-750c-11f1-ad84-00155dd68500', '48626013-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '瀹℃壒浜�', NULL, NULL, NULL, '142', '2026-07-01 13:18:23.968', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 13:18:38.314', NULL, 14346, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 13:18:38.314');
+INSERT INTO `act_hi_taskinst` VALUES ('548ba904-745f-11f1-b91b-00155dd68500', 2, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', NULL, 'StartUserNode', '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-06-30 16:40:21.411', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-30 16:40:21.712', NULL, 301, NULL, 50, NULL, NULL, NULL, '鍒嗙被1', '', '2026-06-30 16:40:21.712');
+INSERT INTO `act_hi_taskinst` VALUES ('5a5512b7-7a90-11f1-9ea7-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-08 13:46:23.454', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 13:46:23.707', NULL, 253, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-08 13:46:23.707');
+INSERT INTO `act_hi_taskinst` VALUES ('621ed028-75db-11f1-80f9-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-02 14:00:52.927', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 14:00:53.396', NULL, 469, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-02 14:00:53.396');
+INSERT INTO `act_hi_taskinst` VALUES ('673cc7c9-75db-11f1-80f9-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-02 14:01:01.552', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 14:01:01.755', NULL, 203, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-02 14:01:01.755');
+INSERT INTO `act_hi_taskinst` VALUES ('6b24a269-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, 'StartUserNode', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-08 14:08:20.154', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:08:20.330', NULL, 176, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:08:20.330');
+INSERT INTO `act_hi_taskinst` VALUES ('6b40b5fc-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b408ee5-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'created', '瀹℃壒浜�', NULL, NULL, NULL, '1', '2026-07-08 14:08:20.337', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:08:20.338');
+INSERT INTO `act_hi_taskinst` VALUES ('75068ace-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, 'StartUserNode', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-08 14:08:36.734', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:08:36.889', NULL, 155, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:08:36.889');
+INSERT INTO `act_hi_taskinst` VALUES ('751f9021-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007', '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f6a0a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'created', '瀹℃壒浜�', NULL, NULL, NULL, '1', '2026-07-08 14:08:36.897', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:08:36.898');
+INSERT INTO `act_hi_taskinst` VALUES ('7ab90727-6edd-11f1-af1d-00155dd68500', 2, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', NULL, 'StartUserNode', '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-06-23 16:28:15.080', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-23 16:28:15.340', NULL, 260, NULL, 50, NULL, NULL, NULL, '鍒嗙被1', '', '2026-06-23 16:28:15.340');
+INSERT INTO `act_hi_taskinst` VALUES ('83ff64e3-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, 'StartUserNode', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-08 14:09:01.853', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:09:02.041', NULL, 188, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:09:02.041');
+INSERT INTO `act_hi_taskinst` VALUES ('841dc266-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007', '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '瀹℃壒浜�', NULL, NULL, NULL, '1', '2026-07-08 14:09:02.051', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:22:29.531', NULL, 807480, NULL, 50, NULL, NULL, NULL, '鍒嗙被2', '', '2026-07-08 14:22:29.531');
+INSERT INTO `act_hi_taskinst` VALUES ('94a18702-75da-11f1-a595-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-02 13:55:08.191', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 13:55:08.608', NULL, 417, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-02 13:55:08.608');
+INSERT INTO `act_hi_taskinst` VALUES ('9e13f852-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', NULL, 'StartUserNode', '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-01 11:40:34.782', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:40:34.908', NULL, 126, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 11:40:34.908');
+INSERT INTO `act_hi_taskinst` VALUES ('cb506e4c-75f1-11f1-a696-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-02 16:41:18.381', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 16:41:18.502', NULL, 121, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-02 16:41:18.502');
+INSERT INTO `act_hi_taskinst` VALUES ('dcc725f7-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', NULL, 'StartUserNode', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-01 11:42:19.975', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:42:20.109', NULL, 134, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 11:42:20.109');
+INSERT INTO `act_hi_taskinst` VALUES ('dce00539-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', NULL, 'Activity__69663778421782877292716', 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdf9002-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '瀹℃壒浜�', NULL, NULL, NULL, '142', '2026-07-01 11:42:20.136', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:42:42.570', NULL, 22434, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 11:42:42.570');
+INSERT INTO `act_hi_taskinst` VALUES ('e3b3d653-75da-11f1-a595-00155dd68500', 2, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', NULL, 'StartUserNode', 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '1', '2026-07-02 13:57:20.872', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 13:57:21.023', NULL, 151, NULL, 50, NULL, NULL, NULL, 'contract_approve', '', '2026-07-02 13:57:21.023');
+INSERT INTO `act_hi_taskinst` VALUES ('e57cb1b3-7500-11f1-993f-00155dd68500', 2, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', NULL, 'StartUserNode', 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL, NULL, 'completed', '鍙戣捣浜�', NULL, NULL, NULL, '142', '2026-07-01 11:56:53.572', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:56:53.800', NULL, 228, NULL, 50, NULL, NULL, NULL, 'purchase_request_approve', '', '2026-07-01 11:56:53.800');
+
+-- ----------------------------
+-- Table structure for act_hi_tsk_log
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_tsk_log`;
+CREATE TABLE `act_hi_tsk_log`  (
+  `ID_` bigint NOT NULL AUTO_INCREMENT,
+  `TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `TIME_STAMP_` timestamp(3) NOT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DATA_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_ACT_HI_TSK_LOG_TASK`(`TASK_ID_` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_tsk_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_hi_varinst
+-- ----------------------------
+DROP TABLE IF EXISTS `act_hi_varinst`;
+CREATE TABLE `act_hi_varinst`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT 1,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `VAR_TYPE_` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DOUBLE_` double NULL DEFAULT NULL,
+  `LONG_` bigint NULL DEFAULT NULL,
+  `TEXT_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TEXT2_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `META_INFO_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `LAST_UPDATED_TIME_` datetime(3) NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_HI_PROCVAR_NAME_TYPE`(`NAME_` ASC, `VAR_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_VAR_SCOPE_ID_TYPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_VAR_SUB_ID_TYPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_PROCVAR_PROC_INST`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_PROCVAR_TASK_ID`(`TASK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_HI_PROCVAR_EXE`(`EXECUTION_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_hi_varinst
+-- ----------------------------
+INSERT INTO `act_hi_varinst` VALUES ('0987c6f4-75f0-11f1-a696-00155dd68500', 1, '0986b582-75f0-11f1-a696-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-02 16:28:43.770', '2026-07-02 16:28:43.979');
+INSERT INTO `act_hi_varinst` VALUES ('0987ee05-75f0-11f1-a696-00155dd68500', 1, '0986b582-75f0-11f1-a696-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-02 16:28:43.770', '2026-07-02 16:28:43.982');
+INSERT INTO `act_hi_varinst` VALUES ('0987ee06-75f0-11f1-a696-00155dd68500', 2, '0986b582-75f0-11f1-a696-00155dd68500', '0986b582-75f0-11f1-a696-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 16:28:43.770', '2026-07-02 16:28:44.044');
+INSERT INTO `act_hi_varinst` VALUES ('098e56ae-75f0-11f1-a696-00155dd68500', 1, '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', '098bbe9b-75f0-11f1-a696-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 16:28:43.812', '2026-07-02 16:28:43.939');
+INSERT INTO `act_hi_varinst` VALUES ('09a4289f-75f0-11f1-a696-00155dd68500', 0, '0986b582-75f0-11f1-a696-00155dd68500', '0987ee07-75f0-11f1-a696-00155dd68500', '098bbe9b-75f0-11f1-a696-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-02 16:28:43.955', '2026-07-02 16:28:43.955');
+INSERT INTO `act_hi_varinst` VALUES ('0b1591aa-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:05:38.994', '2026-07-08 14:05:39.129');
+INSERT INTO `act_hi_varinst` VALUES ('0b1591ab-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-08 14:05:38.994', '2026-07-08 14:05:39.130');
+INSERT INTO `act_hi_varinst` VALUES ('0b1591ac-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, '6ada8f47c5ad483ca7e2a15da2d922d1', 'integer', NULL, NULL, NULL, NULL, NULL, 110, '110', NULL, NULL, '2026-07-08 14:05:38.994', '2026-07-08 14:05:39.132');
+INSERT INTO `act_hi_varinst` VALUES ('0b1591ad-7a93-11f1-9ea7-00155dd68500', 2, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 4, '4', NULL, NULL, '2026-07-08 14:05:38.994', '2026-07-08 14:06:54.828');
+INSERT INTO `act_hi_varinst` VALUES ('0b1591ae-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'ce674cb3f7604c5da893b347bf1ff855', 'integer', NULL, NULL, NULL, NULL, NULL, 103, '103', NULL, NULL, '2026-07-08 14:05:38.994', '2026-07-08 14:05:39.136');
+INSERT INTO `act_hi_varinst` VALUES ('0b1591af-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'F7a8mrbnxj65cuc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '<p>4123123123</p>', NULL, NULL, '2026-07-08 14:05:38.994', '2026-07-08 14:05:39.138');
+INSERT INTO `act_hi_varinst` VALUES ('0b17b491-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'Fn60mrbnvny3clc', 'serializable', NULL, NULL, NULL, '0b17dba2-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:05:39.008', '2026-07-08 14:05:39.141');
+INSERT INTO `act_hi_varinst` VALUES ('0b1877ea-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', '0b17dba7-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 14:05:39.013', '2026-07-08 14:05:39.102');
+INSERT INTO `act_hi_varinst` VALUES ('0b27ba2b-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b17dba3-7a93-11f1-9ea7-00155dd68500', '0b17dba7-7a93-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-08 14:05:39.113', '2026-07-08 14:05:39.113');
+INSERT INTO `act_hi_varinst` VALUES ('0b317e31-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b30badf-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignees', 'serializable', NULL, NULL, NULL, '0b317e32-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:05:39.177', '2026-07-08 14:05:39.177');
+INSERT INTO `act_hi_varinst` VALUES ('0b317e34-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b30badf-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:05:39.177', '2026-07-08 14:05:39.177');
+INSERT INTO `act_hi_varinst` VALUES ('0b317e35-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b30badf-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:05:39.177', '2026-07-08 14:05:39.177');
+INSERT INTO `act_hi_varinst` VALUES ('0b317e36-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b30badf-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:05:39.177', '2026-07-08 14:05:39.177');
+INSERT INTO `act_hi_varinst` VALUES ('0b317e37-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b317e33-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 104, '104', NULL, NULL, '2026-07-08 14:05:39.177', '2026-07-08 14:05:39.177');
+INSERT INTO `act_hi_varinst` VALUES ('0b31f368-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b317e33-7a93-11f1-9ea7-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:05:39.180', '2026-07-08 14:05:39.180');
+INSERT INTO `act_hi_varinst` VALUES ('0b32ddcd-7a93-11f1-9ea7-00155dd68500', 1, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b317e33-7a93-11f1-9ea7-00155dd68500', '0b32418a-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 4, '4', NULL, NULL, '2026-07-08 14:05:39.186', '2026-07-08 14:06:54.868');
+INSERT INTO `act_hi_varinst` VALUES ('1b39a64e-7a93-11f1-9ea7-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, 'PROCESS_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鐢ㄦ埛涓诲姩鍙栨秷娴佺▼锛屽師鍥狅細12314', NULL, NULL, '2026-07-08 14:06:06.074', '2026-07-08 14:06:06.074');
+INSERT INTO `act_hi_varinst` VALUES ('1b3f248f-7a93-11f1-9ea7-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c5f8d7-750d-11f1-ad84-00155dd68500', '46c61fee-750d-11f1-ad84-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '绯荤粺鑷姩鍙栨秷', NULL, NULL, '2026-07-08 14:06:06.110', '2026-07-08 14:06:06.110');
+INSERT INTO `act_hi_varinst` VALUES ('1c76072d-7501-11f1-993f-00155dd68500', 1, '1c75e01b-7501-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 11:58:25.811', '2026-07-01 11:58:25.912');
+INSERT INTO `act_hi_varinst` VALUES ('1c76072e-7501-11f1-993f-00155dd68500', 1, '1c75e01b-7501-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 11:58:25.811', '2026-07-01 11:58:25.914');
+INSERT INTO `act_hi_varinst` VALUES ('1c76072f-7501-11f1-993f-00155dd68500', 2, '1c75e01b-7501-11f1-993f-00155dd68500', '1c75e01b-7501-11f1-993f-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:58:25.811', '2026-07-01 11:58:25.952');
+INSERT INTO `act_hi_varinst` VALUES ('1c767b67-7501-11f1-993f-00155dd68500', 1, '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', '1c760734-7501-11f1-993f-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:58:25.814', '2026-07-01 11:58:25.889');
+INSERT INTO `act_hi_varinst` VALUES ('1c834ca8-7501-11f1-993f-00155dd68500', 0, '1c75e01b-7501-11f1-993f-00155dd68500', '1c760730-7501-11f1-993f-00155dd68500', '1c760734-7501-11f1-993f-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 11:58:25.898', '2026-07-01 11:58:25.898');
+INSERT INTO `act_hi_varinst` VALUES ('2c01ebf5-74fc-11f1-9120-00155dd68500', 1, '2c00b373-74fc-11f1-9120-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 11:23:04.412', '2026-07-01 11:23:04.675');
+INSERT INTO `act_hi_varinst` VALUES ('2c023a16-74fc-11f1-9120-00155dd68500', 1, '2c00b373-74fc-11f1-9120-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 11:23:04.412', '2026-07-01 11:23:04.679');
+INSERT INTO `act_hi_varinst` VALUES ('2c026127-74fc-11f1-9120-00155dd68500', 2, '2c00b373-74fc-11f1-9120-00155dd68500', '2c00b373-74fc-11f1-9120-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:23:04.413', '2026-07-01 11:23:04.771');
+INSERT INTO `act_hi_varinst` VALUES ('2c093eff-74fc-11f1-9120-00155dd68500', 1, '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', '2c0658cc-74fc-11f1-9120-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:23:04.458', '2026-07-01 11:23:04.627');
+INSERT INTO `act_hi_varinst` VALUES ('2c25eec0-74fc-11f1-9120-00155dd68500', 0, '2c00b373-74fc-11f1-9120-00155dd68500', '2c026128-74fc-11f1-9120-00155dd68500', '2c0658cc-74fc-11f1-9120-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 11:23:04.646', '2026-07-01 11:23:04.646');
+INSERT INTO `act_hi_varinst` VALUES ('384b5c72-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b156a98-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鐢ㄦ埛涓诲姩鍙栨秷娴佺▼锛屽師鍥狅細123123', NULL, NULL, '2026-07-08 14:06:54.844', '2026-07-08 14:06:54.844');
+INSERT INTO `act_hi_varinst` VALUES ('38508c93-7a93-11f1-9ea7-00155dd68500', 0, '0b156a98-7a93-11f1-9ea7-00155dd68500', '0b317e33-7a93-11f1-9ea7-00155dd68500', '0b32418a-7a93-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '绯荤粺鑷姩鍙栨秷', NULL, NULL, '2026-07-08 14:06:54.878', '2026-07-08 14:06:54.878');
+INSERT INTO `act_hi_varinst` VALUES ('46b04de5-750d-11f1-ad84-00155dd68500', 1, '46b026d3-750d-11f1-ad84-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 13:25:30.618', '2026-07-01 13:25:30.722');
+INSERT INTO `act_hi_varinst` VALUES ('46b04de6-750d-11f1-ad84-00155dd68500', 1, '46b026d3-750d-11f1-ad84-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 13:25:30.618', '2026-07-01 13:25:30.724');
+INSERT INTO `act_hi_varinst` VALUES ('46b04de7-750d-11f1-ad84-00155dd68500', 2, '46b026d3-750d-11f1-ad84-00155dd68500', '46b026d3-750d-11f1-ad84-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 4, '4', NULL, NULL, '2026-07-01 13:25:30.618', '2026-07-08 14:06:06.056');
+INSERT INTO `act_hi_varinst` VALUES ('46b0ea2f-750d-11f1-ad84-00155dd68500', 1, '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', '46b074fc-750d-11f1-ad84-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 13:25:30.622', '2026-07-01 13:25:30.698');
+INSERT INTO `act_hi_varinst` VALUES ('46be0990-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46b04de8-750d-11f1-ad84-00155dd68500', '46b074fc-750d-11f1-ad84-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 13:25:30.708', '2026-07-01 13:25:30.708');
+INSERT INTO `act_hi_varinst` VALUES ('46c5d1c5-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c55c93-750d-11f1-ad84-00155dd68500', NULL, 'Activity__69663778421782877292716_assignees', 'serializable', NULL, NULL, NULL, '46c5f8d6-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-01 13:25:30.759', '2026-07-01 13:25:30.759');
+INSERT INTO `act_hi_varinst` VALUES ('46c5f8d8-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c55c93-750d-11f1-ad84-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 13:25:30.760', '2026-07-01 13:25:30.760');
+INSERT INTO `act_hi_varinst` VALUES ('46c5f8d9-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c55c93-750d-11f1-ad84-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-01 13:25:30.760', '2026-07-01 13:25:30.760');
+INSERT INTO `act_hi_varinst` VALUES ('46c5f8da-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c55c93-750d-11f1-ad84-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 13:25:30.760', '2026-07-01 13:25:30.760');
+INSERT INTO `act_hi_varinst` VALUES ('46c5f8db-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c5f8d7-750d-11f1-ad84-00155dd68500', NULL, 'Activity__69663778421782877292716_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 13:25:30.760', '2026-07-01 13:25:30.760');
+INSERT INTO `act_hi_varinst` VALUES ('46c5f8dc-750d-11f1-ad84-00155dd68500', 0, '46b026d3-750d-11f1-ad84-00155dd68500', '46c5f8d7-750d-11f1-ad84-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-01 13:25:30.760', '2026-07-01 13:25:30.760');
+INSERT INTO `act_hi_varinst` VALUES ('46c6e341-750d-11f1-ad84-00155dd68500', 1, '46b026d3-750d-11f1-ad84-00155dd68500', '46c5f8d7-750d-11f1-ad84-00155dd68500', '46c61fee-750d-11f1-ad84-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 4, '4', NULL, NULL, '2026-07-01 13:25:30.766', '2026-07-08 14:06:06.102');
+INSERT INTO `act_hi_varinst` VALUES ('48313de1-750c-11f1-ad84-00155dd68500', 2, '48307a8f-750c-11f1-ad84-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 13:18:23.646', '2026-07-01 13:18:38.256');
+INSERT INTO `act_hi_varinst` VALUES ('48318c02-750c-11f1-ad84-00155dd68500', 2, '48307a8f-750c-11f1-ad84-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 13:18:23.646', '2026-07-01 13:18:38.260');
+INSERT INTO `act_hi_varinst` VALUES ('48318c03-750c-11f1-ad84-00155dd68500', 3, '48307a8f-750c-11f1-ad84-00155dd68500', '48307a8f-750c-11f1-ad84-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 13:18:23.646', '2026-07-01 13:18:38.398');
+INSERT INTO `act_hi_varinst` VALUES ('48361feb-750c-11f1-ad84-00155dd68500', 1, '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', '483339b8-750c-11f1-ad84-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 13:18:23.676', '2026-07-01 13:18:23.838');
+INSERT INTO `act_hi_varinst` VALUES ('4852818c-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '48318c04-750c-11f1-ad84-00155dd68500', '483339b8-750c-11f1-ad84-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 13:18:23.862', '2026-07-01 13:18:23.862');
+INSERT INTO `act_hi_varinst` VALUES ('48626011-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '485f79df-750c-11f1-ad84-00155dd68500', NULL, 'Activity__69663778421782877292716_assignees', 'serializable', NULL, NULL, NULL, '48626012-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-01 13:18:23.966', '2026-07-01 13:18:23.966');
+INSERT INTO `act_hi_varinst` VALUES ('48626014-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '485f79df-750c-11f1-ad84-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 13:18:23.966', '2026-07-01 13:18:23.966');
+INSERT INTO `act_hi_varinst` VALUES ('48628725-750c-11f1-ad84-00155dd68500', 1, '48307a8f-750c-11f1-ad84-00155dd68500', '485f79df-750c-11f1-ad84-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 13:18:23.967', '2026-07-01 13:18:38.333');
+INSERT INTO `act_hi_varinst` VALUES ('48628726-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '485f79df-750c-11f1-ad84-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 13:18:23.967', '2026-07-01 13:18:23.967');
+INSERT INTO `act_hi_varinst` VALUES ('48628727-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '48626013-750c-11f1-ad84-00155dd68500', NULL, 'Activity__69663778421782877292716_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 13:18:23.967', '2026-07-01 13:18:23.967');
+INSERT INTO `act_hi_varinst` VALUES ('48628728-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '48626013-750c-11f1-ad84-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-01 13:18:23.967', '2026-07-01 13:18:23.967');
+INSERT INTO `act_hi_varinst` VALUES ('4863e6bc-750c-11f1-ad84-00155dd68500', 1, '48307a8f-750c-11f1-ad84-00155dd68500', '48626013-750c-11f1-ad84-00155dd68500', '4863236a-750c-11f1-ad84-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 13:18:23.976', '2026-07-01 13:18:38.223');
+INSERT INTO `act_hi_varinst` VALUES ('50e3f50d-750c-11f1-ad84-00155dd68500', 0, '48307a8f-750c-11f1-ad84-00155dd68500', '48626013-750c-11f1-ad84-00155dd68500', '4863236a-750c-11f1-ad84-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, '2026-07-01 13:18:38.237', '2026-07-01 13:18:38.237');
+INSERT INTO `act_hi_varinst` VALUES ('5485b58d-745f-11f1-b91b-00155dd68500', 1, '54847d0b-745f-11f1-b91b-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-06-30 16:40:21.398', '2026-06-30 16:40:21.675');
+INSERT INTO `act_hi_varinst` VALUES ('548603ae-745f-11f1-b91b-00155dd68500', 1, '54847d0b-745f-11f1-b91b-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-06-30 16:40:21.398', '2026-06-30 16:40:21.677');
+INSERT INTO `act_hi_varinst` VALUES ('548603af-745f-11f1-b91b-00155dd68500', 2, '54847d0b-745f-11f1-b91b-00155dd68500', '54847d0b-745f-11f1-b91b-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-06-30 16:40:21.398', '2026-06-30 16:40:21.755');
+INSERT INTO `act_hi_varinst` VALUES ('548edd57-745f-11f1-b91b-00155dd68500', 1, '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', '548ba904-745f-11f1-b91b-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-06-30 16:40:21.456', '2026-06-30 16:40:21.631');
+INSERT INTO `act_hi_varinst` VALUES ('54ac2958-745f-11f1-b91b-00155dd68500', 0, '54847d0b-745f-11f1-b91b-00155dd68500', '54862ac0-745f-11f1-b91b-00155dd68500', '548ba904-745f-11f1-b91b-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-06-30 16:40:21.648', '2026-06-30 16:40:21.648');
+INSERT INTO `act_hi_varinst` VALUES ('5a52538d-7a90-11f1-9ea7-00155dd68500', 1, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.660');
+INSERT INTO `act_hi_varinst` VALUES ('5a527a9e-7a90-11f1-9ea7-00155dd68500', 1, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, 'F5mrmqqdutnnabc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '1', NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.663');
+INSERT INTO `act_hi_varinst` VALUES ('5a527a9f-7a90-11f1-9ea7-00155dd68500', 1, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.662');
+INSERT INTO `act_hi_varinst` VALUES ('5a527aa0-7a90-11f1-9ea7-00155dd68500', 1, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, 'Fh6gmqqdooy5aec', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '22', NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.666');
+INSERT INTO `act_hi_varinst` VALUES ('5a527aa1-7a90-11f1-9ea7-00155dd68500', 2, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.757');
+INSERT INTO `act_hi_varinst` VALUES ('5a527aa2-7a90-11f1-9ea7-00155dd68500', 1, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a51421b-7a90-11f1-9ea7-00155dd68500', NULL, 'Fyqymqqdoln2abc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '111', NULL, NULL, '2026-07-08 13:46:23.443', '2026-07-08 13:46:23.672');
+INSERT INTO `act_hi_varinst` VALUES ('5a570e8a-7a90-11f1-9ea7-00155dd68500', 1, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', '5a5512b7-7a90-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 13:46:23.473', '2026-07-08 13:46:23.617');
+INSERT INTO `act_hi_varinst` VALUES ('5a6f788b-7a90-11f1-9ea7-00155dd68500', 0, '5a51421b-7a90-11f1-9ea7-00155dd68500', '5a527aa3-7a90-11f1-9ea7-00155dd68500', '5a5512b7-7a90-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-08 13:46:23.633', '2026-07-08 13:46:23.633');
+INSERT INTO `act_hi_varinst` VALUES ('62161d91-75db-11f1-80f9-00155dd68500', 1, '621448cf-75db-11f1-80f9-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-02 14:00:52.914', '2026-07-02 14:00:53.322');
+INSERT INTO `act_hi_varinst` VALUES ('6216b9d2-75db-11f1-80f9-00155dd68500', 1, '621448cf-75db-11f1-80f9-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-02 14:00:52.914', '2026-07-02 14:00:53.327');
+INSERT INTO `act_hi_varinst` VALUES ('6216b9d3-75db-11f1-80f9-00155dd68500', 2, '621448cf-75db-11f1-80f9-00155dd68500', '621448cf-75db-11f1-80f9-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 14:00:52.914', '2026-07-02 14:00:53.472');
+INSERT INTO `act_hi_varinst` VALUES ('6224eaab-75db-11f1-80f9-00155dd68500', 1, '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', '621ed028-75db-11f1-80f9-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 14:00:53.007', '2026-07-02 14:00:53.237');
+INSERT INTO `act_hi_varinst` VALUES ('624e6bac-75db-11f1-80f9-00155dd68500', 0, '621448cf-75db-11f1-80f9-00155dd68500', '6216b9d4-75db-11f1-80f9-00155dd68500', '621ed028-75db-11f1-80f9-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-02 14:00:53.279', '2026-07-02 14:00:53.279');
+INSERT INTO `act_hi_varinst` VALUES ('655dae19-7a95-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', '841dc266-7a93-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '213123123', NULL, NULL, '2026-07-08 14:22:29.455', '2026-07-08 14:22:29.455');
+INSERT INTO `act_hi_varinst` VALUES ('655f34ba-7a95-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', '841dc266-7a93-11f1-9ea7-00155dd68500', 'TASK_SIGN_PIC_URL', 'string', NULL, NULL, NULL, NULL, NULL, NULL, 'http://127.0.0.1:48080/admin-api/infra/file/29/get/20260708/%E7%AD%BE%E5%90%8D.jpeg', NULL, NULL, '2026-07-08 14:22:29.465', '2026-07-08 14:22:29.465');
+INSERT INTO `act_hi_varinst` VALUES ('673c79a2-75db-11f1-80f9-00155dd68500', 1, '673c2b80-75db-11f1-80f9-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-02 14:01:01.551', '2026-07-02 14:01:01.704');
+INSERT INTO `act_hi_varinst` VALUES ('673ca0b3-75db-11f1-80f9-00155dd68500', 1, '673c2b80-75db-11f1-80f9-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-02 14:01:01.551', '2026-07-02 14:01:01.708');
+INSERT INTO `act_hi_varinst` VALUES ('673ca0b4-75db-11f1-80f9-00155dd68500', 2, '673c2b80-75db-11f1-80f9-00155dd68500', '673c2b80-75db-11f1-80f9-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 14:01:01.551', '2026-07-02 14:01:01.784');
+INSERT INTO `act_hi_varinst` VALUES ('673e275c-75db-11f1-80f9-00155dd68500', 1, '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', '673cc7c9-75db-11f1-80f9-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 14:01:01.561', '2026-07-02 14:01:01.673');
+INSERT INTO `act_hi_varinst` VALUES ('6751131d-75db-11f1-80f9-00155dd68500', 0, '673c2b80-75db-11f1-80f9-00155dd68500', '673ca0b5-75db-11f1-80f9-00155dd68500', '673cc7c9-75db-11f1-80f9-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-02 14:01:01.685', '2026-07-02 14:01:01.685');
+INSERT INTO `act_hi_varinst` VALUES ('6b247b4c-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:20.153', '2026-07-08 14:08:20.291');
+INSERT INTO `act_hi_varinst` VALUES ('6b247b4d-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-08 14:08:20.153', '2026-07-08 14:08:20.293');
+INSERT INTO `act_hi_varinst` VALUES ('6b247b4e-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, '6ada8f47c5ad483ca7e2a15da2d922d1', 'integer', NULL, NULL, NULL, NULL, NULL, 110, '110', NULL, NULL, '2026-07-08 14:08:20.153', '2026-07-08 14:08:20.295');
+INSERT INTO `act_hi_varinst` VALUES ('6b247b4f-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:20.153', '2026-07-08 14:08:20.297');
+INSERT INTO `act_hi_varinst` VALUES ('6b247b50-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 'ce674cb3f7604c5da893b347bf1ff855', 'integer', NULL, NULL, NULL, NULL, NULL, 103, '103', NULL, NULL, '2026-07-08 14:08:20.153', '2026-07-08 14:08:20.299');
+INSERT INTO `act_hi_varinst` VALUES ('6b247b51-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 'F7a8mrbnxj65cuc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '<p>4123123123</p>', NULL, NULL, '2026-07-08 14:08:20.153', '2026-07-08 14:08:20.301');
+INSERT INTO `act_hi_varinst` VALUES ('6b24a263-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 'Fn60mrbnvny3clc', 'serializable', NULL, NULL, NULL, '6b24a264-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.303');
+INSERT INTO `act_hi_varinst` VALUES ('6b25b3dc-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', '6b24a269-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 14:08:20.161', '2026-07-08 14:08:20.272');
+INSERT INTO `act_hi_varinst` VALUES ('6b37dc4d-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', '6b24a269-7a93-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-08 14:08:20.280', '2026-07-08 14:08:20.280');
+INSERT INTO `act_hi_varinst` VALUES ('6b408ee3-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b4019b1-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignees', 'serializable', NULL, NULL, NULL, '6b408ee4-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:08:20.337', '2026-07-08 14:08:20.337');
+INSERT INTO `act_hi_varinst` VALUES ('6b408ee6-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b4019b1-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:20.337', '2026-07-08 14:08:20.337');
+INSERT INTO `act_hi_varinst` VALUES ('6b408ee7-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b4019b1-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:08:20.337', '2026-07-08 14:08:20.337');
+INSERT INTO `act_hi_varinst` VALUES ('6b408ee8-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b4019b1-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:20.337', '2026-07-08 14:08:20.337');
+INSERT INTO `act_hi_varinst` VALUES ('6b408ee9-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b408ee5-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:20.337', '2026-07-08 14:08:20.337');
+INSERT INTO `act_hi_varinst` VALUES ('6b408eea-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b408ee5-7a93-11f1-9ea7-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:08:20.337', '2026-07-08 14:08:20.337');
+INSERT INTO `act_hi_varinst` VALUES ('6b41041e-7a93-11f1-9ea7-00155dd68500', 0, '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b408ee5-7a93-11f1-9ea7-00155dd68500', '6b40b5fc-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:20.340', '2026-07-08 14:08:20.340');
+INSERT INTO `act_hi_varinst` VALUES ('750663b1-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:36.733', '2026-07-08 14:08:36.845');
+INSERT INTO `act_hi_varinst` VALUES ('750663b2-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-08 14:08:36.733', '2026-07-08 14:08:36.847');
+INSERT INTO `act_hi_varinst` VALUES ('750663b3-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, '6ada8f47c5ad483ca7e2a15da2d922d1', 'integer', NULL, NULL, NULL, NULL, NULL, 110, '110', NULL, NULL, '2026-07-08 14:08:36.733', '2026-07-08 14:08:36.849');
+INSERT INTO `act_hi_varinst` VALUES ('750663b4-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:36.733', '2026-07-08 14:08:36.851');
+INSERT INTO `act_hi_varinst` VALUES ('75068ac5-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 'ce674cb3f7604c5da893b347bf1ff855', 'integer', NULL, NULL, NULL, NULL, NULL, 103, '103', NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.853');
+INSERT INTO `act_hi_varinst` VALUES ('75068ac6-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 'F7a8mrbnxj65cuc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '<p>4123123123</p>', NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.856');
+INSERT INTO `act_hi_varinst` VALUES ('75068ac8-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 'Fn60mrbnvny3clc', 'serializable', NULL, NULL, NULL, '75068ac9-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.858');
+INSERT INTO `act_hi_varinst` VALUES ('75070001-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', '75068ace-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 14:08:36.737', '2026-07-08 14:08:36.823');
+INSERT INTO `act_hi_varinst` VALUES ('7515a602-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', '75068ace-7a93-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-08 14:08:36.833', '2026-07-08 14:08:36.833');
+INSERT INTO `act_hi_varinst` VALUES ('751f6a08-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751ef4d6-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignees', 'serializable', NULL, NULL, NULL, '751f6a09-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:08:36.897', '2026-07-08 14:08:36.897');
+INSERT INTO `act_hi_varinst` VALUES ('751f6a0b-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751ef4d6-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:36.897', '2026-07-08 14:08:36.897');
+INSERT INTO `act_hi_varinst` VALUES ('751f6a0c-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751ef4d6-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:08:36.897', '2026-07-08 14:08:36.897');
+INSERT INTO `act_hi_varinst` VALUES ('751f6a0d-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751ef4d6-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:36.897', '2026-07-08 14:08:36.897');
+INSERT INTO `act_hi_varinst` VALUES ('751f6a0e-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f6a0a-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:36.897', '2026-07-08 14:08:36.897');
+INSERT INTO `act_hi_varinst` VALUES ('751f6a0f-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f6a0a-7a93-11f1-9ea7-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:08:36.897', '2026-07-08 14:08:36.897');
+INSERT INTO `act_hi_varinst` VALUES ('751fb733-7a93-11f1-9ea7-00155dd68500', 0, '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f6a0a-7a93-11f1-9ea7-00155dd68500', '751f9021-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:08:36.899', '2026-07-08 14:08:36.899');
+INSERT INTO `act_hi_varinst` VALUES ('7ab5368e-6edd-11f1-af1d-00155dd68500', 1, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-06-23 16:28:15.073', '2026-06-23 16:28:15.285');
+INSERT INTO `act_hi_varinst` VALUES ('7ab55d9f-6edd-11f1-af1d-00155dd68500', 1, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-06-23 16:28:15.073', '2026-06-23 16:28:15.289');
+INSERT INTO `act_hi_varinst` VALUES ('7ab55da0-6edd-11f1-af1d-00155dd68500', 1, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, 'Fh6gmqqdooy5aec', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '12', NULL, NULL, '2026-06-23 16:28:15.073', '2026-06-23 16:28:15.291');
+INSERT INTO `act_hi_varinst` VALUES ('7ab584b1-6edd-11f1-af1d-00155dd68500', 2, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-06-23 16:28:15.074', '2026-06-23 16:28:15.391');
+INSERT INTO `act_hi_varinst` VALUES ('7ab584b2-6edd-11f1-af1d-00155dd68500', 1, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab4733c-6edd-11f1-af1d-00155dd68500', NULL, 'Fyqymqqdoln2abc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '121', NULL, NULL, '2026-06-23 16:28:15.074', '2026-06-23 16:28:15.296');
+INSERT INTO `act_hi_varinst` VALUES ('7abb9f3a-6edd-11f1-af1d-00155dd68500', 1, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-06-23 16:28:15.114', '2026-06-23 16:28:15.235');
+INSERT INTO `act_hi_varinst` VALUES ('7ad14a1b-6edd-11f1-af1d-00155dd68500', 0, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-06-23 16:28:15.256', '2026-06-23 16:28:15.256');
+INSERT INTO `act_hi_varinst` VALUES ('7adc1f8d-6edd-11f1-af1d-00155dd68500', 0, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-06-23 16:28:15.327', '2026-06-23 16:28:15.327');
+INSERT INTO `act_hi_varinst` VALUES ('7adc469e-6edd-11f1-af1d-00155dd68500', 0, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-06-23 16:28:15.328', '2026-06-23 16:28:15.328');
+INSERT INTO `act_hi_varinst` VALUES ('7adc469f-6edd-11f1-af1d-00155dd68500', 0, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', 'Fh6gmqqdooy5aec', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '12', NULL, NULL, '2026-06-23 16:28:15.329', '2026-06-23 16:28:15.329');
+INSERT INTO `act_hi_varinst` VALUES ('7adc6db0-6edd-11f1-af1d-00155dd68500', 0, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-06-23 16:28:15.329', '2026-06-23 16:28:15.329');
+INSERT INTO `act_hi_varinst` VALUES ('7adc6db1-6edd-11f1-af1d-00155dd68500', 0, '7ab4733c-6edd-11f1-af1d-00155dd68500', '7ab584b3-6edd-11f1-af1d-00155dd68500', '7ab90727-6edd-11f1-af1d-00155dd68500', 'Fyqymqqdoln2abc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '121', NULL, NULL, '2026-06-23 16:28:15.329', '2026-06-23 16:28:15.329');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dc6-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.476');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dc7-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.478');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dc8-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, '6ada8f47c5ad483ca7e2a15da2d922d1', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.480');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dc9-7a93-11f1-9ea7-00155dd68500', 3, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.567');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dca-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, 'ce674cb3f7604c5da893b347bf1ff855', 'integer', NULL, NULL, NULL, NULL, NULL, 110, '110', NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.484');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dcb-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, 'F7a8mrbnxj65cuc', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '<p>123123123</p>', NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.485');
+INSERT INTO `act_hi_varinst` VALUES ('83ff3dcd-7a93-11f1-9ea7-00155dd68500', 2, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff16b4-7a93-11f1-9ea7-00155dd68500', NULL, 'Fn60mrbnvny3clc', 'serializable', NULL, NULL, NULL, '83ff3dce-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:09:01.852', '2026-07-08 14:22:29.488');
+INSERT INTO `act_hi_varinst` VALUES ('83ffda16-7a93-11f1-9ea7-00155dd68500', 1, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', '83ff64e3-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 14:09:01.856', '2026-07-08 14:09:01.945');
+INSERT INTO `act_hi_varinst` VALUES ('840f9187-7a93-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '83ff3dcf-7a93-11f1-9ea7-00155dd68500', '83ff64e3-7a93-11f1-9ea7-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-08 14:09:01.959', '2026-07-08 14:09:01.959');
+INSERT INTO `act_hi_varinst` VALUES ('841d9b4d-7a93-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841cff0b-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignees', 'serializable', NULL, NULL, NULL, '841d9b4e-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-08 14:09:02.051', '2026-07-08 14:09:02.051');
+INSERT INTO `act_hi_varinst` VALUES ('841d9b50-7a93-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841cff0b-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:09:02.051', '2026-07-08 14:09:02.051');
+INSERT INTO `act_hi_varinst` VALUES ('841d9b51-7a93-11f1-9ea7-00155dd68500', 1, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841cff0b-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:09:02.051', '2026-07-08 14:22:29.542');
+INSERT INTO `act_hi_varinst` VALUES ('841d9b52-7a93-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841cff0b-7a93-11f1-9ea7-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:09:02.051', '2026-07-08 14:09:02.051');
+INSERT INTO `act_hi_varinst` VALUES ('841d9b53-7a93-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', NULL, 'Activity__34944553111783490267007_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-08 14:09:02.051', '2026-07-08 14:09:02.051');
+INSERT INTO `act_hi_varinst` VALUES ('841d9b54-7a93-11f1-9ea7-00155dd68500', 0, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-08 14:09:02.051', '2026-07-08 14:09:02.051');
+INSERT INTO `act_hi_varinst` VALUES ('841e1088-7a93-11f1-9ea7-00155dd68500', 1, '83ff16b4-7a93-11f1-9ea7-00155dd68500', '841d9b4f-7a93-11f1-9ea7-00155dd68500', '841dc266-7a93-11f1-9ea7-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-08 14:09:02.054', '2026-07-08 14:22:29.445');
+INSERT INTO `act_hi_varinst` VALUES ('949d413b-75da-11f1-a595-00155dd68500', 1, '949c7de9-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-02 13:55:08.186', '2026-07-02 13:55:08.566');
+INSERT INTO `act_hi_varinst` VALUES ('949d684c-75da-11f1-a595-00155dd68500', 1, '949c7de9-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-02 13:55:08.186', '2026-07-02 13:55:08.568');
+INSERT INTO `act_hi_varinst` VALUES ('949d684d-75da-11f1-a595-00155dd68500', 2, '949c7de9-75da-11f1-a595-00155dd68500', '949c7de9-75da-11f1-a595-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 13:55:08.186', '2026-07-02 13:55:08.684');
+INSERT INTO `act_hi_varinst` VALUES ('94a7a185-75da-11f1-a595-00155dd68500', 1, '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', '94a18702-75da-11f1-a595-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 13:55:08.253', '2026-07-02 13:55:08.508');
+INSERT INTO `act_hi_varinst` VALUES ('94d25b06-75da-11f1-a595-00155dd68500', 0, '949c7de9-75da-11f1-a595-00155dd68500', '949d684e-75da-11f1-a595-00155dd68500', '94a18702-75da-11f1-a595-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-02 13:55:08.533', '2026-07-02 13:55:08.533');
+INSERT INTO `act_hi_varinst` VALUES ('9e13d13b-74fe-11f1-9120-00155dd68500', 1, '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 11:40:34.781', '2026-07-01 11:40:34.882');
+INSERT INTO `act_hi_varinst` VALUES ('9e13f84c-74fe-11f1-9120-00155dd68500', 1, '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 11:40:34.782', '2026-07-01 11:40:34.885');
+INSERT INTO `act_hi_varinst` VALUES ('9e13f84d-74fe-11f1-9120-00155dd68500', 2, '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13aa29-74fe-11f1-9120-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:40:34.782', '2026-07-01 11:40:34.927');
+INSERT INTO `act_hi_varinst` VALUES ('9e149495-74fe-11f1-9120-00155dd68500', 1, '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', '9e13f852-74fe-11f1-9120-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:40:34.786', '2026-07-01 11:40:34.857');
+INSERT INTO `act_hi_varinst` VALUES ('9e20f0a6-74fe-11f1-9120-00155dd68500', 0, '9e13aa29-74fe-11f1-9120-00155dd68500', '9e13f84e-74fe-11f1-9120-00155dd68500', '9e13f852-74fe-11f1-9120-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 11:40:34.867', '2026-07-01 11:40:34.867');
+INSERT INTO `act_hi_varinst` VALUES ('cb506e45-75f1-11f1-a696-00155dd68500', 1, 'cb504733-75f1-11f1-a696-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-02 16:41:18.381', '2026-07-02 16:41:18.480');
+INSERT INTO `act_hi_varinst` VALUES ('cb506e46-75f1-11f1-a696-00155dd68500', 1, 'cb504733-75f1-11f1-a696-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-02 16:41:18.381', '2026-07-02 16:41:18.482');
+INSERT INTO `act_hi_varinst` VALUES ('cb506e47-75f1-11f1-a696-00155dd68500', 2, 'cb504733-75f1-11f1-a696-00155dd68500', 'cb504733-75f1-11f1-a696-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 16:41:18.381', '2026-07-02 16:41:18.521');
+INSERT INTO `act_hi_varinst` VALUES ('cb510a8f-75f1-11f1-a696-00155dd68500', 1, 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'cb506e4c-75f1-11f1-a696-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 16:41:18.385', '2026-07-02 16:41:18.459');
+INSERT INTO `act_hi_varinst` VALUES ('cb5db4c0-75f1-11f1-a696-00155dd68500', 0, 'cb504733-75f1-11f1-a696-00155dd68500', 'cb506e48-75f1-11f1-a696-00155dd68500', 'cb506e4c-75f1-11f1-a696-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-02 16:41:18.468', '2026-07-02 16:41:18.468');
+INSERT INTO `act_hi_varinst` VALUES ('dcc725f0-74fe-11f1-9120-00155dd68500', 2, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 11:42:19.975', '2026-07-01 11:42:42.526');
+INSERT INTO `act_hi_varinst` VALUES ('dcc725f1-74fe-11f1-9120-00155dd68500', 2, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 11:42:19.975', '2026-07-01 11:42:42.529');
+INSERT INTO `act_hi_varinst` VALUES ('dcc725f2-74fe-11f1-9120-00155dd68500', 3, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:42:19.975', '2026-07-01 11:42:42.606');
+INSERT INTO `act_hi_varinst` VALUES ('dcc7e94a-74fe-11f1-9120-00155dd68500', 1, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', 'dcc725f7-74fe-11f1-9120-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:42:19.980', '2026-07-01 11:42:20.056');
+INSERT INTO `act_hi_varinst` VALUES ('dcd52fbb-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcc725f3-74fe-11f1-9120-00155dd68500', 'dcc725f7-74fe-11f1-9120-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 11:42:20.067', '2026-07-01 11:42:20.067');
+INSERT INTO `act_hi_varinst` VALUES ('dcdf68f0-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdc82be-74fe-11f1-9120-00155dd68500', NULL, 'Activity__69663778421782877292716_assignees', 'serializable', NULL, NULL, NULL, 'dcdf68f1-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, NULL, '2026-07-01 11:42:20.134', '2026-07-01 11:42:20.134');
+INSERT INTO `act_hi_varinst` VALUES ('dcdf9003-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdc82be-74fe-11f1-9120-00155dd68500', NULL, 'nrOfInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 11:42:20.135', '2026-07-01 11:42:20.135');
+INSERT INTO `act_hi_varinst` VALUES ('dcdf9004-74fe-11f1-9120-00155dd68500', 1, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdc82be-74fe-11f1-9120-00155dd68500', NULL, 'nrOfCompletedInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 11:42:20.135', '2026-07-01 11:42:42.583');
+INSERT INTO `act_hi_varinst` VALUES ('dcdf9005-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdc82be-74fe-11f1-9120-00155dd68500', NULL, 'nrOfActiveInstances', 'integer', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-01 11:42:20.135', '2026-07-01 11:42:20.135');
+INSERT INTO `act_hi_varinst` VALUES ('dcdf9006-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdf9002-74fe-11f1-9120-00155dd68500', NULL, 'Activity__69663778421782877292716_assignee', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 11:42:20.135', '2026-07-01 11:42:20.135');
+INSERT INTO `act_hi_varinst` VALUES ('dcdfb717-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdf9002-74fe-11f1-9120-00155dd68500', NULL, 'loopCounter', 'integer', NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL, '2026-07-01 11:42:20.136', '2026-07-01 11:42:20.136');
+INSERT INTO `act_hi_varinst` VALUES ('dce07a6b-74fe-11f1-9120-00155dd68500', 1, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdf9002-74fe-11f1-9120-00155dd68500', 'dce00539-74fe-11f1-9120-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:42:20.141', '2026-07-01 11:42:42.492');
+INSERT INTO `act_hi_varinst` VALUES ('e3b3af3c-75da-11f1-a595-00155dd68500', 1, 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL, '2026-07-02 13:57:20.872', '2026-07-02 13:57:20.995');
+INSERT INTO `act_hi_varinst` VALUES ('e3b3af3d-75da-11f1-a595-00155dd68500', 1, 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-02 13:57:20.872', '2026-07-02 13:57:20.998');
+INSERT INTO `act_hi_varinst` VALUES ('e3b3af3e-75da-11f1-a595-00155dd68500', 2, 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3882a-75da-11f1-a595-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 13:57:20.872', '2026-07-02 13:57:21.043');
+INSERT INTO `act_hi_varinst` VALUES ('e3b44b86-75da-11f1-a595-00155dd68500', 1, 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'e3b3d653-75da-11f1-a595-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-02 13:57:20.876', '2026-07-02 13:57:20.961');
+INSERT INTO `act_hi_varinst` VALUES ('e3c402f7-75da-11f1-a595-00155dd68500', 0, 'e3b3882a-75da-11f1-a595-00155dd68500', 'e3b3af3f-75da-11f1-a595-00155dd68500', 'e3b3d653-75da-11f1-a595-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-02 13:57:20.979', '2026-07-02 13:57:20.979');
+INSERT INTO `act_hi_varinst` VALUES ('e57a8ecc-7500-11f1-993f-00155dd68500', 1, 'e579a46a-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', NULL, 'PROCESS_START_USER_ID', 'long', NULL, NULL, NULL, NULL, NULL, 142, '142', NULL, NULL, '2026-07-01 11:56:53.567', '2026-07-01 11:56:53.763');
+INSERT INTO `act_hi_varinst` VALUES ('e57ab5dd-7500-11f1-993f-00155dd68500', 1, 'e579a46a-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', NULL, '_FLOWABLE_SKIP_EXPRESSION_ENABLED', 'boolean', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, '2026-07-01 11:56:53.567', '2026-07-01 11:56:53.766');
+INSERT INTO `act_hi_varinst` VALUES ('e57ab5de-7500-11f1-993f-00155dd68500', 2, 'e579a46a-7500-11f1-993f-00155dd68500', 'e579a46a-7500-11f1-993f-00155dd68500', NULL, 'PROCESS_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:56:53.567', '2026-07-01 11:56:53.833');
+INSERT INTO `act_hi_varinst` VALUES ('e57f22b6-7500-11f1-993f-00155dd68500', 1, 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'e57cb1b3-7500-11f1-993f-00155dd68500', 'TASK_STATUS', 'integer', NULL, NULL, NULL, NULL, NULL, 2, '2', NULL, NULL, '2026-07-01 11:56:53.596', '2026-07-01 11:56:53.710');
+INSERT INTO `act_hi_varinst` VALUES ('e593bc27-7500-11f1-993f-00155dd68500', 0, 'e579a46a-7500-11f1-993f-00155dd68500', 'e57ab5df-7500-11f1-993f-00155dd68500', 'e57cb1b3-7500-11f1-993f-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '鍙戣捣浜鸿妭鐐归娆¤嚜鍔ㄩ�氳繃', NULL, NULL, '2026-07-01 11:56:53.731', '2026-07-01 11:56:53.731');
+INSERT INTO `act_hi_varinst` VALUES ('ea351b3c-74fe-11f1-9120-00155dd68500', 0, 'dcc6fede-74fe-11f1-9120-00155dd68500', 'dcdf9002-74fe-11f1-9120-00155dd68500', 'dce00539-74fe-11f1-9120-00155dd68500', 'TASK_REASON', 'string', NULL, NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, '2026-07-01 11:42:42.507', '2026-07-01 11:42:42.507');
+
+-- ----------------------------
+-- Table structure for act_id_bytearray
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_bytearray`;
+CREATE TABLE `act_id_bytearray`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BYTES_` longblob NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_bytearray
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_group
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_group`;
+CREATE TABLE `act_id_group`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_group
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_info
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_info`;
+CREATE TABLE `act_id_info`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `USER_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `VALUE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PASSWORD_` longblob NULL,
+  `PARENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_info
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_membership
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_membership`;
+CREATE TABLE `act_id_membership`  (
+  `USER_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `GROUP_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  PRIMARY KEY (`USER_ID_`, `GROUP_ID_`) USING BTREE,
+  INDEX `ACT_FK_MEMB_GROUP`(`GROUP_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_MEMB_GROUP` FOREIGN KEY (`GROUP_ID_`) REFERENCES `act_id_group` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_MEMB_USER` FOREIGN KEY (`USER_ID_`) REFERENCES `act_id_user` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_membership
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_priv
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_priv`;
+CREATE TABLE `act_id_priv`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  UNIQUE INDEX `ACT_UNIQ_PRIV_NAME`(`NAME_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_priv
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_priv_mapping
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_priv_mapping`;
+CREATE TABLE `act_id_priv_mapping`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `PRIV_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `GROUP_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_FK_PRIV_MAPPING`(`PRIV_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_PRIV_USER`(`USER_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_PRIV_GROUP`(`GROUP_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_PRIV_MAPPING` FOREIGN KEY (`PRIV_ID_`) REFERENCES `act_id_priv` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_priv_mapping
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_property
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_property`;
+CREATE TABLE `act_id_property`  (
+  `NAME_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `VALUE_` varchar(300) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  PRIMARY KEY (`NAME_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_property
+-- ----------------------------
+INSERT INTO `act_id_property` VALUES ('schema.version', '8.0.0.0', 1);
+
+-- ----------------------------
+-- Table structure for act_id_token
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_token`;
+CREATE TABLE `act_id_token`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `TOKEN_VALUE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TOKEN_DATE_` timestamp(3) NULL DEFAULT NULL,
+  `IP_ADDRESS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `USER_AGENT_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TOKEN_DATA_` varchar(2000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_token
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_id_user
+-- ----------------------------
+DROP TABLE IF EXISTS `act_id_user`;
+CREATE TABLE `act_id_user`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `FIRST_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `LAST_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DISPLAY_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EMAIL_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PWD_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PICTURE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_id_user
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_procdef_info
+-- ----------------------------
+DROP TABLE IF EXISTS `act_procdef_info`;
+CREATE TABLE `act_procdef_info`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `INFO_JSON_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  UNIQUE INDEX `ACT_UNIQ_INFO_PROCDEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_INFO_PROCDEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_INFO_JSON_BA`(`INFO_JSON_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_INFO_JSON_BA` FOREIGN KEY (`INFO_JSON_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_INFO_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_procdef_info
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_re_deployment
+-- ----------------------------
+DROP TABLE IF EXISTS `act_re_deployment`;
+CREATE TABLE `act_re_deployment`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  `DEPLOY_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `DERIVED_FROM_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DERIVED_FROM_ROOT_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PARENT_DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_re_deployment
+-- ----------------------------
+INSERT INTO `act_re_deployment` VALUES ('5e64a066-7a93-11f1-9ea7-00155dd68500', '璇峰亣娴佺▼', '鍒嗙被2', 'b000_abc.', '', '2026-07-08 14:07:58.763', NULL, NULL, '5e64a066-7a93-11f1-9ea7-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('6c885e28-6edd-11f1-af1d-00155dd68500', '121', '鍒嗙被1', 'Ada', '', '2026-06-23 16:27:51.290', NULL, NULL, '6c885e28-6edd-11f1-af1d-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('6dae8b2a-74f9-11f1-91b4-00155dd68500', '閲囪喘瀹℃牳', 'purchase_request_approve', 'purchase_request_approve', '', '2026-07-01 11:03:26.103', NULL, NULL, '6dae8b2a-74f9-11f1-91b4-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('777471ff-74f7-11f1-b46c-00155dd68500', '閲囪喘瀹℃牳', 'purchase_approve', 'purchase_approve', '', '2026-07-01 10:49:23.505', NULL, NULL, '777471ff-74f7-11f1-b46c-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('8fa8f1b5-75da-11f1-a595-00155dd68500', '鍚堝悓瀹℃牳', 'contract_approve', 'contract_approve', '', '2026-07-02 13:54:59.872', NULL, NULL, '8fa8f1b5-75da-11f1-a595-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('a0a3dcd4-74fc-11f1-9120-00155dd68500', '123123', '鍒嗙被1', 'SSQ', '', '2026-07-01 11:26:20.087', NULL, NULL, 'a0a3dcd4-74fc-11f1-9120-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('a32d7935-6edd-11f1-af1d-00155dd68500', '121', '鍒嗙被1', 'Ada', '', '2026-06-23 16:29:22.969', NULL, NULL, 'a32d7935-6edd-11f1-af1d-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('a43fbb94-7a92-11f1-9ea7-00155dd68500', '璇峰亣娴佺▼', '鍒嗙被2', 'b000_abc.', '', '2026-07-08 14:02:46.465', NULL, NULL, 'a43fbb94-7a92-11f1-9ea7-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('c75fb050-7462-11f1-b91b-00155dd68500', '閲囪喘瀹℃牳', '閲囪喘瀹℃牳', 'pus', '', '2026-06-30 17:05:02.575', NULL, NULL, 'c75fb050-7462-11f1-b91b-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('d232b68a-74fe-11f1-9120-00155dd68500', '閲囪喘瀹℃牳', 'purchase_request_approve', 'purchase_request_approve', '', '2026-07-01 11:42:02.225', NULL, NULL, 'd232b68a-74fe-11f1-9120-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('df6abd26-7500-11f1-993f-00155dd68500', '121', 'purchase_request_approve', 'caigoushenpi', '', '2026-07-01 11:56:43.395', NULL, NULL, 'df6abd26-7500-11f1-993f-00155dd68500', NULL);
+INSERT INTO `act_re_deployment` VALUES ('fb13987e-74f9-11f1-91b4-00155dd68500', '閲囪喘瀹℃牳', 'purchase_request_approve', 'purchase_request_approve', '', '2026-07-01 11:07:23.324', NULL, NULL, 'fb13987e-74f9-11f1-91b4-00155dd68500', NULL);
+
+-- ----------------------------
+-- Table structure for act_re_model
+-- ----------------------------
+DROP TABLE IF EXISTS `act_re_model`;
+CREATE TABLE `act_re_model`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LAST_UPDATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `VERSION_` int NULL DEFAULT NULL,
+  `META_INFO_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EDITOR_SOURCE_VALUE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EDITOR_SOURCE_EXTRA_VALUE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_FK_MODEL_SOURCE`(`EDITOR_SOURCE_VALUE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_MODEL_SOURCE_EXTRA`(`EDITOR_SOURCE_EXTRA_VALUE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_MODEL_DEPLOYMENT`(`DEPLOYMENT_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_MODEL_DEPLOYMENT` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `act_re_deployment` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_MODEL_SOURCE` FOREIGN KEY (`EDITOR_SOURCE_VALUE_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_MODEL_SOURCE_EXTRA` FOREIGN KEY (`EDITOR_SOURCE_EXTRA_VALUE_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_re_model
+-- ----------------------------
+INSERT INTO `act_re_model` VALUES ('2f78f7ad-7384-11f1-aa00-00155dd68500', 7, '123123', 'SSQ', '鍒嗙被1', '2026-06-29 14:31:39.453', '2026-07-01 11:26:20.341', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[1],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782714699450,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', 'a0a3dcd4-74fc-11f1-9120-00155dd68500', '428055fe-7384-11f1-aa00-00155dd68500', '428278df-7384-11f1-aa00-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('5ddab987-74f9-11f1-91b4-00155dd68500', 7, '閲囪喘瀹℃牳', 'purchase_request_approve', 'purchase_request_approve', '2026-07-01 11:02:59.548', '2026-07-01 11:42:02.328', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[142],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782874979545,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', 'd232b68a-74fe-11f1-9120-00155dd68500', '5dfd83c8-74f9-11f1-91b4-00155dd68500', '5dff7f99-74f9-11f1-91b4-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('654ec11c-74f7-11f1-b46c-00155dd68500', 6, '閲囪喘瀹℃牳', 'purchase_approve', 'purchase_approve', '2026-07-01 10:48:53.060', '2026-07-01 10:49:24.091', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[142],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782874133055,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', '777471ff-74f7-11f1-b46c-00155dd68500', '76fa11dd-74f7-11f1-b46c-00155dd68500', '76fde26e-74f7-11f1-b46c-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('8c640c7d-7462-11f1-b91b-00155dd68500', 11, '閲囪喘瀹℃牳', 'pus', '閲囪喘瀹℃牳', '2026-06-30 17:03:23.618', '2026-06-30 17:05:02.969', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[142],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782810203613,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', 'c75fb050-7462-11f1-b91b-00155dd68500', 'b3d73b1e-7462-11f1-b91b-00155dd68500', 'c6dbda4f-7462-11f1-b91b-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('8d859c82-75da-11f1-a595-00155dd68500', 4, '鍚堝悓瀹℃牳', 'contract_approve', 'contract_approve', '2026-07-02 13:54:56.286', '2026-07-02 13:55:00.524', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[142],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782971696280,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', '8fa8f1b5-75da-11f1-a595-00155dd68500', '8dca1f93-75da-11f1-a595-00155dd68500', '8dd54324-75da-11f1-a595-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('bc6f3048-74fc-11f1-9120-00155dd68500', 8, '121', 'caigoushenpi', 'purchase_request_approve', '2026-07-01 11:27:06.718', '2026-07-01 11:56:43.692', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[144,142,113,1],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782876426717,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', 'df6abd26-7500-11f1-993f-00155dd68500', 'de847bd4-7500-11f1-993f-00155dd68500', 'de8713e5-7500-11f1-993f-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('da144d65-6edc-11f1-af1d-00155dd68500', 8, '121', 'Ada', '鍒嗙被1', '2026-06-23 16:23:45.582', '2026-06-23 16:29:23.045', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":false,\"autoApprovalType\":0,\"description\":\"\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":1,\"formType\":10,\"icon\":null,\"managerUserIds\":[1],\"printTemplateSetting\":{\"enable\":false,\"template\":\"\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1782203025576,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', 'a32d7935-6edd-11f1-af1d-00155dd68500', '0ce38126-6edd-11f1-af1d-00155dd68500', '0ce5cb17-6edd-11f1-af1d-00155dd68500', '');
+INSERT INTO `act_re_model` VALUES ('dd36f951-7a91-11f1-9ea7-00155dd68500', 8, '璇峰亣娴佺▼', 'b000_abc.', '鍒嗙被2', '2026-07-08 13:57:12.541', '2026-07-08 14:07:58.862', 1, '{\"allowCancelRunningProcess\":true,\"allowWithdrawTask\":true,\"autoApprovalType\":0,\"description\":\"12312\",\"formCustomCreatePath\":\"\",\"formCustomViewPath\":\"\",\"formId\":2,\"formType\":10,\"icon\":null,\"managerUserIds\":[1],\"printTemplateSetting\":{\"enable\":false,\"template\":\"<p style=\\\"text-align: center;font-size: 1.25rem;\\\"><strong><span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼鍚嶇О\\\" data-info=\\\"%7B%22id%22%3A%22processName%22%7D\\\">@娴佺▼鍚嶇О</span></strong></p>\\n<p style=\\\"text-align: right;\\\">鎵撳嵃浜哄憳锛�<span data-w-e-type=\\\"mention\\\" data-info=\\\"%7B%22id%22%3A%22printUser%22%7D\\\">@鎵撳嵃浜�</span></p>\\n<p style=\\\"text-align: left;\\\">娴佺▼缂栧彿锛�<span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼缂栧彿\\\" data-info=\\\"%7B%22id%22%3A%22processNum%22%7D\\\">@娴佺▼缂栧彿</span></p>\\n<p>&nbsp;</p>\\n<table style=\\\"width: 100%; height: 72.2159px;\\\">\\n<tbody>\\n<tr style=\\\"height: 36.108px;\\\">\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鍙戣捣浜�</td>\\n<td style=\\\"width: 30.5551%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"鍙戣捣浜篭\\" data-info=\\\"%7B%22id%22%3A%22startUser%22%7D\\\">@鍙戣捣浜�</span></td>\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鍙戣捣鏃堕棿</td>\\n<td style=\\\"width: 26.0284%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"鍙戣捣鏃堕棿\\\" data-info=\\\"%7B%22id%22%3A%22startTime%22%7D\\\">@鍙戣捣鏃堕棿</span></td>\\n</tr>\\n<tr style=\\\"height: 36.108px;\\\">\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鎵�灞為儴闂�</td>\\n<td style=\\\"width: 30.5551%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-w-e-is-void=\\\"\\\" data-w-e-is-inline=\\\"\\\" data-value=\\\"鍙戣捣浜洪儴闂╘\\" data-info=\\\"%7B%22id%22%3A%22startUserDept%22%7D\\\">@鍙戣捣浜洪儴闂�</span></td>\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">娴佺▼鐘舵��</td>\\n<td style=\\\"width: 26.0284%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼鐘舵�乗\\" data-info=\\\"%7B%22id%22%3A%22processStatus%22%7D\\\">@娴佺▼鐘舵��</span></td>\\n</tr>\\n</tbody>\\n</table>\\n<p>&nbsp;</p>\\n<div contenteditable=\\\"false\\\" data-w-e-type=\\\"process-record\\\" data-w-e-is-void=\\\"\\\">\\n<table class=\\\"process-record-table\\\" style=\\\"width: 100%; border-collapse: collapse; border: 1px solid;\\\">\\n<tr>\\n\\t<td style=\\\"width: 100%; border: 1px solid; text-align: center;\\\" colspan=\\\"2\\\">娴佺▼璁板綍</td>\\n</tr>\\n<tr>\\n\\t<td style=\\\"width: 25%; border: 1px solid;\\\">鑺傜偣</td>\\n\\t<td style=\\\"width: 75%; border: 1px solid;\\\">鎿嶄綔</td>\\n</tr>\\n</table>\\n</div>\\n<p>&nbsp;</p>\"},\"processAfterTriggerSetting\":null,\"processBeforeTriggerSetting\":null,\"processIdRule\":{\"enable\":false,\"infix\":\"\",\"length\":5,\"postfix\":\"\",\"prefix\":\"\"},\"sort\":1783490232541,\"startDeptIds\":[],\"startUserIds\":[],\"summarySetting\":{\"enable\":false,\"summary\":[]},\"taskAfterTriggerSetting\":null,\"taskBeforeTriggerSetting\":null,\"titleSetting\":{\"enable\":false,\"title\":\"\"},\"type\":20,\"visible\":true}', '5e64a066-7a93-11f1-9ea7-00155dd68500', '4c1da122-7a92-11f1-9ea7-00155dd68500', '4c1feb13-7a92-11f1-9ea7-00155dd68500', '');
+
+-- ----------------------------
+-- Table structure for act_re_procdef
+-- ----------------------------
+DROP TABLE IF EXISTS `act_re_procdef`;
+CREATE TABLE `act_re_procdef`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `VERSION_` int NOT NULL,
+  `DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DGRM_RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HAS_START_FORM_KEY_` tinyint NULL DEFAULT NULL,
+  `HAS_GRAPHICAL_NOTATION_` tinyint NULL DEFAULT NULL,
+  `SUSPENSION_STATE_` int NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  `ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DERIVED_FROM_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DERIVED_FROM_ROOT_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DERIVED_VERSION_` int NOT NULL DEFAULT 0,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  UNIQUE INDEX `ACT_UNIQ_PROCDEF`(`KEY_` ASC, `VERSION_` ASC, `DERIVED_VERSION_` ASC, `TENANT_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_re_procdef
+-- ----------------------------
+INSERT INTO `act_re_procdef` VALUES ('Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', 3, '鍒嗙被1', '121', 'Ada', 1, '6c885e28-6edd-11f1-af1d-00155dd68500', 'Ada.bpmn', 'Ada.Ada.png', NULL, 0, 1, 2, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', 2, '鍒嗙被1', '121', 'Ada', 2, 'a32d7935-6edd-11f1-af1d-00155dd68500', 'Ada.bpmn', 'Ada.Ada.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('SSQ:1:a0be69b7-74fc-11f1-9120-00155dd68500', 2, '鍒嗙被1', '123123', 'SSQ', 1, 'a0a3dcd4-74fc-11f1-9120-00155dd68500', 'SSQ.bpmn', 'SSQ.SSQ.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', 3, '鍒嗙被2', '璇峰亣娴佺▼', 'b000_abc.', 1, 'a43fbb94-7a92-11f1-9ea7-00155dd68500', 'b000_abc..bpmn', 'b000_abc..b000_abc..png', NULL, 0, 1, 2, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', 2, '鍒嗙被2', '璇峰亣娴佺▼', 'b000_abc.', 2, '5e64a066-7a93-11f1-9ea7-00155dd68500', 'b000_abc..bpmn', 'b000_abc..b000_abc..png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 2, 'purchase_request_approve', '121', 'caigoushenpi', 1, 'df6abd26-7500-11f1-993f-00155dd68500', 'caigoushenpi.bpmn', 'caigoushenpi.caigoushenpi.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', 2, 'contract_approve', '鍚堝悓瀹℃牳', 'contract_approve', 1, '8fa8f1b5-75da-11f1-a595-00155dd68500', 'contract_approve.bpmn', 'contract_approve.contract_approve.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('purchase_approve:1:77c35552-74f7-11f1-b46c-00155dd68500', 2, 'purchase_approve', '閲囪喘瀹℃牳', 'purchase_approve', 1, '777471ff-74f7-11f1-b46c-00155dd68500', 'purchase_approve.bpmn', 'purchase_approve.purchase_approve.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('purchase_request_approve:1:6dc60acd-74f9-11f1-91b4-00155dd68500', 3, 'purchase_request_approve', '閲囪喘瀹℃牳', 'purchase_request_approve', 1, '6dae8b2a-74f9-11f1-91b4-00155dd68500', 'purchase_request_approve.bpmn', 'purchase_request_approve.purchase_request_approve.png', NULL, 0, 1, 2, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', 5, 'purchase_request_approve', '閲囪喘瀹℃牳', 'purchase_request_approve', 2, 'fb13987e-74f9-11f1-91b4-00155dd68500', 'purchase_request_approve.bpmn', 'purchase_request_approve.purchase_request_approve.png', NULL, 0, 1, 2, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', 2, 'purchase_request_approve', '閲囪喘瀹℃牳', 'purchase_request_approve', 3, 'd232b68a-74fe-11f1-9120-00155dd68500', 'purchase_request_approve.bpmn', 'purchase_request_approve.purchase_request_approve.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+INSERT INTO `act_re_procdef` VALUES ('pus:1:c79629a3-7462-11f1-b91b-00155dd68500', 2, '閲囪喘瀹℃牳', '閲囪喘瀹℃牳', 'pus', 1, 'c75fb050-7462-11f1-b91b-00155dd68500', 'pus.bpmn', 'pus.pus.png', NULL, 0, 1, 1, '', NULL, NULL, NULL, 0);
+
+-- ----------------------------
+-- Table structure for act_ru_actinst
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_actinst`;
+CREATE TABLE `act_ru_actinst`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT 1,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CALL_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACT_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `COMPLETED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `START_TIME_` datetime(3) NOT NULL,
+  `END_TIME_` datetime(3) NULL DEFAULT NULL,
+  `DURATION_` bigint NULL DEFAULT NULL,
+  `TRANSACTION_ORDER_` int NULL DEFAULT NULL,
+  `DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_START`(`START_TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_END`(`END_TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_PROC`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_PROC_ACT`(`PROC_INST_ID_` ASC, `ACT_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_EXEC`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_EXEC_ACT`(`EXECUTION_ID_` ASC, `ACT_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_ACTI_TASK`(`TASK_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_actinst
+-- ----------------------------
+INSERT INTO `act_ru_actinst` VALUES ('6b24a266-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.154', 0, 1, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('6b24a267-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-c02cd5df-0fe7-400f-a51b-6366c335815b', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.154', 0, 2, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('6b24a268-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'StartUserNode', '6b24a269-7a93-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 14:08:20.154', '2026-07-08 14:08:20.333', 179, 3, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('6b3ff2a0-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24a265-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-fad6901b-2ee6-48f0-99e1-be315098d410', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:20.333', '2026-07-08 14:08:20.333', 0, 1, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('6b408eeb-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b408ee5-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', '6b40b5fc-7a93-11f1-9ea7-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '1', NULL, '2026-07-08 14:08:20.337', NULL, NULL, 2, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('75068acb-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'StartEvent', NULL, NULL, '寮�濮�', 'startEvent', NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.734', 0, 1, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('75068acc-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-c02cd5df-0fe7-400f-a51b-6366c335815b', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.734', 0, 2, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('75068acd-7a93-11f1-9ea7-00155dd68500', 2, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'StartUserNode', '75068ace-7a93-11f1-9ea7-00155dd68500', NULL, '鍙戣捣浜�', 'userTask', '1', '1', '2026-07-08 14:08:36.734', '2026-07-08 14:08:36.892', 158, 3, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('751ecdc5-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75068aca-7a93-11f1-9ea7-00155dd68500', 'sequenceFlow-fad6901b-2ee6-48f0-99e1-be315098d410', NULL, NULL, NULL, 'sequenceFlow', NULL, NULL, '2026-07-08 14:08:36.893', '2026-07-08 14:08:36.893', 0, 1, NULL, '');
+INSERT INTO `act_ru_actinst` VALUES ('751f6a10-7a93-11f1-9ea7-00155dd68500', 1, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f6a0a-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', '751f9021-7a93-11f1-9ea7-00155dd68500', NULL, '瀹℃壒浜�', 'userTask', '1', NULL, '2026-07-08 14:08:36.897', NULL, NULL, 2, NULL, '');
+
+-- ----------------------------
+-- Table structure for act_ru_deadletter_job
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_deadletter_job`;
+CREATE TABLE `act_ru_deadletter_job`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `EXCLUSIVE_` tinyint(1) NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CORRELATION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DUEDATE_` timestamp(3) NULL DEFAULT NULL,
+  `REPEAT_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CUSTOM_VALUES_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_DEADLETTER_JOB_EXCEPTION_STACK_ID`(`EXCEPTION_STACK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_DEADLETTER_JOB_CUSTOM_VALUES_ID`(`CUSTOM_VALUES_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_DEADLETTER_JOB_CORRELATION_ID`(`CORRELATION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_DJOB_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_DJOB_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_DJOB_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_FK_DEADLETTER_JOB_EXECUTION`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_DEADLETTER_JOB_PROCESS_INSTANCE`(`PROCESS_INSTANCE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_DEADLETTER_JOB_PROC_DEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_DEADLETTER_JOB_CUSTOM_VALUES` FOREIGN KEY (`CUSTOM_VALUES_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_DEADLETTER_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_DEADLETTER_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_DEADLETTER_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_DEADLETTER_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_deadletter_job
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_entitylink
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_entitylink`;
+CREATE TABLE `act_ru_entitylink`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `LINK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PARENT_ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REF_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REF_SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REF_SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ROOT_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ROOT_SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HIERARCHY_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_ENT_LNK_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_ENT_LNK_REF_SCOPE`(`REF_SCOPE_ID_` ASC, `REF_SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_ENT_LNK_ROOT_SCOPE`(`ROOT_SCOPE_ID_` ASC, `ROOT_SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_ENT_LNK_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC, `LINK_TYPE_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_entitylink
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_event_subscr
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_event_subscr`;
+CREATE TABLE `act_ru_event_subscr`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `EVENT_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `EVENT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACTIVITY_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CONFIGURATION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATED_` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_EVENT_SUBSCR_CONFIG_`(`CONFIGURATION_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EVENT_SUBSCR_EXEC_ID`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EVENT_SUBSCR_PROC_ID`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EVENT_SUBSCR_SCOPEREF_`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_EVENT_EXEC` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_event_subscr
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_execution
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_execution`;
+CREATE TABLE `act_ru_execution`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PARENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUPER_EXEC_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ROOT_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `IS_ACTIVE_` tinyint NULL DEFAULT NULL,
+  `IS_CONCURRENT_` tinyint NULL DEFAULT NULL,
+  `IS_SCOPE_` tinyint NULL DEFAULT NULL,
+  `IS_EVENT_SCOPE_` tinyint NULL DEFAULT NULL,
+  `IS_MI_ROOT_` tinyint NULL DEFAULT NULL,
+  `SUSPENSION_STATE_` int NULL DEFAULT NULL,
+  `CACHED_ENT_STATE_` int NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `START_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `START_TIME_` datetime(3) NULL DEFAULT NULL,
+  `START_USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `IS_COUNT_ENABLED_` tinyint NULL DEFAULT NULL,
+  `EVT_SUBSCR_COUNT_` int NULL DEFAULT NULL,
+  `TASK_COUNT_` int NULL DEFAULT NULL,
+  `JOB_COUNT_` int NULL DEFAULT NULL,
+  `TIMER_JOB_COUNT_` int NULL DEFAULT NULL,
+  `SUSP_JOB_COUNT_` int NULL DEFAULT NULL,
+  `DEADLETTER_JOB_COUNT_` int NULL DEFAULT NULL,
+  `EXTERNAL_WORKER_JOB_COUNT_` int NULL DEFAULT NULL,
+  `VAR_COUNT_` int NULL DEFAULT NULL,
+  `ID_LINK_COUNT_` int NULL DEFAULT NULL,
+  `CALLBACK_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CALLBACK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REFERENCE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `REFERENCE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BUSINESS_STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_EXEC_BUSKEY`(`BUSINESS_KEY_` ASC) USING BTREE,
+  INDEX `ACT_IDC_EXEC_ROOT`(`ROOT_PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EXEC_REF_ID_`(`REFERENCE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_EXE_PROCINST`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_EXE_PARENT`(`PARENT_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_EXE_SUPER`(`SUPER_EXEC_` ASC) USING BTREE,
+  INDEX `ACT_FK_EXE_PROCDEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_EXE_PARENT` FOREIGN KEY (`PARENT_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE CASCADE ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_EXE_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_EXE_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `ACT_FK_EXE_SUPER` FOREIGN KEY (`SUPER_EXEC_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE CASCADE ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_execution
+-- ----------------------------
+INSERT INTO `act_ru_execution` VALUES ('6b24543a-7a93-11f1-9ea7-00155dd68500', 2, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, 1, 0, 1, 0, 0, 1, NULL, '', '璇峰亣娴佺▼', 'StartEvent', '2026-07-08 14:08:20.152', '1', NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_execution` VALUES ('6b4019b1-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', 0, 0, 0, 0, 1, 1, NULL, '', NULL, NULL, '2026-07-08 14:08:20.333', NULL, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_execution` VALUES ('6b408ee5-7a93-11f1-9ea7-00155dd68500', 1, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, '6b4019b1-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', 1, 0, 0, 0, 0, 1, NULL, '', NULL, NULL, '2026-07-08 14:08:20.337', NULL, NULL, NULL, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_execution` VALUES ('75063c9f-7a93-11f1-9ea7-00155dd68500', 2, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, 1, 0, 1, 0, 0, 1, NULL, '', '璇峰亣娴佺▼', 'StartEvent', '2026-07-08 14:08:36.732', '1', NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_execution` VALUES ('751ef4d6-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', 0, 0, 0, 0, 1, 1, NULL, '', NULL, NULL, '2026-07-08 14:08:36.893', NULL, NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_execution` VALUES ('751f6a0a-7a93-11f1-9ea7-00155dd68500', 1, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, '751ef4d6-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', 'Activity__34944553111783490267007', 1, 0, 0, 0, 0, 1, NULL, '', NULL, NULL, '2026-07-08 14:08:36.897', NULL, NULL, NULL, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+
+-- ----------------------------
+-- Table structure for act_ru_external_job
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_external_job`;
+CREATE TABLE `act_ru_external_job`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCLUSIVE_` tinyint(1) NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CORRELATION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RETRIES_` int NULL DEFAULT NULL,
+  `EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DUEDATE_` timestamp(3) NULL DEFAULT NULL,
+  `REPEAT_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CUSTOM_VALUES_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_EXTERNAL_JOB_EXCEPTION_STACK_ID`(`EXCEPTION_STACK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EXTERNAL_JOB_CUSTOM_VALUES_ID`(`CUSTOM_VALUES_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EXTERNAL_JOB_CORRELATION_ID`(`CORRELATION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EJOB_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EJOB_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_EJOB_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_EXTERNAL_JOB_CUSTOM_VALUES` FOREIGN KEY (`CUSTOM_VALUES_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_EXTERNAL_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_external_job
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_history_job
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_history_job`;
+CREATE TABLE `act_ru_history_job`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RETRIES_` int NULL DEFAULT NULL,
+  `EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CUSTOM_VALUES_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ADV_HANDLER_CFG_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_history_job
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_identitylink
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_identitylink`;
+CREATE TABLE `act_ru_identitylink`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `GROUP_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_IDENT_LNK_USER`(`USER_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_IDENT_LNK_GROUP`(`GROUP_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_IDENT_LNK_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_IDENT_LNK_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_IDENT_LNK_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_ATHRZ_PROCEDEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_TSKASS_TASK`(`TASK_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_IDL_PROCINST`(`PROC_INST_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_ATHRZ_PROCEDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_IDL_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TSKASS_TASK` FOREIGN KEY (`TASK_ID_`) REFERENCES `act_ru_task` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_identitylink
+-- ----------------------------
+INSERT INTO `act_ru_identitylink` VALUES ('6b24543b-7a93-11f1-9ea7-00155dd68500', 1, NULL, 'starter', '1', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_identitylink` VALUES ('6b2565bb-7a93-11f1-9ea7-00155dd68500', 1, NULL, 'participant', '1', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_identitylink` VALUES ('6b3e44ef-7a93-11f1-9ea7-00155dd68500', 1, NULL, 'participant', '1', NULL, '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_identitylink` VALUES ('750663b0-7a93-11f1-9ea7-00155dd68500', 1, NULL, 'starter', '1', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_identitylink` VALUES ('7506d8f0-7a93-11f1-9ea7-00155dd68500', 1, NULL, 'participant', '1', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_identitylink` VALUES ('751cd1f4-7a93-11f1-9ea7-00155dd68500', 1, NULL, 'participant', '1', NULL, '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+
+-- ----------------------------
+-- Table structure for act_ru_job
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_job`;
+CREATE TABLE `act_ru_job`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCLUSIVE_` tinyint(1) NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CORRELATION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RETRIES_` int NULL DEFAULT NULL,
+  `EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DUEDATE_` timestamp(3) NULL DEFAULT NULL,
+  `REPEAT_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CUSTOM_VALUES_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_JOB_EXCEPTION_STACK_ID`(`EXCEPTION_STACK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_JOB_CUSTOM_VALUES_ID`(`CUSTOM_VALUES_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_JOB_CORRELATION_ID`(`CORRELATION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_JOB_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_JOB_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_JOB_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_FK_JOB_EXECUTION`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_JOB_PROCESS_INSTANCE`(`PROCESS_INSTANCE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_JOB_PROC_DEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_JOB_CUSTOM_VALUES` FOREIGN KEY (`CUSTOM_VALUES_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_job
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_suspended_job
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_suspended_job`;
+CREATE TABLE `act_ru_suspended_job`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `EXCLUSIVE_` tinyint(1) NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CORRELATION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RETRIES_` int NULL DEFAULT NULL,
+  `EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DUEDATE_` timestamp(3) NULL DEFAULT NULL,
+  `REPEAT_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CUSTOM_VALUES_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_SUSPENDED_JOB_EXCEPTION_STACK_ID`(`EXCEPTION_STACK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_SUSPENDED_JOB_CUSTOM_VALUES_ID`(`CUSTOM_VALUES_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_SUSPENDED_JOB_CORRELATION_ID`(`CORRELATION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_SJOB_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_SJOB_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_SJOB_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_FK_SUSPENDED_JOB_EXECUTION`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_SUSPENDED_JOB_PROCESS_INSTANCE`(`PROCESS_INSTANCE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_SUSPENDED_JOB_PROC_DEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_SUSPENDED_JOB_CUSTOM_VALUES` FOREIGN KEY (`CUSTOM_VALUES_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_SUSPENDED_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_SUSPENDED_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_SUSPENDED_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_SUSPENDED_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_suspended_job
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_task
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_task`;
+CREATE TABLE `act_ru_task`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `STATE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DELEGATION_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PRIORITY_` int NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `IN_PROGRESS_TIME_` datetime(3) NULL DEFAULT NULL,
+  `IN_PROGRESS_STARTED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CLAIM_TIME_` datetime(3) NULL DEFAULT NULL,
+  `CLAIMED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUSPENDED_TIME_` datetime(3) NULL DEFAULT NULL,
+  `SUSPENDED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `IN_PROGRESS_DUE_DATE_` datetime(3) NULL DEFAULT NULL,
+  `DUE_DATE_` datetime(3) NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUSPENSION_STATE_` int NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  `FORM_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `IS_COUNT_ENABLED_` tinyint NULL DEFAULT NULL,
+  `VAR_COUNT_` int NULL DEFAULT NULL,
+  `ID_LINK_COUNT_` int NULL DEFAULT NULL,
+  `SUB_TASK_COUNT_` int NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_TASK_CREATE`(`CREATE_TIME_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TASK_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TASK_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TASK_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_FK_TASK_EXE`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_TASK_PROCINST`(`PROC_INST_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_TASK_PROCDEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_TASK_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TASK_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TASK_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_task
+-- ----------------------------
+INSERT INTO `act_ru_task` VALUES ('6b40b5fc-7a93-11f1-9ea7-00155dd68500', 1, '6b408ee5-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 'created', '瀹℃壒浜�', NULL, NULL, 'Activity__34944553111783490267007', NULL, '1', NULL, 50, '2026-07-08 14:08:20.337', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '鍒嗙被2', 1, '', NULL, 1, 1, 0, 0);
+INSERT INTO `act_ru_task` VALUES ('751f9021-7a93-11f1-9ea7-00155dd68500', 1, '751f6a0a-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 'created', '瀹℃壒浜�', NULL, NULL, 'Activity__34944553111783490267007', NULL, '1', NULL, 50, '2026-07-08 14:08:36.897', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '鍒嗙被2', 1, '', NULL, 1, 1, 0, 0);
+
+-- ----------------------------
+-- Table structure for act_ru_timer_job
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_timer_job`;
+CREATE TABLE `act_ru_timer_job`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCLUSIVE_` tinyint(1) NULL DEFAULT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `ELEMENT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CORRELATION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RETRIES_` int NULL DEFAULT NULL,
+  `EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DUEDATE_` timestamp(3) NULL DEFAULT NULL,
+  `REPEAT_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CUSTOM_VALUES_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_TIMER_JOB_EXCEPTION_STACK_ID`(`EXCEPTION_STACK_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TIMER_JOB_CUSTOM_VALUES_ID`(`CUSTOM_VALUES_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TIMER_JOB_CORRELATION_ID`(`CORRELATION_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TIMER_JOB_DUEDATE`(`DUEDATE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TJOB_SCOPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TJOB_SUB_SCOPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_TJOB_SCOPE_DEF`(`SCOPE_DEFINITION_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_FK_TIMER_JOB_EXECUTION`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_TIMER_JOB_PROCESS_INSTANCE`(`PROCESS_INSTANCE_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_TIMER_JOB_PROC_DEF`(`PROC_DEF_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_TIMER_JOB_CUSTOM_VALUES` FOREIGN KEY (`CUSTOM_VALUES_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TIMER_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TIMER_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TIMER_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_TIMER_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_timer_job
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for act_ru_variable
+-- ----------------------------
+DROP TABLE IF EXISTS `act_ru_variable`;
+CREATE TABLE `act_ru_variable`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `DOUBLE_` double NULL DEFAULT NULL,
+  `LONG_` bigint NULL DEFAULT NULL,
+  `TEXT_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TEXT2_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `META_INFO_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `ACT_IDX_RU_VAR_SCOPE_ID_TYPE`(`SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_IDX_RU_VAR_SUB_ID_TYPE`(`SUB_SCOPE_ID_` ASC, `SCOPE_TYPE_` ASC) USING BTREE,
+  INDEX `ACT_FK_VAR_BYTEARRAY`(`BYTEARRAY_ID_` ASC) USING BTREE,
+  INDEX `ACT_IDX_VARIABLE_TASK_ID`(`TASK_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_VAR_EXE`(`EXECUTION_ID_` ASC) USING BTREE,
+  INDEX `ACT_FK_VAR_PROCINST`(`PROC_INST_ID_` ASC) USING BTREE,
+  CONSTRAINT `ACT_FK_VAR_BYTEARRAY` FOREIGN KEY (`BYTEARRAY_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_VAR_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+  CONSTRAINT `ACT_FK_VAR_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of act_ru_variable
+-- ----------------------------
+INSERT INTO `act_ru_variable` VALUES ('6b247b4c-7a93-11f1-9ea7-00155dd68500', 1, 'long', 'PROCESS_START_USER_ID', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b247b4d-7a93-11f1-9ea7-00155dd68500', 1, 'boolean', '_FLOWABLE_SKIP_EXPRESSION_ENABLED', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b247b4e-7a93-11f1-9ea7-00155dd68500', 1, 'integer', '6ada8f47c5ad483ca7e2a15da2d922d1', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 110, '110', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b247b4f-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'PROCESS_STATUS', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b247b50-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'ce674cb3f7604c5da893b347bf1ff855', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 103, '103', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b247b51-7a93-11f1-9ea7-00155dd68500', 1, 'string', 'F7a8mrbnxj65cuc', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '<p>4123123123</p>', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b24a263-7a93-11f1-9ea7-00155dd68500', 1, 'serializable', 'Fn60mrbnvny3clc', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, '6b24a262-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b408ee3-7a93-11f1-9ea7-00155dd68500', 1, 'serializable', 'Activity__34944553111783490267007_assignees', '6b4019b1-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, '6b408ee2-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b408ee6-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'nrOfInstances', '6b4019b1-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b408ee7-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'nrOfCompletedInstances', '6b4019b1-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b408ee8-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'nrOfActiveInstances', '6b4019b1-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b408ee9-7a93-11f1-9ea7-00155dd68500', 1, 'long', 'Activity__34944553111783490267007_assignee', '6b408ee5-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b408eea-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'loopCounter', '6b408ee5-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('6b41041e-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'TASK_STATUS', '6b408ee5-7a93-11f1-9ea7-00155dd68500', '6b24543a-7a93-11f1-9ea7-00155dd68500', '6b40b5fc-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('750663b1-7a93-11f1-9ea7-00155dd68500', 1, 'long', 'PROCESS_START_USER_ID', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('750663b2-7a93-11f1-9ea7-00155dd68500', 1, 'boolean', '_FLOWABLE_SKIP_EXPRESSION_ENABLED', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('750663b3-7a93-11f1-9ea7-00155dd68500', 1, 'integer', '6ada8f47c5ad483ca7e2a15da2d922d1', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 110, '110', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('750663b4-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'PROCESS_STATUS', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('75068ac5-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'ce674cb3f7604c5da893b347bf1ff855', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 103, '103', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('75068ac6-7a93-11f1-9ea7-00155dd68500', 1, 'string', 'F7a8mrbnxj65cuc', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '<p>4123123123</p>', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('75068ac8-7a93-11f1-9ea7-00155dd68500', 1, 'serializable', 'Fn60mrbnvny3clc', '75063c9f-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, '75068ac7-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751f6a08-7a93-11f1-9ea7-00155dd68500', 1, 'serializable', 'Activity__34944553111783490267007_assignees', '751ef4d6-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, '751f42f7-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751f6a0b-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'nrOfInstances', '751ef4d6-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751f6a0c-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'nrOfCompletedInstances', '751ef4d6-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751f6a0d-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'nrOfActiveInstances', '751ef4d6-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751f6a0e-7a93-11f1-9ea7-00155dd68500', 1, 'long', 'Activity__34944553111783490267007_assignee', '751f6a0a-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751f6a0f-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'loopCounter', '751f6a0a-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, NULL, 0, '0', NULL, NULL);
+INSERT INTO `act_ru_variable` VALUES ('751fb733-7a93-11f1-9ea7-00155dd68500', 1, 'integer', 'TASK_STATUS', '751f6a0a-7a93-11f1-9ea7-00155dd68500', '75063c9f-7a93-11f1-9ea7-00155dd68500', '751f9021-7a93-11f1-9ea7-00155dd68500', NULL, NULL, NULL, NULL, NULL, 1, '1', NULL, NULL);
+
+-- ----------------------------
+-- Table structure for ai_api_key
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_api_key`;
+CREATE TABLE `ai_api_key`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍚嶇О',
+  `api_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀵嗛挜',
+  `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞冲彴',
+  `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'API 鍦板潃',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI API 绉橀挜琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_api_key
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_chat_conversation
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_chat_conversation`;
+CREATE TABLE `ai_chat_conversation`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID 缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '鏂板璇�' COMMENT '瀵硅瘽鏍囬',
+  `pinned` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁缃《',
+  `pinned_time` datetime NULL DEFAULT NULL COMMENT '缃《鏃堕棿',
+  `role_id` bigint NULL DEFAULT NULL COMMENT '瑙掕壊缂栧彿',
+  `model_id` bigint NULL DEFAULT NULL COMMENT '妯″瀷缂栧彿',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷鏍囧織',
+  `system_message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙掕壊璁惧畾',
+  `temperature` double NULL DEFAULT NULL COMMENT '娓╁害鍙傛暟',
+  `max_tokens` int NULL DEFAULT NULL COMMENT '鍗曟潯鍥炲鐨勬渶澶� Token 鏁伴噺',
+  `max_contexts` int NULL DEFAULT NULL COMMENT '涓婁笅鏂囩殑鏈�澶� Message 鏁伴噺',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI Chat 瀵硅瘽琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_chat_conversation
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_chat_message
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_chat_message`;
+CREATE TABLE `ai_chat_message`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `conversation_id` bigint NOT NULL COMMENT '瀵硅瘽缂栧彿',
+  `reply_id` bigint NULL DEFAULT NULL COMMENT '鍥炲娑堟伅缂栧彿',
+  `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娑堟伅绫诲瀷',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `role_id` bigint NULL DEFAULT NULL COMMENT '瑙掕壊缂栧彿',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷鏍囧織',
+  `model_id` bigint NULL DEFAULT NULL COMMENT '妯″瀷缂栧彿',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鑱婂ぉ鍐呭',
+  `reasoning_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鎺ㄧ悊鍐呭',
+  `use_context` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鎼哄甫涓婁笅鏂�',
+  `segment_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭ヨ瘑搴撴钀界紪鍙锋暟缁�',
+  `web_search_pages` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鑱旂綉鎼滅储鐨勭綉椤靛唴瀹规暟缁�',
+  `attachment_urls` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢 URL 鏁扮粍',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI Chat 娑堟伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_chat_message
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_chat_role
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_chat_role`;
+CREATE TABLE `ai_chat_role`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瑙掕壊鍚嶇О',
+  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙掕壊澶村儚',
+  `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瑙掕壊鍒嗙被',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙掕壊鎻忚堪',
+  `system_message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙掕壊璁惧畾',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `model_id` bigint NULL DEFAULT NULL COMMENT '妯″瀷缂栧彿',
+  `knowledge_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮曠敤鐨勭煡璇嗗簱缂栧彿鍒楄〃',
+  `tool_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮曠敤鐨勫伐鍏风紪鍙峰垪琛�',
+  `mcp_client_names` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮曠敤鐨� MCP Client 鍚嶅瓧鍒楄〃',
+  `public_status` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍏紑',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鎺掑簭鍊�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 鑱婂ぉ瑙掕壊琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_chat_role
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_image
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_image`;
+CREATE TABLE `ai_image`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鎻愮ず璇�',
+  `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞冲彴',
+  `model_id` bigint NULL DEFAULT NULL COMMENT '妯″瀷缂栧彿',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷鏍囪瘑',
+  `width` int NULL DEFAULT NULL COMMENT '鍥剧墖瀹藉害',
+  `height` int NULL DEFAULT NULL COMMENT '鍥剧墖楂樺害',
+  `status` tinyint NOT NULL COMMENT '鐢熸垚鐘舵��',
+  `finish_time` datetime NULL DEFAULT NULL COMMENT '瀹屾垚鏃堕棿',
+  `error_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁樼敾閿欒淇℃伅',
+  `pic_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥剧墖鍦板潃',
+  `public_status` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍏紑',
+  `options` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '缁樺埗鍙傛暟',
+  `buttons` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'mj buttons 鎸夐挳',
+  `task_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠诲姟缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 缁樼敾琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_image
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_knowledge
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_knowledge`;
+CREATE TABLE `ai_knowledge`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鐭ヨ瘑搴撳悕绉�',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭ヨ瘑搴撴弿杩�',
+  `embedding_model_id` bigint NULL DEFAULT NULL COMMENT '鍚戦噺妯″瀷缂栧彿',
+  `embedding_model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷鏍囪瘑',
+  `top_k` int NULL DEFAULT NULL COMMENT 'topK',
+  `similarity_threshold` double NULL DEFAULT NULL COMMENT '鐩镐技搴﹂槇鍊�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 鐭ヨ瘑搴撹〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_knowledge
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_knowledge_document
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_knowledge_document`;
+CREATE TABLE `ai_knowledge_document`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `knowledge_id` bigint NOT NULL COMMENT '鐭ヨ瘑搴撶紪鍙�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鏂囨。鍚嶇О',
+  `url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂囦欢 URL',
+  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鍐呭',
+  `content_length` int NULL DEFAULT NULL COMMENT '鏂囨。闀垮害',
+  `tokens` int NULL DEFAULT NULL COMMENT '鏂囨。 token 鏁伴噺',
+  `segment_max_tokens` int NULL DEFAULT NULL COMMENT '鍒嗙墖鏈�澶� Token 鏁�',
+  `retrieval_count` int NOT NULL DEFAULT 0 COMMENT '鍙洖娆℃暟',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 鐭ヨ瘑搴撴枃妗h〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_knowledge_document
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_knowledge_segment
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_knowledge_segment`;
+CREATE TABLE `ai_knowledge_segment`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `knowledge_id` bigint NOT NULL COMMENT '鐭ヨ瘑搴撶紪鍙�',
+  `document_id` bigint NOT NULL COMMENT '鏂囨。缂栧彿',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鍒囩墖鍐呭',
+  `content_length` int NULL DEFAULT NULL COMMENT '鍒囩墖鍐呭闀垮害',
+  `vector_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍚戦噺搴撶殑缂栧彿',
+  `tokens` int NULL DEFAULT NULL COMMENT 'token 鏁伴噺',
+  `retrieval_count` int NOT NULL DEFAULT 0 COMMENT '鍙洖娆℃暟',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 鐭ヨ瘑搴撴枃妗e垎娈佃〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_knowledge_segment
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_mind_map
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_mind_map`;
+CREATE TABLE `ai_mind_map`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞冲彴',
+  `model_id` bigint NULL DEFAULT NULL COMMENT '妯″瀷缂栧彿',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷',
+  `prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鐢熸垚鍐呭鎻愮ず',
+  `generated_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鐢熸垚鐨勫唴瀹�',
+  `error_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閿欒淇℃伅',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 鎬濈淮瀵煎浘琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_mind_map
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_model
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_model`;
+CREATE TABLE `ai_model`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `key_id` bigint NOT NULL COMMENT 'API 绉橀挜缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '妯″瀷鍚嶇О',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '妯″瀷鏍囧織',
+  `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞冲彴',
+  `type` tinyint NOT NULL COMMENT '绫诲瀷',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鎺掑簭鍊�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `temperature` double NULL DEFAULT NULL COMMENT '娓╁害鍙傛暟',
+  `max_tokens` int NULL DEFAULT NULL COMMENT '鍗曟潯鍥炲鐨勬渶澶� Token 鏁伴噺',
+  `max_contexts` int NULL DEFAULT NULL COMMENT '涓婁笅鏂囩殑鏈�澶� Message 鏁伴噺',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 妯″瀷琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_model
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_music
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_music`;
+CREATE TABLE `ai_music`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闊充箰鍚嶇О',
+  `lyric` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '姝岃瘝',
+  `image_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥剧墖鍦板潃',
+  `audio_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闊抽鍦板潃',
+  `video_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙嗛鍦板潃',
+  `status` tinyint NOT NULL COMMENT '闊充箰鐘舵��',
+  `generate_mode` tinyint NOT NULL COMMENT '鐢熸垚妯″紡',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎻忚堪璇�',
+  `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞冲彴',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷',
+  `tags` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闊充箰椋庢牸鏍囩',
+  `duration` double NULL DEFAULT NULL COMMENT '闊充箰鏃堕暱',
+  `public_status` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍏紑',
+  `task_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠诲姟缂栧彿',
+  `error_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閿欒淇℃伅',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 闊充箰琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_music
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_tool
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_tool`;
+CREATE TABLE `ai_tool`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '宸ュ叿缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '宸ュ叿鍚嶇О',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ叿鎻忚堪',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 宸ュ叿琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_tool
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_workflow
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_workflow`;
+CREATE TABLE `ai_workflow`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '宸ヤ綔娴佸悕绉�',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '宸ヤ綔娴佹爣璇�',
+  `graph` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '宸ヤ綔娴佹ā鍨� JSON 鏁版嵁',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 宸ヤ綔娴佽〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_workflow
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for ai_write
+-- ----------------------------
+DROP TABLE IF EXISTS `ai_write`;
+CREATE TABLE `ai_write`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `type` tinyint NOT NULL COMMENT '鍐欎綔绫诲瀷',
+  `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞冲彴',
+  `model_id` bigint NULL DEFAULT NULL COMMENT '妯″瀷缂栧彿',
+  `model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯″瀷',
+  `prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鐢熸垚鍐呭鎻愮ず',
+  `generated_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鐢熸垚鐨勫唴瀹�',
+  `original_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鍘熸枃',
+  `length` tinyint NULL DEFAULT NULL COMMENT '闀垮害鎻愮ず璇�',
+  `format` tinyint NULL DEFAULT NULL COMMENT '鏍煎紡鎻愮ず璇�',
+  `tone` tinyint NULL DEFAULT NULL COMMENT '璇皵鎻愮ず璇�',
+  `language` tinyint NULL DEFAULT NULL COMMENT '璇█鎻愮ず璇�',
+  `error_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閿欒淇℃伅',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'AI 鍐欎綔琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of ai_write
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for bpm_category
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_category`;
+CREATE TABLE `bpm_category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍒嗙被缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒嗙被鍚�',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒嗙被鏍囧織',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍒嗙被鎻忚堪',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鍒嗙被鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鍒嗙被鎺掑簭',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 202 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'BPM 娴佺▼鍒嗙被琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_category
+-- ----------------------------
+INSERT INTO `bpm_category` VALUES (1, '鍙戣揣瀹℃壒', '鍒嗙被1', '鍒嗙被1', 0, 1, '1', '2026-06-23 16:23:03', '1', '2026-07-08 13:36:20', b'0');
+INSERT INTO `bpm_category` VALUES (2, '閲囪喘瀹℃牳', 'purchase_request_approve', NULL, 0, 2, '142', '2026-06-30 16:44:10', '142', '2026-07-01 11:02:23', b'0');
+INSERT INTO `bpm_category` VALUES (3, '閿�鍞姤浠峰鎵�', 'sale_quotation_approve', NULL, 0, 3, '142', '2026-07-02 09:54:40', '142', '2026-07-02 09:54:40', b'0');
+INSERT INTO `bpm_category` VALUES (4, '鍚堝悓瀹℃壒', 'contract_approve', '鍚堝悓瀹℃壒娴佺▼鍒嗙被', 0, 0, '1', '2026-07-02 03:34:03', '1', '2026-07-02 03:34:03', b'0');
+INSERT INTO `bpm_category` VALUES (5, '浜哄姏璧勬簮', 'hrm', NULL, 0, 5, '1', '2026-07-06 13:13:03', '1', '2026-07-06 13:13:03', b'0');
+INSERT INTO `bpm_category` VALUES (120, '浠撳簱瀹℃牳', 'wms_approve', '浠撳簱绠$悊瀹℃壒娴佺▼鍒嗙被', 0, 30, '1', '2026-07-09 02:25:58', '1', '2026-07-09 02:25:58', b'0');
+INSERT INTO `bpm_category` VALUES (200, '鑰冨嫟寮傚父瀹℃壒', 'hrm_attendance_approve', 'HRM鑰冨嫟寮傚父瀹℃壒鍒嗙被', 0, 50, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0');
+INSERT INTO `bpm_category` VALUES (201, '璇峰亣瀹℃壒', '鍒嗙被2', '123123123', 0, 12, '1', '2026-07-08 13:56:23', '1', '2026-07-08 13:56:23', b'0');
+
+-- ----------------------------
+-- Table structure for bpm_form
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_form`;
+CREATE TABLE `bpm_form`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄥ崟鍚�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `conf` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄥ崟鐨勯厤缃�',
+  `fields` json NOT NULL COMMENT '琛ㄥ崟椤圭殑鏁扮粍',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'BPM 宸ヤ綔娴佽〃鍗曞畾涔夎〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_form
+-- ----------------------------
+INSERT INTO `bpm_form` VALUES (1, '琛ㄥ崟1', 0, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"_fc_drag_tag\\\":\\\"select\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"ApiSelect\\\",\\\"field\\\":\\\"dc4b501620bb4c8184aaaeb66398324a\\\",\\\"title\\\":\\\"鎺ュ彛閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"method\\\":\\\"GET\\\"},\\\"_fc_id\\\":\\\"id_F6ewmrbn96xdc3c\\\",\\\"name\\\":\\\"ref_F1jomrbn96xdc4c\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"ApiSelect\\\"}\"]', NULL, '1', '2026-06-23 16:24:37', '1', '2026-07-08 13:35:39', b'0');
+INSERT INTO `bpm_form` VALUES (2, '璇峰亣琛ㄥ崟', 0, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"DeptSelect\\\",\\\"field\\\":\\\"ce674cb3f7604c5da893b347bf1ff855\\\",\\\"title\\\":\\\"閮ㄩ棬閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"returnType\\\":\\\"id\\\",\\\"defaultCurrentDept\\\":false},\\\"_fc_id\\\":\\\"id_Fgcgmrbnv9c4cbc\\\",\\\"name\\\":\\\"ref_F7c0mrbnv9c4ccc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"DeptSelect\\\"}\", \"{\\\"type\\\":\\\"UserSelect\\\",\\\"field\\\":\\\"6ada8f47c5ad483ca7e2a15da2d922d1\\\",\\\"title\\\":\\\"鐢ㄦ埛閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"defaultCurrentUser\\\":false},\\\"_fc_id\\\":\\\"id_F0pdmrbnvboxcdc\\\",\\\"name\\\":\\\"ref_F6pamrbnvboxcec\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"UserSelect\\\"}\", \"{\\\"type\\\":\\\"timePicker\\\",\\\"field\\\":\\\"Fn60mrbnvny3clc\\\",\\\"title\\\":\\\"鏃堕棿鍖洪棿\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"range\\\":true},\\\"_fc_id\\\":\\\"id_Fwsymrbnvny3cmc\\\",\\\"name\\\":\\\"ref_Fu44mrbnvny3cnc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"timeRange\\\"}\", \"{\\\"type\\\":\\\"fcEditor\\\",\\\"field\\\":\\\"F7a8mrbnxj65cuc\\\",\\\"title\\\":\\\"瀵屾枃鏈\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fsz6mrbnxj65cvc\\\",\\\"name\\\":\\\"ref_Fqqwmrbnxj65cwc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"fcEditor\\\"}\"]', '1111', '1', '2026-07-08 13:54:31', '1', '2026-07-08 13:54:31', b'0');
+
+-- ----------------------------
+-- Table structure for bpm_oa_leave
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_oa_leave`;
+CREATE TABLE `bpm_oa_leave`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璇峰亣琛ㄥ崟涓婚敭',
+  `user_id` bigint NOT NULL COMMENT '鐢宠浜虹殑鐢ㄦ埛缂栧彿',
+  `type` tinyint NOT NULL COMMENT '璇峰亣绫诲瀷',
+  `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍘熷洜',
+  `start_time` datetime NOT NULL COMMENT '寮�濮嬫椂闂�',
+  `end_time` datetime NOT NULL COMMENT '缁撴潫鏃堕棿',
+  `day` bigint NOT NULL COMMENT '璇峰亣澶╂暟',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '瀹℃壒缁撴灉',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀵瑰簲鐨勬祦绋嬬紪鍙�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OA 璇峰亣鐢宠琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_oa_leave
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for bpm_process_definition_info
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_process_definition_info`;
+CREATE TABLE `bpm_process_definition_info`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `process_definition_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴佺▼瀹氫箟鐨勭紪鍙�',
+  `model_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴佺▼妯″瀷鐨勭紪鍙�',
+  `model_type` tinyint NOT NULL DEFAULT 10 COMMENT '娴佺▼妯″瀷鐨勭被鍨�',
+  `category` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼鍒嗙被鐨勭紪鐮�',
+  `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥炬爣',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎻忚堪',
+  `form_type` tinyint NOT NULL DEFAULT 10 COMMENT '琛ㄥ崟绫诲瀷锛�10鏅�氳〃鍗� 20鑷畾涔夎〃鍗曪級',
+  `form_id` bigint NULL DEFAULT NULL COMMENT '鍔ㄦ�佽〃鍗曠紪鍙�',
+  `form_conf` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '琛ㄥ崟鐨勯厤缃�',
+  `form_fields` json NULL COMMENT '琛ㄥ崟椤圭殑鏁扮粍',
+  `form_custom_create_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑷畾涔夎〃鍗曠殑鎻愪氦璺緞',
+  `form_custom_view_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑷畾涔夎〃鍗曠殑鏌ョ湅璺緞',
+  `simple_model` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'SIMPLE 璁捐鍣ㄦā鍨嬫暟鎹�',
+  `visible` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍙',
+  `sort` bigint NOT NULL DEFAULT 0 COMMENT '鎺掑簭鍊�',
+  `start_user_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙彂璧风敤鎴风紪鍙锋暟缁�',
+  `start_dept_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙彂璧烽儴闂ㄧ紪鍙锋暟缁�',
+  `manager_user_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙鐞嗙敤鎴风紪鍙锋暟缁�',
+  `allow_cancel_running_process` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍏佽鎾ら攢瀹℃壒涓殑鐢宠',
+  `allow_withdraw_task` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍏佽瀹℃壒浜烘挙鍥炰换鍔�',
+  `process_id_rule` json NULL COMMENT '娴佺▼ ID 瑙勫垯',
+  `auto_approval_type` tinyint NULL DEFAULT NULL COMMENT '鑷姩鍘婚噸绫诲瀷',
+  `title_setting` json NULL COMMENT '鏍囬璁剧疆',
+  `summary_setting` json NULL COMMENT '鎽樿璁剧疆',
+  `process_before_trigger_setting` json NULL COMMENT '娴佺▼鍓嶇疆閫氱煡璁剧疆',
+  `process_after_trigger_setting` json NULL COMMENT '娴佺▼鍚庣疆閫氱煡璁剧疆',
+  `task_before_trigger_setting` json NULL COMMENT '浠诲姟鍓嶇疆閫氱煡璁剧疆',
+  `task_after_trigger_setting` json NULL COMMENT '浠诲姟鍚庣疆閫氱煡璁剧疆',
+  `print_template_setting` json NULL COMMENT '鑷畾涔夋墦鍗版ā鏉胯缃�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'BPM 娴佺▼瀹氫箟鎷撳睍淇℃伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_process_definition_info
+-- ----------------------------
+INSERT INTO `bpm_process_definition_info` VALUES (1, 'Ada:1:6cc05e1b-6edd-11f1-af1d-00155dd68500', 'da144d65-6edc-11f1-af1d-00155dd68500', 20, '鍒嗙被1', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"杈撳叆妗哱\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"input\\\"}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"杈撳叆妗哱\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"input\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"杈撳叆妗哱",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"杈撳叆妗哱",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782203025576, '', '', '1', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '1', '2026-06-23 16:27:52', '1', '2026-06-23 16:27:52', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (2, 'Ada:2:a332d068-6edd-11f1-af1d-00155dd68500', 'da144d65-6edc-11f1-af1d-00155dd68500', 20, '鍒嗙被1', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"杈撳叆妗哱",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"杈撳叆妗哱",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782203025576, '', '', '1', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '1', '2026-06-23 16:29:23', '1', '2026-06-23 16:29:23', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (3, 'pus:1:c79629a3-7462-11f1-b91b-00155dd68500', '8c640c7d-7462-11f1-b91b-00155dd68500', 20, '閲囪喘瀹℃牳', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782810203613, '', '', '142', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-06-30 17:05:03', '142', '2026-06-30 17:05:03', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (4, 'purchase_approve:1:77c35552-74f7-11f1-b46c-00155dd68500', '654ec11c-74f7-11f1-b46c-00155dd68500', 20, 'purchase_approve', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782874133055, '', '', '142', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-07-01 10:49:24', '142', '2026-07-01 10:49:24', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (5, 'purchase_request_approve:1:6dc60acd-74f9-11f1-91b4-00155dd68500', '5ddab987-74f9-11f1-91b4-00155dd68500', 20, 'purchase_request_approve', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782874979545, '', '', '142', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-07-01 11:03:26', '142', '2026-07-01 11:03:26', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (6, 'purchase_request_approve:2:fb19b301-74f9-11f1-91b4-00155dd68500', '5ddab987-74f9-11f1-91b4-00155dd68500', 20, 'purchase_request_approve', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782874979545, '', '', '142', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-07-01 11:07:23', '142', '2026-07-01 11:07:23', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (7, 'SSQ:1:a0be69b7-74fc-11f1-9120-00155dd68500', '2f78f7ad-7384-11f1-aa00-00155dd68500', 20, '鍒嗙被1', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"approveMethod\":4,\"approveType\":1,\"assignEmptyHandler\":{\"type\":1,\"userIds\":null},\"assignStartUserHandlerType\":1,\"buttonsSetting\":[{\"displayName\":\"閫氳繃\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":true,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":true,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":true,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":true,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":true,\"id\":6}],\"candidateParam\":\"1\",\"candidateStrategy\":30,\"childNode\":{\"candidateParam\":\"1,100\",\"candidateStrategy\":30,\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"1\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"1\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"1\"}],\"id\":\"Activity__26062290711782714719270\",\"name\":\"鎶勯�佷汉\",\"showText\":\"鎸囧畾鎴愬憳锛氳妺閬撴簮鐮�,鑺嬮亾\",\"type\":12},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"1\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"1\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"1\"}],\"id\":\"Activity__79685282811782876364872\",\"name\":\"瀹℃壒浜篭",\"reasonRequire\":false,\"rejectHandler\":{\"returnNodeId\":null,\"type\":1},\"showText\":\"鎸囧畾鎴愬憳锛氳妺閬撴簮鐮乗",\"signEnable\":false,\"skipExpression\":\"\",\"taskAssignListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCompleteListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCreateListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"timeoutHandler\":{\"enable\":false,\"maxRemindCount\":null,\"timeDuration\":null,\"type\":null},\"type\":11},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782714699450, '', '', '1', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '1', '2026-07-01 11:26:20', '1', '2026-07-01 11:26:20', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (8, 'purchase_request_approve:3:d239e27d-74fe-11f1-9120-00155dd68500', '5ddab987-74f9-11f1-91b4-00155dd68500', 20, 'purchase_request_approve', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"approveMethod\":4,\"approveType\":1,\"assignEmptyHandler\":{\"type\":1,\"userIds\":null},\"assignStartUserHandlerType\":1,\"buttonsSetting\":[{\"displayName\":\"閫氳繃\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":true,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":true,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":true,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":true,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":true,\"id\":6}],\"candidateParam\":\"142\",\"candidateStrategy\":30,\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"1\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"1\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"1\"}],\"id\":\"Activity__69663778421782877292716\",\"name\":\"瀹℃壒浜篭",\"reasonRequire\":false,\"rejectHandler\":{\"returnNodeId\":null,\"type\":1},\"showText\":\"鎸囧畾鎴愬憳锛歵est01\",\"signEnable\":false,\"skipExpression\":\"\",\"taskAssignListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCompleteListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCreateListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"timeoutHandler\":{\"enable\":false,\"maxRemindCount\":null,\"timeDuration\":null,\"type\":null},\"type\":11},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782874979545, '', '', '142', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-07-01 11:42:02', '142', '2026-07-01 11:42:02', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (9, 'caigoushenpi:1:df929079-7500-11f1-993f-00155dd68500', 'bc6f3048-74fc-11f1-9120-00155dd68500', 20, 'purchase_request_approve', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782876426717, '', '', '144,142,113,1', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-07-01 11:56:44', '142', '2026-07-01 11:56:44', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (10, 'contract_approve:1:8ffbf3b8-75da-11f1-a595-00155dd68500', '8d859c82-75da-11f1-a595-00155dd68500', 20, 'contract_approve', NULL, '', 10, 1, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fyqymqqdoln2abc\\\",\\\"title\\\":\\\"濮撳悕\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fuplmqqdoln2acc\\\",\\\"name\\\":\\\"ref_F18omqqdoln2adc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"input\\\",\\\"field\\\":\\\"Fh6gmqqdooy5aec\\\",\\\"title\\\":\\\"骞撮緞\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_F5whmqqdooy5afc\\\",\\\"name\\\":\\\"ref_Fltemqqdooy5agc\\\",\\\"_fc_drag_tag\\\":\\\"input\\\",\\\"display\\\":true,\\\"hidden\\\":false}\", \"{\\\"type\\\":\\\"select\\\",\\\"field\\\":\\\"F5mrmqqdutnnabc\\\",\\\"title\\\":\\\"閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"effect\\\":{\\\"fetch\\\":\\\"\\\"},\\\"$required\\\":false,\\\"options\\\":[{\\\"label\\\":\\\"閫夐」01\\\",\\\"value\\\":\\\"1\\\"},{\\\"label\\\":\\\"閫夐」02\\\",\\\"value\\\":\\\"2\\\"},{\\\"label\\\":\\\"閫夐」03\\\",\\\"value\\\":\\\"3\\\"}],\\\"_fc_id\\\":\\\"id_Fhnumqqdutnoacc\\\",\\\"name\\\":\\\"ref_Fd1wmqqdutnoadc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"select\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"Fyqymqqdoln2abc\",\"title\":\"濮撳悕\",\"permission\":\"2\"},{\"field\":\"Fh6gmqqdooy5aec\",\"title\":\"骞撮緞\",\"permission\":\"2\"},{\"field\":\"F5mrmqqdutnnabc\",\"title\":\"閫夋嫨鍣╘",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1782971696280, '', '', '142', b'1', b'0', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"\"}', '142', '2026-07-02 13:55:00', '142', '2026-07-02 13:55:00', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (11, 'b000_abc.:1:a470b6a7-7a92-11f1-9ea7-00155dd68500', 'dd36f951-7a91-11f1-9ea7-00155dd68500', 20, '鍒嗙被2', NULL, '12312', 10, 2, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"DeptSelect\\\",\\\"field\\\":\\\"ce674cb3f7604c5da893b347bf1ff855\\\",\\\"title\\\":\\\"閮ㄩ棬閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"returnType\\\":\\\"id\\\",\\\"defaultCurrentDept\\\":false},\\\"_fc_id\\\":\\\"id_Fgcgmrbnv9c4cbc\\\",\\\"name\\\":\\\"ref_F7c0mrbnv9c4ccc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"DeptSelect\\\"}\", \"{\\\"type\\\":\\\"UserSelect\\\",\\\"field\\\":\\\"6ada8f47c5ad483ca7e2a15da2d922d1\\\",\\\"title\\\":\\\"鐢ㄦ埛閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"defaultCurrentUser\\\":false},\\\"_fc_id\\\":\\\"id_F0pdmrbnvboxcdc\\\",\\\"name\\\":\\\"ref_F6pamrbnvboxcec\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"UserSelect\\\"}\", \"{\\\"type\\\":\\\"timePicker\\\",\\\"field\\\":\\\"Fn60mrbnvny3clc\\\",\\\"title\\\":\\\"鏃堕棿鍖洪棿\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"range\\\":true},\\\"_fc_id\\\":\\\"id_Fwsymrbnvny3cmc\\\",\\\"name\\\":\\\"ref_Fu44mrbnvny3cnc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"timeRange\\\"}\", \"{\\\"type\\\":\\\"fcEditor\\\",\\\"field\\\":\\\"F7a8mrbnxj65cuc\\\",\\\"title\\\":\\\"瀵屾枃鏈\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fsz6mrbnxj65cvc\\\",\\\"name\\\":\\\"ref_Fqqwmrbnxj65cwc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"fcEditor\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"approveMethod\":4,\"approveType\":1,\"assignEmptyHandler\":{\"type\":1,\"userIds\":null},\"assignStartUserHandlerType\":1,\"buttonsSetting\":[{\"displayName\":\"閫氳繃\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":true,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":true,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":true,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":true,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":true,\"id\":6}],\"candidateParam\":\"104\",\"candidateStrategy\":30,\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"ce674cb3f7604c5da893b347bf1ff855\",\"title\":\"閮ㄩ棬閫夋嫨鍣╘",\"permission\":\"1\"},{\"field\":\"6ada8f47c5ad483ca7e2a15da2d922d1\",\"title\":\"鐢ㄦ埛閫夋嫨鍣╘",\"permission\":\"1\"},{\"field\":\"Fn60mrbnvny3clc\",\"title\":\"鏃堕棿鍖洪棿\",\"permission\":\"1\"},{\"field\":\"F7a8mrbnxj65cuc\",\"title\":\"瀵屾枃鏈\",\"permission\":\"1\"}],\"id\":\"Activity__34944553111783490267007\",\"name\":\"瀹℃壒浜篭",\"reasonRequire\":false,\"rejectHandler\":{\"returnNodeId\":null,\"type\":1},\"showText\":\"鎸囧畾鎴愬憳锛氭祴璇曞彿\",\"signEnable\":true,\"skipExpression\":\"\",\"taskAssignListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCompleteListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCreateListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"timeoutHandler\":{\"enable\":false,\"maxRemindCount\":null,\"timeDuration\":null,\"type\":null},\"type\":11},\"fieldsPermission\":[{\"field\":\"ce674cb3f7604c5da893b347bf1ff855\",\"title\":\"閮ㄩ棬閫夋嫨鍣╘",\"permission\":\"2\"},{\"field\":\"6ada8f47c5ad483ca7e2a15da2d922d1\",\"title\":\"鐢ㄦ埛閫夋嫨鍣╘",\"permission\":\"2\"},{\"field\":\"Fn60mrbnvny3clc\",\"title\":\"鏃堕棿鍖洪棿\",\"permission\":\"2\"},{\"field\":\"F7a8mrbnxj65cuc\",\"title\":\"瀵屾枃鏈\",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1783490232541, '', '', '1', b'1', b'1', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"<p style=\\\"text-align: center;font-size: 1.25rem;\\\"><strong><span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼鍚嶇О\\\" data-info=\\\"%7B%22id%22%3A%22processName%22%7D\\\">@娴佺▼鍚嶇О</span></strong></p>\\n<p style=\\\"text-align: right;\\\">鎵撳嵃浜哄憳锛�<span data-w-e-type=\\\"mention\\\" data-info=\\\"%7B%22id%22%3A%22printUser%22%7D\\\">@鎵撳嵃浜�</span></p>\\n<p style=\\\"text-align: left;\\\">娴佺▼缂栧彿锛�<span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼缂栧彿\\\" data-info=\\\"%7B%22id%22%3A%22processNum%22%7D\\\">@娴佺▼缂栧彿</span></p>\\n<p>&nbsp;</p>\\n<table style=\\\"width: 100%; height: 72.2159px;\\\">\\n<tbody>\\n<tr style=\\\"height: 36.108px;\\\">\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鍙戣捣浜�</td>\\n<td style=\\\"width: 30.5551%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"鍙戣捣浜篭\\" data-info=\\\"%7B%22id%22%3A%22startUser%22%7D\\\">@鍙戣捣浜�</span></td>\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鍙戣捣鏃堕棿</td>\\n<td style=\\\"width: 26.0284%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"鍙戣捣鏃堕棿\\\" data-info=\\\"%7B%22id%22%3A%22startTime%22%7D\\\">@鍙戣捣鏃堕棿</span></td>\\n</tr>\\n<tr style=\\\"height: 36.108px;\\\">\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鎵�灞為儴闂�</td>\\n<td style=\\\"width: 30.5551%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-w-e-is-void=\\\"\\\" data-w-e-is-inline=\\\"\\\" data-value=\\\"鍙戣捣浜洪儴闂╘\\" data-info=\\\"%7B%22id%22%3A%22startUserDept%22%7D\\\">@鍙戣捣浜洪儴闂�</span></td>\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">娴佺▼鐘舵��</td>\\n<td style=\\\"width: 26.0284%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼鐘舵�乗\\" data-info=\\\"%7B%22id%22%3A%22processStatus%22%7D\\\">@娴佺▼鐘舵��</span></td>\\n</tr>\\n</tbody>\\n</table>\\n<p>&nbsp;</p>\\n<div contenteditable=\\\"false\\\" data-w-e-type=\\\"process-record\\\" data-w-e-is-void=\\\"\\\">\\n<table class=\\\"process-record-table\\\" style=\\\"width: 100%; border-collapse: collapse; border: 1px solid;\\\">\\n<tr>\\n\\t<td style=\\\"width: 100%; border: 1px solid; text-align: center;\\\" colspan=\\\"2\\\">娴佺▼璁板綍</td>\\n</tr>\\n<tr>\\n\\t<td style=\\\"width: 25%; border: 1px solid;\\\">鑺傜偣</td>\\n\\t<td style=\\\"width: 75%; border: 1px solid;\\\">鎿嶄綔</td>\\n</tr>\\n</table>\\n</div>\\n<p>&nbsp;</p>\"}', '1', '2026-07-08 14:02:47', '1', '2026-07-08 14:02:47', b'0');
+INSERT INTO `bpm_process_definition_info` VALUES (12, 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', 'dd36f951-7a91-11f1-9ea7-00155dd68500', 20, '鍒嗙被2', NULL, '12312', 10, 2, '{\"form\":{\"layout\":\"horizontal\",\"labelAlign\":\"right\",\"size\":\"middle\",\"colon\":false,\"labelCol\":{\"style\":{\"width\":\"125px\"}},\"wrapperCol\":{\"span\":24},\"labelWidth\":\"100px\"},\"resetBtn\":{\"show\":false,\"innerText\":\"閲嶇疆\"},\"submitBtn\":{\"show\":true,\"innerText\":\"鎻愪氦\"}}', '[\"{\\\"type\\\":\\\"DeptSelect\\\",\\\"field\\\":\\\"ce674cb3f7604c5da893b347bf1ff855\\\",\\\"title\\\":\\\"閮ㄩ棬閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"returnType\\\":\\\"id\\\",\\\"defaultCurrentDept\\\":false},\\\"_fc_id\\\":\\\"id_Fgcgmrbnv9c4cbc\\\",\\\"name\\\":\\\"ref_F7c0mrbnv9c4ccc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"DeptSelect\\\"}\", \"{\\\"type\\\":\\\"UserSelect\\\",\\\"field\\\":\\\"6ada8f47c5ad483ca7e2a15da2d922d1\\\",\\\"title\\\":\\\"鐢ㄦ埛閫夋嫨鍣╘\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"defaultCurrentUser\\\":false},\\\"_fc_id\\\":\\\"id_F0pdmrbnvboxcdc\\\",\\\"name\\\":\\\"ref_F6pamrbnvboxcec\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"UserSelect\\\"}\", \"{\\\"type\\\":\\\"timePicker\\\",\\\"field\\\":\\\"Fn60mrbnvny3clc\\\",\\\"title\\\":\\\"鏃堕棿鍖洪棿\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"props\\\":{\\\"range\\\":true},\\\"_fc_id\\\":\\\"id_Fwsymrbnvny3cmc\\\",\\\"name\\\":\\\"ref_Fu44mrbnvny3cnc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"timeRange\\\"}\", \"{\\\"type\\\":\\\"fcEditor\\\",\\\"field\\\":\\\"F7a8mrbnxj65cuc\\\",\\\"title\\\":\\\"瀵屾枃鏈\\\",\\\"info\\\":\\\"\\\",\\\"$required\\\":false,\\\"_fc_id\\\":\\\"id_Fsz6mrbnxj65cvc\\\",\\\"name\\\":\\\"ref_Fqqwmrbnxj65cwc\\\",\\\"display\\\":true,\\\"hidden\\\":false,\\\"_fc_drag_tag\\\":\\\"fcEditor\\\"}\"]', '', '', '{\"buttonsSetting\":[{\"displayName\":\"鎻愪氦\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":false,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":false,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":false,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":false,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":false,\"id\":6}],\"childNode\":{\"approveMethod\":4,\"approveType\":1,\"assignEmptyHandler\":{\"type\":1,\"userIds\":null},\"assignStartUserHandlerType\":1,\"buttonsSetting\":[{\"displayName\":\"閫氳繃\",\"enable\":true,\"id\":1},{\"displayName\":\"鎷掔粷\",\"enable\":true,\"id\":2},{\"displayName\":\"杞姙\",\"enable\":true,\"id\":3},{\"displayName\":\"濮旀淳\",\"enable\":true,\"id\":4},{\"displayName\":\"鍔犵\",\"enable\":true,\"id\":5},{\"displayName\":\"閫�鍥瀄",\"enable\":true,\"id\":6}],\"candidateParam\":\"1\",\"candidateStrategy\":30,\"childNode\":{\"id\":\"EndEvent\",\"name\":\"缁撴潫\",\"type\":1},\"fieldsPermission\":[{\"field\":\"ce674cb3f7604c5da893b347bf1ff855\",\"title\":\"閮ㄩ棬閫夋嫨鍣╘",\"permission\":\"1\"},{\"field\":\"6ada8f47c5ad483ca7e2a15da2d922d1\",\"title\":\"鐢ㄦ埛閫夋嫨鍣╘",\"permission\":\"1\"},{\"field\":\"Fn60mrbnvny3clc\",\"title\":\"鏃堕棿鍖洪棿\",\"permission\":\"1\"},{\"field\":\"F7a8mrbnxj65cuc\",\"title\":\"瀵屾枃鏈\",\"permission\":\"1\"}],\"id\":\"Activity__34944553111783490267007\",\"name\":\"瀹℃壒浜篭",\"reasonRequire\":false,\"rejectHandler\":{\"returnNodeId\":null,\"type\":1},\"showText\":\"鎸囧畾鎴愬憳锛氳妺閬撴簮鐮乗",\"signEnable\":true,\"skipExpression\":\"\",\"taskAssignListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCompleteListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"taskCreateListener\":{\"body\":[],\"enable\":false,\"header\":[],\"path\":null},\"timeoutHandler\":{\"enable\":false,\"maxRemindCount\":null,\"timeDuration\":null,\"type\":null},\"type\":11},\"fieldsPermission\":[{\"field\":\"ce674cb3f7604c5da893b347bf1ff855\",\"title\":\"閮ㄩ棬閫夋嫨鍣╘",\"permission\":\"2\"},{\"field\":\"6ada8f47c5ad483ca7e2a15da2d922d1\",\"title\":\"鐢ㄦ埛閫夋嫨鍣╘",\"permission\":\"2\"},{\"field\":\"Fn60mrbnvny3clc\",\"title\":\"鏃堕棿鍖洪棿\",\"permission\":\"2\"},{\"field\":\"F7a8mrbnxj65cuc\",\"title\":\"瀵屾枃鏈\",\"permission\":\"2\"}],\"id\":\"StartUserNode\",\"name\":\"鍙戣捣浜篭",\"showText\":\"宸茶缃甛",\"type\":10}', b'1', 1783490232541, '', '', '1', b'1', b'1', '{\"infix\": \"\", \"enable\": false, \"length\": 5, \"prefix\": \"\", \"postfix\": \"\"}', 0, '{\"title\": \"\", \"enable\": false}', '{\"enable\": false, \"summary\": []}', NULL, NULL, NULL, NULL, '{\"enable\": false, \"template\": \"<p style=\\\"text-align: center;font-size: 1.25rem;\\\"><strong><span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼鍚嶇О\\\" data-info=\\\"%7B%22id%22%3A%22processName%22%7D\\\">@娴佺▼鍚嶇О</span></strong></p>\\n<p style=\\\"text-align: right;\\\">鎵撳嵃浜哄憳锛�<span data-w-e-type=\\\"mention\\\" data-info=\\\"%7B%22id%22%3A%22printUser%22%7D\\\">@鎵撳嵃浜�</span></p>\\n<p style=\\\"text-align: left;\\\">娴佺▼缂栧彿锛�<span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼缂栧彿\\\" data-info=\\\"%7B%22id%22%3A%22processNum%22%7D\\\">@娴佺▼缂栧彿</span></p>\\n<p>&nbsp;</p>\\n<table style=\\\"width: 100%; height: 72.2159px;\\\">\\n<tbody>\\n<tr style=\\\"height: 36.108px;\\\">\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鍙戣捣浜�</td>\\n<td style=\\\"width: 30.5551%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"鍙戣捣浜篭\\" data-info=\\\"%7B%22id%22%3A%22startUser%22%7D\\\">@鍙戣捣浜�</span></td>\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鍙戣捣鏃堕棿</td>\\n<td style=\\\"width: 26.0284%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"鍙戣捣鏃堕棿\\\" data-info=\\\"%7B%22id%22%3A%22startTime%22%7D\\\">@鍙戣捣鏃堕棿</span></td>\\n</tr>\\n<tr style=\\\"height: 36.108px;\\\">\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">鎵�灞為儴闂�</td>\\n<td style=\\\"width: 30.5551%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-w-e-is-void=\\\"\\\" data-w-e-is-inline=\\\"\\\" data-value=\\\"鍙戣捣浜洪儴闂╘\\" data-info=\\\"%7B%22id%22%3A%22startUserDept%22%7D\\\">@鍙戣捣浜洪儴闂�</span></td>\\n<td style=\\\"width: 21.7532%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\">娴佺▼鐘舵��</td>\\n<td style=\\\"width: 26.0284%; border: 1px solid;\\\" colspan=\\\"1\\\" rowspan=\\\"1\\\" width=\\\"auto\\\"><span data-w-e-type=\\\"mention\\\" data-value=\\\"娴佺▼鐘舵�乗\\" data-info=\\\"%7B%22id%22%3A%22processStatus%22%7D\\\">@娴佺▼鐘舵��</span></td>\\n</tr>\\n</tbody>\\n</table>\\n<p>&nbsp;</p>\\n<div contenteditable=\\\"false\\\" data-w-e-type=\\\"process-record\\\" data-w-e-is-void=\\\"\\\">\\n<table class=\\\"process-record-table\\\" style=\\\"width: 100%; border-collapse: collapse; border: 1px solid;\\\">\\n<tr>\\n\\t<td style=\\\"width: 100%; border: 1px solid; text-align: center;\\\" colspan=\\\"2\\\">娴佺▼璁板綍</td>\\n</tr>\\n<tr>\\n\\t<td style=\\\"width: 25%; border: 1px solid;\\\">鑺傜偣</td>\\n\\t<td style=\\\"width: 75%; border: 1px solid;\\\">鎿嶄綔</td>\\n</tr>\\n</table>\\n</div>\\n<p>&nbsp;</p>\"}', '1', '2026-07-08 14:07:59', '1', '2026-07-08 14:07:59', b'0');
+
+-- ----------------------------
+-- Table structure for bpm_process_expression
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_process_expression`;
+CREATE TABLE `bpm_process_expression`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄨ揪寮忓悕瀛�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '琛ㄨ揪寮忕姸鎬侊紙0姝e父 1鍋滅敤锛�',
+  `expression` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄨ揪寮�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'BPM 娴佺▼琛ㄨ揪寮忚〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_process_expression
+-- ----------------------------
+INSERT INTO `bpm_process_expression` VALUES (1, '閰掓硥', 0, '鐜板湪鎵�', '1', '2026-06-23 16:25:59', '1', '2026-06-23 16:25:59', b'0');
+
+-- ----------------------------
+-- Table structure for bpm_process_instance_copy
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_process_instance_copy`;
+CREATE TABLE `bpm_process_instance_copy`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `start_user_id` bigint NOT NULL COMMENT '鍙戣捣浜� Id',
+  `process_instance_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴佺▼鍚�',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴佺▼瀹炰緥鐨勭紪鍙�',
+  `process_definition_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴佺▼瀹炰緥鐨勬祦绋嬪畾涔夌紪鍙�',
+  `category` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼鍒嗙被',
+  `activity_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼娲诲姩鐨勭紪鍙�',
+  `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼娲诲姩鐨勫悕瀛�',
+  `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼浠诲姟鐨勭紪鍙�',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿锛堣鎶勯�佺殑鐢ㄦ埛缂栧彿锛�',
+  `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎶勯�佹剰瑙�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '娴佺▼鎶勯�佽〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_process_instance_copy
+-- ----------------------------
+INSERT INTO `bpm_process_instance_copy` VALUES (1, 1, '璇峰亣娴佺▼', '75063c9f-7a93-11f1-9ea7-00155dd68500', 'b000_abc.:2:5e6b7e39-7a93-11f1-9ea7-00155dd68500', 'http://www.omg.org/spec/BPMN/20100524/MODEL', 'Activity__34944553111783490267007', '瀹℃壒浜�', '751f9021-7a93-11f1-9ea7-00155dd68500', 1, '1123', '1', '2026-07-09 09:52:47', '1', '2026-07-09 09:52:47', b'0');
+
+-- ----------------------------
+-- Table structure for bpm_process_listener
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_process_listener`;
+CREATE TABLE `bpm_process_listener`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭 ID',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐩戝惉鍣ㄥ悕瀛�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐩戝惉绫诲瀷锛坋xecution鎵ц鐩戝惉鍣ㄣ�乼ask浠诲姟鐩戝惉鍣級',
+  `event` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐩戝惉浜嬩欢',
+  `value_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍊肩被鍨嬶紙class绫汇�乨elegateExpression濮旀墭琛ㄨ揪寮忋�乪xpression琛ㄨ揪寮忥級',
+  `value` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍊�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'BPM 娴佺▼鐩戝惉鍣ㄨ〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_process_listener
+-- ----------------------------
+INSERT INTO `bpm_process_listener` VALUES (1, '娴嬭瘯鐩戝惉鍣�', 0, 'task', 'create', 'class', 'org.flowable.engine.delegate.TaskListener', '1', '2026-07-08 13:43:00', '1', '2026-07-08 13:43:00', b'0');
+
+-- ----------------------------
+-- Table structure for bpm_user_group
+-- ----------------------------
+DROP TABLE IF EXISTS `bpm_user_group`;
+CREATE TABLE `bpm_user_group`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '缁勫悕',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎻忚堪',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `user_ids` json NOT NULL COMMENT '鎴愬憳鐢ㄦ埛缂栧彿鏁扮粍',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'BPM 鐢ㄦ埛缁勮〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of bpm_user_group
+-- ----------------------------
+INSERT INTO `bpm_user_group` VALUES (1, '缁�1', NULL, 0, '[1, 100]', '1', '2026-06-23 16:27:37', '1', '2026-06-23 16:27:37', b'0');
+
+-- ----------------------------
+-- Table structure for crm_business
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_business`;
+CREATE TABLE `crm_business`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍟嗘満鍚嶇О',
+  `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
+  `follow_up_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '璺熻繘鐘舵��',
+  `contact_last_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涙椂闂�',
+  `contact_next_time` datetime NULL DEFAULT NULL COMMENT '涓嬫鑱旂郴鏃堕棿',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹殑鐢ㄦ埛缂栧彿',
+  `status_type_id` bigint NOT NULL COMMENT '鍟嗘満鐘舵�佺粍缂栧彿',
+  `status_id` bigint NOT NULL COMMENT '鍟嗘満鐘舵�佺紪鍙�',
+  `end_status` int NULL DEFAULT NULL COMMENT '缁撴潫鐘舵��',
+  `end_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁撴潫鏃剁殑澶囨敞',
+  `deal_time` datetime NULL DEFAULT NULL COMMENT '棰勮鎴愪氦鏃ユ湡',
+  `total_product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鎬婚噾棰濓紝鍗曚綅锛氬厓',
+  `discount_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁村崟鎶樻墸锛岀櫨鍒嗘瘮',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍟嗘満鎬婚噾棰濓紝鍗曚綅锛氬厓',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈 ERP 閿�鍞鍗曠紪鍙�',
+  `order_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'ERP 閿�鍞鍗曞崟鍙�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍟嗘満琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_business
+-- ----------------------------
+INSERT INTO `crm_business` VALUES (1, '13123', 1, 0, NULL, NULL, 1, 1, 1, NULL, NULL, '2026-06-27 14:39:08', 12300.000000, 1.000000, 12177.000000, NULL, NULL, NULL, '1', '2026-06-26 14:39:19', '1', '2026-06-26 14:39:19', 0);
+
+-- ----------------------------
+-- Table structure for crm_business_product
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_business_product`;
+CREATE TABLE `crm_business_product`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `business_id` bigint NOT NULL COMMENT '鍟嗘満缂栧彿',
+  `product_id` bigint NOT NULL COMMENT '浜у搧缂栧彿',
+  `product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鍗曚环锛屽崟浣嶏細鍏�',
+  `business_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍟嗘満浠锋牸锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬昏浠锋牸锛屽崟浣嶏細鍏�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍟嗘満浜у搧鍏宠仈琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_business_product
+-- ----------------------------
+INSERT INTO `crm_business_product` VALUES (1, 1, 1, 100.000000, 100.000000, 123.000000, 12300.000000, '1', '2026-06-26 14:39:19', '1', '2026-06-26 14:39:19', 0);
+
+-- ----------------------------
+-- Table structure for crm_business_status
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_business_status`;
+CREATE TABLE `crm_business_status`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `type_id` bigint NOT NULL COMMENT '鐘舵�佺被鍨嬬紪鍙�',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐘舵�佸悕',
+  `percent` int NULL DEFAULT NULL COMMENT '璧㈠崟鐜囷紝鐧惧垎姣�',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑簭',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍟嗘満鐘舵�佽〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_business_status
+-- ----------------------------
+INSERT INTO `crm_business_status` VALUES (1, 1, '鎷滆', 1, 0, '1', '2026-06-26 14:38:15', '1', '2026-06-26 14:38:57', 0);
+
+-- ----------------------------
+-- Table structure for crm_business_status_type
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_business_status_type`;
+CREATE TABLE `crm_business_status_type`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐘舵�佺被鍨嬪悕',
+  `dept_ids` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浣跨敤鐨勯儴闂ㄧ紪鍙�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍟嗘満鐘舵�佺粍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_business_status_type
+-- ----------------------------
+INSERT INTO `crm_business_status_type` VALUES (1, '12313', '100,101,102,110,111,116,117,113,109,108,112,107,106,105,104,103', '1', '2026-06-26 14:38:15', '1', '2026-06-26 14:38:57', 0);
+
+-- ----------------------------
+-- Table structure for crm_clue
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_clue`;
+CREATE TABLE `crm_clue`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿锛屼富閿嚜澧�',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绾跨储鍚嶇О',
+  `follow_up_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '璺熻繘鐘舵��',
+  `contact_last_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涙椂闂�',
+  `contact_last_content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涘唴瀹�',
+  `contact_next_time` datetime NULL DEFAULT NULL COMMENT '涓嬫鑱旂郴鏃堕棿',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹殑鐢ㄦ埛缂栧彿',
+  `transform_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '杞寲鐘舵��',
+  `customer_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙�',
+  `telephone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢佃瘽',
+  `qq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'QQ',
+  `wechat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寰俊',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閭',
+  `area_id` int NULL DEFAULT NULL COMMENT '鎵�鍦ㄥ湴',
+  `detail_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇︾粏鍦板潃',
+  `industry_id` int NULL DEFAULT NULL COMMENT '鎵�灞炶涓�',
+  `level` int NULL DEFAULT NULL COMMENT '瀹㈡埛绛夌骇',
+  `source` int NULL DEFAULT NULL COMMENT '瀹㈡埛鏉ユ簮',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 绾跨储琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_clue
+-- ----------------------------
+INSERT INTO `crm_clue` VALUES (1, '甯傚満璋冪爺', 1, '2026-07-02 10:59:12', '鍒嗘瀽甯傚満', '2026-07-02 10:58:45', 142, 1, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, '142', '2026-07-02 10:57:21', '142', '2026-07-02 10:59:36', 0);
+
+-- ----------------------------
+-- Table structure for crm_contact
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_contact`;
+CREATE TABLE `crm_contact`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑱旂郴浜哄鍚�',
+  `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
+  `contact_last_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涙椂闂�',
+  `contact_last_content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涘唴瀹�',
+  `contact_next_time` datetime NULL DEFAULT NULL COMMENT '涓嬫鑱旂郴鏃堕棿',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹敤鎴风紪鍙�',
+  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙�',
+  `telephone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢佃瘽',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢靛瓙閭',
+  `qq` bigint NULL DEFAULT NULL COMMENT 'QQ',
+  `wechat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寰俊',
+  `area_id` int NULL DEFAULT NULL COMMENT '鎵�鍦ㄥ湴',
+  `detail_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇︾粏鍦板潃',
+  `sex` int NULL DEFAULT NULL COMMENT '鎬у埆',
+  `master` tinyint(1) NULL DEFAULT NULL COMMENT '鏄惁鍏抽敭鍐崇瓥浜�',
+  `post` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱屼綅',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐩村睘涓婄骇',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鑱旂郴浜鸿〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_contact
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for crm_contact_business
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_contact_business`;
+CREATE TABLE `crm_contact_business`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `contact_id` bigint NOT NULL COMMENT '鑱旂郴浜虹紪鍙�',
+  `business_id` bigint NOT NULL COMMENT '鍟嗘満缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鑱旂郴浜轰笌鍟嗘満鍏宠仈琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_contact_business
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for crm_contract
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_contract`;
+CREATE TABLE `crm_contract`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍚堝悓缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍚堝悓鍚嶇О',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍚堝悓缂栧彿',
+  `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
+  `business_id` bigint NULL DEFAULT NULL COMMENT '鍟嗘満缂栧彿',
+  `contact_last_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涙椂闂�',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹殑鐢ㄦ埛缂栧彿',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヤ綔娴佺紪鍙�',
+  `audit_status` int NULL DEFAULT NULL COMMENT '瀹℃壒鐘舵��',
+  `order_date` datetime NULL DEFAULT NULL COMMENT '涓嬪崟鏃ユ湡',
+  `start_time` datetime NULL DEFAULT NULL COMMENT '寮�濮嬫椂闂�',
+  `end_time` datetime NULL DEFAULT NULL COMMENT '缁撴潫鏃堕棿',
+  `total_product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鎬婚噾棰濓紝鍗曚綅锛氬厓',
+  `discount_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁村崟鎶樻墸',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堝悓鎬婚噾棰濓紝鍗曚綅锛氬垎',
+  `deposit_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹氶噾閲戦锛屽崟浣嶏細鍏�',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈 ERP 閿�鍞鍗曠紪鍙�',
+  `order_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'ERP 閿�鍞鍗曞崟鍙�',
+  `sign_contact_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛绛剧害浜�',
+  `sign_user_id` bigint NULL DEFAULT NULL COMMENT '鍏徃绛剧害浜�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍚堝悓琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_contract
+-- ----------------------------
+INSERT INTO `crm_contract` VALUES (1, '131231', 'HT20260626000001', 1, NULL, NULL, 1, NULL, NULL, '2026-06-26 11:02:36', '2026-06-25 11:02:38', '2026-07-31 11:02:40', 12200.000000, 0.000000, 12200.000000, NULL, NULL, NULL, NULL, 1, NULL, '1', '2026-06-26 11:02:53', '1', '2026-06-26 11:02:53', 0);
+INSERT INTO `crm_contract` VALUES (3, '鍗楃摐瀛�', 'HT20260702000002', 2, NULL, NULL, 1, NULL, NULL, '2026-07-02 11:17:22', NULL, NULL, 98901.000000, 0.000000, 98901.000000, NULL, NULL, NULL, NULL, 1, NULL, '1', '2026-07-02 11:17:32', '1', '2026-07-02 11:17:32', 0);
+INSERT INTO `crm_contract` VALUES (4, '閰掓硥', 'HT20260702000003', 1, NULL, NULL, 142, NULL, NULL, '2026-07-02 11:17:34', NULL, NULL, 1221.000000, 0.000000, 1221.000000, NULL, NULL, NULL, NULL, 142, NULL, '142', '2026-07-02 11:17:35', '142', '2026-07-02 11:24:45', 1);
+INSERT INTO `crm_contract` VALUES (5, '閰掓硥', 'HT20260702000004', 1, NULL, NULL, 142, NULL, NULL, '2026-07-02 11:35:15', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, 142, NULL, '142', '2026-07-02 11:35:21', '142', '2026-07-02 11:57:49', 1);
+INSERT INTO `crm_contract` VALUES (6, '鎼�', 'HT20260702000005', 1, NULL, NULL, 142, NULL, NULL, '2026-07-02 11:57:54', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, 142, NULL, '142', '2026-07-02 11:58:02', '142', '2026-07-02 12:41:06', 1);
+INSERT INTO `crm_contract` VALUES (7, '鎼�', 'HT20260702000006', 1, NULL, NULL, 142, NULL, NULL, '2026-07-02 12:40:50', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, 142, NULL, '142', '2026-07-02 12:40:58', '142', '2026-07-02 13:04:01', 1);
+INSERT INTO `crm_contract` VALUES (8, '鎼�', 'HT20260702000007', 1, NULL, NULL, 142, NULL, NULL, '2026-07-02 13:06:37', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, 142, NULL, '142', '2026-07-02 13:06:44', '142', '2026-07-02 13:06:44', 0);
+INSERT INTO `crm_contract` VALUES (9, '鍗楃摐瀛�-鍚堝悓', 'HT20260702000008', 1, NULL, NULL, 142, NULL, NULL, '2026-07-02 13:25:27', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, NULL, '鐢辨姤浠峰崟[QT20260702000006]鐢熸垚', '142', '2026-07-02 13:25:38', '142', '2026-07-02 13:25:38', 0);
+INSERT INTO `crm_contract` VALUES (10, '鍗楃摐瀛�-鍚堝悓', 'HT20260702000009', 2, NULL, NULL, 1, NULL, NULL, '2026-07-02 13:27:24', NULL, NULL, 989109.000000, 0.000000, 989109.000000, NULL, NULL, NULL, NULL, NULL, '鐢辨姤浠峰崟[QT20260702000007]鐢熸垚', '1', '2026-07-02 13:27:29', '1', '2026-07-02 13:27:29', 0);
+INSERT INTO `crm_contract` VALUES (11, '鍗楃摐瀛�-鍚堝悓', 'HT20260702000010', 2, NULL, NULL, 1, NULL, NULL, '2026-07-02 13:30:25', NULL, NULL, 1791.000000, 1.000000, 1773.090000, NULL, NULL, NULL, NULL, NULL, '鐢辨姤浠峰崟[QT20260702000008]鐢熸垚', '1', '2026-07-02 13:30:42', '1', '2026-07-02 13:30:42', 0);
+INSERT INTO `crm_contract` VALUES (12, '鍚堝悓1111', 'HT20260702000011', 2, NULL, NULL, 1, NULL, NULL, '2026-07-02 13:47:06', '2026-07-02 13:47:08', '2026-07-31 13:47:11', 1452.000000, 0.000000, 1452.000000, NULL, NULL, NULL, NULL, 1, NULL, '1', '2026-07-02 13:47:23', '1', '2026-07-02 13:47:23', 0);
+INSERT INTO `crm_contract` VALUES (13, '鍗楃摐瀛�', 'HT20260702000012', 1, NULL, NULL, 142, '949c7de9-75da-11f1-a595-00155dd68500', 10, '2026-07-02 13:53:27', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, NULL, NULL, NULL, 142, NULL, '142', '2026-07-02 13:53:36', '142', '2026-07-02 13:55:08', 0);
+INSERT INTO `crm_contract` VALUES (14, '鍚堝悓222', 'HT20260702000013', 2, NULL, NULL, 1, 'e3b3882a-75da-11f1-a595-00155dd68500', 10, '2026-07-02 13:54:46', '2026-07-02 13:54:48', '2026-07-31 13:54:49', 1332.000000, 12.000000, 1172.160000, NULL, NULL, NULL, NULL, 1, NULL, '1', '2026-07-02 13:55:02', '1', '2026-07-02 13:57:21', 0);
+INSERT INTO `crm_contract` VALUES (15, '鎼�', 'HT20260702000014', 1, NULL, NULL, 142, '621448cf-75db-11f1-80f9-00155dd68500', 20, '2026-07-02 14:00:42', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, 2, 'XSDD20260702000007', NULL, 142, NULL, '142', '2026-07-02 14:00:48', '142', '2026-07-02 14:07:26', 0);
+INSERT INTO `crm_contract` VALUES (16, '鍚堝悓333', 'HT20260702000015', 2, NULL, NULL, 1, '673c2b80-75db-11f1-80f9-00155dd68500', 20, '2026-07-02 14:00:47', '2026-07-02 14:00:49', '2026-07-31 14:00:50', 1111.000000, 0.000000, 1111.000000, NULL, 3, 'XSDD20260702000008', NULL, 1, NULL, '1', '2026-07-02 14:00:57', '1', '2026-07-02 16:56:07', 0);
+INSERT INTO `crm_contract` VALUES (17, '鎼�', 'HT20260702000016', 1, NULL, NULL, 142, '0986b582-75f0-11f1-a696-00155dd68500', 20, '2026-07-02 16:28:32', NULL, NULL, 1.000000, 0.000000, 1.000000, NULL, 4, 'XSDD20260702000009', NULL, 142, NULL, '142', '2026-07-02 16:28:39', '142', '2026-07-02 16:54:23', 0);
+INSERT INTO `crm_contract` VALUES (18, '鍚堝悓鍙互浣滃簾', 'HT20260702000017', 2, NULL, NULL, 1, 'cb504733-75f1-11f1-a696-00155dd68500', 20, '2026-07-02 16:41:02', '2026-07-02 16:41:04', '2026-07-31 16:41:05', 1452.000000, 0.000000, 1452.000000, NULL, 5, 'XSDD20260702000010', NULL, 1, NULL, '1', '2026-07-02 16:41:12', '142', '2026-07-02 16:54:03', 0);
+
+-- ----------------------------
+-- Table structure for crm_contract_config
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_contract_config`;
+CREATE TABLE `crm_contract_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `notify_enabled` tinyint(1) NULL DEFAULT NULL COMMENT '鏄惁寮�鍚彁鍓嶆彁閱�',
+  `notify_days` int NULL DEFAULT NULL COMMENT '鎻愬墠鎻愰啋澶╂暟',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍚堝悓閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_contract_config
+-- ----------------------------
+INSERT INTO `crm_contract_config` VALUES (1, 1, 1, '142', '2026-07-02 09:08:32', '142', '2026-07-02 09:08:32', 0);
+
+-- ----------------------------
+-- Table structure for crm_contract_product
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_contract_product`;
+CREATE TABLE `crm_contract_product`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `contract_id` bigint NOT NULL COMMENT '鍚堝悓缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT 'MDM鐗╂枡缂栧彿',
+  `item_unit_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `item_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐗╂枡鍘熶环锛堝啑浣欙級',
+  `contract_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堝悓浠锋牸锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬昏浠锋牸锛屽崟浣嶏細鍏�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍚堝悓浜у搧鍏宠仈琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_contract_product
+-- ----------------------------
+INSERT INTO `crm_contract_product` VALUES (1, 1, NULL, NULL, NULL, 100.000000, 122.000000, 12200.000000, '1', '2026-06-26 11:02:53', '1', '2026-06-26 11:02:53', 0);
+INSERT INTO `crm_contract_product` VALUES (2, 3, 1, 2, NULL, 99.000000, 999.000000, 98901.000000, '1', '2026-07-02 11:17:32', '1', '2026-07-02 11:17:32', 0);
+INSERT INTO `crm_contract_product` VALUES (3, 4, 5, 3, NULL, 111.000000, 11.000000, 1221.000000, '142', '2026-07-02 11:17:35', '142', '2026-07-02 11:17:35', 0);
+INSERT INTO `crm_contract_product` VALUES (4, 5, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 11:35:21', '142', '2026-07-02 11:35:21', 0);
+INSERT INTO `crm_contract_product` VALUES (5, 6, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 11:58:02', '142', '2026-07-02 11:58:02', 0);
+INSERT INTO `crm_contract_product` VALUES (6, 7, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 12:40:58', '142', '2026-07-02 12:40:58', 0);
+INSERT INTO `crm_contract_product` VALUES (7, 8, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 13:06:44', '142', '2026-07-02 13:06:44', 0);
+INSERT INTO `crm_contract_product` VALUES (8, 9, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 13:25:38', '142', '2026-07-02 13:25:38', 0);
+INSERT INTO `crm_contract_product` VALUES (9, 10, 1, 2, NULL, 99.000000, 9991.000000, 989109.000000, '1', '2026-07-02 13:27:29', '1', '2026-07-02 13:27:29', 0);
+INSERT INTO `crm_contract_product` VALUES (10, 11, 1, 2, NULL, 9.000000, 199.000000, 1791.000000, '1', '2026-07-02 13:30:42', '1', '2026-07-02 13:30:42', 0);
+INSERT INTO `crm_contract_product` VALUES (11, 12, 1, 2, NULL, 12.000000, 121.000000, 1452.000000, '1', '2026-07-02 13:47:23', '1', '2026-07-02 13:47:23', 0);
+INSERT INTO `crm_contract_product` VALUES (12, 13, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 13:53:36', '142', '2026-07-02 13:53:36', 0);
+INSERT INTO `crm_contract_product` VALUES (13, 14, 1, 2, NULL, 12.000000, 111.000000, 1332.000000, '1', '2026-07-02 13:55:02', '1', '2026-07-02 13:55:02', 0);
+INSERT INTO `crm_contract_product` VALUES (14, 15, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 14:00:48', '142', '2026-07-02 14:00:48', 0);
+INSERT INTO `crm_contract_product` VALUES (15, 16, 1, 2, NULL, 1.000000, 1111.000000, 1111.000000, '1', '2026-07-02 14:00:57', '1', '2026-07-02 14:00:57', 0);
+INSERT INTO `crm_contract_product` VALUES (16, 17, 5, 3, NULL, 1.000000, 1.000000, 1.000000, '142', '2026-07-02 16:28:39', '142', '2026-07-02 16:28:39', 0);
+INSERT INTO `crm_contract_product` VALUES (17, 18, 1, 2, NULL, 12.000000, 121.000000, 1452.000000, '1', '2026-07-02 16:41:12', '1', '2026-07-02 16:41:12', 0);
+
+-- ----------------------------
+-- Table structure for crm_customer
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_customer`;
+CREATE TABLE `crm_customer`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛鍚嶇О',
+  `follow_up_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '璺熻繘鐘舵��',
+  `contact_last_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涙椂闂�',
+  `contact_last_content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏈�鍚庤窡杩涘唴瀹�',
+  `contact_next_time` datetime NULL DEFAULT NULL COMMENT '涓嬫鑱旂郴鏃堕棿',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹殑鐢ㄦ埛缂栧彿',
+  `owner_time` datetime NULL DEFAULT NULL COMMENT '鎴愪负璐熻矗浜虹殑鏃堕棿',
+  `lock_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '閿佸畾鐘舵��',
+  `deal_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鎴愪氦鐘舵��',
+  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満',
+  `telephone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢佃瘽',
+  `qq` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'QQ',
+  `wechat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寰俊',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閭',
+  `area_id` int NULL DEFAULT NULL COMMENT '鎵�鍦ㄥ湴',
+  `detail_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇︾粏鍦板潃',
+  `industry_id` int NULL DEFAULT NULL COMMENT '鎵�灞炶涓�',
+  `level` int NULL DEFAULT NULL COMMENT '瀹㈡埛绛夌骇',
+  `source` int NULL DEFAULT NULL COMMENT '瀹㈡埛鏉ユ簮',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 瀹㈡埛琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_customer
+-- ----------------------------
+INSERT INTO `crm_customer` VALUES (1, '娴嬭瘯', 1, '2026-06-26 14:41:02', '123123123', '2026-06-30 14:40:59', 142, '2026-07-02 09:10:24', 0, 0, '13598585685', '66325267', NULL, '131231', NULL, 110101, '1312313', 2, 1, 1, NULL, '1', '2026-06-23 16:06:25', '142', '2026-07-02 09:10:24', 0);
+INSERT INTO `crm_customer` VALUES (2, '鍗楅�氬鎴�', 0, NULL, NULL, NULL, 1, '2026-07-02 09:34:58', 1, 0, '15538312169', NULL, NULL, NULL, NULL, 320613, NULL, 3, 1, 2, NULL, '1', '2026-07-02 09:34:58', '1', '2026-07-02 12:37:26', 0);
+INSERT INTO `crm_customer` VALUES (3, '甯傚満璋冪爺', 1, '2026-07-02 10:59:12', '鍒嗘瀽甯傚満', '2026-07-02 10:58:45', 142, '2026-07-02 10:59:36', 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, '142', '2026-07-02 10:59:36', '142', '2026-07-02 10:59:36', 0);
+
+-- ----------------------------
+-- Table structure for crm_customer_limit_config
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_customer_limit_config`;
+CREATE TABLE `crm_customer_limit_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `type` int NOT NULL COMMENT '瑙勫垯绫诲瀷',
+  `user_ids` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勫垯閫傜敤浜虹兢',
+  `dept_ids` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勫垯閫傜敤閮ㄩ棬',
+  `max_count` int NULL DEFAULT NULL COMMENT '鏁伴噺涓婇檺',
+  `deal_count_enabled` tinyint(1) NULL DEFAULT NULL COMMENT '鎴愪氦瀹㈡埛鏄惁鍗犳湁鎷ユ湁瀹㈡埛鏁�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 瀹㈡埛闄愬埗閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_customer_limit_config
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for crm_customer_pool_config
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_customer_pool_config`;
+CREATE TABLE `crm_customer_pool_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `enabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍚敤瀹㈡埛鍏捣',
+  `contact_expire_days` int NULL DEFAULT NULL COMMENT '鏈窡杩涙斁鍏ュ叕娴峰ぉ鏁�',
+  `deal_expire_days` int NULL DEFAULT NULL COMMENT '鏈垚浜ゆ斁鍏ュ叕娴峰ぉ鏁�',
+  `notify_enabled` tinyint(1) NULL DEFAULT NULL COMMENT '鏄惁寮�鍚彁鍓嶆彁閱�',
+  `notify_days` int NULL DEFAULT NULL COMMENT '鎻愬墠鎻愰啋澶╂暟',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 瀹㈡埛鍏捣閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_customer_pool_config
+-- ----------------------------
+INSERT INTO `crm_customer_pool_config` VALUES (1, 1, 1, 1, 1, 1, '142', '2026-07-02 09:07:42', '142', '2026-07-02 09:07:42', 0);
+
+-- ----------------------------
+-- Table structure for crm_follow_up_record
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_follow_up_record`;
+CREATE TABLE `crm_follow_up_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `biz_type` int NOT NULL COMMENT '鏁版嵁绫诲瀷',
+  `biz_id` bigint NOT NULL COMMENT '鏁版嵁缂栧彿',
+  `type` int NULL DEFAULT NULL COMMENT '璺熻繘绫诲瀷',
+  `content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璺熻繘鍐呭',
+  `next_time` datetime NULL DEFAULT NULL COMMENT '涓嬫鑱旂郴鏃堕棿',
+  `pic_urls` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥剧墖',
+  `file_urls` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢',
+  `business_ids` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍏宠仈鐨勫晢鏈虹紪鍙锋暟缁�',
+  `contact_ids` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍏宠仈鐨勮仈绯讳汉缂栧彿鏁扮粍',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 璺熻繘璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_follow_up_record
+-- ----------------------------
+INSERT INTO `crm_follow_up_record` VALUES (1, 2, 1, 3, '123123123', '2026-06-30 14:40:59', NULL, NULL, NULL, NULL, '1', '2026-06-26 14:41:02', '1', '2026-06-26 14:41:02', 0);
+INSERT INTO `crm_follow_up_record` VALUES (2, 1, 1, 3, '鍒嗘瀽甯傚満', '2026-07-02 10:58:45', NULL, NULL, NULL, NULL, '142', '2026-07-02 10:59:12', '142', '2026-07-02 10:59:12', 0);
+INSERT INTO `crm_follow_up_record` VALUES (3, 2, 3, 3, '鍒嗘瀽甯傚満', '2026-07-02 10:58:45', NULL, NULL, NULL, NULL, '142', '2026-07-02 10:59:36', '142', '2026-07-02 10:59:36', 0);
+
+-- ----------------------------
+-- Table structure for crm_permission
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_permission`;
+CREATE TABLE `crm_permission`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿锛屼富閿嚜澧�',
+  `biz_type` int NOT NULL COMMENT '鏁版嵁绫诲瀷',
+  `biz_id` bigint NOT NULL COMMENT '鏁版嵁缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `level` int NOT NULL COMMENT '鏉冮檺绾у埆',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 28 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鏁版嵁鏉冮檺琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_permission
+-- ----------------------------
+INSERT INTO `crm_permission` VALUES (1, 2, 1, 1, 1, '1', '2026-06-23 16:06:26', '1', '2026-06-26 14:46:37', 1);
+INSERT INTO `crm_permission` VALUES (2, 6, 1, 1, 1, '1', '2026-06-26 11:01:12', '1', '2026-06-26 11:01:12', 0);
+INSERT INTO `crm_permission` VALUES (3, 5, 1, 1, 1, '1', '2026-06-26 11:02:53', '1', '2026-06-26 11:02:53', 0);
+INSERT INTO `crm_permission` VALUES (4, 4, 1, 1, 1, '1', '2026-06-26 14:39:19', '1', '2026-06-26 14:39:19', 0);
+INSERT INTO `crm_permission` VALUES (5, 2, 1, 142, 1, '142', '2026-07-02 09:10:24', '142', '2026-07-02 09:10:24', 0);
+INSERT INTO `crm_permission` VALUES (6, 2, 2, 1, 1, '1', '2026-07-02 09:34:58', '1', '2026-07-02 09:34:58', 0);
+INSERT INTO `crm_permission` VALUES (7, 1, 1, 142, 1, '142', '2026-07-02 10:57:21', '142', '2026-07-02 10:57:21', 0);
+INSERT INTO `crm_permission` VALUES (8, 2, 3, 142, 1, '142', '2026-07-02 10:59:36', '142', '2026-07-02 10:59:36', 0);
+INSERT INTO `crm_permission` VALUES (9, 5, 3, 1, 1, '1', '2026-07-02 11:17:32', '1', '2026-07-02 11:17:32', 0);
+INSERT INTO `crm_permission` VALUES (10, 5, 4, 142, 1, '142', '2026-07-02 11:17:35', '142', '2026-07-02 03:24:45', 1);
+INSERT INTO `crm_permission` VALUES (11, 5, 5, 142, 1, '142', '2026-07-02 11:35:21', '142', '2026-07-02 03:57:48', 1);
+INSERT INTO `crm_permission` VALUES (12, 5, 6, 142, 1, '142', '2026-07-02 11:58:02', '142', '2026-07-02 04:41:05', 1);
+INSERT INTO `crm_permission` VALUES (13, 5, 7, 142, 1, '142', '2026-07-02 12:40:58', '142', '2026-07-02 05:04:01', 1);
+INSERT INTO `crm_permission` VALUES (14, 5, 8, 142, 1, '142', '2026-07-02 13:06:44', '142', '2026-07-02 13:06:44', 0);
+INSERT INTO `crm_permission` VALUES (15, 9, 6, 142, 1, '142', '2026-07-02 13:25:13', '142', '2026-07-02 13:25:13', 0);
+INSERT INTO `crm_permission` VALUES (16, 5, 9, 142, 1, '142', '2026-07-02 13:25:38', '142', '2026-07-02 13:25:38', 0);
+INSERT INTO `crm_permission` VALUES (17, 9, 7, 1, 1, '1', '2026-07-02 13:25:55', '1', '2026-07-02 13:25:55', 0);
+INSERT INTO `crm_permission` VALUES (18, 5, 10, 1, 1, '1', '2026-07-02 13:27:29', '1', '2026-07-02 13:27:29', 0);
+INSERT INTO `crm_permission` VALUES (19, 9, 8, 1, 1, '1', '2026-07-02 13:30:40', '1', '2026-07-02 13:30:40', 0);
+INSERT INTO `crm_permission` VALUES (20, 5, 11, 1, 1, '1', '2026-07-02 13:30:42', '1', '2026-07-02 13:30:42', 0);
+INSERT INTO `crm_permission` VALUES (21, 5, 12, 1, 1, '1', '2026-07-02 13:47:23', '1', '2026-07-02 13:47:23', 0);
+INSERT INTO `crm_permission` VALUES (22, 5, 13, 142, 1, '142', '2026-07-02 13:53:36', '142', '2026-07-02 13:53:36', 0);
+INSERT INTO `crm_permission` VALUES (23, 5, 14, 1, 1, '1', '2026-07-02 13:55:02', '1', '2026-07-02 13:55:02', 0);
+INSERT INTO `crm_permission` VALUES (24, 5, 15, 142, 1, '142', '2026-07-02 14:00:49', '142', '2026-07-02 14:00:49', 0);
+INSERT INTO `crm_permission` VALUES (25, 5, 16, 1, 1, '1', '2026-07-02 14:00:57', '1', '2026-07-02 14:00:57', 0);
+INSERT INTO `crm_permission` VALUES (26, 5, 17, 142, 1, '142', '2026-07-02 16:28:39', '142', '2026-07-02 16:28:39', 0);
+INSERT INTO `crm_permission` VALUES (27, 5, 18, 1, 1, '1', '2026-07-02 16:41:12', '1', '2026-07-02 16:41:12', 0);
+
+-- ----------------------------
+-- Table structure for crm_product
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_product`;
+CREATE TABLE `crm_product`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浜у搧鍚嶇О',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浜у搧缂栫爜',
+  `unit` int NULL DEFAULT NULL COMMENT '鍗曚綅',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浠锋牸锛屽崟浣嶏細鍏�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `category_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍒嗙被 ID',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浜у搧鎻忚堪',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹殑鐢ㄦ埛缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 浜у搧琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_product
+-- ----------------------------
+INSERT INTO `crm_product` VALUES (1, '浜у搧', '1', 1, 100.000000, 1, 1, NULL, 1, '1', '2026-06-26 11:01:12', '1', '2026-06-26 11:01:12', 0);
+INSERT INTO `crm_product` VALUES (3, '鍗婃垚鍝�11', '003', 2, NULL, 0, NULL, NULL, NULL, '1', '2026-07-02 14:45:15', '1', '2026-07-02 14:45:15', 0);
+
+-- ----------------------------
+-- Table structure for crm_product_category
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_product_category`;
+CREATE TABLE `crm_product_category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍒嗙被缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒嗙被鍚嶇О',
+  `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '鐖剁骇缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 浜у搧鍒嗙被琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_product_category
+-- ----------------------------
+INSERT INTO `crm_product_category` VALUES (1, '閰掓硥', 0, '1', '2026-06-26 11:00:36', '1', '2026-06-26 11:00:36', 0);
+
+-- ----------------------------
+-- Table structure for crm_receivable
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_receivable`;
+CREATE TABLE `crm_receivable`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍥炴缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鍥炴璁″垝缂栧彿',
+  `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
+  `contract_id` bigint NOT NULL COMMENT '鍚堝悓缂栧彿',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹紪鍙�',
+  `return_time` datetime NULL DEFAULT NULL COMMENT '鍥炴鏃ユ湡',
+  `return_type` int NULL DEFAULT NULL COMMENT '鍥炴鏂瑰紡',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '璁″垝鍥炴閲戦锛屽崟浣嶏細鍏�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヤ綔娴佺紪鍙�',
+  `audit_status` int NULL DEFAULT NULL COMMENT '瀹℃壒鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍥炴琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_receivable
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for crm_receivable_plan
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_receivable_plan`;
+CREATE TABLE `crm_receivable_plan`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `period` int NULL DEFAULT NULL COMMENT '鏈熸暟',
+  `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
+  `contract_id` bigint NOT NULL COMMENT '鍚堝悓缂栧彿',
+  `owner_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹紪鍙�',
+  `return_time` datetime NULL DEFAULT NULL COMMENT '璁″垝鍥炴鏃ユ湡',
+  `return_type` int NULL DEFAULT NULL COMMENT '璁″垝鍥炴绫诲瀷',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '璁″垝鍥炴閲戦锛屽崟浣嶏細鍏�',
+  `receivable_id` bigint NULL DEFAULT NULL COMMENT '鍥炴缂栧彿',
+  `remind_days` int NULL DEFAULT NULL COMMENT '鎻愬墠鍑犲ぉ鎻愰啋',
+  `remind_time` datetime NULL DEFAULT NULL COMMENT '鎻愰啋鏃ユ湡',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏈�鍚庢洿鏂版椂闂�',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'CRM 鍥炴璁″垝琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_receivable_plan
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for crm_sale_quotation
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_sale_quotation`;
+CREATE TABLE `crm_sale_quotation`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鎶ヤ环鍗曞彿',
+  `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鎶ヤ环鍗曞悕绉�',
+  `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
+  `business_id` bigint NULL DEFAULT NULL COMMENT '鍟嗘満缂栧彿',
+  `contact_id` bigint NULL DEFAULT NULL COMMENT '鑱旂郴浜虹紪鍙�',
+  `owner_user_id` bigint NOT NULL COMMENT '璐熻矗浜虹紪鍙�',
+  `status` int NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0鑽夌 10瀹℃壒涓� 20宸查�氳繃 30宸叉嫆缁� 40宸插彇娑� 50宸茶浆鍚堝悓锛�',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '宸ヤ綔娴佺紪鍙�',
+  `quotation_time` datetime NULL DEFAULT NULL COMMENT '鎶ヤ环鏃ユ湡',
+  `valid_until` datetime NULL DEFAULT NULL COMMENT '鏈夋晥鏈熻嚦',
+  `total_product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鎬婚噾棰�',
+  `discount_percent` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '鏁村崟鎶樻墸(%)',
+  `discount_price` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '浼樻儬閲戦',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎶ヤ环鎬婚噾棰�',
+  `tax_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '绋庣巼(%)',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨',
+  `contract_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈鍚堝悓缂栧彿',
+  `contract_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏宠仈鍚堝悓鍗曞彿',
+  `file_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_customer_id`(`customer_id` ASC) USING BTREE,
+  INDEX `idx_business_id`(`business_id` ASC) USING BTREE,
+  INDEX `idx_owner_user_id`(`owner_user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'CRM 閿�鍞姤浠峰崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_sale_quotation
+-- ----------------------------
+INSERT INTO `crm_sale_quotation` VALUES (6, 'QT20260702000006', '鍗楃摐瀛�', 1, NULL, NULL, 142, 10, NULL, '2026-07-02 13:25:27', '2026-07-31 13:25:31', 1.000000, 0.00, 0.000000, 1.000000, NULL, 0.000000, 9, 'HT20260702000008', NULL, NULL, '142', '2026-07-02 13:25:13', '142', '2026-07-02 13:25:38', b'0', 0);
+INSERT INTO `crm_sale_quotation` VALUES (7, 'QT20260702000007', '鍗楃摐瀛�', 2, NULL, NULL, 1, 10, NULL, '2026-07-02 13:27:24', '2026-07-31 13:27:26', 989109.000000, 0.00, 0.000000, 989109.000000, NULL, 0.000000, 10, 'HT20260702000009', NULL, NULL, '1', '2026-07-02 13:25:55', '1', '2026-07-02 13:27:29', b'0', 0);
+INSERT INTO `crm_sale_quotation` VALUES (8, 'QT20260702000008', '鍗楃摐瀛�', 2, NULL, NULL, 1, 10, NULL, '2026-07-02 13:30:25', '2026-07-31 13:30:27', 1791.000000, 1.00, 17.910000, 1773.090000, NULL, 0.000000, 11, 'HT20260702000010', NULL, NULL, '1', '2026-07-02 13:30:40', '1', '2026-07-02 13:30:42', b'0', 0);
+
+-- ----------------------------
+-- Table structure for crm_sale_quotation_product
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_sale_quotation_product`;
+CREATE TABLE `crm_sale_quotation_product`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `quotation_id` bigint NOT NULL COMMENT '鎶ヤ环鍗曠紪鍙�',
+  `item_id` bigint NOT NULL COMMENT 'MDM鐗╂枡缂栧彿',
+  `item_unit_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `item_price` decimal(24, 6) NOT NULL COMMENT '鐗╂枡鍘熶环锛堝啑浣欙級',
+  `quotation_price` decimal(24, 6) NOT NULL COMMENT '鎶ヤ环鍗曚环',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '灏忚閲戦',
+  `tax_percent` decimal(10, 2) NULL DEFAULT NULL COMMENT '绋庣巼(%)',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨',
+  `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_quotation_id`(`quotation_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'CRM 閿�鍞姤浠峰崟浜у搧鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of crm_sale_quotation_product
+-- ----------------------------
+INSERT INTO `crm_sale_quotation_product` VALUES (1, 6, 5, 3, 0.000000, 1.000000, 1.000000, 1.000000, NULL, NULL, NULL, '142', '2026-07-02 13:25:13', '142', '2026-07-02 13:25:36', b'0', 0);
+INSERT INTO `crm_sale_quotation_product` VALUES (2, 7, 1, 2, 0.000000, 99.000000, 9991.000000, 989109.000000, NULL, NULL, NULL, '1', '2026-07-02 13:25:55', '1', '2026-07-02 13:27:27', b'0', 0);
+INSERT INTO `crm_sale_quotation_product` VALUES (3, 8, 1, 2, 0.000000, 9.000000, 199.000000, 1791.000000, NULL, NULL, NULL, '1', '2026-07-02 13:30:40', '1', '2026-07-02 13:30:40', b'0', 0);
+
+-- ----------------------------
+-- Table structure for erp_account
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_account`;
+CREATE TABLE `erp_account`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缁撶畻璐︽埛缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璐︽埛鍚嶇О',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璐︽埛缂栫爜',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `status` int NOT NULL COMMENT '寮�鍚姸鎬�',
+  `sort` int NOT NULL COMMENT '鎺掑簭',
+  `default_status` tinyint(1) NOT NULL COMMENT '鏄惁榛樿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 缁撶畻璐︽埛' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_account
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_customer
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_customer`;
+CREATE TABLE `erp_customer`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '瀹㈡埛缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛鍚嶇О',
+  `contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�',
+  `mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙风爜',
+  `telephone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢靛瓙閭',
+  `fax` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浼犵湡',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `status` int NOT NULL COMMENT '寮�鍚姸鎬�',
+  `sort` int NOT NULL COMMENT '鎺掑簭',
+  `tax_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绾崇◣浜鸿瘑鍒彿',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼',
+  `bank_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴疯',
+  `bank_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴疯处鍙�',
+  `bank_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴峰湴鍧�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 瀹㈡埛' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_customer
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_finance_payment
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_finance_payment`;
+CREATE TABLE `erp_finance_payment`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浠樻鍗曞彿',
+  `status` int NOT NULL COMMENT '浠樻鐘舵��',
+  `payment_time` datetime NOT NULL COMMENT '浠樻鏃堕棿',
+  `finance_user_id` bigint NULL DEFAULT NULL COMMENT '璐㈠姟浜哄憳缂栧彿',
+  `supplier_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '浠樻璐︽埛缂栧彿',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浠锋牸锛屽崟浣嶏細鍏�',
+  `discount_price` decimal(24, 6) NOT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `payment_price` decimal(24, 6) NOT NULL COMMENT '瀹炰粯閲戦锛屽崟浣嶏細鍒�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浠樻鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_finance_payment
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_finance_payment_item
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_finance_payment_item`;
+CREATE TABLE `erp_finance_payment_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍏ュ簱椤圭紪鍙�',
+  `payment_id` bigint NULL DEFAULT NULL COMMENT '浠樻鍗曠紪鍙�',
+  `biz_type` int NULL DEFAULT NULL COMMENT '涓氬姟绫诲瀷',
+  `biz_id` bigint NULL DEFAULT NULL COMMENT '涓氬姟缂栧彿',
+  `biz_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍗曞彿',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '搴斾粯閲戦锛屽崟浣嶏細鍒�',
+  `paid_price` decimal(24, 6) NOT NULL COMMENT '宸蹭粯閲戦锛屽崟浣嶏細鍒�',
+  `payment_price` decimal(24, 6) NOT NULL COMMENT '鏈浠樻锛屽崟浣嶏細鍒�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浠樻椤�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_finance_payment_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_finance_receipt
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_finance_receipt`;
+CREATE TABLE `erp_finance_receipt`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏀舵鍗曞彿',
+  `status` int NOT NULL COMMENT '鏀舵鐘舵��',
+  `receipt_time` datetime NOT NULL COMMENT '鏀舵鏃堕棿',
+  `finance_user_id` bigint NULL DEFAULT NULL COMMENT '璐㈠姟浜哄憳缂栧彿',
+  `customer_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '鏀舵璐︽埛缂栧彿',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浠锋牸锛屽崟浣嶏細鍏�',
+  `discount_price` decimal(24, 6) NOT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `receipt_price` decimal(24, 6) NOT NULL COMMENT '瀹炴敹閲戦锛屽崟浣嶏細鍒�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 鏀舵鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_finance_receipt
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_finance_receipt_item
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_finance_receipt_item`;
+CREATE TABLE `erp_finance_receipt_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍏ュ簱椤圭紪鍙�',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '鏀舵鍗曠紪鍙�',
+  `biz_type` int NULL DEFAULT NULL COMMENT '涓氬姟绫诲瀷',
+  `biz_id` bigint NULL DEFAULT NULL COMMENT '涓氬姟缂栧彿',
+  `biz_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍗曞彿',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '搴旀敹閲戦锛屽崟浣嶏細鍒�',
+  `receipted_price` decimal(24, 6) NOT NULL COMMENT '宸叉敹閲戦锛屽崟浣嶏細鍒�',
+  `receipt_price` decimal(24, 6) NOT NULL COMMENT '鏈鏀舵锛屽崟浣嶏細鍒�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 鏀舵椤�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_finance_receipt_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_product
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_product`;
+CREATE TABLE `erp_product`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '浜у搧缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浜у搧鍚嶇О',
+  `bar_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浜у搧鏉$爜',
+  `category_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍒嗙被缂栧彿',
+  `unit_id` bigint NULL DEFAULT NULL COMMENT '鍗曚綅缂栧彿',
+  `status` int NOT NULL COMMENT '浜у搧鐘舵��',
+  `standard` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浜у搧瑙勬牸',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浜у搧澶囨敞',
+  `expiry_day` int NULL DEFAULT NULL COMMENT '淇濊川鏈熷ぉ鏁�',
+  `weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍩虹閲嶉噺锛坘g锛�',
+  `purchase_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '閲囪喘浠锋牸锛屽崟浣嶏細鍏�',
+  `sale_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '閿�鍞环鏍硷紝鍗曚綅锛氬厓',
+  `min_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�浣庝环鏍硷紝鍗曚綅锛氬厓',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浜у搧' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_product
+-- ----------------------------
+INSERT INTO `erp_product` VALUES (1, '淇℃伅', '1', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2026-06-26 11:09:42', '1', '2026-06-26 11:09:42', b'0');
+
+-- ----------------------------
+-- Table structure for erp_product_category
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_product_category`;
+CREATE TABLE `erp_product_category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍒嗙被缂栧彿',
+  `parent_id` bigint NOT NULL COMMENT '鐖跺垎绫荤紪鍙�',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒嗙被鍚嶇О',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒嗙被缂栫爜',
+  `sort` int NOT NULL COMMENT '鍒嗙被鎺掑簭',
+  `status` int NOT NULL COMMENT '寮�鍚姸鎬�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浜у搧鍒嗙被' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_product_category
+-- ----------------------------
+INSERT INTO `erp_product_category` VALUES (1, 0, '淇℃伅', '1', 1, 0, '1', '2026-06-26 11:09:20', '1', '2026-06-26 11:09:20', b'0');
+
+-- ----------------------------
+-- Table structure for erp_product_unit
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_product_unit`;
+CREATE TABLE `erp_product_unit`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍗曚綅缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍗曚綅鍚嶅瓧',
+  `status` int NOT NULL COMMENT '鍗曚綅鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浜у搧鍗曚綅' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_product_unit
+-- ----------------------------
+INSERT INTO `erp_product_unit` VALUES (1, '111', 0, '1', '2026-06-26 11:09:26', '1', '2026-06-26 11:09:26', b'0');
+
+-- ----------------------------
+-- Table structure for erp_purchase_in
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_in`;
+CREATE TABLE `erp_purchase_in`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閲囪喘鍏ュ簱鍗曞彿',
+  `status` int NOT NULL COMMENT '鍏ュ簱鐘舵��',
+  `supplier_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '缁撶畻璐︽埛缂栧彿',
+  `in_time` datetime NOT NULL COMMENT '鍏ュ簱鏃堕棿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟缂栧彿',
+  `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟鍙�',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓',
+  `payment_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸叉敮浠橀噾棰濓紝鍗曚綅锛氬厓',
+  `total_product_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�',
+  `total_tax_price` decimal(24, 6) NOT NULL COMMENT '鍚堣绋庨锛屽崟浣嶏細鍏�',
+  `discount_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `other_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏跺畠閲戦锛屽崟浣嶏細鍏�',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM 娴佺▼瀹炰緥缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閲囪喘鍏ュ簱' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_in
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_purchase_in_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_in_items`;
+CREATE TABLE `erp_purchase_in_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `in_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘鍏ュ簱缂栧彿',
+  `order_item_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟椤圭紪鍙�',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NOT NULL COMMENT '浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鎬讳环锛屽崟浣嶏細鍏�',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閲囪喘鍏ュ簱椤�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_in_items
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_purchase_order
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_order`;
+CREATE TABLE `erp_purchase_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閲囪喘璁㈠崟鍙�',
+  `status` int NOT NULL COMMENT '閲囪喘鐘舵��',
+  `supplier_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `request_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈閲囪喘鐢宠缂栧彿',
+  `request_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閲囪喘鐢宠鍗曞彿',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '缁撶畻璐︽埛缂栧彿',
+  `order_time` datetime NOT NULL COMMENT '涓嬪崟鏃堕棿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓',
+  `total_product_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�',
+  `total_tax_price` decimal(24, 6) NOT NULL COMMENT '鍚堣绋庨锛屽崟浣嶏細鍏�',
+  `discount_percent` decimal(24, 6) NOT NULL COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NOT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `deposit_price` decimal(24, 6) NOT NULL COMMENT '瀹氶噾閲戦锛屽崟浣嶏細鍏�',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM 娴佺▼瀹炰緥缂栧彿',
+  `in_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閲囪喘鍏ュ簱鏁伴噺',
+  `return_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閲囪喘閫�璐ф暟閲�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閲囪喘璁㈠崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_order
+-- ----------------------------
+INSERT INTO `erp_purchase_order` VALUES (1, 'CGDD20260626000004', 10, 1, NULL, NULL, NULL, '2026-06-26 11:10:36', 1.000000, 10.000000, 10.000000, 0.100000, 1.000000, 0.100000, 1.000000, NULL, NULL, NULL, NULL, NULL, '1', '2026-06-26 11:12:03', '1', '2026-07-01 11:45:02', b'0');
+INSERT INTO `erp_purchase_order` VALUES (2, 'CGDD20260630000003', 20, 1, NULL, NULL, NULL, '2026-06-30 17:18:17', 9999.000000, 94436.560000, 89991.000000, 5399.460000, 1.000000, 953.900000, 5000.000000, NULL, NULL, NULL, NULL, NULL, '1', '2026-06-30 17:18:39', '1', '2026-07-01 11:44:56', b'0');
+
+-- ----------------------------
+-- Table structure for erp_purchase_order_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_order_items`;
+CREATE TABLE `erp_purchase_order_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NOT NULL COMMENT '浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鎬讳环锛屽崟浣嶏細鍏�',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `in_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閲囪喘鍏ュ簱鏁伴噺',
+  `return_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閲囪喘閫�璐ф暟閲�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閲囪喘璁㈠崟椤�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_order_items
+-- ----------------------------
+INSERT INTO `erp_purchase_order_items` VALUES (1, 1, 1, 1, 10.000000, 1.000000, 10.000000, 1.000000, 0.100000, NULL, NULL, NULL, '1', '2026-06-26 11:12:03', '1', '2026-06-26 11:12:03', b'0');
+INSERT INTO `erp_purchase_order_items` VALUES (2, 2, 2, 1, 9.000000, 9999.000000, 89991.000000, 6.000000, 5399.460000, NULL, NULL, NULL, '1', '2026-06-30 17:18:40', '1', '2026-06-30 17:18:40', b'0');
+
+-- ----------------------------
+-- Table structure for erp_purchase_request
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_request`;
+CREATE TABLE `erp_purchase_request`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閲囪喘鐢宠鍗曞彿',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '瀹℃壒鐘舵�侊紙0:鏈彁浜� 10:瀹℃壒涓� 20:瀹℃牳閫氳繃 30:瀹℃牳涓嶉�氳繃 40:宸插彇娑堬級',
+  `request_user_id` bigint NOT NULL COMMENT '鐢宠浜虹紪鍙�',
+  `request_dept_id` bigint NULL DEFAULT NULL COMMENT '鐢宠閮ㄩ棬缂栧彿',
+  `request_time` datetime NOT NULL COMMENT '鐢宠鏃堕棿',
+  `request_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鐢宠鐞嗙敱',
+  `supplier_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `total_count` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '鍚堣鏁伴噺',
+  `total_product_price` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '鍚堣浜у搧浠锋牸',
+  `total_tax_price` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '鍚堣绋庨',
+  `total_price` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '鏈�缁堝悎璁′环鏍�',
+  `discount_percent` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '浼樻儬閲戦',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '宸ヤ綔娴佺紪鍙�',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈閲囪喘璁㈠崟缂栧彿',
+  `order_time` datetime NULL DEFAULT NULL COMMENT '鐢熸垚閲囪喘璁㈠崟鏃堕棿',
+  `file_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `deleted` bit(1) NOT NULL DEFAULT b'0',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_request_user_id`(`request_user_id` ASC) USING BTREE,
+  INDEX `idx_status`(`status` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'ERP 閲囪喘鐢宠鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_request
+-- ----------------------------
+INSERT INTO `erp_purchase_request` VALUES (1, 'CGSQ20260701000004', 20, 142, NULL, '2026-07-01 10:41:18', NULL, 1, 1.000000, 10.000000, 0.100000, 10.100000, 0.000000, 0.000000, '1c75e01b-7501-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL, '142', '2026-07-01 10:43:10', '1', '2026-07-01 11:58:26', b'0');
+INSERT INTO `erp_purchase_request` VALUES (2, 'CGSQ20260701000005', 20, 142, NULL, '2026-07-01 10:56:31', NULL, 1, 1.000000, 100.000000, 1.000000, 101.000000, 0.000000, 0.000000, 'e579a46a-7500-11f1-993f-00155dd68500', NULL, NULL, NULL, NULL, '142', '2026-07-01 10:56:44', '142', '2026-07-01 11:56:54', b'0');
+INSERT INTO `erp_purchase_request` VALUES (3, 'CGSQ20260701000006', 10, 142, NULL, '2026-07-01 11:01:11', NULL, 1, 1000.000000, 10000.000000, 100.000000, 10100.000000, 0.000000, 0.000000, 'dcc6fede-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, '142', '2026-07-01 11:01:33', '142', '2026-07-01 11:42:20', b'0');
+INSERT INTO `erp_purchase_request` VALUES (4, 'CGSQ20260701000007', 10, 142, NULL, '2026-07-01 11:06:29', NULL, 1, 1.000000, 10.000000, 0.100000, 10.100000, 0.000000, 0.000000, '9e13aa29-74fe-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, '142', '2026-07-01 11:06:35', '1', '2026-07-01 11:40:35', b'0');
+INSERT INTO `erp_purchase_request` VALUES (5, 'CGSQ20260701000008', 10, 142, NULL, '2026-07-01 11:07:56', NULL, 1, 1.000000, 10.000000, 0.100000, 10.100000, 0.000000, 0.000000, '2c00b373-74fc-11f1-9120-00155dd68500', NULL, NULL, NULL, NULL, '142', '2026-07-01 11:08:03', '142', '2026-07-01 11:23:05', b'0');
+INSERT INTO `erp_purchase_request` VALUES (6, 'CGSQ20260701000009', 0, 142, NULL, '2026-07-01 11:08:44', NULL, 1, 1.000000, 10.000000, 0.100000, 10.100000, 0.000000, 0.000000, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-01 11:08:52', '142', '2026-07-01 11:10:40', b'1');
+INSERT INTO `erp_purchase_request` VALUES (7, 'CGSQ20260701000010', 20, 142, NULL, '2026-07-01 13:14:08', NULL, 1, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, '48307a8f-750c-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, '142', '2026-07-01 13:14:17', '142', '2026-07-01 13:18:38', b'0');
+INSERT INTO `erp_purchase_request` VALUES (8, 'CGSQ20260701000011', 40, 1, 103, '2026-07-01 13:25:02', '12313213', 1, 900.000000, 8100.000000, 972.000000, 7983.360000, 12.000000, 1088.640000, '46b026d3-750d-11f1-ad84-00155dd68500', NULL, NULL, NULL, NULL, '1', '2026-07-01 13:25:21', '1', '2026-07-08 14:06:06', b'0');
+
+-- ----------------------------
+-- Table structure for erp_purchase_request_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_request_items`;
+CREATE TABLE `erp_purchase_request_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `request_id` bigint NOT NULL COMMENT '閲囪喘鐢宠缂栧彿',
+  `product_id` bigint NOT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NOT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鍗曚环锛堝弬鑰冧环锛�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬讳环',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨',
+  `demand_time` date NULL DEFAULT NULL COMMENT '闇�姹傛棩鏈�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `deleted` bit(1) NOT NULL DEFAULT b'0',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_request_id`(`request_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'ERP 閲囪喘鐢宠鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_request_items
+-- ----------------------------
+INSERT INTO `erp_purchase_request_items` VALUES (1, 1, 5, 3, 10.000000, 1.000000, 10.000000, 1.000000, 0.100000, '2026-07-01', NULL, '142', '2026-07-01 10:43:10', '142', '2026-07-01 10:43:10', b'0');
+INSERT INTO `erp_purchase_request_items` VALUES (2, 2, 1, 2, 100.000000, 1.000000, 100.000000, 1.000000, 1.000000, NULL, NULL, '142', '2026-07-01 10:56:44', '1', '2026-07-01 11:40:20', b'1');
+INSERT INTO `erp_purchase_request_items` VALUES (3, 3, 1, 2, 10.000000, 1000.000000, 10000.000000, 1.000000, 100.000000, NULL, NULL, '142', '2026-07-01 11:01:33', '142', '2026-07-01 11:01:33', b'0');
+INSERT INTO `erp_purchase_request_items` VALUES (4, 4, 5, 3, 10.000000, 1.000000, 10.000000, 1.000000, 0.100000, NULL, NULL, '142', '2026-07-01 11:06:35', '142', '2026-07-01 11:06:35', b'0');
+INSERT INTO `erp_purchase_request_items` VALUES (5, 5, 5, 3, 10.000000, 1.000000, 10.000000, 1.000000, 0.100000, NULL, NULL, '142', '2026-07-01 11:08:03', '142', '2026-07-01 11:08:03', b'0');
+INSERT INTO `erp_purchase_request_items` VALUES (6, 6, 1, 2, 10.000000, 1.000000, 10.000000, 1.000000, 0.100000, NULL, NULL, '142', '2026-07-01 11:08:52', '142', '2026-07-01 03:10:39', b'1');
+INSERT INTO `erp_purchase_request_items` VALUES (7, 2, 1, 2, 100.000000, 1.000000, 100.000000, 1.000000, 1.000000, NULL, NULL, '1', '2026-07-01 11:40:20', '1', '2026-07-01 11:40:20', b'0');
+INSERT INTO `erp_purchase_request_items` VALUES (8, 7, 5, 3, 0.000000, 1.000000, 0.000000, NULL, NULL, NULL, NULL, '142', '2026-07-01 13:14:17', '142', '2026-07-01 13:14:17', b'0');
+INSERT INTO `erp_purchase_request_items` VALUES (9, 8, 2, 1, 9.000000, 900.000000, 8100.000000, 12.000000, 972.000000, NULL, NULL, '1', '2026-07-01 13:25:21', '1', '2026-07-01 13:25:21', b'0');
+
+-- ----------------------------
+-- Table structure for erp_purchase_return
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_return`;
+CREATE TABLE `erp_purchase_return`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閲囪喘閫�璐у崟鍙�',
+  `status` int NOT NULL COMMENT '閫�璐х姸鎬�',
+  `supplier_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '缁撶畻璐︽埛缂栧彿',
+  `return_time` datetime NOT NULL COMMENT '閫�璐ф椂闂�',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟缂栧彿',
+  `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟鍙�',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓',
+  `refund_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸查��娆鹃噾棰濓紝鍗曚綅锛氬厓',
+  `total_product_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�',
+  `total_tax_price` decimal(24, 6) NOT NULL COMMENT '鍚堣绋庨锛屽崟浣嶏細鍏�',
+  `discount_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `other_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏跺畠閲戦锛屽崟浣嶏細鍏�',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閲囪喘閫�璐�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_return
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_purchase_return_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_purchase_return_items`;
+CREATE TABLE `erp_purchase_return_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `return_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘閫�璐х紪鍙�',
+  `order_item_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟椤圭紪鍙�',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NOT NULL COMMENT '浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鎬讳环锛屽崟浣嶏細鍏�',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閲囪喘閫�璐ч」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_purchase_return_items
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_sale_order
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_sale_order`;
+CREATE TABLE `erp_sale_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閿�鍞鍗曞彿',
+  `status` int NOT NULL COMMENT '閿�鍞姸鎬�',
+  `customer_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `contract_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈 CRM 鍚堝悓缂栧彿',
+  `contract_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'CRM 鍚堝悓鍗曞彿',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '缁撶畻璐︽埛缂栧彿',
+  `sale_user_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞憳缂栧彿',
+  `order_time` datetime NOT NULL COMMENT '涓嬪崟鏃堕棿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓',
+  `total_product_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�',
+  `total_tax_price` decimal(24, 6) NOT NULL COMMENT '鍚堣绋庨锛屽崟浣嶏細鍏�',
+  `discount_percent` decimal(24, 6) NOT NULL COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NOT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `deposit_price` decimal(24, 6) NOT NULL COMMENT '瀹氶噾閲戦锛屽崟浣嶏細鍏�',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM 娴佺▼瀹炰緥缂栧彿',
+  `out_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閿�鍞嚭搴撴暟閲�',
+  `return_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閿�鍞��璐ф暟閲�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閿�鍞鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_sale_order
+-- ----------------------------
+INSERT INTO `erp_sale_order` VALUES (1, 'XSDD20260702000003', 30, 1, NULL, NULL, NULL, 142, '2026-07-02 09:12:02', 1.000000, 11.000000, 10.000000, 1.000000, 0.000000, 0.000000, 100.000000, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-02 09:12:38', '1', '2026-07-02 16:40:32', b'0');
+INSERT INTO `erp_sale_order` VALUES (2, 'XSDD20260702000007', 30, 1, 15, 'HT20260702000014', NULL, 142, '2026-07-02 14:07:25', 1.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, NULL, '鐢卞悎鍚屻�怘T20260702000014銆戣嚜鍔ㄧ敓鎴�', NULL, NULL, NULL, '142', '2026-07-02 14:07:26', '1', '2026-07-02 15:40:38', b'0');
+INSERT INTO `erp_sale_order` VALUES (3, 'XSDD20260702000008', 20, 2, 16, 'HT20260702000015', NULL, 1, '2026-07-02 14:08:33', 1111.000000, 1111.000000, 1111.000000, 0.000000, 0.000000, 0.000000, 0.000000, NULL, '鐢卞悎鍚屻�怘T20260702000015銆戣嚜鍔ㄧ敓鎴�', NULL, NULL, NULL, '1', '2026-07-02 14:08:33', '1', '2026-07-02 16:56:07', b'0');
+INSERT INTO `erp_sale_order` VALUES (4, 'XSDD20260702000009', 20, 1, 17, 'HT20260702000016', NULL, 142, '2026-07-02 16:28:47', 1.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, NULL, '鐢卞悎鍚屻�怘T20260702000016銆戣嚜鍔ㄧ敓鎴�', NULL, NULL, NULL, '142', '2026-07-02 16:28:47', '142', '2026-07-02 16:54:23', b'0');
+INSERT INTO `erp_sale_order` VALUES (5, 'XSDD20260702000010', 20, 2, 18, 'HT20260702000017', NULL, 1, '2026-07-02 16:41:21', 121.000000, 1452.000000, 1452.000000, 0.000000, 0.000000, 0.000000, 0.000000, NULL, '鐢卞悎鍚屻�怘T20260702000017銆戣嚜鍔ㄧ敓鎴�', NULL, NULL, NULL, '1', '2026-07-02 16:41:21', '142', '2026-07-02 16:54:03', b'0');
+
+-- ----------------------------
+-- Table structure for erp_sale_order_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_sale_order_items`;
+CREATE TABLE `erp_sale_order_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞鍗曠紪鍙�',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NOT NULL COMMENT '浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鎬讳环锛屽崟浣嶏細鍏�',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `out_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閿�鍞嚭搴撴暟閲�',
+  `return_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '閿�鍞��璐ф暟閲�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閿�鍞鍗曢」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_sale_order_items
+-- ----------------------------
+INSERT INTO `erp_sale_order_items` VALUES (1, 1, 3, 2, 10.000000, 1.000000, 10.000000, 10.000000, 1.000000, NULL, NULL, NULL, '142', '2026-07-02 09:12:38', '142', '2026-07-02 09:12:38', b'0');
+INSERT INTO `erp_sale_order_items` VALUES (2, 2, 5, 3, 1.000000, 1.000000, 1.000000, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-02 14:07:26', '142', '2026-07-02 14:07:26', b'0');
+INSERT INTO `erp_sale_order_items` VALUES (3, 3, 1, 2, 1.000000, 1111.000000, 1111.000000, NULL, NULL, NULL, NULL, NULL, '1', '2026-07-02 14:08:33', '1', '2026-07-02 14:08:33', b'0');
+INSERT INTO `erp_sale_order_items` VALUES (4, 4, 5, 3, 1.000000, 1.000000, 1.000000, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-02 16:28:47', '142', '2026-07-02 16:28:47', b'0');
+INSERT INTO `erp_sale_order_items` VALUES (5, 5, 1, 2, 12.000000, 121.000000, 1452.000000, NULL, NULL, NULL, NULL, NULL, '1', '2026-07-02 16:41:21', '1', '2026-07-02 16:41:21', b'0');
+
+-- ----------------------------
+-- Table structure for erp_sale_out
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_sale_out`;
+CREATE TABLE `erp_sale_out`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閿�鍞嚭搴撳崟鍙�',
+  `status` int NOT NULL COMMENT '鍑哄簱鐘舵��',
+  `customer_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '缁撶畻璐︽埛缂栧彿',
+  `sale_user_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞憳缂栧彿',
+  `out_time` datetime NOT NULL COMMENT '鍑哄簱鏃堕棿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞鍗曠紪鍙�',
+  `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閿�鍞鍗曞彿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓',
+  `receipt_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸叉敹娆鹃噾棰濓紝鍗曚綅锛氬厓',
+  `total_product_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�',
+  `total_tax_price` decimal(24, 6) NOT NULL COMMENT '鍚堣绋庨锛屽崟浣嶏細鍏�',
+  `discount_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `other_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏跺畠閲戦锛屽崟浣嶏細鍏�',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM 娴佺▼瀹炰緥缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閿�鍞嚭搴�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_sale_out
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_sale_out_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_sale_out_items`;
+CREATE TABLE `erp_sale_out_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `out_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞嚭搴撶紪鍙�',
+  `order_item_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞鍗曢」缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NOT NULL COMMENT '浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鎬讳环锛屽崟浣嶏細鍏�',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閿�鍞嚭搴撻」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_sale_out_items
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_sale_return
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_sale_return`;
+CREATE TABLE `erp_sale_return`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閿�鍞��璐у崟鍙�',
+  `status` int NOT NULL COMMENT '閫�璐х姸鎬�',
+  `customer_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `account_id` bigint NULL DEFAULT NULL COMMENT '缁撶畻璐︽埛缂栧彿',
+  `sale_user_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞憳缂栧彿',
+  `return_time` datetime NOT NULL COMMENT '閫�璐ф椂闂�',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞鍗曠紪鍙�',
+  `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閿�鍞鍗曞彿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓',
+  `refund_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸查��娆鹃噾棰濓紝鍗曚綅锛氬厓',
+  `total_product_price` decimal(24, 6) NOT NULL COMMENT '鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�',
+  `total_tax_price` decimal(24, 6) NOT NULL COMMENT '鍚堣绋庨锛屽崟浣嶏細鍏�',
+  `discount_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬鐜囷紝鐧惧垎姣�',
+  `discount_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浼樻儬閲戦锛屽崟浣嶏細鍏�',
+  `other_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏跺畠閲戦锛屽崟浣嶏細鍏�',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閿�鍞��璐�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_sale_return
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_sale_return_items
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_sale_return_items`;
+CREATE TABLE `erp_sale_return_items`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `return_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞��璐х紪鍙�',
+  `order_item_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞鍗曢」缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NOT NULL COMMENT '浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�',
+  `count` decimal(24, 6) NOT NULL COMMENT '鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鎬讳环锛屽崟浣嶏細鍏�',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼锛岀櫨鍒嗘瘮',
+  `tax_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庨锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 閿�鍞��璐ч」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_sale_return_items
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock`;
+CREATE TABLE `erp_stock`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `count` decimal(24, 6) NOT NULL COMMENT '搴撳瓨鏁伴噺',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浜у搧搴撳瓨' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_check
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_check`;
+CREATE TABLE `erp_stock_check`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐩樼偣缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐩樼偣鍗曞彿',
+  `check_time` datetime NOT NULL COMMENT '鐩樼偣鏃堕棿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `status` int NOT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢 URL',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 搴撳瓨鐩樼偣鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_check
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_check_item
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_check_item`;
+CREATE TABLE `erp_stock_check_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐩樼偣椤圭紪鍙�',
+  `check_id` bigint NULL DEFAULT NULL COMMENT '鐩樼偣缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鍗曚环',
+  `stock_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '璐﹂潰鏁伴噺锛堝綋鍓嶅簱瀛橈級',
+  `actual_count` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹為檯鏁伴噺锛堝疄闄呭簱瀛橈級',
+  `count` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐩堜簭鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 搴撳瓨鐩樼偣鍗曢」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_check_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_in
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_in`;
+CREATE TABLE `erp_stock_in`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍏ュ簱缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍏ュ簱鍗曞彿',
+  `supplier_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `in_time` datetime NOT NULL COMMENT '鍏ュ簱鏃堕棿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `status` int NOT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢 URL',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 鍏跺畠鍏ュ簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_in
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_in_item
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_in_item`;
+CREATE TABLE `erp_stock_in_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍏ュ簱椤圭紪鍙�',
+  `in_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鍗曚环',
+  `count` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 鍏跺畠鍏ュ簱鍗曢」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_in_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_move
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_move`;
+CREATE TABLE `erp_stock_move`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璋冩嫧缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璋冩嫧鍗曞彿',
+  `move_time` datetime NOT NULL COMMENT '璋冩嫧鏃堕棿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `status` int NOT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢 URL',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 搴撳瓨璋冩嫧鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_move
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_move_item
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_move_item`;
+CREATE TABLE `erp_stock_move_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璋冩嫧椤圭紪鍙�',
+  `move_id` bigint NULL DEFAULT NULL COMMENT '璋冩嫧缂栧彿',
+  `from_warehouse_id` bigint NULL DEFAULT NULL COMMENT '璋冨嚭浠撳簱缂栧彿',
+  `to_warehouse_id` bigint NULL DEFAULT NULL COMMENT '璋冨叆浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鍗曚环',
+  `count` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 搴撳瓨璋冩嫧鍗曢」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_move_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_out
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_out`;
+CREATE TABLE `erp_stock_out`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍑哄簱缂栧彿',
+  `no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍑哄簱鍗曞彿',
+  `customer_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `out_time` datetime NOT NULL COMMENT '鍑哄簱鏃堕棿',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鍚堣鏁伴噺',
+  `total_price` decimal(24, 6) NOT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `status` int NOT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢 URL',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 鍏跺畠鍑哄簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_out
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_out_item
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_out_item`;
+CREATE TABLE `erp_stock_out_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍑哄簱椤圭紪鍙�',
+  `out_id` bigint NULL DEFAULT NULL COMMENT '鍑哄簱缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `product_unit_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鍗曚綅缂栧彿',
+  `product_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鍗曚环',
+  `count` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у搧鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堣閲戦锛屽崟浣嶏細鍏�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 鍏跺畠鍑哄簱鍗曢」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_out_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_stock_record
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_stock_record`;
+CREATE TABLE `erp_stock_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `count` decimal(24, 6) NOT NULL COMMENT '鍑哄叆搴撴暟閲�',
+  `total_count` decimal(24, 6) NOT NULL COMMENT '鎬诲簱瀛橀噺',
+  `biz_type` int NULL DEFAULT NULL COMMENT '涓氬姟绫诲瀷',
+  `biz_id` bigint NULL DEFAULT NULL COMMENT '涓氬姟缂栧彿',
+  `biz_item_id` bigint NULL DEFAULT NULL COMMENT '涓氬姟椤圭紪鍙�',
+  `biz_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍗曞彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浜у搧搴撳瓨鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_stock_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for erp_supplier
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_supplier`;
+CREATE TABLE `erp_supplier`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '渚涘簲鍟嗙紪鍙�',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '渚涘簲鍟嗗悕绉�',
+  `contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�',
+  `mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙风爜',
+  `telephone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢靛瓙閭',
+  `fax` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浼犵湡',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `status` int NOT NULL COMMENT '寮�鍚姸鎬�',
+  `sort` int NOT NULL COMMENT '鎺掑簭',
+  `tax_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绾崇◣浜鸿瘑鍒彿',
+  `tax_percent` decimal(24, 6) NULL DEFAULT NULL COMMENT '绋庣巼',
+  `bank_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴疯',
+  `bank_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴疯处鍙�',
+  `bank_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴峰湴鍧�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 渚涘簲鍟�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_supplier
+-- ----------------------------
+INSERT INTO `erp_supplier` VALUES (1, '閰掓硥', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL, NULL, NULL, NULL, '1', '2026-06-26 11:10:26', '1', '2026-06-26 11:10:26', b'0');
+
+-- ----------------------------
+-- Table structure for erp_warehouse
+-- ----------------------------
+DROP TABLE IF EXISTS `erp_warehouse`;
+CREATE TABLE `erp_warehouse`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '浠撳簱缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浠撳簱鍚嶇О',
+  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠撳簱鍦板潃',
+  `sort` bigint NOT NULL COMMENT '鎺掑簭',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `principal` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璐熻矗浜�',
+  `warehouse_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '浠撳偍璐癸紝鍗曚綅锛氬厓',
+  `truckage_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎼繍璐癸紝鍗曚綅锛氬厓',
+  `status` int NOT NULL COMMENT '寮�鍚姸鎬�',
+  `default_status` tinyint(1) NOT NULL COMMENT '鏄惁榛樿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'ERP 浠撳簱' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of erp_warehouse
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for flw_channel_definition
+-- ----------------------------
+DROP TABLE IF EXISTS `flw_channel_definition`;
+CREATE TABLE `flw_channel_definition`  (
+  `ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `VERSION_` int NULL DEFAULT NULL,
+  `KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `IMPLEMENTATION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `RESOURCE_NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `DESCRIPTION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  UNIQUE INDEX `ACT_IDX_CHANNEL_DEF_UNIQ`(`KEY_` ASC, `VERSION_` ASC, `TENANT_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of flw_channel_definition
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for flw_event_definition
+-- ----------------------------
+DROP TABLE IF EXISTS `flw_event_definition`;
+CREATE TABLE `flw_event_definition`  (
+  `ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `VERSION_` int NULL DEFAULT NULL,
+  `KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `RESOURCE_NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `DESCRIPTION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  UNIQUE INDEX `ACT_IDX_EVENT_DEF_UNIQ`(`KEY_` ASC, `VERSION_` ASC, `TENANT_ID_` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of flw_event_definition
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for flw_event_deployment
+-- ----------------------------
+DROP TABLE IF EXISTS `flw_event_deployment`;
+CREATE TABLE `flw_event_deployment`  (
+  `ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `DEPLOY_TIME_` datetime(3) NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `PARENT_DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of flw_event_deployment
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for flw_event_resource
+-- ----------------------------
+DROP TABLE IF EXISTS `flw_event_resource`;
+CREATE TABLE `flw_event_resource`  (
+  `ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+  `NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `RESOURCE_BYTES_` longblob NULL,
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `FLW_IDX_EVENT_RSRC_DPL`(`DEPLOYMENT_ID_` ASC) USING BTREE,
+  CONSTRAINT `FLW_FK_EVENT_RSRC_DPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `flw_event_deployment` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of flw_event_resource
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for flw_ru_batch
+-- ----------------------------
+DROP TABLE IF EXISTS `flw_ru_batch`;
+CREATE TABLE `flw_ru_batch`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `SEARCH_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SEARCH_KEY2_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NOT NULL,
+  `COMPLETE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `BATCH_DOC_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of flw_ru_batch
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for flw_ru_batch_part
+-- ----------------------------
+DROP TABLE IF EXISTS `flw_ru_batch_part`;
+CREATE TABLE `flw_ru_batch_part`  (
+  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `REV_` int NULL DEFAULT NULL,
+  `BATCH_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
+  `SCOPE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SUB_SCOPE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SCOPE_TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SEARCH_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `SEARCH_KEY2_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `CREATE_TIME_` datetime(3) NOT NULL,
+  `COMPLETE_TIME_` datetime(3) NULL DEFAULT NULL,
+  `STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `RESULT_DOC_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
+  `TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '',
+  PRIMARY KEY (`ID_`) USING BTREE,
+  INDEX `FLW_IDX_BATCH_PART`(`BATCH_ID_` ASC) USING BTREE,
+  CONSTRAINT `FLW_FK_BATCH_PART_PARENT` FOREIGN KEY (`BATCH_ID_`) REFERENCES `flw_ru_batch` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of flw_ru_batch_part
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_attendance_exception
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_attendance_exception`;
+CREATE TABLE `hrm_attendance_exception`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐢宠ID',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢宠鍗曞彿',
+  `user_id` bigint NOT NULL COMMENT '鐢宠浜篒D',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `type` tinyint NOT NULL COMMENT '寮傚父绫诲瀷锛�1-琛ュ崱锛�2-鍔犵彮锛�3-鍑哄樊',
+  `exception_date` date NOT NULL COMMENT '寮傚父鏃ユ湡',
+  `exception_time` datetime NULL DEFAULT NULL COMMENT '寮傚父鏃堕棿鐐�',
+  `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢宠鍘熷洜',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鑽夌锛�10-瀹℃壒涓紝20-閫氳繃锛�30-椹冲洖锛�40-鎾ら攢',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM娴佺▼瀹炰緥ID',
+  `approve_time` datetime NULL DEFAULT NULL COMMENT '瀹℃壒瀹屾垚鏃堕棿',
+  `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_user_status`(`user_id` ASC, `status` ASC) USING BTREE,
+  INDEX `idx_dept_date`(`dept_id` ASC, `exception_date` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鑰冨嫟寮傚父鐢宠琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_attendance_exception
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_attendance_holiday
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_attendance_holiday`;
+CREATE TABLE `hrm_attendance_holiday`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鑺傚亣鏃D',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑺傚亣鏃ュ悕绉�',
+  `date` date NOT NULL COMMENT '鏃ユ湡',
+  `type` tinyint NOT NULL DEFAULT 1 COMMENT '绫诲瀷锛�1-浼戞伅鏃ワ紝2-宸ヤ綔鏃�',
+  `is_legal` tinyint NOT NULL DEFAULT 0 COMMENT '鏄惁娉曞畾鑺傚亣鏃ワ細0-鍚︼紝1-鏄�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_date`(`date` ASC, `deleted` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鑰冨嫟鑺傚亣鏃ラ厤缃〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_attendance_holiday
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_attendance_record
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_attendance_record`;
+CREATE TABLE `hrm_attendance_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璁板綍ID',
+  `user_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `date` date NOT NULL COMMENT '鑰冨嫟鏃ユ湡',
+  `clock_in_time` datetime NULL DEFAULT NULL COMMENT '涓婄彮鎵撳崱鏃堕棿',
+  `clock_out_time` datetime NULL DEFAULT NULL COMMENT '涓嬬彮鎵撳崱鏃堕棿',
+  `clock_in_type` tinyint NULL DEFAULT NULL COMMENT '涓婄彮鎵撳崱绫诲瀷锛�1-姝e父锛�2-杩熷埌锛�3-缂哄崱',
+  `clock_out_type` tinyint NULL DEFAULT NULL COMMENT '涓嬬彮鎵撳崱绫诲瀷锛�1-姝e父锛�2-鏃╅��锛�3-缂哄崱',
+  `work_hours` decimal(4, 2) NULL DEFAULT NULL COMMENT '宸ヤ綔鏃堕暱锛堝皬鏃讹級',
+  `overtime_hours` decimal(4, 2) NULL DEFAULT 0.00 COMMENT '鍔犵彮鏃堕暱锛堝皬鏃讹級',
+  `location` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵撳崱鍦扮偣',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `data_source` tinyint NULL DEFAULT 1 COMMENT '鏁版嵁鏉ユ簮锛�1-鎵撳崱锛�2-瀵煎叆',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_user_date`(`user_id` ASC, `date` ASC) USING BTREE,
+  INDEX `idx_dept_date`(`dept_id` ASC, `date` ASC) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鑰冨嫟鎵撳崱璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_attendance_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_attendance_rule
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_attendance_rule`;
+CREATE TABLE `hrm_attendance_rule`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '瑙勫垯ID',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瑙勫垯鍚嶇О',
+  `dept_id` bigint NULL DEFAULT NULL COMMENT '閫傜敤閮ㄩ棬ID锛堢┖琛ㄧず鍏ㄥ眬锛�',
+  `work_start_time` time NOT NULL COMMENT '涓婄彮鏃堕棿',
+  `work_end_time` time NOT NULL COMMENT '涓嬬彮鏃堕棿',
+  `late_allow_minutes` tinyint NULL DEFAULT 0 COMMENT '杩熷埌鍏佽鍒嗛挓鏁�',
+  `early_allow_minutes` tinyint NULL DEFAULT 0 COMMENT '鏃╅��鍏佽鍒嗛挓鏁�',
+  `overtime_threshold` decimal(4, 2) NULL DEFAULT 1.00 COMMENT '鍔犵彮璧风畻鏃堕暱锛堝皬鏃讹級',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤锛�1-绂佺敤',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_dept_id`(`dept_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鑰冨嫟瑙勫垯閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_attendance_rule
+-- ----------------------------
+INSERT INTO `hrm_attendance_rule` VALUES (1, '鏃╃彮', 103, '08:00:00', '17:00:00', 0, 0, 1.00, 0, NULL, '1', '2026-07-08 10:45:34', '1', '2026-07-08 10:45:34', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_attendance_summary
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_attendance_summary`;
+CREATE TABLE `hrm_attendance_summary`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '姹囨�籌D',
+  `user_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `year_month` varchar(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '骞存湀锛屾牸寮忥細yyyy-MM',
+  `work_days` int NOT NULL DEFAULT 0 COMMENT '搴斿嚭鍕ゅぉ鏁�',
+  `actual_days` int NOT NULL DEFAULT 0 COMMENT '瀹為檯鍑哄嫟澶╂暟',
+  `late_count` int NOT NULL DEFAULT 0 COMMENT '杩熷埌娆℃暟',
+  `early_count` int NOT NULL DEFAULT 0 COMMENT '鏃╅��娆℃暟',
+  `absent_count` int NOT NULL DEFAULT 0 COMMENT '缂哄崱娆℃暟',
+  `overtime_hours` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '鍔犵彮鏃堕暱锛堝皬鏃讹級',
+  `leave_hours` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '璇峰亣鏃堕暱锛堝皬鏃讹級',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_user_year_month`(`user_id` ASC, `year_month` ASC, `deleted` ASC) USING BTREE,
+  INDEX `idx_dept_year_month`(`dept_id` ASC, `year_month` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鑰冨嫟缁熻姹囨�昏〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_attendance_summary
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_employee
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_employee`;
+CREATE TABLE `hrm_employee`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍛樺伐ID',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '绯荤粺鐢ㄦ埛id',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `post_id` bigint NULL DEFAULT NULL COMMENT '宀椾綅ID',
+  `employee_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍛樺伐缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍛樺伐濮撳悕',
+  `gender` tinyint NULL DEFAULT NULL COMMENT '鎬у埆锛�1-鐢凤紝2-濂�',
+  `birthday` date NULL DEFAULT NULL COMMENT '鍑虹敓鏃ユ湡',
+  `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙风爜',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閭',
+  `id_card` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '韬唤璇佸彿',
+  `hire_date` date NOT NULL COMMENT '鍏ヨ亴鏃ユ湡',
+  `regular_date` date NULL DEFAULT NULL COMMENT '杞鏃ユ湡',
+  `leave_date` date NULL DEFAULT NULL COMMENT '绂昏亴鏃ユ湡',
+  `employee_status` tinyint NOT NULL DEFAULT 1 COMMENT '鍛樺伐鐘舵�侊細1-鍦ㄨ亴锛�2-璇曠敤锛�3-绂昏亴',
+  `annual_leave_balance` decimal(4, 2) NULL DEFAULT 0.00 COMMENT '骞村亣浣欓锛堝ぉ锛�',
+  `sick_leave_balance` decimal(4, 2) NULL DEFAULT 0.00 COMMENT '鐥呭亣浣欓锛堝ぉ锛�',
+  `salary_structure_id` bigint NULL DEFAULT NULL COMMENT '钖叕缁撴瀯ID',
+  `base_salary` decimal(12, 2) NULL DEFAULT NULL COMMENT '鍩烘湰宸ヨ祫',
+  `role_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙掕壊ID鍒楄〃锛圝SON鏍煎紡锛�',
+  `bank_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴烽摱琛�',
+  `bank_account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閾惰璐﹀彿',
+  `address` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '灞呬綇鍦板潃',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_employee_no`(`employee_no` ASC) USING BTREE,
+  UNIQUE INDEX `uk_phone`(`phone` ASC) USING BTREE,
+  INDEX `idx_dept_id`(`dept_id` ASC) USING BTREE,
+  INDEX `idx_employee_status`(`employee_status` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鍛樺伐淇℃伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_employee
+-- ----------------------------
+INSERT INTO `hrm_employee` VALUES (1, NULL, 105, 2, 'EMP202607060012', '鍗楃摐瀛�', 1, NULL, '15822054762', NULL, NULL, '2026-07-06', NULL, NULL, 2, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2026-07-06 11:24:53', '1', '2026-07-06 15:12:23', b'1');
+INSERT INTO `hrm_employee` VALUES (2, NULL, 103, 2, 'EMP202607060013', '鍗冨厠', 1, '1998-07-17', '15822054763', NULL, NULL, '2026-07-04', NULL, NULL, 1, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '2026-07-06 11:26:35', '1', '2026-07-06 15:12:22', b'1');
+INSERT INTO `hrm_employee` VALUES (3, NULL, 103, 4, 'EMP202607060014', '澶ф槑鏄�', 2, NULL, '15822054767', NULL, NULL, '2026-07-06', NULL, NULL, 1, 0.00, 0.00, NULL, 8000.00, '[2]', NULL, NULL, NULL, NULL, '1', '2026-07-06 15:15:38', '1', '2026-07-07 11:06:43', b'0');
+INSERT INTO `hrm_employee` VALUES (4, 228, 106, 4, 'EMP202607070001', '涓嶆兂涓婄彮', 1, NULL, '15822054766', NULL, NULL, '2026-07-01', '2026-09-06', NULL, 2, 5.00, 5.00, NULL, 5000.00, '[2]', NULL, NULL, NULL, NULL, '1', '2026-07-07 10:50:55', '1', '2026-07-07 11:25:52', b'0');
+INSERT INTO `hrm_employee` VALUES (5, 229, 106, 4, 'EMP202607070002', '鏀惧亣', 1, NULL, '15822054764', NULL, NULL, '2026-07-06', NULL, NULL, 1, 5.00, 5.00, NULL, 6000.00, '[2]', NULL, NULL, NULL, NULL, '1', '2026-07-07 11:25:03', '1', '2026-07-07 11:25:48', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_employee_education
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_employee_education`;
+CREATE TABLE `hrm_employee_education`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璁板綍ID',
+  `employee_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `school_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀛︽牎鍚嶇О',
+  `major` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓撲笟',
+  `degree` tinyint NOT NULL COMMENT '瀛﹀巻锛�1-楂樹腑锛�2-澶т笓锛�3-鏈锛�4-纭曞+锛�5-鍗氬+',
+  `start_date` date NOT NULL COMMENT '鍏ュ鏃堕棿',
+  `end_date` date NOT NULL COMMENT '姣曚笟鏃堕棿',
+  `certificate_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇佷功缂栧彿',
+  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_employee_id`(`employee_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鍛樺伐鏁欒偛缁忓巻琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_employee_education
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_employee_emergency_contact
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_employee_emergency_contact`;
+CREATE TABLE `hrm_employee_emergency_contact`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璁板綍ID',
+  `employee_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑱旂郴浜哄鍚�',
+  `relationship` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '涓庡憳宸ュ叧绯�',
+  `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `address` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴鍦板潃',
+  `sort` tinyint NULL DEFAULT 1 COMMENT '鎺掑簭锛堝彲璁剧疆澶氫釜绱ф�ヨ仈绯讳汉锛�',
+  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_employee_id`(`employee_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鍛樺伐绱ф�ヨ仈绯讳汉琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_employee_emergency_contact
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_employee_salary
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_employee_salary`;
+CREATE TABLE `hrm_employee_salary`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '妗fID',
+  `user_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `salary_structure_id` bigint NOT NULL COMMENT '钖叕缁撴瀯ID',
+  `base_salary` decimal(12, 2) NOT NULL COMMENT '鍩烘湰宸ヨ祫',
+  `performance_salary` decimal(12, 2) NULL DEFAULT NULL COMMENT '缁╂晥宸ヨ祫',
+  `meal_allowance` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '椁愯ˉ',
+  `transport_allowance` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '浜ら�氳ˉ璐�',
+  `other_allowance` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '鍏朵粬琛ヨ创',
+  `effective_date` date NOT NULL COMMENT '鐢熸晥鏃ユ湡',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤锛�1-绂佺敤',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_user_effective`(`user_id` ASC, `effective_date` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鍛樺伐钖叕妗f琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_employee_salary
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_employee_social_security
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_employee_social_security`;
+CREATE TABLE `hrm_employee_social_security`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '妗fID',
+  `user_id` bigint NOT NULL COMMENT '绯荤粺鐢ㄦ埛ID',
+  `social_security_scheme_id` bigint NOT NULL COMMENT '绀句繚鍏Н閲戞柟妗圛D',
+  `social_security_base` decimal(12, 2) NOT NULL COMMENT '绀句繚缂寸撼鍩烘暟',
+  `housing_fund_base` decimal(12, 2) NOT NULL COMMENT '鍏Н閲戠即绾冲熀鏁�',
+  `effective_date` date NOT NULL COMMENT '鐢熸晥鏃ユ湡',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤锛�1-绂佺敤',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_user_effective`(`user_id` ASC, `effective_date` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE,
+  INDEX `idx_scheme_id`(`social_security_scheme_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鍛樺伐绀句繚鍏Н閲戞。妗堣〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_employee_social_security
+-- ----------------------------
+INSERT INTO `hrm_employee_social_security` VALUES (1, 4, 1, 7000.00, 7000.00, '2026-07-07', 0, NULL, '142', '2026-07-07 09:24:56', '142', '2026-07-07 11:11:02', b'0');
+INSERT INTO `hrm_employee_social_security` VALUES (3, 3, 2, 5000.00, 5000.00, '2026-07-01', 0, NULL, '1', '2026-07-07 10:28:58', '1', '2026-07-07 10:28:58', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_employee_work_history
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_employee_work_history`;
+CREATE TABLE `hrm_employee_work_history`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璁板綍ID',
+  `employee_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `company_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍏徃鍚嶇О',
+  `position` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑱屼綅',
+  `start_date` date NOT NULL COMMENT '鍏ヨ亴鏃堕棿',
+  `end_date` date NULL DEFAULT NULL COMMENT '绂昏亴鏃堕棿',
+  `work_content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヤ綔鍐呭',
+  `leave_reason` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绂昏亴鍘熷洜',
+  `reference_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇佹槑浜哄鍚�',
+  `reference_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇佹槑浜虹數璇�',
+  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_employee_id`(`employee_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM鍛樺伐宸ヤ綔缁忓巻琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_employee_work_history
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_leave_application
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_leave_application`;
+CREATE TABLE `hrm_leave_application`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐢宠ID',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢宠鍗曞彿',
+  `user_id` bigint NOT NULL COMMENT '鐢宠浜篒D',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `leave_type` tinyint NOT NULL COMMENT '璇峰亣绫诲瀷锛�1-浜嬪亣锛�2-鐥呭亣锛�3-骞村亣锛�4-濠氬亣锛�5-浜у亣锛�6-涓у亣',
+  `start_time` datetime NOT NULL COMMENT '寮�濮嬫椂闂�',
+  `end_time` datetime NOT NULL COMMENT '缁撴潫鏃堕棿',
+  `duration` decimal(4, 2) NOT NULL COMMENT '璇峰亣鏃堕暱锛堝ぉ锛�',
+  `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璇峰亣鍘熷洜',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鑽夌锛�10-瀹℃壒涓紝20-閫氳繃锛�30-椹冲洖锛�40-鎾ら攢',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM娴佺▼瀹炰緥ID',
+  `approve_time` datetime NULL DEFAULT NULL COMMENT '瀹℃壒瀹屾垚鏃堕棿',
+  `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_user_status`(`user_id` ASC, `status` ASC) USING BTREE,
+  INDEX `idx_dept_time`(`dept_id` ASC, `start_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM璇峰亣鐢宠琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_leave_application
+-- ----------------------------
+INSERT INTO `hrm_leave_application` VALUES (1, 'LA202607060001', 1, 103, 1, '1970-01-01 08:00:00', '1970-01-01 08:00:00', 1.00, '26+6+', 10, NULL, NULL, NULL, NULL, '1', '2026-07-06 11:44:40', '1', '2026-07-06 11:44:43', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_leave_type_config
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_leave_type_config`;
+CREATE TABLE `hrm_leave_type_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `leave_type` int NOT NULL COMMENT '璇峰亣绫诲瀷锛�1-浜嬪亣, 2-鐥呭亣, 3-骞村亣, 4-濠氬亣, 5-浜у亣, 6-涓у亣',
+  `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '绫诲瀷鍚嶇О',
+  `deduction_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0000 COMMENT '鎵f姣斾緥锛�0-1涔嬮棿锛屽0.5琛ㄧず鎵�50%锛�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `status` int NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤, 1-绂佺敤',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏇存柊浜�',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '璇峰亣绫诲瀷鎵f閰嶇疆' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_leave_type_config
+-- ----------------------------
+INSERT INTO `hrm_leave_type_config` VALUES (1, 1, '浜嬪亣', 1.0000, '鍏ㄩ鎵f', 0, '2026-07-07 03:44:30', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (2, 2, '鐥呭亣', 0.5000, '鎸�50%鎵f', 0, '2026-07-07 03:44:30', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (3, 3, '骞村亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 03:44:30', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (4, 4, '濠氬亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 03:44:30', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (5, 5, '浜у亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 03:44:30', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (6, 6, '涓у亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 03:44:30', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (7, 1, '浜嬪亣', 1.0000, '鍏ㄩ鎵f', 0, '2026-07-07 05:27:13', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (8, 2, '鐥呭亣', 0.5000, '鎸�50%鎵f', 0, '2026-07-07 05:27:13', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (9, 3, '骞村亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 05:27:13', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (10, 4, '濠氬亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 05:27:13', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (11, 5, '浜у亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 05:27:13', NULL, NULL, NULL, b'0');
+INSERT INTO `hrm_leave_type_config` VALUES (12, 6, '涓у亣', 0.0000, '涓嶆墸娆�', 0, '2026-07-07 05:27:13', NULL, NULL, NULL, b'0');
+
+-- ----------------------------
+-- Table structure for hrm_resignation_application
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_resignation_application`;
+CREATE TABLE `hrm_resignation_application`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐢宠ID',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢宠鍗曞彿',
+  `user_id` bigint NOT NULL COMMENT '鐢宠浜篒D',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `resignation_type` tinyint NOT NULL COMMENT '绂昏亴绫诲瀷锛�1-涓诲姩绂昏亴锛�2-琚姩绂昏亴锛�3-鍚堝悓鍒版湡',
+  `expected_date` date NOT NULL COMMENT '棰勮绂昏亴鏃ユ湡',
+  `actual_date` date NULL DEFAULT NULL COMMENT '瀹為檯绂昏亴鏃ユ湡',
+  `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绂昏亴鍘熷洜',
+  `handover_user_id` bigint NULL DEFAULT NULL COMMENT '浜ゆ帴浜篒D',
+  `handover_status` tinyint NULL DEFAULT 0 COMMENT '浜ゆ帴鐘舵�侊細0-鏈紑濮嬶紝10-杩涜涓紝20-宸插畬鎴�',
+  `handover_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浜ゆ帴璇存槑',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鑽夌锛�10-瀹℃壒涓紝20-閫氳繃锛�30-椹冲洖锛�40-鎾ら攢',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM娴佺▼瀹炰緥ID',
+  `approve_time` datetime NULL DEFAULT NULL COMMENT '瀹℃壒瀹屾垚鏃堕棿',
+  `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_user_status`(`user_id` ASC, `status` ASC) USING BTREE,
+  INDEX `idx_dept_time`(`dept_id` ASC, `expected_date` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM绂昏亴鐢宠琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_resignation_application
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_salary_calculation
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_salary_calculation`;
+CREATE TABLE `hrm_salary_calculation`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏍哥畻ID',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏍哥畻鍗曞彿',
+  `period` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏍哥畻鍛ㄦ湡锛堝2024-01锛�',
+  `user_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `dept_id` bigint NOT NULL COMMENT '閮ㄩ棬ID',
+  `base_salary` decimal(12, 2) NOT NULL COMMENT '鍩烘湰宸ヨ祫',
+  `performance_salary` decimal(12, 2) NULL DEFAULT NULL COMMENT '缁╂晥宸ヨ祫',
+  `overtime_pay` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '鍔犵彮宸ヨ祫',
+  `meal_allowance` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '椁愯ˉ',
+  `transport_allowance` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '浜ら�氳ˉ璐�',
+  `other_allowance` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '鍏朵粬琛ヨ创',
+  `social_security_deduction` decimal(12, 2) NULL DEFAULT NULL COMMENT '绀句繚鎵i櫎',
+  `housing_fund_deduction` decimal(12, 2) NULL DEFAULT NULL COMMENT '鍏Н閲戞墸闄�',
+  `tax_deduction` decimal(12, 2) NULL DEFAULT NULL COMMENT '涓◣鎵i櫎',
+  `other_deduction` decimal(12, 2) NULL DEFAULT 0.00 COMMENT '鍏朵粬鎵i櫎',
+  `leave_deduction` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '璇峰亣鎵f',
+  `actual_salary` decimal(12, 2) NOT NULL COMMENT '瀹炲彂宸ヨ祫',
+  `work_days` tinyint NULL DEFAULT NULL COMMENT '鍑哄嫟澶╂暟',
+  `overtime_hours` decimal(4, 2) NULL DEFAULT NULL COMMENT '鍔犵彮鏃堕暱',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-寰呯‘璁わ紝10-宸茬‘璁わ紝20-宸插彂鏀�',
+  `confirm_time` datetime NULL DEFAULT NULL COMMENT '纭鏃堕棿',
+  `confirm_user_id` bigint NULL DEFAULT NULL COMMENT '纭浜篒D',
+  `payment_time` datetime NULL DEFAULT NULL COMMENT '鍙戞斁鏃堕棿',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_user_period`(`user_id` ASC, `period` ASC) USING BTREE,
+  INDEX `idx_dept_period`(`dept_id` ASC, `period` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM钖叕鏍哥畻璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_salary_calculation
+-- ----------------------------
+INSERT INTO `hrm_salary_calculation` VALUES (1, 'SC202607060001', '2026-01', 3, 104, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 840.00, 960.00, 36.00, 0.00, 0.00, 6164.00, 22, 0.00, 10, '2026-07-07 13:34:14', NULL, NULL, NULL, '142', '2026-07-06 16:22:07', '142', '2026-07-06 16:22:07', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (2, 'SC202607060002', '2026-04', 3, 104, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 840.00, 960.00, 36.00, 0.00, 0.00, 6164.00, 22, 0.00, 10, '2026-07-07 13:04:06', NULL, NULL, NULL, '142', '2026-07-06 16:48:45', '142', '2026-07-06 16:48:45', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (3, 'SC202607070001', '2026-05', 3, 103, 8000.00, 1000.00, 500.00, 0.00, 0.00, 0.00, 525.00, 600.00, 56.25, 0.00, 0.00, 8318.75, 22, 0.00, 20, '2026-07-07 11:45:52', NULL, '2026-07-07 14:42:39', NULL, '1', '2026-07-07 11:14:14', '1', '2026-07-07 11:14:14', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (4, 'SC202607070002', '2026-01', 4, 106, 5000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 735.00, 840.00, 0.00, 0.00, 0.00, 3425.00, 22, 0.00, 10, '2026-07-07 13:35:33', NULL, NULL, NULL, '142', '2026-07-07 13:35:31', '142', '2026-07-07 13:35:31', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (5, 'SC202607070003', '2026-01', 3, 103, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 525.00, 600.00, 56.25, 0.00, 0.00, 6818.75, 22, 0.00, 10, '2026-07-07 13:36:33', NULL, NULL, NULL, '142', '2026-07-07 13:35:31', '142', '2026-07-07 13:35:31', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (6, 'SC202607070004', '2026-01', 5, 106, 6000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 630.00, 720.00, 0.00, 0.00, 0.00, 4650.00, 22, 0.00, 10, '2026-07-07 13:36:33', NULL, NULL, NULL, '142', '2026-07-07 13:35:31', '142', '2026-07-07 13:35:31', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (7, 'SC202607070005', '2026-02', 4, 106, 5000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 735.00, 840.00, 0.00, 0.00, 0.00, 3425.00, 22, 0.00, 20, '2026-07-07 14:01:00', NULL, '2026-07-07 14:49:04', NULL, '142', '2026-07-07 14:00:07', '142', '2026-07-07 14:00:07', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (8, 'SC202607070006', '2026-02', 3, 103, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 525.00, 600.00, 56.25, 0.00, 0.00, 6818.75, 22, 0.00, 20, '2026-07-07 14:00:14', NULL, '2026-07-07 14:49:01', NULL, '142', '2026-07-07 14:00:07', '142', '2026-07-07 14:00:07', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (9, 'SC202607070007', '2026-02', 5, 106, 6000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 630.00, 720.00, 0.00, 0.00, 0.00, 4650.00, 22, 0.00, 20, '2026-07-07 14:00:08', NULL, '2026-07-07 14:49:04', NULL, '142', '2026-07-07 14:00:07', '142', '2026-07-07 14:00:07', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (10, 'SC202607070008', '2026-03', 4, 106, 5000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 735.00, 840.00, 0.00, 0.00, 0.00, 3425.00, 22, 0.00, 20, '2026-07-07 14:02:08', NULL, '2026-07-07 14:48:32', NULL, '142', '2026-07-07 14:01:52', '142', '2026-07-07 14:01:52', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (11, 'SC202607070009', '2026-03', 3, 103, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 525.00, 600.00, 56.25, 0.00, 0.00, 6818.75, 22, 0.00, 20, '2026-07-07 14:02:08', NULL, '2026-07-07 14:48:28', NULL, '142', '2026-07-07 14:01:52', '142', '2026-07-07 14:01:52', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (12, 'SC202607070010', '2026-03', 5, 106, 6000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 630.00, 720.00, 0.00, 0.00, 0.00, 4650.00, 22, 0.00, 20, '2026-07-07 14:01:55', NULL, '2026-07-07 14:48:44', NULL, '142', '2026-07-07 14:01:52', '142', '2026-07-07 14:01:52', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (13, 'SC202607070011', '2026-05', 4, 106, 5000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 735.00, 840.00, 0.00, 0.00, 0.00, 3425.00, 22, 0.00, 20, '2026-07-07 14:12:49', NULL, '2026-07-07 14:42:39', NULL, '142', '2026-07-07 14:12:16', '142', '2026-07-07 14:12:16', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (14, 'SC202607070012', '2026-05', 5, 106, 6000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 630.00, 720.00, 0.00, 0.00, 0.00, 4650.00, 22, 0.00, 20, '2026-07-07 14:12:31', NULL, '2026-07-07 14:42:39', NULL, '142', '2026-07-07 14:12:16', '142', '2026-07-07 14:12:16', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (15, 'SC202607070013', '2026-06', 4, 106, 5000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 735.00, 840.00, 0.00, 0.00, 0.00, 3425.00, 22, 0.00, 20, '2026-07-07 14:30:40', NULL, '2026-07-07 14:41:50', NULL, '142', '2026-07-07 14:30:34', '142', '2026-07-07 14:30:34', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (16, 'SC202607070014', '2026-06', 3, 103, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 525.00, 600.00, 56.25, 0.00, 0.00, 6818.75, 22, 0.00, 20, '2026-07-07 14:30:38', NULL, '2026-07-07 14:41:50', NULL, '142', '2026-07-07 14:30:34', '142', '2026-07-07 14:30:34', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (17, 'SC202607070015', '2026-06', 5, 106, 6000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 630.00, 720.00, 0.00, 0.00, 0.00, 4650.00, 22, 0.00, 20, '2026-07-07 14:30:37', NULL, '2026-07-07 14:41:50', NULL, '142', '2026-07-07 14:30:34', '142', '2026-07-07 14:30:34', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (18, 'SC202607070016', '2026-08', 4, 106, 5000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 735.00, 840.00, 0.00, 0.00, 0.00, 3425.00, 22, 0.00, 20, '2026-07-07 14:53:25', NULL, '2026-07-07 14:53:42', NULL, '142', '2026-07-07 14:53:20', '142', '2026-07-07 14:53:20', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (19, 'SC202607070017', '2026-08', 3, 103, 8000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 525.00, 600.00, 56.25, 0.00, 0.00, 6818.75, 22, 0.00, 20, '2026-07-07 14:53:24', NULL, '2026-07-07 14:53:36', NULL, '142', '2026-07-07 14:53:20', '142', '2026-07-07 14:53:20', b'0');
+INSERT INTO `hrm_salary_calculation` VALUES (20, 'SC202607070018', '2026-08', 5, 106, 6000.00, 0.00, 0.00, 0.00, 0.00, 0.00, 630.00, 720.00, 0.00, 0.00, 0.00, 4650.00, 22, 0.00, 20, '2026-07-07 14:53:22', NULL, '2026-07-07 14:53:42', NULL, '142', '2026-07-07 14:53:20', '142', '2026-07-07 14:53:20', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_salary_payment
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_salary_payment`;
+CREATE TABLE `hrm_salary_payment`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍙戞斁ID',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙戞斁鍗曞彿',
+  `period` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙戞斁鍛ㄦ湡',
+  `total_amount` decimal(14, 2) NULL DEFAULT NULL COMMENT '鍙戞斁鎬婚噾棰�',
+  `total_count` int NULL DEFAULT NULL COMMENT '鍙戞斁浜烘暟',
+  `payment_method` tinyint NULL DEFAULT NULL COMMENT '鍙戞斁鏂瑰紡锛�1-閾惰杞处锛�2-鐜伴噾',
+  `payment_time` datetime NULL DEFAULT NULL COMMENT '鍙戞斁鏃堕棿',
+  `status` tinyint NULL DEFAULT 0 COMMENT '鐘舵�侊細0-寰呭彂鏀撅紝10-宸插彂鏀�',
+  `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閾惰鍥炲崟闄勪欢',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_period`(`period` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM钖祫鍙戞斁鍙拌处琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_salary_payment
+-- ----------------------------
+INSERT INTO `hrm_salary_payment` VALUES (1, 'SF202607070003', '2026-02', 14893.75, 3, NULL, '2026-07-07 14:49:04', 10, NULL, NULL, '142', '2026-07-07 14:01:00', '142', '2026-07-07 14:01:00', b'0');
+INSERT INTO `hrm_salary_payment` VALUES (2, 'SF202607070004', '2026-03', 14893.75, 3, NULL, NULL, 0, NULL, NULL, '142', '2026-07-07 14:02:08', '142', '2026-07-07 14:02:08', b'0');
+INSERT INTO `hrm_salary_payment` VALUES (3, 'SF202607070005', '2026-05', 16393.75, 3, NULL, '2026-07-07 14:42:39', 10, NULL, NULL, '142', '2026-07-07 14:12:49', '142', '2026-07-07 14:12:49', b'0');
+INSERT INTO `hrm_salary_payment` VALUES (4, 'SF202607070006', '2026-06', 14893.75, 3, NULL, '2026-07-07 14:41:50', 10, NULL, NULL, '142', '2026-07-07 14:30:40', '142', '2026-07-07 14:30:40', b'0');
+INSERT INTO `hrm_salary_payment` VALUES (5, 'SF202607070007', '2026-08', 14893.75, 3, NULL, '2026-07-07 14:53:42', 10, NULL, NULL, '142', '2026-07-07 14:53:25', '142', '2026-07-07 14:53:25', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_salary_payment_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_salary_payment_detail`;
+CREATE TABLE `hrm_salary_payment_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `payment_id` bigint NOT NULL COMMENT '鍙戞斁鍙拌处ID',
+  `calculation_id` bigint NOT NULL COMMENT '钖叕鏍哥畻ID',
+  `user_id` bigint NOT NULL COMMENT '鍛樺伐ID',
+  `dept_id` bigint NULL DEFAULT NULL COMMENT '閮ㄩ棬ID',
+  `actual_salary` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '瀹炲彂宸ヨ祫',
+  `status` int NOT NULL DEFAULT 0 COMMENT '鍙戞斁鐘舵�侊細0-寰呭彂鏀撅紝10-宸插彂鏀�',
+  `payment_time` datetime NULL DEFAULT NULL COMMENT '鍙戞斁鏃堕棿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓浜�',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊浜�',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_payment_id`(`payment_id` ASC) USING BTREE,
+  INDEX `idx_calculation_id`(`calculation_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '钖祫鍙戞斁鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_salary_payment_detail
+-- ----------------------------
+INSERT INTO `hrm_salary_payment_detail` VALUES (1, 1, 8, 3, 103, 6818.75, 10, '2026-07-07 14:49:01', NULL, '2026-07-07 14:01:00', '2026-07-07 14:01:00', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (2, 1, 7, 4, 106, 3425.00, 10, '2026-07-07 14:49:04', NULL, '2026-07-07 14:01:00', '2026-07-07 14:01:00', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (3, 1, 9, 5, 106, 4650.00, 10, '2026-07-07 14:49:04', NULL, '2026-07-07 14:01:00', '2026-07-07 14:01:00', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (4, 2, 11, 3, 103, 6818.75, 10, '2026-07-07 14:48:28', NULL, '2026-07-07 14:02:08', '2026-07-07 14:02:08', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (5, 2, 10, 4, 106, 3425.00, 10, '2026-07-07 14:48:32', NULL, '2026-07-07 14:02:08', '2026-07-07 14:02:08', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (6, 2, 12, 5, 106, 4650.00, 10, '2026-07-07 14:48:44', NULL, '2026-07-07 14:02:08', '2026-07-07 14:02:08', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (7, 3, 3, 3, 103, 8318.75, 10, '2026-07-07 14:42:39', NULL, '2026-07-07 14:12:49', '2026-07-07 14:12:49', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (8, 3, 13, 4, 106, 3425.00, 10, '2026-07-07 14:42:39', NULL, '2026-07-07 14:12:49', '2026-07-07 14:12:49', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (9, 3, 14, 5, 106, 4650.00, 10, '2026-07-07 14:42:39', NULL, '2026-07-07 14:12:49', '2026-07-07 14:12:49', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (10, 4, 16, 3, 103, 6818.75, 10, '2026-07-07 14:41:50', NULL, '2026-07-07 14:30:40', '2026-07-07 14:30:40', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (11, 4, 15, 4, 106, 3425.00, 10, '2026-07-07 14:41:50', NULL, '2026-07-07 14:30:40', '2026-07-07 14:30:40', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (12, 4, 17, 5, 106, 4650.00, 10, '2026-07-07 14:41:50', NULL, '2026-07-07 14:30:40', '2026-07-07 14:30:40', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (13, 5, 19, 3, 103, 6818.75, 10, '2026-07-07 14:53:36', NULL, '2026-07-07 14:53:25', '2026-07-07 14:53:25', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (14, 5, 18, 4, 106, 3425.00, 10, '2026-07-07 14:53:42', NULL, '2026-07-07 14:53:25', '2026-07-07 14:53:25', '142', '142', b'0');
+INSERT INTO `hrm_salary_payment_detail` VALUES (15, 5, 20, 5, 106, 4650.00, 10, '2026-07-07 14:53:42', NULL, '2026-07-07 14:53:25', '2026-07-07 14:53:25', '142', '142', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_salary_structure
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_salary_structure`;
+CREATE TABLE `hrm_salary_structure`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缁撴瀯ID',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '缁撴瀯鍚嶇О',
+  `base_salary` decimal(12, 2) NOT NULL COMMENT '鍩烘湰宸ヨ祫',
+  `performance_ratio` decimal(4, 2) NULL DEFAULT 0.00 COMMENT '缁╂晥宸ヨ祫鍗犳瘮锛�%锛�',
+  `overtime_pay_ratio` decimal(4, 2) NULL DEFAULT 1.50 COMMENT '鍔犵彮宸ヨ祫鍊嶇巼',
+  `social_security_base` decimal(12, 2) NULL DEFAULT NULL COMMENT '绀句繚鍩烘暟',
+  `housing_fund_base` decimal(12, 2) NULL DEFAULT NULL COMMENT '鍏Н閲戝熀鏁�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤锛�1-绂佺敤',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM钖叕缁撴瀯琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_salary_structure
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for hrm_social_security_scheme
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_social_security_scheme`;
+CREATE TABLE `hrm_social_security_scheme`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏂规ID',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏂规鍚嶇О',
+  `effective_date` date NOT NULL COMMENT '鐢熸晥鏃ユ湡',
+  `pension_company_ratio` decimal(5, 4) NOT NULL DEFAULT 0.1600 COMMENT '鍏昏�佷繚闄╀紒涓氱即绾虫瘮渚�',
+  `pension_personal_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0800 COMMENT '鍏昏�佷繚闄╀釜浜虹即绾虫瘮渚�',
+  `medical_company_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0950 COMMENT '鍖荤枟淇濋櫓浼佷笟缂寸撼姣斾緥',
+  `medical_personal_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0200 COMMENT '鍖荤枟淇濋櫓涓汉缂寸撼姣斾緥',
+  `unemployment_company_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0050 COMMENT '澶变笟淇濋櫓浼佷笟缂寸撼姣斾緥',
+  `unemployment_personal_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0050 COMMENT '澶变笟淇濋櫓涓汉缂寸撼姣斾緥',
+  `work_injury_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0050 COMMENT '宸ヤ激淇濋櫓浼佷笟缂寸撼姣斾緥',
+  `maternity_ratio` decimal(5, 4) NOT NULL DEFAULT 0.0050 COMMENT '鐢熻偛淇濋櫓浼佷笟缂寸撼姣斾緥',
+  `housing_fund_company_ratio` decimal(5, 4) NOT NULL DEFAULT 0.1200 COMMENT '鍏Н閲戜紒涓氱即绾虫瘮渚�',
+  `housing_fund_personal_ratio` decimal(5, 4) NOT NULL DEFAULT 0.1200 COMMENT '鍏Н閲戜釜浜虹即绾虫瘮渚�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤锛�1-绂佺敤',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_effective_date`(`effective_date` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM绀句繚鍏Н閲戞柟妗堣〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_social_security_scheme
+-- ----------------------------
+INSERT INTO `hrm_social_security_scheme` VALUES (1, '2024骞村崡閫氬競鏍囧噯', '2024-01-01', 0.1600, 0.0800, 0.0950, 0.0200, 0.0050, 0.0050, 0.0050, 0.0050, 0.1200, 0.1200, 0, '2024骞村崡閫氬競绀句繚鍏Н閲戠即绾虫爣鍑�', '1', '2026-07-07 01:24:15', '1', '2026-07-07 01:24:15', b'0');
+INSERT INTO `hrm_social_security_scheme` VALUES (2, '2025骞寸ぞ淇�', '2026-07-07', 0.1600, 0.0800, 0.0950, 0.0200, 0.0050, 0.0050, 0.0050, 0.0050, 0.1200, 0.1200, 0, NULL, '1', '2026-07-07 10:28:39', '1', '2026-07-07 10:28:39', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_tax_rate_config
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_tax_rate_config`;
+CREATE TABLE `hrm_tax_rate_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '閰嶇疆ID',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閰嶇疆鍚嶇О',
+  `effective_date` date NOT NULL COMMENT '鐢熸晥鏃ユ湡',
+  `level` tinyint NOT NULL COMMENT '绋庣巼绾ф暟锛�1-7',
+  `min_amount` decimal(12, 2) NOT NULL COMMENT '搴旂撼绋庢墍寰楅涓嬮檺锛堝惈锛�',
+  `max_amount` decimal(12, 2) NOT NULL COMMENT '搴旂撼绋庢墍寰楅涓婇檺锛堜笉鍚級锛�0琛ㄧず鏃犱笂闄�',
+  `tax_rate` decimal(5, 4) NOT NULL COMMENT '绋庣巼',
+  `quick_deduction` decimal(12, 2) NOT NULL DEFAULT 0.00 COMMENT '閫熺畻鎵i櫎鏁�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鍚敤锛�1-绂佺敤',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_effective_date`(`effective_date` ASC) USING BTREE,
+  INDEX `idx_level`(`level` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM涓◣绋庣巼閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_tax_rate_config
+-- ----------------------------
+INSERT INTO `hrm_tax_rate_config` VALUES (1, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 1, 0.00, 36000.00, 0.0300, 0.00, 0, '涓嶈秴杩�36000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+INSERT INTO `hrm_tax_rate_config` VALUES (2, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 2, 36000.00, 144000.00, 0.1000, 2520.00, 0, '瓒呰繃36000鍏冭嚦144000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+INSERT INTO `hrm_tax_rate_config` VALUES (3, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 3, 144000.00, 300000.00, 0.2000, 16920.00, 0, '瓒呰繃144000鍏冭嚦300000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+INSERT INTO `hrm_tax_rate_config` VALUES (4, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 4, 300000.00, 420000.00, 0.2500, 31920.00, 0, '瓒呰繃300000鍏冭嚦420000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+INSERT INTO `hrm_tax_rate_config` VALUES (5, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 5, 420000.00, 660000.00, 0.3000, 52920.00, 0, '瓒呰繃420000鍏冭嚦660000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+INSERT INTO `hrm_tax_rate_config` VALUES (6, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 6, 660000.00, 960000.00, 0.3500, 85920.00, 0, '瓒呰繃660000鍏冭嚦960000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+INSERT INTO `hrm_tax_rate_config` VALUES (7, '2024骞翠釜绋庣◣鐜囪〃', '2024-01-01', 7, 960000.00, 0.00, 0.4500, 181920.00, 0, '瓒呰繃960000鍏�', '1', '2026-07-06 07:28:36', '1', '2026-07-06 07:28:36', b'0');
+
+-- ----------------------------
+-- Table structure for hrm_transfer_application
+-- ----------------------------
+DROP TABLE IF EXISTS `hrm_transfer_application`;
+CREATE TABLE `hrm_transfer_application`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐢宠ID',
+  `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢宠鍗曞彿',
+  `user_id` bigint NOT NULL COMMENT '鐢宠浜篒D',
+  `current_dept_id` bigint NOT NULL COMMENT '鍘熼儴闂↖D',
+  `current_post_id` bigint NOT NULL COMMENT '鍘熷矖浣岻D',
+  `target_dept_id` bigint NOT NULL COMMENT '鐩爣閮ㄩ棬ID',
+  `target_post_id` bigint NOT NULL COMMENT '鐩爣宀椾綅ID',
+  `transfer_type` tinyint NOT NULL COMMENT '璋冨矖绫诲瀷锛�1-骞宠皟锛�2-鍗囪亴锛�3-闄嶈亴',
+  `effective_date` date NOT NULL COMMENT '鐢熸晥鏃ユ湡',
+  `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璋冨矖鍘熷洜',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊細0-鑽夌锛�10-瀹℃壒涓紝20-閫氳繃锛�30-椹冲洖锛�40-鎾ら攢',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM娴佺▼瀹炰緥ID',
+  `approve_time` datetime NULL DEFAULT NULL COMMENT '瀹℃壒瀹屾垚鏃堕棿',
+  `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勪欢鍦板潃',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_no`(`no` ASC) USING BTREE,
+  INDEX `idx_user_status`(`user_id` ASC, `status` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM璋冨矖鐢宠琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of hrm_transfer_application
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_channel
+-- ----------------------------
+DROP TABLE IF EXISTS `im_channel`;
+CREATE TABLE `im_channel`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '棰戦亾涓氬姟鐮�',
+  `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '棰戦亾鍚嶇О',
+  `avatar` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '棰戦亾澶村儚',
+  `sort` int NULL DEFAULT 0 COMMENT '鎺掑簭',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1绂佺敤锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_code`(`code` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 棰戦亾琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_channel
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_channel_material
+-- ----------------------------
+DROP TABLE IF EXISTS `im_channel_material`;
+CREATE TABLE `im_channel_material`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `channel_id` bigint NOT NULL COMMENT '棰戦亾缂栧彿',
+  `type` tinyint NOT NULL COMMENT '绱犳潗鍐呭绫诲瀷',
+  `title` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏍囬',
+  `cover_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '灏侀潰鍥�',
+  `summary` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎽樿',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '瀵屾枃鏈� HTML',
+  `url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璺宠浆閾炬帴',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_channel_id`(`channel_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 棰戦亾绱犳潗琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_channel_material
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_channel_message
+-- ----------------------------
+DROP TABLE IF EXISTS `im_channel_message`;
+CREATE TABLE `im_channel_message`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `channel_id` bigint NOT NULL COMMENT '棰戦亾缂栧彿',
+  `material_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈绱犳潗缂栧彿',
+  `type` tinyint NOT NULL COMMENT '娑堟伅绫诲瀷',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '娑堟伅鍐呭 JSON',
+  `receiver_user_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎺ユ敹浜虹紪鍙峰垪琛�',
+  `send_time` datetime NULL DEFAULT NULL COMMENT '鍙戦�佹椂闂�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_channel_id`(`channel_id` ASC) USING BTREE,
+  INDEX `idx_send_time`(`send_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 棰戦亾娑堟伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_channel_message
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_conversation
+-- ----------------------------
+DROP TABLE IF EXISTS `im_conversation`;
+CREATE TABLE `im_conversation`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '浼氳瘽缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `conversation_type` tinyint NOT NULL COMMENT '浼氳瘽绫诲瀷锛�1绉佽亰 2缇よ亰锛�',
+  `target_id` bigint NOT NULL COMMENT '鐩爣缂栧彿锛堢鑱婁负鐢ㄦ埛ID锛岀兢鑱婁负缇D锛�',
+  `last_message_id` bigint NULL DEFAULT NULL COMMENT '鏈�鍚庢秷鎭紪鍙�',
+  `last_message_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庢秷鎭椂闂�',
+  `unread_count` int NOT NULL DEFAULT 0 COMMENT '鏈娑堟伅鏁�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL 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 INDEX `uk_user_target_type`(`user_id` ASC, `target_id` ASC, `conversation_type` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '浼氳瘽琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_conversation
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_conversation_read
+-- ----------------------------
+DROP TABLE IF EXISTS `im_conversation_read`;
+CREATE TABLE `im_conversation_read`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `conversation_type` tinyint NOT NULL COMMENT '浼氳瘽绫诲瀷锛�1绉佽亰 2缇よ亰 3棰戦亾锛�',
+  `target_id` bigint NOT NULL COMMENT '鐩爣缂栧彿',
+  `message_id` bigint NOT NULL COMMENT '鏈�澶у凡璇绘秷鎭紪鍙�',
+  `read_time` datetime NULL DEFAULT NULL COMMENT '鏈�杩戝凡璇绘椂闂�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_user_conv`(`user_id` ASC, `conversation_type` ASC, `target_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 浼氳瘽璇讳綅缃〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_conversation_read
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_face_pack
+-- ----------------------------
+DROP TABLE IF EXISTS `im_face_pack`;
+CREATE TABLE `im_face_pack`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄦ儏鍖呭悕绉�',
+  `icon` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '琛ㄦ儏鍖呭浘鏍�',
+  `sort` int NULL DEFAULT 0 COMMENT '鎺掑簭',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1绂佺敤锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 琛ㄦ儏鍖呰〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_face_pack
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_face_pack_item
+-- ----------------------------
+DROP TABLE IF EXISTS `im_face_pack_item`;
+CREATE TABLE `im_face_pack_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `pack_id` bigint NOT NULL COMMENT '鎵�灞炶〃鎯呭寘缂栧彿',
+  `url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄦ儏鍥� URL',
+  `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '琛ㄦ儏鍚�',
+  `width` int NULL DEFAULT NULL COMMENT '娓叉煋瀹藉害锛堝儚绱狅級',
+  `height` int NULL DEFAULT NULL COMMENT '娓叉煋楂樺害锛堝儚绱狅級',
+  `sort` int NULL DEFAULT 0 COMMENT '鎺掑簭',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1绂佺敤锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_pack_id`(`pack_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 琛ㄦ儏鍖呴」琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_face_pack_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_face_user_item
+-- ----------------------------
+DROP TABLE IF EXISTS `im_face_user_item`;
+CREATE TABLE `im_face_user_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鎵�灞炵敤鎴风紪鍙�',
+  `url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '琛ㄦ儏鍥� URL',
+  `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '琛ㄦ儏鍚�',
+  `width` int NULL DEFAULT NULL COMMENT '娓叉煋瀹藉害锛堝儚绱狅級',
+  `height` int NULL DEFAULT NULL COMMENT '娓叉煋楂樺害锛堝儚绱狅級',
+  `sort` int NULL DEFAULT 0 COMMENT '鎺掑簭',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 鐢ㄦ埛绉佹湁琛ㄦ儏琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_face_user_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_friend
+-- ----------------------------
+DROP TABLE IF EXISTS `im_friend`;
+CREATE TABLE `im_friend`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `friend_user_id` bigint NOT NULL COMMENT '濂藉弸鐢ㄦ埛缂栧彿',
+  `silent` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍏嶆墦鎵�',
+  `display_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '濂藉弸灞曠ず澶囨敞',
+  `add_source` tinyint NULL DEFAULT NULL COMMENT '娣诲姞鏉ユ簮',
+  `pinned` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁缃《鑱旂郴浜�',
+  `blocked` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鎷夐粦',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '濂藉弸鐘舵�侊紙0姝e父 1绂佺敤/宸插垹闄わ級',
+  `add_time` datetime NULL DEFAULT NULL COMMENT '娣诲姞濂藉弸鏃堕棿',
+  `delete_time` datetime NULL DEFAULT NULL COMMENT '鍒犻櫎濂藉弸鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_user_friend`(`user_id` ASC, `friend_user_id` ASC) USING BTREE,
+  INDEX `idx_friend_user_id`(`friend_user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 濂藉弸鍏崇郴琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_friend
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_friend_request
+-- ----------------------------
+DROP TABLE IF EXISTS `im_friend_request`;
+CREATE TABLE `im_friend_request`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `from_user_id` bigint NOT NULL COMMENT '鍙戣捣鏂圭敤鎴风紪鍙�',
+  `to_user_id` bigint NOT NULL COMMENT '鎺ユ敹鏂圭敤鎴风紪鍙�',
+  `apply_content` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢宠鐞嗙敱',
+  `display_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙戣捣鏂瑰鎺ユ敹鏂圭殑澶囨敞',
+  `add_source` tinyint NULL DEFAULT NULL COMMENT '娣诲姞鏉ユ簮',
+  `handle_result` tinyint NULL DEFAULT NULL COMMENT '澶勭悊缁撴灉',
+  `handle_content` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶勭悊鐞嗙敱',
+  `handle_time` datetime NULL DEFAULT NULL COMMENT '澶勭悊鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_from_user_id`(`from_user_id` ASC) USING BTREE,
+  INDEX `idx_to_user_id`(`to_user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 濂藉弸鐢宠璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_friend_request
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_group
+-- ----------------------------
+DROP TABLE IF EXISTS `im_group`;
+CREATE TABLE `im_group`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '缇ゅ悕绉�',
+  `owner_user_id` bigint NOT NULL COMMENT '缇や富鐢ㄦ埛缂栧彿',
+  `avatar` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缇ゅご鍍�',
+  `notice` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缇ゅ叕鍛�',
+  `join_approval` bit(1) NULL DEFAULT b'0' COMMENT '杩涚兢鏄惁闇�瀹℃壒',
+  `banned` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁灏佺',
+  `banned_reason` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '灏佺鍘熷洜',
+  `banned_time` datetime NULL DEFAULT NULL COMMENT '灏佺鏃堕棿',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '缇ょ姸鎬侊紙0姝e父 1宸茶В鏁o級',
+  `dissolved_time` datetime NULL DEFAULT NULL COMMENT '瑙f暎鏃堕棿',
+  `muted_all` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍏ㄧ兢绂佽█',
+  `pinned_message_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缇ょ疆椤舵秷鎭紪鍙峰垪琛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_owner_user_id`(`owner_user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 缇や俊鎭〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_group
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_group_member
+-- ----------------------------
+DROP TABLE IF EXISTS `im_group_member`;
+CREATE TABLE `im_group_member`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `group_id` bigint NOT NULL COMMENT '缇ょ紪鍙�',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `display_user_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁勫唴鏄剧ず鍚�',
+  `group_remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缇ゅ娉�',
+  `silent` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍏嶆墦鎵�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鎴愬憳鐘舵�侊紙0姝e父 1绂佺敤锛�',
+  `role` tinyint NOT NULL DEFAULT 0 COMMENT '鎴愬憳瑙掕壊锛�0鏅�氭垚鍛� 1绠$悊鍛� 2缇や富锛�',
+  `join_time` datetime NULL DEFAULT NULL COMMENT '鍏ョ兢鏃堕棿',
+  `add_source` tinyint NULL DEFAULT NULL COMMENT '鍔犲叆鏉ユ簮',
+  `inviter_user_id` bigint NULL DEFAULT NULL COMMENT '閭�璇蜂汉鐢ㄦ埛缂栧彿',
+  `quit_time` datetime NULL DEFAULT NULL COMMENT '閫�缇ゆ椂闂�',
+  `mute_end_time` datetime NULL DEFAULT NULL COMMENT '绂佽█鍒版湡鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_group_user`(`group_id` ASC, `user_id` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 缇ゆ垚鍛樿〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_group_member
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_group_message
+-- ----------------------------
+DROP TABLE IF EXISTS `im_group_message`;
+CREATE TABLE `im_group_message`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `client_message_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛绔秷鎭紪鍙�',
+  `sender_id` bigint NOT NULL COMMENT '鍙戦�佷汉缂栧彿',
+  `group_id` bigint NOT NULL COMMENT '缇ょ紪鍙�',
+  `type` tinyint NOT NULL COMMENT '娑堟伅绫诲瀷',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '娑堟伅鍐呭 JSON',
+  `status` tinyint NULL DEFAULT NULL COMMENT '娑堟伅鐘舵��',
+  `send_time` datetime NULL DEFAULT NULL COMMENT '鍙戦�佹椂闂�',
+  `receiver_user_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹氬悜鎺ユ敹鐢ㄦ埛缂栧彿鍒楄〃',
+  `at_user_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '@鐩爣鐢ㄦ埛缂栧彿鍒楄〃',
+  `receipt_status` tinyint NULL DEFAULT NULL COMMENT '鍥炴墽鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_client_message_id`(`client_message_id` ASC) USING BTREE,
+  INDEX `idx_group_id`(`group_id` ASC) USING BTREE,
+  INDEX `idx_sender_id`(`sender_id` ASC) USING BTREE,
+  INDEX `idx_send_time`(`send_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 缇よ亰娑堟伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_group_message
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_group_message_receipt
+-- ----------------------------
+DROP TABLE IF EXISTS `im_group_message_receipt`;
+CREATE TABLE `im_group_message_receipt`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `message_id` bigint NOT NULL COMMENT '缇ゆ秷鎭紪鍙�',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `read_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '宸茶鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL 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 INDEX `uk_message_user`(`message_id` ASC, `user_id` ASC) USING BTREE,
+  INDEX `idx_message_id`(`message_id` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '缇ゆ秷鎭洖鎵ц〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_group_message_receipt
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_group_request
+-- ----------------------------
+DROP TABLE IF EXISTS `im_group_request`;
+CREATE TABLE `im_group_request`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `group_id` bigint NOT NULL COMMENT '缇ょ紪鍙�',
+  `user_id` bigint NOT NULL COMMENT '鐢宠浜�/琚個璇蜂汉鐢ㄦ埛缂栧彿',
+  `inviter_user_id` bigint NULL DEFAULT NULL COMMENT '閭�璇蜂汉鐢ㄦ埛缂栧彿',
+  `apply_content` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢宠鐞嗙敱',
+  `add_source` tinyint NULL DEFAULT NULL COMMENT '鍔犲叆鏉ユ簮',
+  `handle_result` tinyint NULL DEFAULT NULL COMMENT '澶勭悊缁撴灉',
+  `handle_user_id` bigint NULL DEFAULT NULL COMMENT '澶勭悊浜虹敤鎴风紪鍙�',
+  `handle_content` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶勭悊鐞嗙敱',
+  `handle_time` datetime NULL DEFAULT NULL COMMENT '澶勭悊鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_group_id`(`group_id` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 鍔犵兢鐢宠璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_group_request
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_message_file
+-- ----------------------------
+DROP TABLE IF EXISTS `im_message_file`;
+CREATE TABLE `im_message_file`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `message_id` bigint NOT NULL COMMENT '娑堟伅缂栧彿',
+  `message_type` tinyint NOT NULL COMMENT '娑堟伅绫诲瀷锛�102鍥剧墖 103璇煶 104瑙嗛 105鏂囦欢锛�',
+  `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鏂囦欢URL',
+  `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏂囦欢鍚�',
+  `file_size` bigint NULL DEFAULT NULL COMMENT '鏂囦欢澶у皬锛堝瓧鑺傦級',
+  `file_duration` int NULL DEFAULT NULL COMMENT '鏂囦欢鏃堕暱锛堢锛岃闊�/瑙嗛锛�',
+  `width` int NULL DEFAULT NULL COMMENT '瀹藉害锛堝浘鐗�/瑙嗛锛�',
+  `height` int NULL DEFAULT NULL COMMENT '楂樺害锛堝浘鐗�/瑙嗛锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL 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,
+  INDEX `idx_message_id`(`message_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '娑堟伅鏂囦欢琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_message_file
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_private_message
+-- ----------------------------
+DROP TABLE IF EXISTS `im_private_message`;
+CREATE TABLE `im_private_message`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `client_message_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛绔秷鎭紪鍙�',
+  `sender_id` bigint NOT NULL COMMENT '鍙戦�佷汉缂栧彿',
+  `receiver_id` bigint NOT NULL COMMENT '鎺ユ敹浜虹紪鍙�',
+  `type` tinyint NOT NULL COMMENT '娑堟伅绫诲瀷',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '娑堟伅鍐呭 JSON',
+  `status` tinyint NULL DEFAULT NULL COMMENT '娑堟伅鐘舵��',
+  `receipt_status` tinyint NULL DEFAULT NULL COMMENT '鍥炴墽鐘舵��',
+  `send_time` datetime NULL DEFAULT NULL COMMENT '鍙戦�佹椂闂�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_client_message_id`(`client_message_id` ASC) USING BTREE,
+  INDEX `idx_sender_id`(`sender_id` ASC) USING BTREE,
+  INDEX `idx_receiver_id`(`receiver_id` ASC) USING BTREE,
+  INDEX `idx_send_time`(`send_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 绉佽亰娑堟伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_private_message
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_rtc_call
+-- ----------------------------
+DROP TABLE IF EXISTS `im_rtc_call`;
+CREATE TABLE `im_rtc_call`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `room` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '涓氬姟閫氳瘽缂栧彿锛圲UID锛�',
+  `conversation_type` tinyint NOT NULL COMMENT '浼氳瘽绫诲瀷',
+  `media_type` tinyint NOT NULL COMMENT '濯掍綋绫诲瀷',
+  `inviter_user_id` bigint NOT NULL COMMENT '鍙戣捣浜虹敤鎴风紪鍙�',
+  `group_id` bigint NULL DEFAULT NULL COMMENT '缇ょ紪鍙�',
+  `status` tinyint NOT NULL COMMENT '閫氳瘽鐘舵��',
+  `end_reason` tinyint NULL DEFAULT NULL COMMENT '缁撴潫鍘熷洜',
+  `start_time` datetime NULL DEFAULT NULL COMMENT '鍙戣捣鏃堕棿',
+  `accept_time` datetime NULL DEFAULT NULL COMMENT '鎺ラ�氭椂闂�',
+  `end_time` datetime NULL DEFAULT NULL COMMENT '閫氳瘽缁撴潫鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_room`(`room` ASC) USING BTREE,
+  INDEX `idx_inviter_user_id`(`inviter_user_id` ASC) USING BTREE,
+  INDEX `idx_group_id`(`group_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 閫氳瘽璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_rtc_call
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_rtc_participant
+-- ----------------------------
+DROP TABLE IF EXISTS `im_rtc_participant`;
+CREATE TABLE `im_rtc_participant`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `call_id` bigint NOT NULL COMMENT '閫氳瘽缂栧彿',
+  `room` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '涓氬姟閫氳瘽缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鍙備笌鑰呯敤鎴风紪鍙�',
+  `role` tinyint NOT NULL COMMENT '鍙備笌瑙掕壊',
+  `status` tinyint NOT NULL COMMENT '鍙備笌鐘舵��',
+  `invite_time` datetime NULL DEFAULT NULL COMMENT '琚個璇锋椂闂�',
+  `accept_time` datetime NULL DEFAULT NULL COMMENT '鎺ュ惉鏃堕棿',
+  `leave_time` datetime NULL DEFAULT NULL COMMENT '绂诲紑鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_call_id`(`call_id` ASC) USING BTREE,
+  INDEX `idx_room`(`room` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 閫氳瘽鍙備笌鑰呰〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_rtc_participant
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_sensitive_word
+-- ----------------------------
+DROP TABLE IF EXISTS `im_sensitive_word`;
+CREATE TABLE `im_sensitive_word`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `word` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏁忔劅璇�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1绂佺敤锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_word`(`word` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'IM 鏁忔劅璇嶈〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_sensitive_word
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for im_user_online
+-- ----------------------------
+DROP TABLE IF EXISTS `im_user_online`;
+CREATE TABLE `im_user_online`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `online_status` tinyint NOT NULL DEFAULT 0 COMMENT '鍦ㄧ嚎鐘舵�侊紙0绂荤嚎 1鍦ㄧ嚎锛�',
+  `last_online_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庡湪绾挎椂闂�',
+  `last_offline_time` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庣绾挎椂闂�',
+  `device_type` tinyint NULL DEFAULT NULL COMMENT '璁惧绫诲瀷锛�1Web 2Android 3iOS锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL 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 INDEX `uk_user_id`(`user_id` ASC) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢ㄦ埛鍦ㄧ嚎鐘舵�佽〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of im_user_online
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for infra_api_access_log
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_api_access_log`;
+CREATE TABLE `infra_api_access_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏃ュ織涓婚敭',
+  `trace_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '閾捐矾杩借釜缂栧彿',
+  `user_id` bigint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛绫诲瀷',
+  `application_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '搴旂敤鍚�',
+  `request_method` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '璇锋眰鏂规硶鍚�',
+  `request_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '璇锋眰鍦板潃',
+  `request_params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '璇锋眰鍙傛暟',
+  `response_body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鍝嶅簲缁撴灉',
+  `user_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛 IP',
+  `user_agent` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴忚鍣� UA',
+  `operate_module` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎿嶄綔妯″潡',
+  `operate_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎿嶄綔鍚�',
+  `operate_type` tinyint NULL DEFAULT 0 COMMENT '鎿嶄綔鍒嗙被',
+  `begin_time` datetime NOT NULL COMMENT '寮�濮嬭姹傛椂闂�',
+  `end_time` datetime NOT NULL COMMENT '缁撴潫璇锋眰鏃堕棿',
+  `duration` int NOT NULL COMMENT '鎵ц鏃堕暱',
+  `result_code` int NOT NULL DEFAULT 0 COMMENT '缁撴灉鐮�',
+  `result_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '缁撴灉鎻愮ず',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 36333 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'API 璁块棶鏃ュ織琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_api_access_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for infra_api_error_log
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_api_error_log`;
+CREATE TABLE `infra_api_error_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `trace_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閾捐矾杩借釜缂栧彿',
+  `user_id` bigint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛绫诲瀷',
+  `application_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '搴旂敤鍚�',
+  `request_method` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璇锋眰鏂规硶鍚�',
+  `request_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璇锋眰鍦板潃',
+  `request_params` varchar(8000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璇锋眰鍙傛暟',
+  `user_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛 IP',
+  `user_agent` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴忚鍣� UA',
+  `exception_time` datetime NOT NULL COMMENT '寮傚父鍙戠敓鏃堕棿',
+  `exception_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '寮傚父鍚�',
+  `exception_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '寮傚父瀵艰嚧鐨勬秷鎭�',
+  `exception_root_cause_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '寮傚父瀵艰嚧鐨勬牴娑堟伅',
+  `exception_stack_trace` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '寮傚父鐨勬爤杞ㄨ抗',
+  `exception_class_name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '寮傚父鍙戠敓鐨勭被鍏ㄥ悕',
+  `exception_file_name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '寮傚父鍙戠敓鐨勭被鏂囦欢',
+  `exception_method_name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '寮傚父鍙戠敓鐨勬柟娉曞悕',
+  `exception_line_number` int NOT NULL COMMENT '寮傚父鍙戠敓鐨勬柟娉曟墍鍦ㄨ',
+  `process_status` tinyint NOT NULL COMMENT '澶勭悊鐘舵��',
+  `process_time` datetime NULL DEFAULT NULL COMMENT '澶勭悊鏃堕棿',
+  `process_user_id` int NULL DEFAULT 0 COMMENT '澶勭悊鐢ㄦ埛缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 24446 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绯荤粺寮傚父鏃ュ織' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_api_error_log
+-- ----------------------------
+INSERT INTO `infra_api_error_log` VALUES (24233, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:09:15', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:09:16', '1', '2026-06-22 15:09:16', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24234, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:09:21', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:09:21', '1', '2026-06-22 15:09:21', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24235, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:09:21', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:09:21', '1', '2026-06-22 15:09:21', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24236, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:16:56', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:16:56', '1', '2026-06-22 15:16:56', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24237, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:17:04', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:17:04', '1', '2026-06-22 15:17:04', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24238, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:18:59', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:214)\r\n	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList(CollectionUtils.java:68)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.getRoleListFromCache(RoleServiceImpl.java:225)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleListFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:263)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAcce', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:18:59', '1', '2026-06-22 15:18:59', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24239, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/role/page', '{\"query\":{\"code\":\"\",\"pageNo\":\"1\",\"name\":\"\",\"pageSize\":\"10\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:19:19', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:221)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:19:19', '1', '2026-06-22 15:19:19', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24240, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:19:36', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:159)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:19:36', '1', '2026-06-22 15:19:36', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24241, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:35:05', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:35:05', NULL, '2026-06-22 15:35:05', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24242, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:37:05', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:37:05', NULL, '2026-06-22 15:37:05', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24243, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:39:05', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:39:05', NULL, '2026-06-22 15:39:05', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24244, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:40', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:40', NULL, '2026-06-22 15:41:40', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24245, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:40', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:40', NULL, '2026-06-22 15:41:40', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24246, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24247, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24248, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24249, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24250, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24251, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24252, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24253, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/refresh-token', '{\"query\":{\"refreshToken\":\"35a51aa055ee4ea18486a012390aa5f0\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:41', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.refreshAccessToken(OAuth2TokenServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:41', NULL, '2026-06-22 15:41:41', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24254, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"tenantName\\\":\\\"鑺嬮亾婧愮爜\\\",\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"admin123\\\",\\\"rememberMe\\\":true}\"}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:45', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.createAccessToken(OAuth2TokenServiceImpl.java:64)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB$', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:45', NULL, '2026-06-22 15:41:45', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24255, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"tenantName\\\":\\\"鑺嬮亾婧愮爜\\\",\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"admin123\\\",\\\"rememberMe\\\":true}\"}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:41:47', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.createAccessToken(OAuth2TokenServiceImpl.java:64)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB$', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:41:47', NULL, '2026-06-22 15:41:47', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24256, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"tenantName\\\":\\\"鑺嬮亾婧愮爜\\\",\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"admin123\\\",\\\"rememberMe\\\":true}\"}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:42:10', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.createAccessToken(OAuth2TokenServiceImpl.java:64)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB$', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:42:10', NULL, '2026-06-22 15:42:10', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24257, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"tenantName\\\":\\\"鑺嬮亾婧愮爜\\\",\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"admin123\\\",\\\"rememberMe\\\":true}\"}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:44:55', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.getOAuth2ClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl.validOAuthClientFromCache(OAuth2ClientServiceImpl.java:125)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService.validOAuthClientFromCache(OAuth2ClientService.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0.validOAuthClientFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl.createAccessToken(OAuth2TokenServiceImpl.java:64)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenServiceImpl$$SpringCGLIB$', 'cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientServiceImpl$$SpringCGLIB$$0', '<generated>', 'getOAuth2ClientFromCache', -1, 0, NULL, 0, NULL, '2026-06-22 15:44:55', NULL, '2026-06-22 15:44:55', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24258, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:46:31', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:46:31', '1', '2026-06-22 15:46:31', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24259, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:46:33', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:46:33', '1', '2026-06-22 15:46:33', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24260, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:46:34', 'java.lang.ClassCastException', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')', 'java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO (java.util.LinkedHashMap is in module java.base of loader \'bootstrap\'; cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO is in unnamed module of loader \'app\')\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.lambda$hasAnySuperAdmin$0(RoleServiceImpl.java:240)\r\n	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)\r\n	at java.base/java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1737)\r\n	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)\r\n	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)\r\n	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.hasAnySuperAdmin(RoleServiceImpl.java:239)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.hasAnySuperAdmin(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getRoleMenuListByRoleId(PermissionServiceImpl.java:190)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getRoleMenuListByRoleId(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.auth.AuthController.getPermissionInfo(AuthController.java:112)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.', 'cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0', '<generated>', 'getRoleFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:46:34', '1', '2026-06-22 15:46:34', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24261, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:19', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:221)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:19', '1', '2026-06-22 15:47:19', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24262, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:22', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:159)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:22', '1', '2026-06-22 15:47:22', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24263, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:23', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:159)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:23', '1', '2026-06-22 15:47:23', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24264, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:23', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:159)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:23', '1', '2026-06-22 15:47:23', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24265, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:25', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:159)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:25', '1', '2026-06-22 15:47:25', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24266, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/role/page', '{\"query\":{\"code\":\"\",\"pageNo\":\"1\",\"name\":\"\",\"pageSize\":\"10\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:27', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:221)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:27', '1', '2026-06-22 15:47:27', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24267, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/dept/list', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"100\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:32', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:221)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:32', '1', '2026-06-22 15:47:32', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24268, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/user/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:34', 'java.lang.ClassCastException', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.getUserRoleIdListByUserIdFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:261)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:221)\r\n	at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:453)\r\n	at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:97)\r\n	at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:114)\r\n	at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:267)\r\n	at org.springframework.security.authorization.method.ExpressionUtils.evaluate(ExpressionUtils.java:45)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:88)\r\n	at org.springframework.security.authorization.method.PreAuthorizeAuthorizationManager.authorize(PreAuthorizeAuthorizationManager.java:42)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:252)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.jav', 'cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0', '<generated>', 'getUserRoleIdListByUserIdFromCache', -1, 0, NULL, 0, '1', '2026-06-22 15:47:34', '1', '2026-06-22 15:47:34', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24269, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/dept/simple-list', '{\"query\":{},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:47:34', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: \r\n### Error querying database.  Cause: java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n### Cause: java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')', 'org.mybatis.spring.MyBatisSystemException: \r\n### Error querying database.  Cause: java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n### Cause: java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader \'bootstrap\')\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:101)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy113.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy133.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.dal.mysql.dept.DeptMapper.selectList(DeptMapper.java:16)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy133.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.service.dept.DeptServiceImpl.getDeptList(DeptServiceImpl.java:182)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.system.service.dept.DeptServiceImpl$$SpringCGLIB$$0.getDeptList(<generated>)\r\n	at cn.iocoder.yudao.module.system.controller.admin.dept.DeptController.getSimpleDeptList(DeptController.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAcces', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 101, 0, NULL, 0, '1', '2026-06-22 15:47:34', '1', '2026-06-22 15:47:34', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24270, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/user/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-22 15:50:35', 'java.lang.ClassCastException', 'ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader \'bootstrap\')', 'ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader \'bootstrap\')', 'java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader \'bootstrap\')\r\n	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:214)\r\n	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList(CollectionUtils.java:68)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl.getRoleListFromCache(RoleServiceImpl.java:225)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.RoleServiceImpl$$SpringCGLIB$$0.getRoleListFromCache(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.getEnableUserRoleListByUserIdFromCache(PermissionServiceImpl.java:263)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl.hasAnyPermissions(PermissionServiceImpl.java:70)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.permission.PermissionServiceImpl$$SpringCGLIB$$0.hasAnyPermissions(<generated>)\r\n	at cn.iocoder.yudao.module.system.api.permission.PermissionApiImpl.hasAnyPermissions(PermissionApiImpl.java:29)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasAnyPermissions(SecurityFrameworkServiceImpl.java:41)\r\n	at cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl.hasPermission(SecurityFrameworkServiceImpl.java:26)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:114)\r\n	at org.springframework.expre', 'java.util.stream.ReferencePipeline$3$1', 'ReferencePipeline.java', 'accept', 214, 0, NULL, 0, '1', '2026-06-22 15:50:35', '1', '2026-06-22 15:50:35', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24271, '', 1, 2, 'yudao-server', 'GET', '/admin-api/bpm/category/simple-list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:58:43', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/bpm/dal/mysql/category/BpmCategoryMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, code, description, status, sort, create_time, update_time, creator, updater, deleted FROM bpm_category WHERE deleted = 0 AND (status = ?) AND tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/bpm/dal/mysql/category/BpmCategoryMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, code, description, status, sort, create_time, update_time, creator, updater, deleted FROM bpm_category WHERE deleted = 0 AND (status = ?) AND tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy258.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectList(BaseMapperX.java:195)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy258.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.bpm.dal.mysql.category.BpmCategoryMapper.selectListByStatus(BpmCategoryMapper.java:43)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy258.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryServiceImpl.getCategoryListByStatus(BpmCategoryServiceImpl.java:121)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.b', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:58:44', '1', '2026-06-23 15:58:44', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24272, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/today-contact-count', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:58:51', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectOne(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:169)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectCountByTodayContact(CrmCustomerMapper.java:170)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCountByTodayContact(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getTodayContactCustomerCount(CrmCustomerServiceImpl.java:529)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:58:51', '1', '2026-06-23 15:58:51', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24273, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/page', '{\"query\":{\"contactStatus\":\"1\",\"sceneType\":\"1\",\"pageNo\":\"1\",\"pool\":\"\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:58:52', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectPage(CrmCustomerMapper.java:84)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getCustomerPage(CrmCustomerServiceImpl.java:498)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.inv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:58:52', '1', '2026-06-23 15:58:52', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24274, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/today-contact-count', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:58:52', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectOne(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:169)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectCountByTodayContact(CrmCustomerMapper.java:170)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCountByTodayContact(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getTodayContactCustomerCount(CrmCustomerServiceImpl.java:529)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:58:52', '1', '2026-06-23 15:58:52', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24275, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/today-contact-count', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:59:13', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectOne(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:169)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectCountByTodayContact(CrmCustomerMapper.java:170)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCountByTodayContact(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getTodayContactCustomerCount(CrmCustomerServiceImpl.java:529)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:59:13', '1', '2026-06-23 15:59:13', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24276, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/page', '{\"query\":{\"contactStatus\":\"1\",\"sceneType\":\"1\",\"pageNo\":\"1\",\"pool\":\"\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:59:13', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectPage(CrmCustomerMapper.java:84)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getCustomerPage(CrmCustomerServiceImpl.java:498)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.inv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:59:13', '1', '2026-06-23 15:59:13', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24277, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/today-contact-count', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:59:13', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectOne(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:169)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectCountByTodayContact(CrmCustomerMapper.java:170)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectCountByTodayContact(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getTodayContactCustomerCount(CrmCustomerServiceImpl.java:529)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:59:13', '1', '2026-06-23 15:59:13', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24278, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/page', '{\"query\":{\"sceneType\":\"1\",\"pageNo\":\"1\",\"pageSize\":\"20\",\"followUpStatus\":\"false\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:59:15', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.follow_up_status = ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.follow_up_status = ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectPage(CrmCustomerMapper.java:84)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getCustomerPage(CrmCustomerServiceImpl.java:498)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.ja', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:59:15', '1', '2026-06-23 15:59:15', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24279, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/clue/page', '{\"query\":{\"sceneType\":\"1\",\"pageNo\":\"1\",\"pageSize\":\"20\",\"transformStatus\":\"false\",\"followUpStatus\":\"false\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:59:16', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/clue/CrmClueMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_clue t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.transform_status = ? AND t.follow_up_status = ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/clue/CrmClueMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_clue t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.transform_status = ? AND t.follow_up_status = ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy277.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy277.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.clue.CrmClueMapper.selectPage(CrmClueMapper.java:38)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy277.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.clue.CrmClueServiceImpl.getCluePage(CrmClueServiceImpl.java:224)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at ', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:59:16', '1', '2026-06-23 15:59:16', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24280, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/page', '{\"query\":{\"contactStatus\":\"1\",\"sceneType\":\"1\",\"pageNo\":\"1\",\"pool\":\"\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 15:59:16', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectPage(CrmCustomerMapper.java:84)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getCustomerPage(CrmCustomerServiceImpl.java:498)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.inv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 15:59:16', '1', '2026-06-23 15:59:16', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24281, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/page', '{\"query\":{\"contactStatus\":\"1\",\"sceneType\":\"1\",\"pageNo\":\"1\",\"pool\":\"\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 16:02:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectPage(CrmCustomerMapper.java:84)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getCustomerPage(CrmCustomerServiceImpl.java:498)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.inv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 16:02:54', '1', '2026-06-23 16:02:54', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24282, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/customer/page', '{\"query\":{\"contactStatus\":\"1\",\"sceneType\":\"1\",\"pageNo\":\"1\",\"pool\":\"\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 16:02:55', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM crm_customer t WHERE t.deleted = 0 AND (t.owner_user_id = ? AND t.contact_next_time BETWEEN ? AND ?) AND t.tenant_id = 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.tenant_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper.selectPage(CrmCustomerMapper.java:84)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy268.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.customer.CrmCustomerServiceImpl.getCustomerPage(CrmCustomerServiceImpl.java:498)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.inv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-23 16:02:55', '1', '2026-06-23 16:02:55', b'0', 1);
+INSERT INTO `infra_api_error_log` VALUES (24283, '', 0, 0, 'yudao-server', 'GET', '/v3/api-docs/all', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-23 16:21:47', 'org.springframework.web.context.request.async.AsyncRequestNotUsableException', 'AsyncRequestNotUsableException: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleHttpServletResponse.handleIOException(StandardServletAsyncWebRequest.java:340)\r\n	at org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleServletOutputStream.write(StandardServletAsyncWebRequest.java:399)\r\n	at org.springframework.util.StreamUtils$NonClosingOutputStream.write(StreamUtils.java:311)\r\n	at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:110)\r\n	at org.springframework.http.converter.ByteArrayHttpMessageConverter.writeInternal(ByteArrayHttpMessageConverter.java:67)\r\n	at org.springframework.http.converter.ByteArrayHttpMessageConverter.writeInternal(ByteArrayHttpMessageConverter.java:38)\r\n	at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:232)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:340)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestF', 'org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleHttpServletResponse', 'StandardServletAsyncWebRequest.java', 'handleIOException', 340, 0, NULL, 0, NULL, '2026-06-23 16:21:47', NULL, '2026-06-23 16:21:47', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24284, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/qc/pending-inspect/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-24 09:50:20', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\r\n### The error may exist in file [D:\\鐗涢┈\\gitee\\ruoyi-vue-pro\\yudao-module-mes\\target\\classes\\mapper\\qc\\pendinginspect\\MesQcPendingInspectMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM (SELECT n.id AS sourceDocId, 100 AS sourceDocType, n.code AS sourceDocCode, l.id AS sourceLineId, n.arrival_date AS recordTime, 1 AS qcType, l.item_id AS itemId, l.arrival_quantity AS quantity, n.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_arrival_notice n JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id WHERE n.status = 2 AND l.iqc_check_flag = 1 AND l.iqc_id IS NULL AND n.deleted = 0 AND l.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 121 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.receipt_date AS recordTime, 1 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, r.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_outsource_receipt r JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id WHERE r.status = 1 AND rl.iqc_check_flag = 1 AND rl.iqc_id IS NULL AND r.deleted = 0 AND rl.deleted = 0 UNION ALL SELECT pf.id AS sourceDocId, 304 AS sourceDocType, pf.code AS sourceDocCode, ppl.id AS sourceLineId, pf.feedback_time AS recordTime, 2 AS qcType, ppl.item_id AS itemId, ppl.quantity AS quantity, NULL AS vendorId, pp.work_order_id AS workOrderId, pp.workstation_id AS workstationId, pp.task_id AS taskId, NULL AS clientId FROM mes_wm_product_produce_line ppl JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id WHERE ppl.quality_status = 0 AND ppl.deleted = 0 AND pp.deleted = 0 AND pf.deleted = 0 UNION ALL SELECT s.id AS sourceDocId, 118 AS sourceDocType, s.code AS sourceDocCode, sl.id AS sourceLineId, s.sales_date AS recordTime, 3 AS qcType, sl.item_id AS itemId, sl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, s.client_id AS clientId FROM mes_wm_product_sales s JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id WHERE sl.oqc_check_flag = 1 AND sl.oqc_id IS NULL AND s.status = 1 AND s.deleted = 0 AND sl.deleted = 0 UNION ALL SELECT ri.id AS sourceDocId, 116 AS sourceDocType, ri.code AS sourceDocCode, ril.id AS sourceLineId, ri.return_date AS recordTime, 4 AS qcType, ril.item_id AS itemId, ril.quantity AS quantity, NULL AS vendorId, ri.work_order_id AS workOrderId, ri.workstation_id AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_return_issue ri JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id WHERE ri.status = 1 AND ril.rqc_check_flag = 1 AND ril.rqc_id IS NULL AND ril.quality_status = 0 AND ri.deleted = 0 AND ril.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 119 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.return_date AS recordTime, 4 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, r.client_id AS clientId FROM mes_wm_return_sales r JOIN mes_wm_return_sales_line rl ON r.id = rl.return_id WHERE r.status = 1 AND rl.rqc_check_flag = 1 AND rl.rqc_id IS NULL AND rl.quality_status = 0 AND r.deleted = 0 AND rl.deleted = 0) t\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\r\n### The error may exist in file [D:\\鐗涢┈\\gitee\\ruoyi-vue-pro\\yudao-module-mes\\target\\classes\\mapper\\qc\\pendinginspect\\MesQcPendingInspectMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM (SELECT n.id AS sourceDocId, 100 AS sourceDocType, n.code AS sourceDocCode, l.id AS sourceLineId, n.arrival_date AS recordTime, 1 AS qcType, l.item_id AS itemId, l.arrival_quantity AS quantity, n.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_arrival_notice n JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id WHERE n.status = 2 AND l.iqc_check_flag = 1 AND l.iqc_id IS NULL AND n.deleted = 0 AND l.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 121 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.receipt_date AS recordTime, 1 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, r.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_outsource_receipt r JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id WHERE r.status = 1 AND rl.iqc_check_flag = 1 AND rl.iqc_id IS NULL AND r.deleted = 0 AND rl.deleted = 0 UNION ALL SELECT pf.id AS sourceDocId, 304 AS sourceDocType, pf.code AS sourceDocCode, ppl.id AS sourceLineId, pf.feedback_time AS recordTime, 2 AS qcType, ppl.item_id AS itemId, ppl.quantity AS quantity, NULL AS vendorId, pp.work_order_id AS workOrderId, pp.workstation_id AS workstationId, pp.task_id AS taskId, NULL AS clientId FROM mes_wm_product_produce_line ppl JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id WHERE ppl.quality_status = 0 AND ppl.deleted = 0 AND pp.deleted = 0 AND pf.deleted = 0 UNION ALL SELECT s.id AS sourceDocId, 118 AS sourceDocType, s.code AS sourceDocCode, sl.id AS sourceLineId, s.sales_date AS recordTime, 3 AS qcType, sl.item_id AS itemId, sl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, s.client_id AS clientId FROM mes_wm_product_sales s JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id WHERE sl.oqc_check_flag = 1 AND sl.oqc_id IS NULL AND s.status = 1 AND s.deleted = 0 AND sl.deleted = 0 UNION ALL SELECT ri.id AS sourceDocId, 116 AS sourceDocType, ri.code AS sourceDocCode, ril.id AS sourceLineId, ri.return_date AS recordTime, 4 AS qcType, ril.item_id AS itemId, ril.quantity AS quantity, NULL AS vendorId, ri.work_order_id AS workOrderId, ri.workstation_id AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_return_issue ri JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id WHERE ri.status = 1 AND ril.rqc_check_flag = 1 AND ril.rqc_id IS NULL AND ril.quality_status = 0 AND ri.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-24 09:50:20', '1', '2026-06-24 09:50:20', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24285, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782443435912\\\",\\\"supplierId\\\":1,\\\"items\\\":[{\\\"productId\\\":1,\\\"productUnitName\\\":\\\"111\\\",\\\"productBarCode\\\":\\\"1\\\",\\\"productPrice\\\":10,\\\"stockCount\\\":0,\\\"count\\\":1,\\\"totalProductPrice\\\":10,\\\"taxPercent\\\":0,\\\"taxPrice\\\":0,\\\"totalPrice\\\":10,\\\"seq\\\":\\\"row_528\\\",\\\"productUnitId\\\":1,\\\"productName\\\":\\\"淇℃伅\\\"}],\\\"discountPrice\\\":0,\\\"totalPrice\\\":10}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 11:10:49', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy314.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.createPurchaseOrder(ErpPurchaseOrderServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:3', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-06-26 11:10:49', '1', '2026-06-26 11:10:49', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24286, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782443435912\\\",\\\"supplierId\\\":1,\\\"items\\\":[{\\\"productId\\\":1,\\\"productUnitName\\\":\\\"111\\\",\\\"productBarCode\\\":\\\"1\\\",\\\"productPrice\\\":10,\\\"stockCount\\\":0,\\\"count\\\":1,\\\"totalProductPrice\\\":10,\\\"taxPercent\\\":1,\\\"taxPrice\\\":0.1,\\\"totalPrice\\\":10.1,\\\"seq\\\":\\\"row_528\\\",\\\"productUnitId\\\":1,\\\"productName\\\":\\\"淇℃伅\\\"}],\\\"discountPrice\\\":0,\\\"totalPrice\\\":10.1}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 11:10:59', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy314.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.createPurchaseOrder(ErpPurchaseOrderServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:3', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-06-26 11:10:59', '1', '2026-06-26 11:10:59', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24287, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782443435912\\\",\\\"supplierId\\\":1,\\\"items\\\":[{\\\"productId\\\":1,\\\"productUnitName\\\":\\\"111\\\",\\\"productBarCode\\\":\\\"1\\\",\\\"productPrice\\\":10,\\\"stockCount\\\":0,\\\"count\\\":1,\\\"totalProductPrice\\\":10,\\\"taxPercent\\\":1,\\\"taxPrice\\\":0.1,\\\"totalPrice\\\":10.1,\\\"seq\\\":\\\"row_528\\\",\\\"productUnitId\\\":1,\\\"productName\\\":\\\"淇℃伅\\\"}],\\\"discountPercent\\\":1,\\\"discountPrice\\\":0.1,\\\"totalPrice\\\":10}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 11:11:55', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy314.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.createPurchaseOrder(ErpPurchaseOrderServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:3', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-06-26 11:11:55', '1', '2026-06-26 11:11:55', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24288, '', 1, 2, 'yudao-server', 'PUT', '/admin-api/erp/purchase-order/update-status', '{\"query\":{\"id\":\"1\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 11:12:21', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.updatePurchaseOrderStatus(ErpPurchaseOrderServiceImpl.java:137)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl$$SpringCGLIB$$0.updatePurchaseOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.purchase.ErpPurchaseOrderController.updatePurchaseOrderStatus(ErpPurchaseOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(Authorizati', 'cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl', 'ErpPurchaseOrderServiceImpl.java', 'updatePurchaseOrderStatus', 137, 0, NULL, 0, '1', '2026-06-26 11:12:21', '1', '2026-06-26 11:12:21', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24289, '', 1, 2, 'yudao-server', 'PUT', '/admin-api/erp/purchase-order/update-status', '{\"query\":{\"id\":\"1\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 11:12:21', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.updatePurchaseOrderStatus(ErpPurchaseOrderServiceImpl.java:137)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl$$SpringCGLIB$$0.updatePurchaseOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.purchase.ErpPurchaseOrderController.updatePurchaseOrderStatus(ErpPurchaseOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(Authorizati', 'cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl', 'ErpPurchaseOrderServiceImpl.java', 'updatePurchaseOrderStatus', 137, 0, NULL, 0, '1', '2026-06-26 11:12:21', '1', '2026-06-26 11:12:21', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24290, '', 1, 2, 'yudao-server', 'PUT', '/admin-api/erp/purchase-order/update-status', '{\"query\":{\"id\":\"1\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 11:12:23', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.updatePurchaseOrderStatus(ErpPurchaseOrderServiceImpl.java:137)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl$$SpringCGLIB$$0.updatePurchaseOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.purchase.ErpPurchaseOrderController.updatePurchaseOrderStatus(ErpPurchaseOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(Authorizati', 'cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl', 'ErpPurchaseOrderServiceImpl.java', 'updatePurchaseOrderStatus', 137, 0, NULL, 0, '1', '2026-06-26 11:12:23', '1', '2026-06-26 11:12:23', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24291, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 14:41:02', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-26 14:41:02', '1', '2026-06-26 14:41:02', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24292, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 14:46:33', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-26 14:46:33', '1', '2026-06-26 14:46:33', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24293, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 14:46:50', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-26 14:46:50', '1', '2026-06-26 14:46:50', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24294, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 14:47:19', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-26 14:47:19', '1', '2026-06-26 14:47:19', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24295, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 14:47:44', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-26 14:47:44', '1', '2026-06-26 14:47:44', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24296, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/item-receipt/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"1321321\\\",\\\"name\\\":\\\"1212\\\",\\\"receiptDate\\\":\\\"1782458928187\\\",\\\"vendorId\\\":1,\\\"purchaseOrderCode\\\":\\\"1212\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-26 15:28:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy136.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy487.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy487.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy487.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-06-26 15:28:54', '1', '2026-06-26 15:28:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24297, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-29 11:17:25', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-29 11:17:25', '1', '2026-06-29 11:17:25', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24298, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-29 14:26:06', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:80)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:139)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:80)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 80, 0, NULL, 0, '1', '2026-06-29 14:26:06', '1', '2026-06-29 14:26:06', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24299, '', 142, 2, 'yudao-server', 'GET', '/admin-api/im/manager/statistics/message-trend', '{\"query\":{\"days\":\"7\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 09:18:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectPrivateMessageDailyCount-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT DATE(send_time) AS date, COUNT(*) AS count FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? GROUP BY DATE(send_time)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'type\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectPrivateMessageDailyCount-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT DATE(send_time) AS date, COUNT(*) AS count FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? GROUP BY DATE(send_time)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy627.selectPrivateMessageDailyCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.im.service.statistics.ImStatisticsManagerServiceImpl.getPrivateMessageDailyCountMap(ImStatisticsManagerServiceImpl.java:91)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.im.service.statist', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 09:18:54', '142', '2026-06-30 09:18:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24300, '', 142, 2, 'yudao-server', 'GET', '/admin-api/im/manager/statistics/message-type-distribution', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 09:18:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectMessageTypeDistribution-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT type, COUNT(*) AS count FROM (SELECT type FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT type FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t GROUP BY type\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'type\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectMessageTypeDistribution-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT type, COUNT(*) AS count FROM (SELECT type FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT type FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t GROUP BY type\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'type\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy627.selectMessageTypeDistribution(Unknown Source)\r\n	at cn.iocoder.yudao.module.im.service.statistics.ImStatisticsManagerServiceImpl.getMessageTypeCountMap(ImStatisticsManagerServiceImpl.java:103)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 09:18:54', '142', '2026-06-30 09:18:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24301, '', 142, 2, 'yudao-server', 'GET', '/admin-api/im/manager/statistics/top-senders', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 09:18:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectTopSenders-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT user_id AS userId, COUNT(*) AS messageCount FROM (SELECT sender_id AS user_id FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT sender_id AS user_id FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t GROUP BY user_id ORDER BY messageCount DESC LIMIT ?\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectTopSenders-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT user_id AS userId, COUNT(*) AS messageCount FROM (SELECT sender_id AS user_id FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT sender_id AS user_id FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t GROUP BY user_id ORDER BY messageCount DESC LIMIT ?\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy627.selectTopSenders(Unknown Source)\r\n	at cn.iocoder.yudao.module.im.service.statistics.ImStatisticsManagerServiceImpl.getTopSenderCountMap(ImStatisticsManagerServiceImpl.java:111)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.Reflectiv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 09:18:54', '142', '2026-06-30 09:18:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24302, '', 142, 2, 'yudao-server', 'GET', '/admin-api/im/manager/statistics/group-size-distribution', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 09:18:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'m.status\' in \'on clause\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT CASE WHEN cnt < 10 THEN \'1-9 浜篭' WHEN cnt < 50 THEN \'10-49 浜篭' WHEN cnt < 200 THEN \'50-199 浜篭' ELSE \'200+ 浜篭' END AS `range`, COUNT(*) AS count FROM (SELECT g.id, COUNT(m.id) AS cnt FROM im_group g LEFT JOIN im_group_member m ON m.group_id = g.id AND m.status = 0 AND m.deleted = 0 WHERE g.deleted = 0 AND g.status = 0 GROUP BY g.id) t GROUP BY `range`\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'m.status\' in \'on clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'m.status\' in \'on clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'m.status\' in \'on clause\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT CASE WHEN cnt < 10 THEN \'1-9 浜篭' WHEN cnt < 50 THEN \'10-49 浜篭' WHEN cnt < 200 THEN \'50-199 浜篭' ELSE \'200+ 浜篭' END AS `range`, COUNT(*) AS count FROM (SELECT g.id, COUNT(m.id) AS cnt FROM im_group g LEFT JOIN im_group_member m ON m.group_id = g.id AND m.status = 0 AND m.deleted = 0 WHERE g.deleted = 0 AND g.status = 0 GROUP BY g.id) t GROUP BY `range`\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'m.status\' in \'on clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy627.selectGroupSizeDistribution(Unknown Source)\r\n	at cn.iocoder.yudao.module.im.service.statistics.ImStatisticsManagerServiceImpl.getGroupSizeCountMap(ImStatisticsManagerServiceImpl.java:71)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 09:18:54', '142', '2026-06-30 09:18:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24303, '', 142, 2, 'yudao-server', 'GET', '/admin-api/im/manager/statistics/user-trend', '{\"query\":{\"days\":\"7\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 09:18:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectActiveUserDailyCount-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT day AS date, COUNT(DISTINCT user_id) AS count FROM (SELECT DATE(send_time) AS day, sender_id AS user_id FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT DATE(send_time) AS day, sender_id AS user_id FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t GROUP BY day\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectActiveUserDailyCount-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT day AS date, COUNT(DISTINCT user_id) AS count FROM (SELECT DATE(send_time) AS day, sender_id AS user_id FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT DATE(send_time) AS day, sender_id AS user_id FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t GROUP BY day\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy627.selectActiveUserDailyCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.im.service.statistics.ImStatisticsManagerServiceImpl.getActiveUserDailyCountMap(ImStatisticsManagerServiceImpl.java:53)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.spr', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 09:18:54', '142', '2026-06-30 09:18:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24304, '', 142, 2, 'yudao-server', 'GET', '/admin-api/im/manager/statistics/overview', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 09:18:54', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectActiveUserCount-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(DISTINCT user_id) FROM (SELECT sender_id AS user_id FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT sender_id AS user_id FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/im/dal/mysql/statistics/ImStatisticsManagerMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.im.dal.mysql.statistics.ImStatisticsManagerMapper.selectActiveUserCount-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(DISTINCT user_id) FROM (SELECT sender_id AS user_id FROM im_private_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ? UNION ALL SELECT sender_id AS user_id FROM im_group_message WHERE deleted = 0 AND type IN (101, 102, 103, 104, 105, 107, 108, 115, 125) AND status <> 2 AND send_time >= ? AND send_time < ?) t\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'sender_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectOne(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:169)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy627.selectActiveUserCount(Unknown Source)\r\n	at cn.iocoder.yudao.module.im.service.statistics.ImStatisticsManagerServiceImpl.getActiveUserCount(ImStatisticsManagerServiceImpl.java:42)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 09:18:54', '142', '2026-06-30 09:18:54', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24305, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/material-stock/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\",\"itemTypeId\":\"1\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 14:50:36', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_wm_material_stock WHERE deleted = 0 AND (item_type_id IN (?) AND quantity <> ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_wm_material_stock WHERE deleted = 0 AND (item_type_id IN (?) AND quantity <> ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy433.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectPage(BaseMapper.java:463)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy433.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:52)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy433.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:39)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybati', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 14:50:36', '142', '2026-06-30 14:50:36', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24306, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/material-stock/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\",\"itemTypeId\":\"1\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 15:13:47', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_wm_material_stock WHERE deleted = 0 AND (item_type_id IN (?) AND quantity <> ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_wm_material_stock WHERE deleted = 0 AND (item_type_id IN (?) AND quantity <> ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'item_type_id\' in \'where clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy433.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectPage(BaseMapper.java:463)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy433.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:52)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy433.selectPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectPage(BaseMapperX.java:39)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybati', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-06-30 15:13:47', '142', '2026-06-30 15:13:47', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24307, '', 142, 2, 'yudao-server', 'PUT', '/admin-api/erp/purchase-order/update-status', '{\"query\":{\"id\":\"1\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:00:20', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.updatePurchaseOrderStatus(ErpPurchaseOrderServiceImpl.java:137)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl$$SpringCGLIB$$0.updatePurchaseOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.purchase.ErpPurchaseOrderController.updatePurchaseOrderStatus(ErpPurchaseOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(Authorizati', 'cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl', 'ErpPurchaseOrderServiceImpl.java', 'updatePurchaseOrderStatus', 137, 0, NULL, 0, '142', '2026-06-30 16:00:20', '142', '2026-06-30 16:00:20', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24308, '', 142, 2, 'yudao-server', 'PUT', '/admin-api/erp/purchase-order/update-status', '{\"query\":{\"id\":\"1\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:00:44', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO.getInCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.updatePurchaseOrderStatus(ErpPurchaseOrderServiceImpl.java:137)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl$$SpringCGLIB$$0.updatePurchaseOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.purchase.ErpPurchaseOrderController.updatePurchaseOrderStatus(ErpPurchaseOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(Authorizati', 'cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl', 'ErpPurchaseOrderServiceImpl.java', 'updatePurchaseOrderStatus', 137, 0, NULL, 0, '142', '2026-06-30 16:00:44', '142', '2026-06-30 16:00:44', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24309, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:38', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '1', '2026-06-30 16:17:38', '1', '2026-06-30 16:17:38', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24310, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:41', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '1', '2026-06-30 16:17:41', '1', '2026-06-30 16:17:41', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24311, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:50', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '1', '2026-06-30 16:17:50', '1', '2026-06-30 16:17:50', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24312, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:57', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '142', '2026-06-30 16:17:57', '142', '2026-06-30 16:17:57', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24313, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:57', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '142', '2026-06-30 16:17:57', '142', '2026-06-30 16:17:57', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24314, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:57', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '142', '2026-06-30 16:17:57', '142', '2026-06-30 16:17:57', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24315, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:17:59', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '142', '2026-06-30 16:17:59', '142', '2026-06-30 16:17:59', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24316, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:18:04', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '142', '2026-06-30 16:18:04', '142', '2026-06-30 16:18:04', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24317, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:19:48', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '142', '2026-06-30 16:19:48', '142', '2026-06-30 16:19:48', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24318, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mdm/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 16:19:48', 'cn.hutool.core.exceptions.UtilException', 'UtilException: UnsupportedOperationException: null', 'UnsupportedOperationException: null', 'cn.hutool.core.exceptions.UtilException: UnsupportedOperationException: null\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:826)\r\n	at cn.hutool.core.collection.IterUtil.toMap(IterUtil.java:794)\r\n	at cn.hutool.core.collection.CollUtil.toMap(CollUtil.java:2150)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController.getItemPage(MdmItemController.java:92)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:197)\r\n	at org.springframework.security.config.annotation.method.configuration.DeferringMethodInterceptor.invoke(DeferringMethodInterceptor.java:44)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mdm.controller.admin.item.MdmItemController$$SpringCGLIB$$0.getItemPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter', 'cn.hutool.core.collection.IterUtil', 'IterUtil.java', 'toMap', 826, 0, NULL, 0, '1', '2026-06-30 16:19:48', '1', '2026-06-30 16:19:48', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24319, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782811096968\\\",\\\"supplierId\\\":1,\\\"items\\\":[{\\\"productId\\\":2,\\\"productUnitName\\\":\\\"鍚╘\\",\\\"productBarCode\\\":null,\\\"productPrice\\\":9,\\\"stockCount\\\":0,\\\"count\\\":9999,\\\"totalProductPrice\\\":89991,\\\"taxPercent\\\":6,\\\"taxPrice\\\":5399.46,\\\"totalPrice\\\":95390.46,\\\"seq\\\":\\\"row_325\\\",\\\"productUnitId\\\":1,\\\"productName\\\":\\\"鍘熸枡11\\\"}],\\\"discountPrice\\\":0,\\\"totalPrice\\\":95390.46}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 17:18:24', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy335.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.createPurchaseOrder(ErpPurchaseOrderServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:3', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-06-30 17:18:24', '1', '2026-06-30 17:18:24', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24320, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782811096968\\\",\\\"supplierId\\\":1,\\\"items\\\":[{\\\"productId\\\":2,\\\"productUnitName\\\":\\\"鍚╘\\",\\\"productBarCode\\\":null,\\\"productPrice\\\":9,\\\"stockCount\\\":0,\\\"count\\\":9999,\\\"totalProductPrice\\\":89991,\\\"taxPercent\\\":6,\\\"taxPrice\\\":5399.46,\\\"totalPrice\\\":95390.46,\\\"seq\\\":\\\"row_325\\\",\\\"productUnitId\\\":1,\\\"productName\\\":\\\"鍘熸枡11\\\"}],\\\"discountPercent\\\":1,\\\"discountPrice\\\":953.9,\\\"totalPrice\\\":94436.56000000001}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-06-30 17:18:31', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_order  ( no, status, supplier_id,  order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy335.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderServiceImpl.createPurchaseOrder(ErpPurchaseOrderServiceImpl.java:81)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:3', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-06-30 17:18:31', '1', '2026-06-30 17:18:31', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24321, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-request/create', '{\"query\":{},\"body\":\"{\\\"requestTime\\\":\\\"1782871017807\\\",\\\"supplierId\\\":1,\\\"discountPercent\\\":1,\\\"requestReason\\\":\\\"12121\\\",\\\"remark\\\":\\\"1212\\\",\\\"items\\\":[{\\\"productId\\\":5,\\\"productUnitId\\\":3,\\\"productPrice\\\":1212,\\\"count\\\":1,\\\"demandTime\\\":\\\"2026-07-09\\\"}]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 09:57:17', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseRequestMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_request  ( no, status,   request_time, request_reason, supplier_id, total_count, total_product_price, total_tax_price, total_price, discount_percent, discount_price,     remark, create_time, update_time, creator, updater )  VALUES (  ?, ?,   ?, ?, ?, ?, ?, ?, ?, ?, ?,     ?, ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\n; Field \'request_user_id\' doesn\'t have a default value', 'SQLException: Field \'request_user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseRequestMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_request  ( no, status,   request_time, request_reason, supplier_id, total_count, total_product_price, total_tax_price, total_price, discount_percent, discount_price,     remark, create_time, update_time, creator, updater )  VALUES (  ?, ?,   ?, ?, ?, ?, ?, ?, ?, ?, ?,     ?, ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\n; Field \'request_user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy337.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseRequestServiceImpl.createPurchaseRequest(ErpPurchaseRequestServiceImpl.java:97)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invok', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-01 09:57:17', '1', '2026-07-01 09:57:17', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24322, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-request/create', '{\"query\":{},\"body\":\"{\\\"requestTime\\\":\\\"1782871017807\\\",\\\"supplierId\\\":1,\\\"discountPercent\\\":1,\\\"requestReason\\\":\\\"12121\\\",\\\"remark\\\":\\\"1212\\\",\\\"items\\\":[{\\\"productId\\\":5,\\\"productUnitId\\\":3,\\\"productPrice\\\":1212,\\\"count\\\":1,\\\"taxPercent\\\":1,\\\"demandTime\\\":\\\"2026-07-09\\\"}]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 09:57:43', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseRequestMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_request  ( no, status,   request_time, request_reason, supplier_id, total_count, total_product_price, total_tax_price, total_price, discount_percent, discount_price,     remark, create_time, update_time, creator, updater )  VALUES (  ?, ?,   ?, ?, ?, ?, ?, ?, ?, ?, ?,     ?, ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\n; Field \'request_user_id\' doesn\'t have a default value', 'SQLException: Field \'request_user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseRequestMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_request  ( no, status,   request_time, request_reason, supplier_id, total_count, total_product_price, total_tax_price, total_price, discount_percent, discount_price,     remark, create_time, update_time, creator, updater )  VALUES (  ?, ?,   ?, ?, ?, ?, ?, ?, ?, ?, ?,     ?, ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\n; Field \'request_user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy337.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseRequestServiceImpl.createPurchaseRequest(ErpPurchaseRequestServiceImpl.java:97)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invok', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-01 09:57:43', '1', '2026-07-01 09:57:43', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24323, '', 142, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-request/create', '{\"query\":{},\"body\":\"{\\\"requestTime\\\":\\\"1782873678149\\\",\\\"supplierId\\\":1,\\\"items\\\":[{\\\"productId\\\":5,\\\"productUnitId\\\":3,\\\"productPrice\\\":10,\\\"count\\\":1,\\\"taxPercent\\\":1,\\\"demandTime\\\":\\\"2026-07-01\\\"}]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 10:41:40', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseRequestMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_request  ( no, status,   request_time,  supplier_id, total_count, total_product_price, total_tax_price, total_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?,   ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\n; Field \'request_user_id\' doesn\'t have a default value', 'SQLException: Field \'request_user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseRequestMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_purchase_request  ( no, status,   request_time,  supplier_id, total_count, total_product_price, total_tax_price, total_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?,   ?,  ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'request_user_id\' doesn\'t have a default value\n; Field \'request_user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy337.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseRequestServiceImpl.createPurchaseRequest(ErpPurchaseRequestServiceImpl.java:97)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(Transac', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-01 10:41:40', '142', '2026-07-01 10:41:40', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24324, '', 1, 2, 'yudao-server', 'POST', '/admin-api/erp/purchase-request/create', '{\"query\":{},\"body\":\"{\\\"requestTime\\\":\\\"1782873795915\\\",\\\"supplierId\\\":1,\\\"discountPercent\\\":1,\\\"requestReason\\\":\\\"123213\\\",\\\"fileUrl\\\":[\\\"http://test.yudao.iocoder.cn/20260701/MOM%E7%B3%BB%E7%BB%9F%E4%B8%9A%E5%8A%A1%E9%80%BB%E8%BE%91%E8%AE%BE%E8%AE%A1.docx\\\"],\\\"items\\\":[{\\\"productId\\\":5,\\\"productUnitId\\\":3,\\\"productPrice\\\":12,\\\"count\\\":12,\\\"taxPercent\\\":1,\\\"demandTime\\\":\\\"2026-07-01\\\",\\\"remark\\\":\\\"2122\\\"}]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 10:43:42', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.lang.String` from Array value (token `JsonToken.START_ARRAY`)', 'MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Array value (token `JsonToken.START_ARRAY`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #101] (through reference chain: cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestSaveReqVO[\"fileUrl\"])', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.lang.String` from Array value (token `JsonToken.START_ARRAY`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.Web', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '1', '2026-07-01 10:43:42', '1', '2026-07-01 10:43:42', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24325, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/qc/pending-inspect/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-01 14:44:13', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\r\n### The error may exist in file [D:\\鐗涢┈\\鍗楅�歕\鍚庣\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\qc\\pendinginspect\\MesQcPendingInspectMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM (SELECT n.id AS sourceDocId, 100 AS sourceDocType, n.code AS sourceDocCode, l.id AS sourceLineId, n.arrival_date AS recordTime, 1 AS qcType, l.item_id AS itemId, l.arrival_quantity AS quantity, n.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_arrival_notice n JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id WHERE n.status = 2 AND l.iqc_check_flag = 1 AND l.iqc_id IS NULL AND n.deleted = 0 AND l.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 121 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.receipt_date AS recordTime, 1 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, r.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_outsource_receipt r JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id WHERE r.status = 1 AND rl.iqc_check_flag = 1 AND rl.iqc_id IS NULL AND r.deleted = 0 AND rl.deleted = 0 UNION ALL SELECT pf.id AS sourceDocId, 304 AS sourceDocType, pf.code AS sourceDocCode, ppl.id AS sourceLineId, pf.feedback_time AS recordTime, 2 AS qcType, ppl.item_id AS itemId, ppl.quantity AS quantity, NULL AS vendorId, pp.work_order_id AS workOrderId, pp.workstation_id AS workstationId, pp.task_id AS taskId, NULL AS clientId FROM mes_wm_product_produce_line ppl JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id WHERE ppl.quality_status = 0 AND ppl.deleted = 0 AND pp.deleted = 0 AND pf.deleted = 0 UNION ALL SELECT s.id AS sourceDocId, 118 AS sourceDocType, s.code AS sourceDocCode, sl.id AS sourceLineId, s.sales_date AS recordTime, 3 AS qcType, sl.item_id AS itemId, sl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, s.client_id AS clientId FROM mes_wm_product_sales s JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id WHERE sl.oqc_check_flag = 1 AND sl.oqc_id IS NULL AND s.status = 1 AND s.deleted = 0 AND sl.deleted = 0 UNION ALL SELECT ri.id AS sourceDocId, 116 AS sourceDocType, ri.code AS sourceDocCode, ril.id AS sourceLineId, ri.return_date AS recordTime, 4 AS qcType, ril.item_id AS itemId, ril.quantity AS quantity, NULL AS vendorId, ri.work_order_id AS workOrderId, ri.workstation_id AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_return_issue ri JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id WHERE ri.status = 1 AND ril.rqc_check_flag = 1 AND ril.rqc_id IS NULL AND ril.quality_status = 0 AND ri.deleted = 0 AND ril.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 119 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.return_date AS recordTime, 4 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, r.client_id AS clientId FROM mes_wm_return_sales r JOIN mes_wm_return_sales_line rl ON r.id = rl.return_id WHERE r.status = 1 AND rl.rqc_check_flag = 1 AND rl.rqc_id IS NULL AND rl.quality_status = 0 AND r.deleted = 0 AND rl.deleted = 0) t\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\r\n### The error may exist in file [D:\\鐗涢┈\\鍗楅�歕\鍚庣\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\qc\\pendinginspect\\MesQcPendingInspectMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM (SELECT n.id AS sourceDocId, 100 AS sourceDocType, n.code AS sourceDocCode, l.id AS sourceLineId, n.arrival_date AS recordTime, 1 AS qcType, l.item_id AS itemId, l.arrival_quantity AS quantity, n.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_arrival_notice n JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id WHERE n.status = 2 AND l.iqc_check_flag = 1 AND l.iqc_id IS NULL AND n.deleted = 0 AND l.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 121 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.receipt_date AS recordTime, 1 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, r.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_outsource_receipt r JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id WHERE r.status = 1 AND rl.iqc_check_flag = 1 AND rl.iqc_id IS NULL AND r.deleted = 0 AND rl.deleted = 0 UNION ALL SELECT pf.id AS sourceDocId, 304 AS sourceDocType, pf.code AS sourceDocCode, ppl.id AS sourceLineId, pf.feedback_time AS recordTime, 2 AS qcType, ppl.item_id AS itemId, ppl.quantity AS quantity, NULL AS vendorId, pp.work_order_id AS workOrderId, pp.workstation_id AS workstationId, pp.task_id AS taskId, NULL AS clientId FROM mes_wm_product_produce_line ppl JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id WHERE ppl.quality_status = 0 AND ppl.deleted = 0 AND pp.deleted = 0 AND pf.deleted = 0 UNION ALL SELECT s.id AS sourceDocId, 118 AS sourceDocType, s.code AS sourceDocCode, sl.id AS sourceLineId, s.sales_date AS recordTime, 3 AS qcType, sl.item_id AS itemId, sl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, s.client_id AS clientId FROM mes_wm_product_sales s JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id WHERE sl.oqc_check_flag = 1 AND sl.oqc_id IS NULL AND s.status = 1 AND s.deleted = 0 AND sl.deleted = 0 UNION ALL SELECT ri.id AS sourceDocId, 116 AS sourceDocType, ri.code AS sourceDocCode, ril.id AS sourceLineId, ri.return_date AS recordTime, 4 AS qcType, ril.item_id AS itemId, ril.quantity AS quantity, NULL AS vendorId, ri.work_order_id AS workOrderId, ri.workstation_id AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_return_issue ri JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id WHERE ri.status = 1 AND ril.rqc_check_flag = 1 AND ril.rqc_id IS NULL AND ril.quality_status = 0 AND ri', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-01 14:44:13', '1', '2026-07-01 14:44:13', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24326, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/dict-data/simple-list', '{\"query\":{},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-01 16:54:07', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: Connection reset by peer', 'IOException: Connection reset by peer', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: Connection reset by peer\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-01 16:54:07', '1', '2026-07-01 16:54:07', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24327, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-01 16:54:07', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-01 16:54:07', '1', '2026-07-01 16:54:07', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24328, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/dict-data/simple-list', '{\"query\":{},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-01 16:55:52', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-01 16:55:52', '1', '2026-07-01 16:55:52', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24329, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-01 16:55:52', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-01 16:55:52', '1', '2026-07-01 16:55:52', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24330, '', 142, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 17:04:06', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:95)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:155)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:95)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 95, 0, NULL, 0, '142', '2026-07-01 17:04:06', '142', '2026-07-01 17:04:06', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24331, '', 142, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 17:04:30', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:95)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:155)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:95)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 95, 0, NULL, 0, '142', '2026-07-01 17:04:30', '142', '2026-07-01 17:04:30', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24332, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-01 17:19:39', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-01 17:19:39', '1', '2026-07-01 17:19:39', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24333, '', 1, 2, 'yudao-server', 'GET', '/admin-api/crm/follow-up-record/page', '{\"query\":{\"bizType\":\"2\",\"pageNo\":\"1\",\"bizId\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-01 17:50:16', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.util.List.stream()\" because the return value of \"cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO.getContactIds()\" is null\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.lambda$getFollowUpRecordPage$0(CrmFollowUpRecordController.java:95)\r\n	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:288)\r\n	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)\r\n	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)\r\n	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)\r\n	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)\r\n	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)\r\n	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)\r\n	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)\r\n	at cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap(CollectionUtils.java:155)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController.getFollowUpRecordPage(CrmFollowUpRecordController.java:95)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController$$SpringCGLIB$$0.getFollowUpRecordPage(<generated>)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:', 'cn.iocoder.yudao.module.crm.controller.admin.followup.CrmFollowUpRecordController', 'CrmFollowUpRecordController.java', 'lambda$getFollowUpRecordPage$0', 95, 0, NULL, 0, '1', '2026-07-01 17:50:16', '1', '2026-07-01 17:50:16', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24334, '', 142, 2, 'yudao-server', 'POST', '/admin-api/erp/sale-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782954721850\\\",\\\"customerId\\\":1,\\\"saleUserId\\\":142,\\\"items\\\":[{\\\"productId\\\":3,\\\"productUnitName\\\":null,\\\"productBarCode\\\":null,\\\"productPrice\\\":10,\\\"stockCount\\\":0,\\\"count\\\":1,\\\"totalProductPrice\\\":10,\\\"taxPercent\\\":0,\\\"taxPrice\\\":0,\\\"totalPrice\\\":10,\\\"seq\\\":\\\"row_1471\\\",\\\"productUnitId\\\":2,\\\"productName\\\":\\\"鍗婃垚鍝�11\\\"}],\\\"discountPrice\\\":0,\\\"totalPrice\\\":10}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 09:12:22', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id,    sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,    ?, ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id,    sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,    ?, ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy298.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.createSaleOrder(ErpSaleOrderServiceImpl.java:90)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.sp', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-02 09:12:22', '142', '2026-07-02 09:12:22', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24335, '', 142, 2, 'yudao-server', 'POST', '/admin-api/erp/sale-order/create', '{\"query\":{},\"body\":\"{\\\"orderTime\\\":\\\"1782954721850\\\",\\\"customerId\\\":1,\\\"saleUserId\\\":142,\\\"items\\\":[{\\\"productId\\\":3,\\\"productUnitName\\\":null,\\\"productBarCode\\\":null,\\\"productPrice\\\":10,\\\"stockCount\\\":0,\\\"count\\\":1,\\\"totalProductPrice\\\":10,\\\"taxPercent\\\":10,\\\"taxPrice\\\":1,\\\"totalPrice\\\":11,\\\"seq\\\":\\\"row_1471\\\",\\\"productUnitId\\\":2,\\\"productName\\\":\\\"鍗婃垚鍝�11\\\"}],\\\"discountPrice\\\":0,\\\"totalPrice\\\":11}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 09:12:25', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id,    sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,    ?, ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id,    sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?,    ?, ?, ?, ?, ?, ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy298.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.createSaleOrder(ErpSaleOrderServiceImpl.java:90)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.sp', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-02 09:12:25', '142', '2026-07-02 09:12:25', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24336, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/qc/pending-inspect/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-02 09:51:40', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\r\n### The error may exist in file [D:\\鐗涢┈\\鍗楅�歕\鍚庣\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\qc\\pendinginspect\\MesQcPendingInspectMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM (SELECT n.id AS sourceDocId, 100 AS sourceDocType, n.code AS sourceDocCode, l.id AS sourceLineId, n.arrival_date AS recordTime, 1 AS qcType, l.item_id AS itemId, l.arrival_quantity AS quantity, n.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_arrival_notice n JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id WHERE n.status = 2 AND l.iqc_check_flag = 1 AND l.iqc_id IS NULL AND n.deleted = 0 AND l.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 121 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.receipt_date AS recordTime, 1 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, r.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_outsource_receipt r JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id WHERE r.status = 1 AND rl.iqc_check_flag = 1 AND rl.iqc_id IS NULL AND r.deleted = 0 AND rl.deleted = 0 UNION ALL SELECT pf.id AS sourceDocId, 304 AS sourceDocType, pf.code AS sourceDocCode, ppl.id AS sourceLineId, pf.feedback_time AS recordTime, 2 AS qcType, ppl.item_id AS itemId, ppl.quantity AS quantity, NULL AS vendorId, pp.work_order_id AS workOrderId, pp.workstation_id AS workstationId, pp.task_id AS taskId, NULL AS clientId FROM mes_wm_product_produce_line ppl JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id WHERE ppl.quality_status = 0 AND ppl.deleted = 0 AND pp.deleted = 0 AND pf.deleted = 0 UNION ALL SELECT s.id AS sourceDocId, 118 AS sourceDocType, s.code AS sourceDocCode, sl.id AS sourceLineId, s.sales_date AS recordTime, 3 AS qcType, sl.item_id AS itemId, sl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, s.client_id AS clientId FROM mes_wm_product_sales s JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id WHERE sl.oqc_check_flag = 1 AND sl.oqc_id IS NULL AND s.status = 1 AND s.deleted = 0 AND sl.deleted = 0 UNION ALL SELECT ri.id AS sourceDocId, 116 AS sourceDocType, ri.code AS sourceDocCode, ril.id AS sourceLineId, ri.return_date AS recordTime, 4 AS qcType, ril.item_id AS itemId, ril.quantity AS quantity, NULL AS vendorId, ri.work_order_id AS workOrderId, ri.workstation_id AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_return_issue ri JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id WHERE ri.status = 1 AND ril.rqc_check_flag = 1 AND ril.rqc_id IS NULL AND ril.quality_status = 0 AND ri.deleted = 0 AND ril.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 119 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.return_date AS recordTime, 4 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, r.client_id AS clientId FROM mes_wm_return_sales r JOIN mes_wm_return_sales_line rl ON r.id = rl.return_id WHERE r.status = 1 AND rl.rqc_check_flag = 1 AND rl.rqc_id IS NULL AND rl.quality_status = 0 AND r.deleted = 0 AND rl.deleted = 0) t\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'l.arrival_quantity\' in \'field list\'\r\n### The error may exist in file [D:\\鐗涢┈\\鍗楅�歕\鍚庣\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\qc\\pendinginspect\\MesQcPendingInspectMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM (SELECT n.id AS sourceDocId, 100 AS sourceDocType, n.code AS sourceDocCode, l.id AS sourceLineId, n.arrival_date AS recordTime, 1 AS qcType, l.item_id AS itemId, l.arrival_quantity AS quantity, n.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_arrival_notice n JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id WHERE n.status = 2 AND l.iqc_check_flag = 1 AND l.iqc_id IS NULL AND n.deleted = 0 AND l.deleted = 0 UNION ALL SELECT r.id AS sourceDocId, 121 AS sourceDocType, r.code AS sourceDocCode, rl.id AS sourceLineId, r.receipt_date AS recordTime, 1 AS qcType, rl.item_id AS itemId, rl.quantity AS quantity, r.vendor_id AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_outsource_receipt r JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id WHERE r.status = 1 AND rl.iqc_check_flag = 1 AND rl.iqc_id IS NULL AND r.deleted = 0 AND rl.deleted = 0 UNION ALL SELECT pf.id AS sourceDocId, 304 AS sourceDocType, pf.code AS sourceDocCode, ppl.id AS sourceLineId, pf.feedback_time AS recordTime, 2 AS qcType, ppl.item_id AS itemId, ppl.quantity AS quantity, NULL AS vendorId, pp.work_order_id AS workOrderId, pp.workstation_id AS workstationId, pp.task_id AS taskId, NULL AS clientId FROM mes_wm_product_produce_line ppl JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id WHERE ppl.quality_status = 0 AND ppl.deleted = 0 AND pp.deleted = 0 AND pf.deleted = 0 UNION ALL SELECT s.id AS sourceDocId, 118 AS sourceDocType, s.code AS sourceDocCode, sl.id AS sourceLineId, s.sales_date AS recordTime, 3 AS qcType, sl.item_id AS itemId, sl.quantity AS quantity, NULL AS vendorId, NULL AS workOrderId, NULL AS workstationId, NULL AS taskId, s.client_id AS clientId FROM mes_wm_product_sales s JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id WHERE sl.oqc_check_flag = 1 AND sl.oqc_id IS NULL AND s.status = 1 AND s.deleted = 0 AND sl.deleted = 0 UNION ALL SELECT ri.id AS sourceDocId, 116 AS sourceDocType, ri.code AS sourceDocCode, ril.id AS sourceLineId, ri.return_date AS recordTime, 4 AS qcType, ril.item_id AS itemId, ril.quantity AS quantity, NULL AS vendorId, ri.work_order_id AS workOrderId, ri.workstation_id AS workstationId, NULL AS taskId, NULL AS clientId FROM mes_wm_return_issue ri JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id WHERE ri.status = 1 AND ril.rqc_check_flag = 1 AND ril.rqc_id IS NULL AND ril.quality_status = 0 AND ri', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-02 09:51:40', '1', '2026-07-02 09:51:40', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24337, '', 142, 2, 'yudao-server', 'POST', '/admin-api/crm/contract/create', '{\"query\":{},\"body\":\"{\\\"totalProductPrice\\\":0,\\\"discountPercent\\\":0,\\\"ownerUserId\\\":142,\\\"signUserId\\\":142,\\\"name\\\":\\\"鎼瀄\\",\\\"customerId\\\":1,\\\"orderDate\\\":\\\"1782962128132\\\",\\\"totalPrice\\\":null,\\\"products\\\":[{\\\"productId\\\":1,\\\"productSpecification\\\":null,\\\"productNo\\\":null,\\\"productUnitName\\\":null,\\\"productUnitName2\\\":null,\\\"productUnitName3\\\":null,\\\"productPrice\\\":null,\\\"sellingPrice\\\":111,\\\"count\\\":11,\\\"totalPrice\\\":0,\\\"id\\\":1,\\\"itemId\\\":1,\\\"itemName\\\":\\\"鍗楃摐瀛怽\\",\\\"itemCode\\\":\\\"001\\\",\\\"itemBarCode\\\":null,\\\"itemUnitName\\\":\\\"鍗冨厠\\\",\\\"itemUnitName2\\\":\\\"鍚╘\\",\\\"itemUnitName3\\\":null,\\\"itemSpecification\\\":\\\"涓璡\\",\\\"itemPrice\\\":null,\\\"contractPrice\\\":null}]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 11:15:30', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'product_id\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'product_id\' doesn\'t have a default value', 'SQLException: Field \'product_id\' doesn\'t have a default value', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'product_id\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'product_id\' doesn\'t have a default value\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy283.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy283.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.contract.CrmContractServiceImpl.createContract(CrmContractServiceImpl.java:132)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.spr', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '142', '2026-07-02 11:15:30', '142', '2026-07-02 11:15:30', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24338, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/sale-quotation/create', '{\"query\":{},\"body\":\"{\\\"totalProductPrice\\\":98901,\\\"discountPercent\\\":0,\\\"ownerUserId\\\":1,\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"customerId\\\":2,\\\"items\\\":[{\\\"itemId\\\":1,\\\"itemName\\\":\\\"鍗楃摐瀛怽\\",\\\"itemCode\\\":\\\"001\\\",\\\"itemBarCode\\\":null,\\\"itemSpecification\\\":\\\"涓璡\\",\\\"itemUnitName\\\":\\\"鍗冨厠\\\",\\\"itemUnitName2\\\":\\\"鍚╘\\",\\\"itemUnitName3\\\":null,\\\"itemPrice\\\":null,\\\"quotationPrice\\\":99,\\\"count\\\":999,\\\"totalPrice\\\":98901,\\\"seq\\\":\\\"row_69\\\"}],\\\"totalPrice\\\":98901}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 13:15:58', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value', 'SQLException: Field \'item_price\' doesn\'t have a default value', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationServiceImpl.createSaleQuotation(CrmSaleQuotationServiceImpl.java:93)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvoca', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '1', '2026-07-02 13:15:58', '1', '2026-07-02 13:15:58', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24339, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/sale-quotation/create', '{\"query\":{},\"body\":\"{\\\"totalProductPrice\\\":98901,\\\"discountPercent\\\":0,\\\"ownerUserId\\\":1,\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"customerId\\\":2,\\\"quotationTime\\\":\\\"1782969418952\\\",\\\"items\\\":[{\\\"itemId\\\":1,\\\"itemName\\\":\\\"鍗楃摐瀛怽\\",\\\"itemCode\\\":\\\"001\\\",\\\"itemBarCode\\\":null,\\\"itemSpecification\\\":\\\"涓璡\\",\\\"itemUnitName\\\":\\\"鍗冨厠\\\",\\\"itemUnitName2\\\":\\\"鍚╘\\",\\\"itemUnitName3\\\":null,\\\"itemPrice\\\":null,\\\"quotationPrice\\\":99,\\\"count\\\":999,\\\"totalPrice\\\":98901,\\\"seq\\\":\\\"row_69\\\"}],\\\"totalPrice\\\":98901}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 13:17:01', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value', 'SQLException: Field \'item_price\' doesn\'t have a default value', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationServiceImpl.createSaleQuotation(CrmSaleQuotationServiceImpl.java:93)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvoca', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '1', '2026-07-02 13:17:01', '1', '2026-07-02 13:17:01', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24340, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/sale-quotation/create', '{\"query\":{},\"body\":\"{\\\"totalProductPrice\\\":98901,\\\"discountPercent\\\":0,\\\"ownerUserId\\\":1,\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"customerId\\\":2,\\\"quotationTime\\\":\\\"1782969418952\\\",\\\"validUntil\\\":\\\"1785475022349\\\",\\\"items\\\":[{\\\"itemId\\\":1,\\\"itemName\\\":\\\"鍗楃摐瀛怽\\",\\\"itemCode\\\":\\\"001\\\",\\\"itemBarCode\\\":null,\\\"itemSpecification\\\":\\\"涓璡\\",\\\"itemUnitName\\\":\\\"鍗冨厠\\\",\\\"itemUnitName2\\\":\\\"鍚╘\\",\\\"itemUnitName3\\\":null,\\\"itemPrice\\\":null,\\\"quotationPrice\\\":99,\\\"count\\\":999,\\\"totalPrice\\\":98901,\\\"seq\\\":\\\"row_69\\\"}],\\\"totalPrice\\\":98901}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 13:17:07', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value', 'SQLException: Field \'item_price\' doesn\'t have a default value', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationServiceImpl.createSaleQuotation(CrmSaleQuotationServiceImpl.java:93)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvoca', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '1', '2026-07-02 13:17:07', '1', '2026-07-02 13:17:07', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24341, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/sale-quotation/create', '{\"query\":{},\"body\":\"{\\\"totalProductPrice\\\":98901,\\\"discountPercent\\\":0,\\\"ownerUserId\\\":1,\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"customerId\\\":2,\\\"quotationTime\\\":\\\"1782969418952\\\",\\\"validUntil\\\":\\\"1785475022349\\\",\\\"taxRate\\\":12,\\\"items\\\":[{\\\"itemId\\\":1,\\\"itemName\\\":\\\"鍗楃摐瀛怽\\",\\\"itemCode\\\":\\\"001\\\",\\\"itemBarCode\\\":null,\\\"itemSpecification\\\":\\\"涓璡\\",\\\"itemUnitName\\\":\\\"鍗冨厠\\\",\\\"itemUnitName2\\\":\\\"鍚╘\\",\\\"itemUnitName3\\\":null,\\\"itemPrice\\\":null,\\\"quotationPrice\\\":99,\\\"count\\\":999,\\\"totalPrice\\\":98901,\\\"seq\\\":\\\"row_69\\\"}],\\\"totalPrice\\\":98901}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 13:17:11', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value', 'SQLException: Field \'item_price\' doesn\'t have a default value', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationServiceImpl.createSaleQuotation(CrmSaleQuotationServiceImpl.java:93)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvoca', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '1', '2026-07-02 13:17:11', '1', '2026-07-02 13:17:11', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24342, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/sale-quotation/create', '{\"query\":{},\"body\":\"{\\\"totalProductPrice\\\":989109,\\\"discountPercent\\\":0,\\\"ownerUserId\\\":1,\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"customerId\\\":2,\\\"items\\\":[{\\\"itemId\\\":1,\\\"itemName\\\":\\\"鍗楃摐瀛怽\\",\\\"itemCode\\\":\\\"001\\\",\\\"itemBarCode\\\":null,\\\"itemSpecification\\\":\\\"涓璡\\",\\\"itemUnitName\\\":\\\"鍗冨厠\\\",\\\"itemUnitName2\\\":\\\"鍚╘\\",\\\"itemUnitName3\\\":null,\\\"itemPrice\\\":null,\\\"quotationPrice\\\":99,\\\"count\\\":9991,\\\"totalPrice\\\":989109,\\\"seq\\\":\\\"row_69\\\"}],\\\"totalPrice\\\":989109}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 13:20:13', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value', 'SQLException: Field \'item_price\' doesn\'t have a default value', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationProductMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Field \'item_price\' doesn\'t have a default value\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy310.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationServiceImpl.createSaleQuotation(CrmSaleQuotationServiceImpl.java:93)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvoca', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '1', '2026-07-02 13:20:13', '1', '2026-07-02 13:20:13', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24343, '', 142, 2, 'yudao-server', 'POST', '/admin-api/crm/contract/generate-sale-order', '{\"query\":{\"id\":\"15\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 14:01:03', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id, contract_id, contract_no,  sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,   remark,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id, contract_id, contract_no,  sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,   remark,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy298.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.createSaleOrder(ErpSaleOrderServiceImpl.java:90)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(Transacti', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-02 14:01:03', '142', '2026-07-02 14:01:03', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24344, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/contract/generate-sale-order', '{\"query\":{\"id\":\"16\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 14:01:06', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id, contract_id, contract_no,  sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,   remark,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id, contract_id, contract_no,  sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,   remark,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy298.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.createSaleOrder(ErpSaleOrderServiceImpl.java:90)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(Transacti', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-02 14:01:06', '1', '2026-07-02 14:01:06', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24345, '', 1, 2, 'yudao-server', 'POST', '/admin-api/crm/contract/generate-sale-order', '{\"query\":{\"id\":\"16\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 14:05:09', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id, contract_id, contract_no,  sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,   remark,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value', 'SQLException: Field \'deposit_price\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOrderMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO erp_sale_order  ( no, status, customer_id, contract_id, contract_no,  sale_user_id, order_time, total_count, total_price, total_product_price, total_tax_price, discount_percent, discount_price,   remark,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'deposit_price\' doesn\'t have a default value\n; Field \'deposit_price\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy298.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.createSaleOrder(ErpSaleOrderServiceImpl.java:90)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(Transacti', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-02 14:05:09', '1', '2026-07-02 14:05:09', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24346, '', 142, 2, 'yudao-server', 'PUT', '/admin-api/erp/sale-order/update-status', '{\"query\":{\"id\":\"3\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 14:18:08', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.updateSaleOrderStatus(ErpSaleOrderServiceImpl.java:150)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl$$SpringCGLIB$$0.updateSaleOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.sale.ErpSaleOrderController.updateSaleOrderStatus(ErpSaleOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org', 'cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl', 'ErpSaleOrderServiceImpl.java', 'updateSaleOrderStatus', 150, 0, NULL, 0, '142', '2026-07-02 14:18:08', '142', '2026-07-02 14:18:08', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24347, '', 142, 2, 'yudao-server', 'PUT', '/admin-api/erp/sale-order/update-status', '{\"query\":{\"id\":\"3\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 14:18:10', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.updateSaleOrderStatus(ErpSaleOrderServiceImpl.java:150)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl$$SpringCGLIB$$0.updateSaleOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.sale.ErpSaleOrderController.updateSaleOrderStatus(ErpSaleOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org', 'cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl', 'ErpSaleOrderServiceImpl.java', 'updateSaleOrderStatus', 150, 0, NULL, 0, '142', '2026-07-02 14:18:10', '142', '2026-07-02 14:18:10', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24348, '', 142, 2, 'yudao-server', 'PUT', '/admin-api/erp/sale-order/update-status', '{\"query\":{\"id\":\"3\",\"status\":\"10\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-02 14:18:38', 'java.lang.NullPointerException', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null', 'NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null', 'java.lang.NullPointerException: Cannot invoke \"java.math.BigDecimal.compareTo(java.math.BigDecimal)\" because the return value of \"cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO.getOutCount()\" is null\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl.updateSaleOrderStatus(ErpSaleOrderServiceImpl.java:150)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl$$SpringCGLIB$$0.updateSaleOrderStatus(<generated>)\r\n	at cn.iocoder.yudao.module.erp.controller.admin.sale.ErpSaleOrderController.updateSaleOrderStatus(ErpSaleOrderController.java:82)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.proceed(AuthorizationManagerBeforeMethodInterceptor.java:271)\r\n	at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.attemptAuthorization(AuthorizationManagerBeforeMethodInterceptor.java:266)\r\n	at org', 'cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderServiceImpl', 'ErpSaleOrderServiceImpl.java', 'updateSaleOrderStatus', 150, 0, NULL, 0, '142', '2026-07-02 14:18:38', '142', '2026-07-02 14:18:38', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24349, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/md/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\",\"status\":\"0\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', '2026-07-02 14:26:58', 'jakarta.servlet.ServletException', 'ServletException: Handler dispatch failed: java.lang.AbstractMethodError', 'AbstractMethodError: null', 'jakarta.servlet.ServletException: Handler dispatch failed: java.lang.AbstractMethodError\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:978)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)\r\n	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$2(FilterChainProxy.java:235)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:491)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:353)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:84)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:131)\r\n	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:243)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:230)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:140)\r\n	', 'org.springframework.web.servlet.DispatcherServlet', 'DispatcherServlet.java', 'doDispatch', 978, 0, NULL, 0, '1', '2026-07-02 14:26:58', '1', '2026-07-02 14:26:58', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24350, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/md/item/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\",\"status\":\"0\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', '2026-07-02 14:27:40', 'jakarta.servlet.ServletException', 'ServletException: Handler dispatch failed: java.lang.AbstractMethodError', 'AbstractMethodError: null', 'jakarta.servlet.ServletException: Handler dispatch failed: java.lang.AbstractMethodError\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:978)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)\r\n	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$2(FilterChainProxy.java:235)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:491)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:353)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:84)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:131)\r\n	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:243)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:230)\r\n	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:140)\r\n	', 'org.springframework.web.servlet.DispatcherServlet', 'DispatcherServlet.java', 'doDispatch', 978, 0, NULL, 0, '1', '2026-07-02 14:27:40', '1', '2026-07-02 14:27:40', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24351, '', 0, 0, 'yudao-server', 'GET', '/v3/api-docs/all', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '2026-07-03 11:03:00', 'org.springframework.web.context.request.async.AsyncRequestNotUsableException', 'AsyncRequestNotUsableException: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleHttpServletResponse.handleIOException(StandardServletAsyncWebRequest.java:340)\r\n	at org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleServletOutputStream.write(StandardServletAsyncWebRequest.java:399)\r\n	at org.springframework.util.StreamUtils$NonClosingOutputStream.write(StreamUtils.java:311)\r\n	at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:110)\r\n	at org.springframework.http.converter.ByteArrayHttpMessageConverter.writeInternal(ByteArrayHttpMessageConverter.java:67)\r\n	at org.springframework.http.converter.ByteArrayHttpMessageConverter.writeInternal(ByteArrayHttpMessageConverter.java:38)\r\n	at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:232)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:340)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestF', 'org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleHttpServletResponse', 'StandardServletAsyncWebRequest.java', 'handleIOException', 340, 0, NULL, 0, NULL, '2026-07-03 11:03:00', NULL, '2026-07-03 11:03:00', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24352, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"username\\\":\\\"test\\\",\\\"password\\\":\\\"admin123\\\"}\"}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-03 15:05:19', 'org.apache.ibatis.exceptions.TooManyResultsException', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:343)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper.selectByUsername(AdminUserMapper.java:17)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectByUsername(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.service.user.AdminUserServiceImpl.getUserByUsername(AdminUserServiceImpl.java:301)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.user.AdminUserServiceImpl$$SpringCGLIB$$0.getUserByUsername(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.auth.AdminAuthServiceImpl.authenticate(AdminAuthServiceImpl.java:84)\r\n	at cn.iocoder.yudao.module.system.service.auth.AdminAuthServiceImpl.login(AdminAuthServiceImpl.java:108)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.', 'com.baomidou.mybatisplus.core.mapper.BaseMapper', 'BaseMapper.java', 'selectOne', 343, 0, NULL, 0, NULL, '2026-07-03 15:05:19', NULL, '2026-07-03 15:05:19', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24353, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"username\\\":\\\"test\\\",\\\"password\\\":\\\"123456\\\"}\"}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-03 15:05:24', 'org.apache.ibatis.exceptions.TooManyResultsException', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:343)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper.selectByUsername(AdminUserMapper.java:17)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectByUsername(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.service.user.AdminUserServiceImpl.getUserByUsername(AdminUserServiceImpl.java:301)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.user.AdminUserServiceImpl$$SpringCGLIB$$0.getUserByUsername(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.auth.AdminAuthServiceImpl.authenticate(AdminAuthServiceImpl.java:84)\r\n	at cn.iocoder.yudao.module.system.service.auth.AdminAuthServiceImpl.login(AdminAuthServiceImpl.java:108)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.', 'com.baomidou.mybatisplus.core.mapper.BaseMapper', 'BaseMapper.java', 'selectOne', 343, 0, NULL, 0, NULL, '2026-07-03 15:05:24', NULL, '2026-07-03 15:05:24', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24354, '', 0, 2, 'yudao-server', 'POST', '/admin-api/system/auth/login', '{\"query\":{},\"body\":\"{\\\"username\\\":\\\"test\\\",\\\"password\\\":\\\"12345\\\"}\"}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '2026-07-03 15:05:27', 'org.apache.ibatis.exceptions.TooManyResultsException', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:343)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper.selectByUsername(AdminUserMapper.java:17)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy194.selectByUsername(Unknown Source)\r\n	at cn.iocoder.yudao.module.system.service.user.AdminUserServiceImpl.getUserByUsername(AdminUserServiceImpl.java:301)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:715)\r\n	at cn.iocoder.yudao.module.system.service.user.AdminUserServiceImpl$$SpringCGLIB$$0.getUserByUsername(<generated>)\r\n	at cn.iocoder.yudao.module.system.service.auth.AdminAuthServiceImpl.authenticate(AdminAuthServiceImpl.java:84)\r\n	at cn.iocoder.yudao.module.system.service.auth.AdminAuthServiceImpl.login(AdminAuthServiceImpl.java:108)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.', 'com.baomidou.mybatisplus.core.mapper.BaseMapper', 'BaseMapper.java', 'selectOne', 343, 0, NULL, 0, NULL, '2026-07-03 15:05:27', NULL, '2026-07-03 15:05:27', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24355, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/pd/archive/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', '2026-07-03 17:25:36', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND \' at line 1\r\n### The error may exist in file [D:\\xd\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\pd\\archive\\MesPdArchiveMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT a.*, p.product_code, p.product_name, p.task_code, p.task_name(SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND cnt.deleted = 0) AS archive_count FROM mes_pd_archive a INNER JOIN (SELECT MAX(sub.id) AS id FROM mes_pd_archive sub WHERE sub.deleted = 0 GROUP BY sub.project_id) g ON a.id = g.id LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0 ORDER BY a.update_time DESC LIMIT ?\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND \' at line 1\n; bad SQL grammar []', 'SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND \' at line 1', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND \' at line 1\r\n### The error may exist in file [D:\\xd\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\pd\\archive\\MesPdArchiveMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT a.*, p.product_code, p.product_name, p.task_code, p.task_name(SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND cnt.deleted = 0) AS archive_count FROM mes_pd_archive a INNER JOIN (SELECT MAX(sub.id) AS id FROM mes_pd_archive sub WHERE sub.deleted = 0 GROUP BY sub.project_id) g ON a.id = g.id LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0 ORDER BY a.update_time DESC LIMIT ?\r\n### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND \' at line 1\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy439.selectPageGroupByProjectId(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.pd.archive.MesPdArchiveServiceImpl.getArchivePageGroupByProject(MesPdArchiveServiceImpl.java:99)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.ao', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-03 17:25:36', '1', '2026-07-03 17:25:36', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24356, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/pd/archive/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', '2026-07-03 17:31:01', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: \r\n### Error querying database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT a.*, p.product_code, p.product_name,p.task_code,p.task_name,su.nick_name as archiver_nickname\n               (SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND cnt.deleted = 0) AS archive_count\n        FROM mes_pd_archive a\n        INNER JOIN (\n            SELECT MAX(sub.id) AS id\n            FROM mes_pd_archive sub\n            WHERE sub.deleted = 0\n             \n             \n             \n            GROUP BY sub.project_id\n        ) g ON a.id = g.id\n        LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0\n        left join sys_user su on su.user_id =  a.archiver\n          \n        ORDER BY a.update_time DESC\r\n### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT a.*, p.product_code, p.product_name,p.task_code,p.task_name,su.nick_name as archiver_nickname\n               (SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND cnt.deleted = 0) AS archive_count\n        FROM mes_pd_archive a\n        INNER JOIN (\n            SELECT MAX(sub.id) AS id\n            FROM mes_pd_archive sub\n            WHERE sub.deleted = 0\n             \n             \n             \n            GROUP BY sub.project_id\n        ) g ON a.id = g.id\n        LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0\n        left join sys_user su on su.user_id =  a.archiver\n          \n        ORDER BY a.update_time DESC', 'ParseException: Encountered unexpected token: \"SELECT\" <K_SELECT>\n    at line 2, column 17.\n\nWas expecting one of:\n\n    \"ACTION\"\n    \"ACTIVE\"\n    \"ADD\"\n    \"ADVANCE\"\n    \"ADVISE\"\n    \"AGAINST\"\n    \"AGGREGATE\"\n    \"ALGORITHM\"\n    \"ALTER\"\n    \"ANALYZE\"\n    \"APPLY\"\n    \"APPROXIMATE\"\n    \"ARCHIVE\"\n    \"ARRAY\"\n    \"ASC\"\n    \"AT\"\n    \"AUTHORIZATION\"\n    \"AUTO\"\n    \"AUTO_INCREMENT\"\n    \"BASE64\"\n    \"BEGIN\"\n    \"BERNOULLI\"\n    \"BINARY\"\n    \"BIT\"\n    \"BLOCK\"\n    \"BROWSE\"\n    \"BUFFERS\"\n    \"BY\"\n    \"BYTE\"\n    \"BYTES\"\n    \"CACHE\"\n    \"CALL\"\n    \"CASCADE\"\n    \"CASE\"\n    \"CAST\"\n    \"CHANGE\"\n    \"CHANGES\"\n    \"CHAR\"\n    \"CHARACTER\"\n    \"CHECKPOINT\"\n    \"CLOSE\"\n    \"COALESCE\"\n    \"COLLATE\"\n    \"COLUMN\"\n    \"COLUMNS\"\n    \"COMMENT\"\n    \"COMMIT\"\n    \"CONCURRENTLY\"\n    \"CONFLICT\"\n    \"CONNECT\"\n    \"CONSTRAINTS\"\n    \"CONVERT\"\n    \"CORRESPONDING\"\n    \"COSTS\"\n    \"COUNT\"\n    \"CREATE\"\n    \"CS\"\n    \"CYCLE\"\n    \"DATA\"\n    \"DATABASE\"\n    \"DATETIME\"\n    \"DBA_RECYCLEBIN\"\n    \"DDL\"\n    \"DECLARE\"\n    \"DEFAULT\"\n    \"DEFERRABLE\"\n    \"DELAYED\"\n    \"DELETE\"\n    \"DESC\"\n    \"DESCRIBE\"\n    \"DISABLE\"\n    \"DISCARD\"\n    \"DISCONNECT\"\n    \"DIV\"\n    \"DML\"\n    \"DO\"\n    \"DOMAIN\"\n    \"DROP\"\n    \"DUMP\"\n    \"DUPLICATE\"\n    \"ELEMENTS\"\n    \"EMIT\"\n    \"ENABLE\"\n    \"ENCRYPTION\"\n    \"END\"\n    \"ENFORCED\"\n    \"ENGINE\"\n    \"ERROR\"\n    \"ESCAPE\"\n    \"EXCHANGE\"\n    \"EXCLUDE\"\n    \"EXEC\"\n    \"EXECUTE\"\n    \"EXPLAIN\"\n    \"EXPLICIT\"\n    \"EXTENDED\"\n    \"EXTRACT\"\n    \"FILTER\"\n    \"FIRST\"\n    \"FLUSH\"\n    \"FN\"\n    \"FOLLOWING\"\n    \"FORMAT\"\n    \"FULLTEXT\"\n    \"FUNCTION\"\n    \"GRANT\"\n    \"GROUP\"\n    \"GROUP_CONCAT\"\n    \"GUARD\"\n    \"HASH\"\n    \"HIGH\"\n    \"HIGH_PRIORITY\"\n    \"HISTORY\"\n    \"HOPPING\"\n    \"IGNORE\"\n    \"IMPORT\"\n    \"INCLUDE\"\n    \"INCLUDE_NULL_VALUES\"\n    \"INCREMENT\"\n    \"INDEX\"\n    \"INSERT\"\n    \"INTERLEAVE\"\n    \"INTERPRET\"\n    \"INTERVAL\"\n    \"INVALIDATE\"\n    \"INVERSE\"\n    \"INVISIBLE\"\n    \"ISNULL\"\n    \"JSON\"\n    \"JSON_ARRAY\"\n    \"JSON_ARRAYAGG\"\n    \"JSON_OBJECT\"\n    \"JSON_OBJECTAGG\"\n    \"KEEP\"\n    \"KEY\"\n    \"KEYS\"\n    \"KEY_BLOCK_SIZE\"\n    \"LAST\"\n    \"LEADING\"\n    \"LESS\"\n    \"LINK\"\n    \"LOCAL\"\n    \"LOCK\"\n    \"LOCKED\"\n    \"LOG\"\n    \"LONGTEXT\"\n    \"LOOP\"\n    \"LOW\"\n    \"LOW_PRIORITY\"\n    \"MATCH\"\n    \"MATCHED\"\n    \"MATCH_ALL\"\n    \"MATCH_ANY\"\n    \"MATCH_PHRASE\"\n    \"MATCH_PHRASE_PREFIX\"\n    \"MATCH_REGEXP\"\n    \"MATERIALIZED\"\n    \"MAX\"\n    \"MAXVALUE\"\n    \"MEDIUMTEXT\"\n    \"MEMBER\"\n    \"MERGE\"\n    \"MIN\"\n    \"MINVALUE\"\n    \"MODIFY\"\n    \"MOVEMENT\"\n    \"NAME\"\n    \"NEXT\"\n    \"NO\"\n    \"NOCACHE\"\n    \"NOKEEP\"\n    \"NOLOCK\"\n    \"NOMAXVALUE\"\n    \"NOMINVALUE\"\n    \"NOORDER\"\n    \"NOTHING\"\n    \"NOTNULL\"\n    \"NOVALIDATE\"\n    \"NOWAIT\"\n    \"NULLS\"\n    \"OF\"\n    \"OFF\"\n    \"ON\"\n    \"OPEN\"\n    \"ORDINALITY\"\n    \"OVER\"\n    \"OVERFLOW\"\n    \"OVERLAPS\"\n    \"OVERRIDING\"\n    \"OVERWRITE\"\n    \"PARALLEL\"\n    \"PARENT\"\n    \"PARSER\"\n    \"PARTITION\"\n    \"PARTITIONING\"\n    \"PATH\"\n    \"PERCENT\"\n    \"PLACING\"\n    \"PLAN\"\n    \"PLUS\"\n    \"PRECEDING\"\n    \"PRIMARY\"\n    \"PURGE\"\n    \"QUALIFY\"\n    \"QUERY\"\n    \"QUICK\"\n    \"QUIESCE\"\n    \"RANGE\"\n    \"RAW\"\n    \"READ\"\n    \"REBUILD\"\n    \"RECURSIVE\"\n    \"RECYCLEBIN\"\n    \"REFERENCES\"\n    \"REFRESH\"\n    \"REGEXP\"\n    \"REGEXP_LIKE\"\n    \"REGISTER\"\n    \"REMOTE\"\n    \"REMOVE\"\n    \"RENAME\"\n    \"REORGANIZE\"\n    \"REPAIR\"\n    \"REPEATABLE\"\n    \"REPLACE\"\n    \"RESET\"\n    \"RESPECT\"\n    \"RESTART\"\n    \"RESTRICT\"\n    \"RESTRICTED\"\n    \"RESUMABLE\"\n    \"RESUME\"\n    \"RETURN\"\n    \"RLIKE\"\n    \"ROLLBACK\"\n    \"ROLLUP\"\n    \"ROOT\"\n    \"ROW\"\n    \"ROWS\"\n    \"RR\"\n    \"RS\"\n    \"SAFE_CAST\"\n    \"SAVEPOINT\"\n    \"SCHEMA\"\n    \"SECURE\"\n    \"SEED\"\n    \"SEPARATOR\"\n    \"SEQUENCE\"\n    \"SESSION\"\n    \"SETS\"\n    \"SHARE\"\n    \"SHOW\"\n    \"SHUTDOWN\"\n    \"SIBLINGS\"\n    \"SIGNED\"\n    \"SIMILAR\"\n    \"SIZE\"\n    \"SKIP\"\n    \"SPATIAL\"\n    \"START\"\n    \"STORED\"\n    \"STRICT\"\n    \"STRING\"\n    \"STRUCT\"\n    \"SUMMARIZE\"\n    \"SUSPEND\"\n    \"SWITCH\"\n    \"SYNONYM\"\n    \"SYSTEM\"\n    \"TABLE\"\n    \"TABLES\"\n    \"TABLESPACE\"\n    \"TEMP\"\n    \"TEMPORARY\"\n    \"TEXT\"\n    \"THAN\"\n    \"THEN\"\n    \"TIMEOUT\"\n    \"TIMESTAMPTZ\"\n    \"TIMEZONE\"\n    \"TINYTEXT\"\n    \"TO\"\n    \"TOP\"\n    \"TRIGGER\"\n    \"TRUNCATE\"\n    \"TRY_CAST\"\n    \"TUMBLING\"\n    \"TYPE\"\n    \"UNLOGGED\"\n    \"UNQIESCE\"\n    \"UNSIGNED\"\n    \"UPDATE\"\n    \"UPSERT\"\n    \"UR\"\n    \"USER\"\n    \"VALIDATE\"\n    \"VALIDATION\"\n    \"VALUE\"\n    \"VALUES\"\n    \"VERBOSE\"\n    \"VIEW\"\n    \"VISIBLE\"\n    \"VOLATILE\"\n    \"WAIT\"\n    \"WITHIN\"\n    \"WITHOUT\"\n    \"WITHOUT_ARRAY_WRAPPER\"\n    \"WORK\"\n    \"XML\"\n    \"XMLAGG\"\n    \"XMLDATA\"\n    \"XMLSCHEMA\"\n    \"XMLTEXT\"\n    \"XSINIL\"\n    \"YAML\"\n    \"YES\"\n    \"ZONE\"\n    <DATA_TYPE>\n    <K_DATETIMELITERAL>\n    <K_DATE_LITERAL>\n    <K_ISOLATION>\n    <K_STRING_FUNCTION_NAME>\n    <K_TEXT_LITERAL>\n    <K_TIME_KEY_EXPR>\n    <S_IDENTIFIER>\n    <S_QUOTED_IDENTIFIER>\n', 'org.mybatis.spring.MyBatisSystemException: \r\n### Error querying database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT a.*, p.product_code, p.product_name,p.task_code,p.task_name,su.nick_name as archiver_nickname\n               (SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND cnt.deleted = 0) AS archive_count\n        FROM mes_pd_archive a\n        INNER JOIN (\n            SELECT MAX(sub.id) AS id\n            FROM mes_pd_archive sub\n            WHERE sub.deleted = 0\n             \n             \n             \n            GROUP BY sub.project_id\n        ) g ON a.id = g.id\n        LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0\n        left join sys_user su on su.user_id =  a.archiver\n          \n        ORDER BY a.update_time DESC\r\n### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT a.*, p.product_code, p.product_name,p.task_code,p.task_name,su.nick_name as archiver_nickname\n               (SELECT COUNT(*) FROM mes_pd_archive cnt WHERE cnt.project_id = a.project_id AND cnt.deleted = 0) AS archive_count\n        FROM mes_pd_archive a\n        INNER JOIN (\n            SELECT MAX(sub.id) AS id\n            FROM mes_pd_archive sub\n            WHERE sub.deleted = 0\n             \n             \n             \n            GROUP BY sub.project_id\n        ) g ON a.id = g.id\n        LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0\n        left join sys_user su on su.user_id =  a.archiver\n          \n        ORDER BY a.update_time DESC\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:101)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy439.selectPageGroupByProjectId(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.pd.archive.MesPdArchiveServiceImpl.getArchivePageGroupByProject(MesPdArchiveServiceImpl.java:99)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveM', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 101, 0, NULL, 0, '1', '2026-07-03 17:31:01', '1', '2026-07-03 17:31:01', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24357, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/pd/archive/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', '2026-07-03 17:32:02', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.sys_user\' doesn\'t exist\r\n### The error may exist in file [D:\\xd\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\pd\\archive\\MesPdArchiveMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_pd_archive a INNER JOIN (SELECT MAX(sub.id) AS id FROM mes_pd_archive sub WHERE sub.deleted = 0 GROUP BY sub.project_id) g ON a.id = g.id LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0 LEFT JOIN sys_user su ON su.user_id = a.archiver\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.sys_user\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.sys_user\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.sys_user\' doesn\'t exist\r\n### The error may exist in file [D:\\xd\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\pd\\archive\\MesPdArchiveMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_pd_archive a INNER JOIN (SELECT MAX(sub.id) AS id FROM mes_pd_archive sub WHERE sub.deleted = 0 GROUP BY sub.project_id) g ON a.id = g.id LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0 LEFT JOIN sys_user su ON su.user_id = a.archiver\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.sys_user\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy439.selectPageGroupByProjectId(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.pd.archive.MesPdArchiveServiceImpl.getArchivePageGroupByProject(MesPdArchiveServiceImpl.java:99)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mes.service.pd.archive.MesPdArchiveServiceImpl$$', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-03 17:32:02', '1', '2026-07-03 17:32:02', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24358, '', 1, 2, 'yudao-server', 'GET', '/admin-api/mes/pd/archive/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', '2026-07-03 17:34:25', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'su.user_id\' in \'on clause\'\r\n### The error may exist in file [D:\\xd\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\pd\\archive\\MesPdArchiveMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_pd_archive a INNER JOIN (SELECT MAX(sub.id) AS id FROM mes_pd_archive sub WHERE sub.deleted = 0 GROUP BY sub.project_id) g ON a.id = g.id LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0 LEFT JOIN system_users su ON su.user_id = a.archiver\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'su.user_id\' in \'on clause\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'su.user_id\' in \'on clause\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'su.user_id\' in \'on clause\'\r\n### The error may exist in file [D:\\xd\\mom-pro2-after\\yudao-module-mes\\target\\classes\\mapper\\pd\\archive\\MesPdArchiveMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) AS total FROM mes_pd_archive a INNER JOIN (SELECT MAX(sub.id) AS id FROM mes_pd_archive sub WHERE sub.deleted = 0 GROUP BY sub.project_id) g ON a.id = g.id LEFT JOIN mes_pd_project p ON a.project_id = p.id AND p.deleted = 0 LEFT JOIN system_users su ON su.user_id = a.archiver\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'su.user_id\' in \'on clause\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy439.selectPageGroupByProjectId(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.pd.archive.MesPdArchiveServiceImpl.getArchivePageGroupByProject(MesPdArchiveServiceImpl.java:99)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mes.service.pd.archive.MesPdArchiveServiceImpl$$', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-03 17:34:25', '1', '2026-07-03 17:34:25', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24359, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:02:31', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tran', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:02:31', '1', '2026-07-06 11:02:31', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24360, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":1,\\\"employeeNo\\\":\\\"123\\\",\\\"name\\\":\\\"123\\\",\\\"phone\\\":\\\"18888888888\\\",\\\"deptId\\\":100,\\\"postId\\\":2,\\\"hireDate\\\":\\\"2026-07-06\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:02:41', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender,  phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender,  phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInte', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-06 11:02:41', '142', '2026-07-06 11:02:41', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24361, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":1,\\\"employeeNo\\\":\\\"123\\\",\\\"name\\\":\\\"123\\\",\\\"phone\\\":\\\"18888888888\\\",\\\"deptId\\\":100,\\\"postId\\\":2,\\\"hireDate\\\":\\\"2026-07-06\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:02:41', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender,  phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender,  phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInte', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-06 11:02:41', '142', '2026-07-06 11:02:41', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24362, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":1,\\\"employeeNo\\\":\\\"123\\\",\\\"name\\\":\\\"123\\\",\\\"phone\\\":\\\"18888888888\\\",\\\"deptId\\\":100,\\\"postId\\\":2,\\\"hireDate\\\":\\\"2026-07-06\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:02:46', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender,  phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender,  phone,   hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,  ?,   ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInte', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-06 11:02:46', '142', '2026-07-06 11:02:46', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24363, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:13', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date,   employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,   ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInter', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:13', '1', '2026-07-06 11:03:13', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24364, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\",\\\"regularDate\\\":\\\"2026-10-01\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:18', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status,        create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?,        ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.T', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:18', '1', '2026-07-06 11:03:18', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24365, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\",\\\"regularDate\\\":\\\"2026-10-01\\\",\\\"annualLeaveBalance\\\":5,\\\"sickLeaveBalance\\\":5}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:25', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,      create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,      ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at o', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:25', '1', '2026-07-06 11:03:25', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24366, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\",\\\"regularDate\\\":\\\"2026-10-01\\\",\\\"annualLeaveBalance\\\":5,\\\"sickLeaveBalance\\\":5,\\\"bankName\\\":\\\"涓浗閾惰\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:35', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name,    create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?,    ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name,    create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?,    ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:35', '1', '2026-07-06 11:03:35', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24367, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\",\\\"regularDate\\\":\\\"2026-10-01\\\",\\\"annualLeaveBalance\\\":5,\\\"sickLeaveBalance\\\":5,\\\"bankName\\\":\\\"涓浗閾惰\\\",\\\"address\\\":\\\"鍗楅�氬競宕囧窛鍖虹豢鍩庤瘹鍥璡\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:38', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name,  address,  create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?,  ?,  ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name,  address,  create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?,  ?,  ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSu', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:38', '1', '2026-07-06 11:03:38', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24368, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\",\\\"regularDate\\\":\\\"2026-10-01\\\",\\\"annualLeaveBalance\\\":5,\\\"sickLeaveBalance\\\":5,\\\"bankName\\\":\\\"涓浗閾惰\\\",\\\"bankAccount\\\":\\\"12313\\\",\\\"address\\\":\\\"鍗楅�氬競宕囧窛鍖虹豢鍩庤瘹鍥璡\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:40', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name, bank_account, address,  create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?, ?, ?,  ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name, bank_account, address,  create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?, ?, ?,  ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(Tran', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:40', '1', '2026-07-06 11:03:40', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24369, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/employee/create', '{\"query\":{},\"body\":\"{\\\"gender\\\":1,\\\"employeeStatus\\\":2,\\\"employeeNo\\\":\\\"001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"birthday\\\":\\\"2005-07-01\\\",\\\"phone\\\":\\\"15822054762\\\",\\\"email\\\":\\\"2820598778@qq.com\\\",\\\"idCard\\\":\\\"410105199812128844\\\",\\\"deptId\\\":103,\\\"postId\\\":4,\\\"hireDate\\\":\\\"2026-07-06\\\",\\\"regularDate\\\":\\\"2026-10-01\\\",\\\"annualLeaveBalance\\\":5,\\\"sickLeaveBalance\\\":5,\\\"bankName\\\":\\\"涓浗閾惰\\\",\\\"bankAccount\\\":\\\"12313\\\",\\\"address\\\":\\\"鍗楅�氬競宕囧窛鍖虹豢鍩庤瘹鍥璡\\",\\\"remark\\\":\\\"131\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-06 11:03:42', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name, bank_account, address, remark, create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value', 'SQLException: Field \'user_id\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee  ( dept_id, post_id, employee_no, name, gender, birthday, phone, email, id_card, hire_date, regular_date,  employee_status, annual_leave_balance, sick_leave_balance,  bank_name, bank_account, address, remark, create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,  ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'user_id\' doesn\'t have a default value\n; Field \'user_id\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy652.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.createEmployee(HrmEmployeeServiceImpl.java:69)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransac', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '1', '2026-07-06 11:03:42', '1', '2026-07-06 11:03:42', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24370, '', 1, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:10:53', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-07 09:10:53', '1', '2026-07-07 09:10:53', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24371, '', 1, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:17:38', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-07 09:17:38', '1', '2026-07-07 09:17:38', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24372, '', 142, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:22:29', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-07 09:22:29', '142', '2026-07-07 09:22:29', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24373, '', 1, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:22:41', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-07 09:22:41', '1', '2026-07-07 09:22:41', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24374, '', 142, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:23:07', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-07 09:23:07', '142', '2026-07-07 09:23:07', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24375, '', 142, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:23:16', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-07 09:23:16', '142', '2026-07-07 09:23:16', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24376, '', 142, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:23:24', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-07 09:23:24', '142', '2026-07-07 09:23:24', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24377, '', 1, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{\"status\":\"0\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:23:30', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 AND (status = ?) ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingRef', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-07 09:23:30', '1', '2026-07-07 09:23:30', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24378, '', 1, 2, 'yudao-server', 'GET', '/admin-api/hrm/salary/social-security-scheme/list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:23:32', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []', 'SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSocialSecuritySchemeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, name, effective_date, pension_company_ratio, pension_personal_ratio, medical_company_ratio, medical_personal_ratio, unemployment_company_ratio, unemployment_personal_ratio, work_injury_ratio, maternity_ratio, housing_fund_company_ratio, housing_fund_personal_ratio, status, remark, create_time, update_time, creator, updater, deleted FROM hrm_social_security_scheme WHERE deleted = 0 ORDER BY effective_date DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \'ruoyi-vue-pro.hrm_social_security_scheme\' doesn\'t exist\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectList(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSocialSecuritySchemeMapper.selectListByStatus(HrmSocialSecuritySchemeMapper.java:19)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy657.selectListByStatus(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSocialSecuritySchemeServiceImpl.getSchemeList(HrmSocialSecuritySchemeServiceImpl.java:51)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-07 09:23:32', '1', '2026-07-07 09:23:32', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24379, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/employee-social-security/create', '{\"query\":{},\"body\":\"{\\\"userId\\\":3,\\\"socialSecuritySchemeId\\\":1,\\\"socialSecurityBase\\\":5000,\\\"housingFundBase\\\":5000,\\\"effectiveDate\\\":\\\"2026-07-07\\\",\\\"status\\\":0}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 09:31:29', 'org.springframework.dao.DuplicateKeyException', 'DuplicateKeyException: \r\n### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmEmployeeSocialSecurityMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmEmployeeSocialSecurityMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee_social_security  ( user_id, social_security_scheme_id, social_security_base, housing_fund_base, effective_date, status,  create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?,  ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'\n; Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'', 'SQLIntegrityConstraintViolationException: Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'', 'org.springframework.dao.DuplicateKeyException: \r\n### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmEmployeeSocialSecurityMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmEmployeeSocialSecurityMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_employee_social_security  ( user_id, social_security_scheme_id, social_security_base, housing_fund_base, effective_date, status,  create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?, ?,  ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'\n; Duplicate entry \'3-2026-07-07\' for key \'hrm_employee_social_security.uk_user_effective\'\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:252)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy656.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmEmployeeSocialSecurityServiceImpl.createEmployeeSocialSecurity(HrmEmployeeSocialSecurityServiceImpl.java:31)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 252, 0, NULL, 0, '1', '2026-07-07 09:31:29', '1', '2026-07-07 09:31:29', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24380, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/menu/list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 10:00:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-07 10:00:14', '1', '2026-07-07 10:00:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24381, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/dict-data/simple-list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:05:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-07 11:05:14', '142', '2026-07-07 11:05:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24382, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/dict-data/simple-list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:05:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: Connection reset by peer', 'IOException: Connection reset by peer', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: Connection reset by peer\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-07 11:05:14', '142', '2026-07-07 11:05:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24383, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/dict-data/simple-list', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:05:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-07 11:05:14', '142', '2026-07-07 11:05:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24384, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:05:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-07 11:05:14', '142', '2026-07-07 11:05:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24385, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:05:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-07 11:05:14', '142', '2026-07-07 11:05:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24386, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:05:14', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: Connection reset by peer', 'IOException: Connection reset by peer', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: Connection reset by peer\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-07 11:05:14', '142', '2026-07-07 11:05:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24387, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[1]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:26:28', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '1', '2026-07-07 11:26:28', '1', '2026-07-07 11:26:28', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24388, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:26:52', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:26:52', '142', '2026-07-07 11:26:52', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24389, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:27:00', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:27:00', '142', '2026-07-07 11:27:00', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24390, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:27:23', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:27:23', '142', '2026-07-07 11:27:23', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24391, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:27:34', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:27:34', '142', '2026-07-07 11:27:34', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24392, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:27:35', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:27:35', '142', '2026-07-07 11:27:35', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24393, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:27:40', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:27:40', '142', '2026-07-07 11:27:40', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24394, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[1]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:29:26', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '1', '2026-07-07 11:29:26', '1', '2026-07-07 11:29:26', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24395, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[1,2,3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:29:38', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '142', '2026-07-07 11:29:38', '142', '2026-07-07 11:29:38', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24396, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:43:14', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '1', '2026-07-07 11:43:14', '1', '2026-07-07 11:43:14', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24397, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:43:16', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '1', '2026-07-07 11:43:16', '1', '2026-07-07 11:43:16', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24398, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[3]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 11:43:19', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)', 'MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); byte offset: #0]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Long>` from Object value (token `JsonToken.START_OBJECT`)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.readJavaType(AbstractJacksonHttpMessageConverter.java:363)\r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.read(AbstractJacksonHttpMessageConverter.java:319)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:203)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:156)\r\n	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)\r\n	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:174)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:903)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:649)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.drui', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'readJavaType', 363, 0, NULL, 0, '1', '2026-07-07 11:43:19', '1', '2026-07-07 11:43:19', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24399, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[7]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 14:00:18', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSalaryPaymentMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryPaymentMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_salary_payment  ( no, period, total_amount, total_count,   status,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\n; Field \'payment_method\' doesn\'t have a default value', 'SQLException: Field \'payment_method\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSalaryPaymentMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryPaymentMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_salary_payment  ( no, period, total_amount, total_count,   status,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\n; Field \'payment_method\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy663.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.generatePaymentInternal(HrmSalaryCalculationServiceImpl.java:479)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.autoGeneratePaymentIfAllConfirmed(HrmSalaryCalculationServiceImpl.java:384)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.confirmSalaryCalculation(HrmSalaryCalculationServiceImpl.java:359)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.Tra', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-07 14:00:18', '142', '2026-07-07 14:00:18', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24400, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/confirm', '{\"query\":{},\"body\":\"{\\\"ids\\\":[7]}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 14:00:22', 'org.springframework.dao.DataIntegrityViolationException', 'DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSalaryPaymentMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryPaymentMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_salary_payment  ( no, period, total_amount, total_count,   status,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\n; Field \'payment_method\' doesn\'t have a default value', 'SQLException: Field \'payment_method\' doesn\'t have a default value', 'org.springframework.dao.DataIntegrityViolationException: \r\n### Error updating database.  Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\r\n### The error may exist in cn/iocoder/yudao/module/hrm/dal/mysql/salary/HrmSalaryPaymentMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryPaymentMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO hrm_salary_payment  ( no, period, total_amount, total_count,   status,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?,   ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLException: Field \'payment_method\' doesn\'t have a default value\n; Field \'payment_method\' doesn\'t have a default value\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:256)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy663.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.generatePaymentInternal(HrmSalaryCalculationServiceImpl.java:479)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.autoGeneratePaymentIfAllConfirmed(HrmSalaryCalculationServiceImpl.java:384)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.confirmSalaryCalculation(HrmSalaryCalculationServiceImpl.java:359)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.Tra', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 256, 0, NULL, 0, '142', '2026-07-07 14:00:22', '142', '2026-07-07 14:00:22', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24401, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/calculate', '{\"query\":{\"period\":\"2026-01\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 14:01:36', 'org.apache.ibatis.exceptions.TooManyResultsException', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:343)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy659.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy659.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryCalculationMapper.selectByUserIdAndPeriod(HrmSalaryCalculationMapper.java:35)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy659.selectByUserIdAndPeriod(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.calculateSalary(HrmSalaryCalculationServiceImpl.java:128)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(Cg', 'com.baomidou.mybatisplus.core.mapper.BaseMapper', 'BaseMapper.java', 'selectOne', 343, 0, NULL, 0, '142', '2026-07-07 14:01:36', '142', '2026-07-07 14:01:36', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24402, '', 142, 2, 'yudao-server', 'POST', '/admin-api/hrm/salary/calculation/calculate', '{\"query\":{\"period\":\"2026-01\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-07 14:01:40', 'org.apache.ibatis.exceptions.TooManyResultsException', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2', 'org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:343)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy659.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy659.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryCalculationMapper.selectByUserIdAndPeriod(HrmSalaryCalculationMapper.java:35)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy659.selectByUserIdAndPeriod(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.salary.HrmSalaryCalculationServiceImpl.calculateSalary(HrmSalaryCalculationServiceImpl.java:128)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133)\r\n	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)\r\n	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(Cg', 'com.baomidou.mybatisplus.core.mapper.BaseMapper', 'BaseMapper.java', 'selectOne', 343, 0, NULL, 0, '142', '2026-07-07 14:01:40', '142', '2026-07-07 14:01:40', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24403, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/attendance/summary/generate', '{\"query\":{\"yearMonth\":\"2026-05\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-08 10:46:48', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: \r\n### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.\r\n### Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.', 'BuilderException: The expression \'coll\' evaluated to a null value.', 'org.mybatis.spring.MyBatisSystemException: \r\n### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.\r\n### Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:101)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy651.selectByIds(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.getEmployeeList(HrmEmployeeServiceImpl.java:245)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl$$SpringCGLIB$$0.getEmployeeList(<generated>)\r\n	at cn.iocoder.yudao.module.hrm.service.attendance.HrmAttendanceSummaryServiceImpl.generateAllMonthlySummary(HrmAttendanceSummaryServiceImpl.java:146)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at o', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 101, 0, NULL, 0, '1', '2026-07-08 10:46:48', '1', '2026-07-08 10:46:48', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24404, '', 1, 2, 'yudao-server', 'POST', '/admin-api/hrm/attendance/summary/generate', '{\"query\":{\"yearMonth\":\"2026-07\",\"deptId\":\"103\"},\"body\":\"null\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-08 10:46:55', 'org.mybatis.spring.MyBatisSystemException', 'MyBatisSystemException: \r\n### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.\r\n### Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.', 'BuilderException: The expression \'coll\' evaluated to a null value.', 'org.mybatis.spring.MyBatisSystemException: \r\n### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.\r\n### Cause: org.apache.ibatis.builder.BuilderException: The expression \'coll\' evaluated to a null value.\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:101)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy651.selectByIds(Unknown Source)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl.getEmployeeList(HrmEmployeeServiceImpl.java:245)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeServiceImpl$$SpringCGLIB$$0.getEmployeeList(<generated>)\r\n	at cn.iocoder.yudao.module.hrm.service.attendance.HrmAttendanceSummaryServiceImpl.generateDeptMonthlySummary(HrmAttendanceSummaryServiceImpl.java:129)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at ', 'org.mybatis.spring.MyBatisExceptionTranslator', 'MyBatisExceptionTranslator.java', 'translateExceptionIfPossible', 101, 0, NULL, 0, '1', '2026-07-08 10:46:55', '1', '2026-07-08 10:46:55', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24405, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-08 13:16:51', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-08 13:16:51', '1', '2026-07-08 13:16:51', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24406, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 13:36:10', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-09 13:36:10', '1', '2026-07-09 13:36:10', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24407, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 13:36:57', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-09 13:36:57', '1', '2026-07-09 13:36:57', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24408, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 13:37:31', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-09 13:37:31', '1', '2026-07-09 13:37:31', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24409, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 13:43:33', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-09 13:43:33', '1', '2026-07-09 13:43:33', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24410, '', 142, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 13:43:33', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '142', '2026-07-09 13:43:33', '142', '2026-07-09 13:43:33', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24411, '', 1, 2, 'yudao-server', 'GET', '/admin-api/system/auth/get-permission-info', '{\"query\":{},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 13:48:48', 'org.springframework.http.converter.HttpMessageNotWritableException', 'HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ��', 'org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: ServletOutputStream failed to write: java.io.IOException: 浣犵殑涓绘満涓殑杞欢涓浜嗕竴涓凡寤虹珛鐨勮繛鎺ャ�俓r\n	at org.springframework.http.converter.AbstractJacksonHttpMessageConverter.writeInternal(AbstractJacksonHttpMessageConverter.java:444)\r\n	at org.springframework.http.converter.AbstractSmartHttpMessageConverter.write(AbstractSmartHttpMessageConverter.java:116)\r\n	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:342)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:213)\r\n	at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:77)\r\n	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:135)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)\r\n	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)\r\n	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)\r\n	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\r\n	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)\r\n	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)\r\n	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)\r\n	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)\r\n	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128)\r\n	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107)\r\n	at cn.iocoder.yudao.module.bpm.framework.web.core.FlowableWebFilter.doFilterInternal(FlowableWebFilter.java:30)\r\n	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\r\n	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai', 'org.springframework.http.converter.AbstractJacksonHttpMessageConverter', 'AbstractJacksonHttpMessageConverter.java', 'writeInternal', 444, 0, NULL, 0, '1', '2026-07-09 13:48:48', '1', '2026-07-09 13:48:48', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24412, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:00:41', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Di', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:00:41', '142', '2026-07-09 14:00:41', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24413, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:00:50', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Di', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:00:50', '142', '2026-07-09 14:00:50', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24414, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:00:55', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Di', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:00:55', '142', '2026-07-09 14:00:55', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24415, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/sn/generate', '{\"query\":{},\"body\":\"{\\\"itemId\\\":15,\\\"batchCode\\\":\\\"涓媆\\",\\\"count\\\":100}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:01:05', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'', 'SQLSyntaxErrorException: Unknown column \'uuid\' in \'field list\'', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.generateSnCodes(MesWmSnServiceImpl.java:71)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInte', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '142', '2026-07-09 14:01:05', '142', '2026-07-09 14:01:05', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24416, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/sn/generate', '{\"query\":{},\"body\":\"{\\\"itemId\\\":15,\\\"batchCode\\\":\\\"涓媆\\",\\\"count\\\":100}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:01:12', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'', 'SQLSyntaxErrorException: Unknown column \'uuid\' in \'field list\'', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.generateSnCodes(MesWmSnServiceImpl.java:71)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInte', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '142', '2026-07-09 14:01:12', '142', '2026-07-09 14:01:12', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24417, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/sn/generate', '{\"query\":{},\"body\":\"{\\\"itemId\\\":15,\\\"batchCode\\\":\\\"涓媆\\",\\\"count\\\":100}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:01:19', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'', 'SQLSyntaxErrorException: Unknown column \'uuid\' in \'field list\'', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'uuid\' in \'field list\'\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.generateSnCodes(MesWmSnServiceImpl.java:71)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInte', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '142', '2026-07-09 14:01:19', '142', '2026-07-09 14:01:19', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24418, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:01:39', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.uuid\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Di', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:01:39', '142', '2026-07-09 14:01:39', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24419, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:03:42', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.batch_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.batch_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.batch_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.batch_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.batch_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccess', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:03:42', '142', '2026-07-09 14:03:42', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24420, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/sn/generate', '{\"query\":{},\"body\":\"{\\\"itemId\\\":15,\\\"batchCode\\\":\\\"涓媆\\",\\\"count\\\":100}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:03:50', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'', 'SQLSyntaxErrorException: Unknown column \'batch_code\' in \'field list\'', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.generateSnCodes(MesWmSnServiceImpl.java:71)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodVa', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '142', '2026-07-09 14:03:50', '142', '2026-07-09 14:03:50', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24421, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/sn/generate', '{\"query\":{},\"body\":\"{\\\"itemId\\\":15,\\\"batchCode\\\":\\\"涓媆\\",\\\"count\\\":100}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:03:57', 'org.apache.ibatis.exceptions.PersistenceException', 'PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'', 'SQLSyntaxErrorException: Unknown column \'batch_code\' in \'field list\'', 'org.apache.ibatis.exceptions.PersistenceException: \r\n### Error flushing statements.  Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'\r\n### Cause: org.apache.ibatis.executor.BatchExecutorException: cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Unknown column \'batch_code\' in \'field list\'\r\n	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\r\n	at org.apache.ibatis.session.defaults.DefaultSqlSession.flushStatements(DefaultSqlSession.java:254)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:149)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:130)\r\n	at com.baomidou.mybatisplus.core.batch.MybatisBatch.execute(MybatisBatch.java:118)\r\n	at com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils.execute(MybatisBatchUtils.java:175)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(BaseMapper.java:517)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insert(Unknown Source)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.lambda$saveBatch$223719e8$1(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.execute(SqlHelper.java:323)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:89)\r\n	at com.baomidou.mybatisplus.extension.toolkit.Db.saveBatch(Db.java:75)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.insertBatch(BaseMapperX.java:239)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.insertBatch(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.generateSnCodes(MesWmSnServiceImpl.java:71)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodVa', 'org.apache.ibatis.exceptions.ExceptionFactory', 'ExceptionFactory.java', 'wrapException', 30, 0, NULL, 0, '142', '2026-07-09 14:03:57', '142', '2026-07-09 14:03:57', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24422, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:06:55', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandle', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:06:55', '142', '2026-07-09 14:06:55', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24423, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:06:55', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandle', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:06:55', '142', '2026-07-09 14:06:55', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24424, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:07:04', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandle', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:07:04', '142', '2026-07-09 14:07:04', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24425, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:07:12', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandle', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24426, '', 142, 2, 'yudao-server', 'GET', '/admin-api/mes/wm/sn/group-page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"20\"},\"body\":null}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:07:23', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/sn/MesWmSnMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT COUNT(*) FROM (SELECT t.uuid AS uuid, MAX(t.item_id) AS itemId, MAX(t.batch_code) AS batchCode, MAX(t.work_order_id) AS workOrderId, MAX(t.create_time) AS createTime, COUNT(*) AS count FROM mes_wm_sn t WHERE t.deleted = 0 GROUP BY t.uuid) TOTAL\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'t.work_order_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:119)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:84)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectJoinPage(BaseMapperX.java:66)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectJoinPage(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper.selectPageGroupByUuid(MesWmSnMapper.java:40)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:182)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy573.selectPageGroupByUuid(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnServiceImpl.getSnGroupPage(MesWmSnServiceImpl.java:79)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandle', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 14:07:23', '142', '2026-07-09 14:07:23', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24427, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/item-receipt/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"IR_202607090001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"receiptDate\\\":\\\"1783577333722\\\",\\\"vendorId\\\":1,\\\"purchaseOrderCode\\\":\\\"1212\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:09:05', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, process_instance_id, process_definition_key, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, process_instance_id, process_definition_key, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-09 14:09:05', '1', '2026-07-09 14:09:05', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24428, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"purchaseOrderCode\\\":\\\"1212\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783490957724\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:09:21', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.cor', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-09 14:09:21', '1', '2026-07-09 14:09:21', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24429, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"purchaseOrderCode\\\":\\\"1212\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783490957724\\\",\\\"contactName\\\":\\\"123\\\",\\\"contactTelephone\\\":\\\"15598989685\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:09:30', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.cor', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-09 14:09:30', '1', '2026-07-09 14:09:30', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24430, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090001\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"purchaseOrderCode\\\":\\\"1212\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783490957724\\\",\\\"contactName\\\":\\\"123\\\",\\\"contactTelephone\\\":\\\"15598989685\\\",\\\"remark\\\":\\\"1132456\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:09:33', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.cor', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-09 14:09:33', '1', '2026-07-09 14:09:33', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24431, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090002\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"purchaseOrderCode\\\":\\\"1212\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783493335069\\\",\\\"contactName\\\":\\\"123\\\",\\\"contactTelephone\\\":\\\"15598989685\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 14:48:59', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.cor', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-09 14:48:59', '1', '2026-07-09 14:48:59', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24432, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090004\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderCode\\\":\\\"123\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783582105365\\\",\\\"contactName\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 15:28:29', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.cor', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 15:28:29', '142', '2026-07-09 15:28:29', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24433, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090004\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderCode\\\":\\\"123\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783582105365\\\",\\\"contactName\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 15:28:36', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.cor', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 15:28:36', '142', '2026-07-09 15:28:36', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24434, '', 1, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090006\\\",\\\"name\\\":\\\"鍗楃摐瀛怽\\",\\\"purchaseOrderCode\\\":\\\"1212\\\",\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783586252875\\\",\\\"contactName\\\":\\\"123\\\",\\\"contactTelephone\\\":\\\"15598989685\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 16:37:36', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomi', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '1', '2026-07-09 16:37:36', '1', '2026-07-09 16:37:36', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24435, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090007\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783588936768\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:22:18', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomi', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:22:19', '142', '2026-07-09 17:22:19', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24436, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090007\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783588936768\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:23:08', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, purchase_order_code, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'purchase_order_code\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomi', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:23:08', '142', '2026-07-09 17:23:08', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24437, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090009\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783590593287\\\",\\\"contactName\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:49:56', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.Mybat', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:49:56', '142', '2026-07-09 17:49:56', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24438, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090009\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783590593287\\\",\\\"contactName\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:50:03', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.Mybat', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:50:03', '142', '2026-07-09 17:50:03', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24439, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090009\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783590593287\\\",\\\"contactName\\\":\\\"1\\\",\\\"contactTelephone\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:51:45', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.Mybat', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:51:45', '142', '2026-07-09 17:51:45', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24440, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090009\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783590593287\\\",\\\"contactName\\\":\\\"1\\\",\\\"contactTelephone\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:51:55', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.Mybat', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:51:55', '142', '2026-07-09 17:51:55', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24441, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"AN_202607090009\\\",\\\"name\\\":\\\"閰掓硥\\\",\\\"purchaseOrderId\\\":2,\\\"vendorId\\\":1,\\\"arrivalDate\\\":\\\"1783590593287\\\",\\\"contactName\\\":\\\"1\\\",\\\"contactTelephone\\\":\\\"1\\\"}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:51:59', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, purchase_order_id, vendor_id, arrival_date, contact_name, contact_telephone, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_arrival_notice WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'contact_name\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy492.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.Mybat', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:51:59', '142', '2026-07-09 17:51:59', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24442, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice-line/create', '{\"query\":{},\"body\":\"{\\\"iqcCheckFlag\\\":false,\\\"itemId\\\":15,\\\"arrivalQuantity\\\":10,\\\"noticeId\\\":1}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:54:33', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeLineMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO mes_wm_arrival_notice_line  ( notice_id, item_id, arrival_quantity, qualified_quantity, iqc_check_flag,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeLineMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO mes_wm_arrival_notice_line  ( notice_id, item_id, arrival_quantity, qualified_quantity, iqc_check_flag,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy493.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineServiceImpl.createArrivalNoticeLine(MesWmArrivalNoticeLineServiceImpl.java:47)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineServiceImpl$$SpringCGLIB$$0.createArrivalNoticeLine(<generated>)\r\n	at cn.iocoder.yudao.module.mes.controller.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:54:33', '142', '2026-07-09 17:54:33', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24443, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/arrival-notice-line/create', '{\"query\":{},\"body\":\"{\\\"iqcCheckFlag\\\":false,\\\"itemId\\\":15,\\\"arrivalQuantity\\\":10,\\\"noticeId\\\":1}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-09 17:54:38', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeLineMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO mes_wm_arrival_notice_line  ( notice_id, item_id, arrival_quantity, qualified_quantity, iqc_check_flag,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeLineMapper.java (best guess)\r\n### The error may involve cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO mes_wm_arrival_notice_line  ( notice_id, item_id, arrival_quantity, qualified_quantity, iqc_check_flag,   create_time, update_time, creator, updater )  VALUES (  ?, ?, ?, ?, ?,   ?, ?, ?, ?  )\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'arrival_quantity\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.insert(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:239)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy493.insert(Unknown Source)\r\n	at cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineServiceImpl.createArrivalNoticeLine(MesWmArrivalNoticeLineServiceImpl.java:47)\r\n	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)\r\n	at java.base/java.lang.reflect.Method.invoke(Method.java:565)\r\n	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158)\r\n	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:172)\r\n	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)\r\n	at cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineServiceImpl$$SpringCGLIB$$0.createArrivalNoticeLine(<generated>)\r\n	at cn.iocoder.yudao.module.mes.controller.', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-09 17:54:38', '142', '2026-07-09 17:54:38', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24444, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/item-receipt/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"IR_202607100001\\\",\\\"name\\\":\\\"1鍘籠\\",\\\"receiptDate\\\":\\\"1783646783416\\\",\\\"vendorId\\\":1}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-10 09:26:35', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-10 09:26:35', '142', '2026-07-10 09:26:35', b'0', 0);
+INSERT INTO `infra_api_error_log` VALUES (24445, '', 142, 2, 'yudao-server', 'POST', '/admin-api/mes/wm/item-receipt/create', '{\"query\":{},\"body\":\"{\\\"code\\\":\\\"IR_202607100001\\\",\\\"name\\\":\\\"1鍘籠\\",\\\"receiptDate\\\":\\\"1783646783416\\\",\\\"vendorId\\\":1}\"}', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '2026-07-10 09:27:28', 'org.springframework.jdbc.BadSqlGrammarException', 'BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []', 'SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'', 'org.springframework.jdbc.BadSqlGrammarException: \r\n### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\r\n### The error may exist in cn/iocoder/yudao/module/mes/dal/mysql/wm/itemreceipt/MesWmItemReceiptMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, code, name, iqc_id, notice_id, purchase_order_code, vendor_id, receipt_date, status, remark, create_time, update_time, creator, updater, deleted FROM mes_wm_item_receipt WHERE deleted = 0 AND (code = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \'iqc_id\' in \'field list\'\n; bad SQL grammar []\r\n	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:244)\r\n	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)\r\n	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:95)\r\n	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:362)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy159.selectList(Unknown Source)\r\n	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:209)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:156)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectList(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:337)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectOne(Unknown Source)\r\n	at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:326)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:172)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:93)\r\n	at jdk.proxy2/jdk.proxy2.$Proxy522.selectOne(Unknown Source)\r\n	at cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX.selectOne(BaseMapperX.java:106)\r\n	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:735)\r\n	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInv', 'org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator', 'SQLErrorCodeSQLExceptionTranslator.java', 'doTranslate', 244, 0, NULL, 0, '142', '2026-07-10 09:27:28', '142', '2026-07-10 09:27:28', b'0', 0);
+
+-- ----------------------------
+-- Table structure for infra_codegen_column
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_codegen_column`;
+CREATE TABLE `infra_codegen_column`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `table_id` bigint NOT NULL COMMENT '琛ㄧ紪鍙�',
+  `column_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀛楁鍚�',
+  `data_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀛楁绫诲瀷',
+  `column_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀛楁鎻忚堪',
+  `nullable` bit(1) NOT NULL COMMENT '鏄惁鍏佽涓虹┖',
+  `primary_key` bit(1) NOT NULL COMMENT '鏄惁涓婚敭',
+  `ordinal_position` int NOT NULL COMMENT '鎺掑簭',
+  `java_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Java 灞炴�х被鍨�',
+  `java_field` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Java 灞炴�у悕',
+  `dict_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '瀛楀吀绫诲瀷',
+  `example` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏁版嵁绀轰緥',
+  `create_operation` bit(1) NOT NULL COMMENT '鏄惁涓� Create 鍒涘缓鎿嶄綔鐨勫瓧娈�',
+  `update_operation` bit(1) NOT NULL COMMENT '鏄惁涓� Update 鏇存柊鎿嶄綔鐨勫瓧娈�',
+  `list_operation` bit(1) NOT NULL COMMENT '鏄惁涓� List 鏌ヨ鎿嶄綔鐨勫瓧娈�',
+  `list_operation_condition` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '=' COMMENT 'List 鏌ヨ鎿嶄綔鐨勬潯浠剁被鍨�',
+  `list_operation_result` bit(1) NOT NULL COMMENT '鏄惁涓� List 鏌ヨ鎿嶄綔鐨勮繑鍥炲瓧娈�',
+  `html_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏄剧ず绫诲瀷',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_table_id`(`table_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2880 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '浠g爜鐢熸垚琛ㄥ瓧娈靛畾涔�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_codegen_column
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for infra_codegen_table
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_codegen_table`;
+CREATE TABLE `infra_codegen_table`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `data_source_config_id` bigint NOT NULL COMMENT '鏁版嵁婧愰厤缃殑缂栧彿',
+  `scene` tinyint NOT NULL DEFAULT 1 COMMENT '鐢熸垚鍦烘櫙',
+  `table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '琛ㄥ悕绉�',
+  `table_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '琛ㄦ弿杩�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `module_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯″潡鍚�',
+  `business_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '涓氬姟鍚�',
+  `class_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '绫诲悕绉�',
+  `class_comment` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绫绘弿杩�',
+  `author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浣滆��',
+  `template_type` tinyint NOT NULL DEFAULT 1 COMMENT '妯℃澘绫诲瀷',
+  `front_type` tinyint NOT NULL COMMENT '鍓嶇绫诲瀷',
+  `parent_menu_id` bigint NULL DEFAULT NULL COMMENT '鐖惰彍鍗曠紪鍙�',
+  `master_table_id` bigint NULL DEFAULT NULL COMMENT '涓昏〃鐨勭紪鍙�',
+  `sub_join_column_id` bigint NULL DEFAULT NULL COMMENT '瀛愯〃鍏宠仈涓昏〃鐨勫瓧娈电紪鍙�',
+  `sub_join_many` bit(1) NULL DEFAULT NULL COMMENT '涓昏〃涓庡瓙琛ㄦ槸鍚︿竴瀵瑰',
+  `tree_parent_column_id` bigint NULL DEFAULT NULL COMMENT '鏍戣〃鐨勭埗瀛楁缂栧彿',
+  `tree_name_column_id` bigint NULL DEFAULT NULL COMMENT '鏍戣〃鐨勫悕瀛楀瓧娈电紪鍙�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 210 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '浠g爜鐢熸垚琛ㄥ畾涔�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_codegen_table
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for infra_config
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_config`;
+CREATE TABLE `infra_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍙傛暟涓婚敭',
+  `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍙傛暟鍒嗙粍',
+  `type` tinyint NOT NULL COMMENT '鍙傛暟绫诲瀷',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍙傛暟鍚嶇О',
+  `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍙傛暟閿悕',
+  `value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍙傛暟閿��',
+  `visible` bit(1) NOT NULL COMMENT '鏄惁鍙',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_config_key`(`config_key` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鍙傛暟閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_config
+-- ----------------------------
+INSERT INTO `infra_config` VALUES (2, 'biz', 1, '鐢ㄦ埛绠$悊-璐﹀彿鍒濆瀵嗙爜', 'system.user.init-password', '123456', b'0', '鍒濆鍖栧瘑鐮� 123456', 'admin', '2021-01-05 17:03:48', '1', '2024-07-20 17:22:47', b'0');
+INSERT INTO `infra_config` VALUES (7, 'url', 2, 'MySQL 鐩戞帶鐨勫湴鍧�', 'url.druid', '', b'1', '', '1', '2023-04-07 13:41:16', '1', '2023-04-07 14:33:38', b'0');
+INSERT INTO `infra_config` VALUES (8, 'url', 2, 'SkyWalking 鐩戞帶鐨勫湴鍧�', 'url.skywalking', '', b'1', '', '1', '2023-04-07 13:41:16', '1', '2023-04-07 14:57:03', b'0');
+INSERT INTO `infra_config` VALUES (9, 'url', 2, 'Spring Boot Admin 鐩戞帶鐨勫湴鍧�', 'url.spring-boot-admin', '', b'1', '', '1', '2023-04-07 13:41:16', '1', '2023-04-07 14:52:07', b'0');
+INSERT INTO `infra_config` VALUES (10, 'url', 2, 'Swagger 鎺ュ彛鏂囨。鐨勫湴鍧�', 'url.swagger', '', b'1', '', '1', '2023-04-07 13:41:16', '1', '2023-04-07 14:59:00', b'0');
+INSERT INTO `infra_config` VALUES (12, 'test2', 2, 'test3', 'test4', 'test5', b'1', 'test6', '1', '2023-12-03 09:55:16', '1', '2025-04-06 21:00:09', b'0');
+INSERT INTO `infra_config` VALUES (13, '鐢ㄦ埛绠$悊-璐﹀彿鍒濆瀵嗙爜', 2, '鐢ㄦ埛绠$悊-娉ㄥ唽寮�鍏�', 'system.user.register-enabled', 'true', b'0', '', '1', '2025-04-26 17:23:41', '1', '2025-04-26 17:23:41', b'0');
+
+-- ----------------------------
+-- Table structure for infra_data_source_config
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_data_source_config`;
+CREATE TABLE `infra_data_source_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍙傛暟鍚嶇О',
+  `url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏁版嵁婧愯繛鎺�',
+  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛鍚�',
+  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀵嗙爜',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鏁版嵁婧愰厤缃〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_data_source_config
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for infra_file
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_file`;
+CREATE TABLE `infra_file`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏂囦欢缂栧彿',
+  `config_id` bigint NULL DEFAULT NULL COMMENT '閰嶇疆缂栧彿',
+  `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂囦欢鍚�',
+  `path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏂囦欢璺緞',
+  `url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏂囦欢 URL',
+  `type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂囦欢绫诲瀷',
+  `size` int NOT NULL COMMENT '鏂囦欢澶у皬',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2267 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鏂囦欢琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_file
+-- ----------------------------
+INSERT INTO `infra_file` VALUES (2260, 22, 'MOM绯荤粺涓氬姟閫昏緫璁捐.docx', '20260701/MOM绯荤粺涓氬姟閫昏緫璁捐.docx', 'http://test.yudao.iocoder.cn/20260701/MOM%E7%B3%BB%E7%BB%9F%E4%B8%9A%E5%8A%A1%E9%80%BB%E8%BE%91%E8%AE%BE%E8%AE%A1.docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 56910, '1', '2026-07-01 10:05:25', '1', '2026-07-01 10:05:25', b'0');
+INSERT INTO `infra_file` VALUES (2261, 22, 'MOM绯荤粺涓氬姟閫昏緫璁捐.docx', '20260701/MOM绯荤粺涓氬姟閫昏緫璁捐.docx', 'http://test.yudao.iocoder.cn/20260701/MOM%E7%B3%BB%E7%BB%9F%E4%B8%9A%E5%8A%A1%E9%80%BB%E8%BE%91%E8%AE%BE%E8%AE%A1.docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 56910, '1', '2026-07-01 10:43:25', '1', '2026-07-01 10:43:25', b'0');
+INSERT INTO `infra_file` VALUES (2262, 29, '銆愬墠绔紑鍙戝伐绋嬪笀_鍗楅�歘6-8K銆戣敗璞猒9骞�.pdf', 'mes/pd/20260703/銆愬墠绔紑鍙戝伐绋嬪笀_鍗楅�歘6-8K銆戣敗璞猒9骞�.pdf', 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_6-8K%E3%80%91%E8%94%A1%E8%B1%AA_9%E5%B9%B4.pdf', 'application/pdf', 87517, '1', '2026-07-03 15:45:01', '1', '2026-07-03 15:45:01', b'0');
+INSERT INTO `infra_file` VALUES (2263, 29, '銆愬叏鏍堝紑鍙戝伐绋嬪笀_鍗楅�歘8-13K銆戣寖楂樼繑_3骞�.pdf', 'mes/pd/20260703/銆愬叏鏍堝紑鍙戝伐绋嬪笀_鍗楅�歘8-13K銆戣寖楂樼繑_3骞�.pdf', 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_8-13K%E3%80%91%E8%8C%83%E9%AB%98%E7%BF%94_3%E5%B9%B4.pdf', 'application/pdf', 165707, '1', '2026-07-03 15:46:50', '1', '2026-07-03 15:46:50', b'0');
+INSERT INTO `infra_file` VALUES (2264, 29, '銆愬墠绔紑鍙戝伐绋嬪笀_鍗楅�歘6-8K銆戞柦娴╀笢_4骞�.pdf', 'mes/pd/20260703/銆愬墠绔紑鍙戝伐绋嬪笀_鍗楅�歘6-8K銆戞柦娴╀笢_4骞�.pdf', 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_6-8K%E3%80%91%E6%96%BD%E6%B5%A9%E4%B8%9C_4%E5%B9%B4.pdf', 'application/pdf', 409425, '1', '2026-07-03 15:48:49', '1', '2026-07-03 15:48:49', b'0');
+INSERT INTO `infra_file` VALUES (2265, 29, '銆怞ava寮�鍙戝伐绋嬪笀_鍗楅�歘8-13K銆戞潕鏂囨収_7骞�.pdf', 'mes/pd/20260703/銆怞ava寮�鍙戝伐绋嬪笀_鍗楅�歘8-13K銆戞潕鏂囨収_7骞�.pdf', 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90Java%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_8-13K%E3%80%91%E6%9D%8E%E6%96%87%E6%85%A7_7%E5%B9%B4.pdf', 'application/pdf', 164293, '1', '2026-07-03 16:26:49', '1', '2026-07-03 16:26:49', b'0');
+INSERT INTO `infra_file` VALUES (2266, 29, '绛惧悕.jpeg', '20260708/绛惧悕.jpeg', 'http://127.0.0.1:48080/admin-api/infra/file/29/get/20260708/%E7%AD%BE%E5%90%8D.jpeg', 'image/jpeg', 15153, '1', '2026-07-08 14:22:24', '1', '2026-07-08 14:22:24', b'0');
+
+-- ----------------------------
+-- Table structure for infra_file_config
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_file_config`;
+CREATE TABLE `infra_file_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閰嶇疆鍚�',
+  `storage` tinyint NOT NULL COMMENT '瀛樺偍鍣�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `master` bit(1) NOT NULL COMMENT '鏄惁涓轰富閰嶇疆',
+  `config` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀛樺偍閰嶇疆',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鏂囦欢閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_file_config
+-- ----------------------------
+INSERT INTO `infra_file_config` VALUES (4, '鏁版嵁搴擄紙绀轰緥锛�', 1, '鎴戞槸鏁版嵁搴�', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.db.DBFileClientConfig\",\"domain\":\"http://127.0.0.1:48080\"}', '1', '2022-03-15 23:56:24', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (22, '涓冪墰瀛樺偍鍣紙绀轰緥锛�', 20, '璇锋崲鎴愪綘鑷繁鐨勫瘑閽ワ紒锛侊紒', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3.cn-south-1.qiniucs.com\",\"domain\":\"http://test.yudao.iocoder.cn\",\"bucket\":\"ruoyi-vue-pro\",\"accessKey\":\"3TvrJ70gl2Gt6IBe7_IZT1F6i_k0iMuRtyEv4EyS\",\"accessSecret\":\"wd0tbVBYlp0S-ihA8Qg2hPLncoP83wyrIq24OZuY\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":true}', '1', '2024-01-13 22:11:12', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (24, '鑵捐浜戝瓨鍌紙绀轰緥锛�', 20, '璇锋崲鎴愪綘鐨勫瘑閽ワ紒锛侊紒', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"https://cos.ap-shanghai.myqcloud.com\",\"domain\":\"http://tengxun-oss.iocoder.cn\",\"bucket\":\"aoteman-1255880240\",\"accessKey\":\"AKIDAF6WSh1uiIjwqtrOsGSN3WryqTM6cTMt\",\"accessSecret\":\"X\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":true}', '1', '2024-11-09 16:03:22', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (25, '闃块噷浜戝瓨鍌紙绀轰緥锛�', 20, '', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"oss-cn-beijing.aliyuncs.com\",\"domain\":\"http://ali-oss.iocoder.cn\",\"bucket\":\"yunai-aoteman\",\"accessKey\":\"LTAI5tEQLgnDyjh3WpNcdMKA\",\"accessSecret\":\"X\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":true}', '1', '2024-11-09 16:47:08', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (26, '鐏北浜戝瓨鍌紙绀轰緥锛�', 20, '', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"tos-s3-cn-beijing.volces.com\",\"domain\":null,\"bucket\":\"yunai\",\"accessKey\":\"AKLTZjc3Zjc4MzZmMjU3NDk0ZTgxYmIyMmFkNTIwMDI1ZGE\",\"accessSecret\":\"X==\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":true}', '1', '2024-11-09 16:56:42', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (27, '鍗庝负浜戝瓨鍌紙绀轰緥锛�', 20, '', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"obs.cn-east-3.myhuaweicloud.com\",\"domain\":\"\",\"bucket\":\"yudao\",\"accessKey\":\"PVDONDEIOTW88LF8DC4U\",\"accessSecret\":\"X\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":true}', '1', '2024-11-09 17:18:41', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (28, 'MinIO 瀛樺偍锛堢ず渚嬶級', 20, '', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"http://127.0.0.1:9000\",\"domain\":\"http://127.0.0.1:9000/yudao\",\"bucket\":\"yudao\",\"accessKey\":\"admin\",\"accessSecret\":\"password\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":true}', '1', '2024-11-09 17:43:10', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (29, '鏈湴瀛樺偍锛堢ず渚嬶級', 10, 'mac/linux 浣跨敤 /锛寃indows 浣跨敤 \\', b'1', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.local.LocalFileClientConfig\",\"basePath\":\"/Users/yunai/tmp/file\",\"domain\":\"http://127.0.0.1:48080\"}', '1', '2025-05-02 11:25:45', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (30, 'SFTP 瀛樺偍锛堢ず渚嬶級', 12, '', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.sftp.SftpFileClientConfig\",\"basePath\":\"/upload\",\"domain\":\"http://127.0.0.1:48080\",\"host\":\"127.0.0.1\",\"port\":2222,\"username\":\"foo\",\"password\":\"pass\"}', '1', '2025-05-02 16:34:10', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (34, '涓冪墰浜戝瓨鍌ㄣ�愮鏈夈�戯紙绀轰緥锛�', 20, '璇锋崲鎴愪綘鑷繁鐨勫瘑閽ワ紒锛侊紒', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"s3.cn-south-1.qiniucs.com\",\"domain\":\"http://t151glocd.hn-bkt.clouddn.com\",\"bucket\":\"ruoyi-vue-pro-private\",\"accessKey\":\"3TvrJ70gl2Gt6IBe7_IZT1F6i_k0iMuRtyEv4EyS\",\"accessSecret\":\"wd0tbVBYlp0S-ihA8Qg2hPLncoP83wyrIq24OZuY\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":false}', '1', '2025-08-17 21:22:00', '1', '2026-07-03 11:47:08', b'0');
+INSERT INTO `infra_file_config` VALUES (35, '1', 20, '1', b'0', '{\"@class\":\"cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig\",\"endpoint\":\"http://www.baidu.com\",\"domain\":\"http://www.xxx.com\",\"bucket\":\"1\",\"accessKey\":\"2\",\"accessSecret\":\"3\",\"enablePathStyleAccess\":false,\"enablePublicAccess\":false,\"region\":\"1\"}', '1', '2025-10-02 14:32:12', '1', '2026-07-03 11:47:08', b'0');
+
+-- ----------------------------
+-- Table structure for infra_file_content
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_file_content`;
+CREATE TABLE `infra_file_content`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `config_id` bigint NOT NULL COMMENT '閰嶇疆缂栧彿',
+  `path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏂囦欢璺緞',
+  `content` mediumblob NOT NULL COMMENT '鏂囦欢鍐呭',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_config_id_path`(`config_id` ASC, `path` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 288 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鏂囦欢琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_file_content
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for infra_job
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_job`;
+CREATE TABLE `infra_job`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '浠诲姟缂栧彿',
+  `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浠诲姟鍚嶇О',
+  `status` tinyint NOT NULL COMMENT '浠诲姟鐘舵��',
+  `handler_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '澶勭悊鍣ㄧ殑鍚嶅瓧',
+  `handler_param` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶勭悊鍣ㄧ殑鍙傛暟',
+  `cron_expression` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'CRON 琛ㄨ揪寮�',
+  `retry_count` int NOT NULL DEFAULT 0 COMMENT '閲嶈瘯娆℃暟',
+  `retry_interval` int NOT NULL DEFAULT 0 COMMENT '閲嶈瘯闂撮殧',
+  `monitor_timeout` int NOT NULL DEFAULT 0 COMMENT '鐩戞帶瓒呮椂鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀹氭椂浠诲姟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_job
+-- ----------------------------
+INSERT INTO `infra_job` VALUES (5, '鏀粯閫氱煡 Job', 2, 'payNotifyJob', NULL, '* * * * * ?', 0, 0, 0, '1', '2021-10-27 08:34:42', '1', '2024-09-12 13:32:48', b'0');
+INSERT INTO `infra_job` VALUES (17, '鏀粯璁㈠崟鍚屾 Job', 2, 'payOrderSyncJob', NULL, '0 0/1 * * * ?', 0, 0, 0, '1', '2023-07-22 14:36:26', '1', '2023-07-22 15:39:08', b'0');
+INSERT INTO `infra_job` VALUES (18, '鏀粯璁㈠崟杩囨湡 Job', 2, 'payOrderExpireJob', NULL, '0 0/1 * * * ?', 0, 0, 0, '1', '2023-07-22 15:36:23', '1', '2023-07-22 15:39:54', b'0');
+INSERT INTO `infra_job` VALUES (19, '閫�娆捐鍗曠殑鍚屾 Job', 2, 'payRefundSyncJob', NULL, '0 0/1 * * * ?', 0, 0, 0, '1', '2023-07-23 21:03:44', '1', '2023-07-23 21:09:00', b'0');
+INSERT INTO `infra_job` VALUES (21, 'Mall 浜ゆ槗璁㈠崟鐨勮嚜鍔ㄨ繃鏈� Job', 2, 'tradeOrderAutoCancelJob', '', '0 * * * * ?', 3, 0, 0, '1', '2023-09-25 23:43:26', '1', '2025-10-02 11:08:34', b'0');
+INSERT INTO `infra_job` VALUES (22, 'Mall 浜ゆ槗璁㈠崟鐨勮嚜鍔ㄦ敹璐� Job', 2, 'tradeOrderAutoReceiveJob', '', '0 * * * * ?', 3, 0, 0, '1', '2023-09-26 19:23:53', '1', '2025-10-02 11:08:36', b'0');
+INSERT INTO `infra_job` VALUES (23, 'Mall 浜ゆ槗璁㈠崟鐨勮嚜鍔ㄨ瘎璁� Job', 2, 'tradeOrderAutoCommentJob', '', '0 * * * * ?', 3, 0, 0, '1', '2023-09-26 23:38:29', '1', '2025-10-02 11:08:38', b'0');
+INSERT INTO `infra_job` VALUES (24, 'Mall 浣i噾瑙e喕 Job', 2, 'brokerageRecordUnfreezeJob', '', '0 * * * * ?', 3, 0, 0, '1', '2023-09-28 22:01:46', '1', '2025-10-02 11:08:04', b'0');
+INSERT INTO `infra_job` VALUES (25, '璁块棶鏃ュ織娓呯悊 Job', 2, 'accessLogCleanJob', '', '0 0 0 * * ?', 3, 0, 0, '1', '2023-10-03 10:59:41', '1', '2023-10-03 11:01:10', b'0');
+INSERT INTO `infra_job` VALUES (26, '閿欒鏃ュ織娓呯悊 Job', 2, 'errorLogCleanJob', '', '0 0 0 * * ?', 3, 0, 0, '1', '2023-10-03 11:00:43', '1', '2023-10-03 11:01:12', b'0');
+INSERT INTO `infra_job` VALUES (27, '浠诲姟鏃ュ織娓呯悊 Job', 2, 'jobLogCleanJob', '', '0 0 0 * * ?', 3, 0, 0, '1', '2023-10-03 11:01:33', '1', '2024-09-12 13:40:34', b'0');
+INSERT INTO `infra_job` VALUES (33, 'demoJob', 2, 'demoJob', '', '0 * * * * ?', 1, 1, 0, '1', '2024-10-27 19:38:46', '1', '2025-05-10 18:13:54', b'0');
+INSERT INTO `infra_job` VALUES (35, '杞处璁㈠崟鐨勫悓姝� Job', 2, 'payTransferSyncJob', '', '0 * * * * ?', 0, 0, 0, '1', '2025-05-10 17:35:54', '1', '2025-05-10 18:13:52', b'0');
+INSERT INTO `infra_job` VALUES (36, 'IoT 璁惧绂荤嚎妫�鏌� Job', 2, 'iotDeviceOfflineCheckJob', '', '0 * * * * ?', 0, 0, 0, '1', '2025-07-03 23:48:44', '\"1\"', '2025-07-03 23:48:47', b'0');
+INSERT INTO `infra_job` VALUES (37, 'IoT OTA 鍗囩骇鎺ㄩ�� Job', 2, 'iotOtaUpgradeJob', '', '0 * * * * ?', 0, 0, 0, '1', '2025-07-03 23:49:07', '\"1\"', '2025-07-03 23:49:13', b'0');
+INSERT INTO `infra_job` VALUES (38, 'Mall 鎷煎洟杩囨湡 Job', 2, 'combinationRecordExpireJob', '', '0 * * * * ?', 0, 0, 0, '1', '2025-10-02 11:07:11', '1', '2025-10-02 11:07:14', b'0');
+INSERT INTO `infra_job` VALUES (39, 'Mall 浼樻儬鍒歌繃鏈� Job', 2, 'couponExpireJob', '', '0 * * * * ?', 0, 0, 0, '1', '2025-10-02 11:07:34', '1', '2025-10-02 11:07:37', b'0');
+INSERT INTO `infra_job` VALUES (40, 'Mall 鍟嗗搧缁熻 Job', 2, 'productStatisticsJob', '', '0 0 0 * * ?', 0, 0, 0, '1', '2025-11-22 18:51:25', '1', '2025-11-22 18:56:21', b'0');
+
+-- ----------------------------
+-- Table structure for infra_job_log
+-- ----------------------------
+DROP TABLE IF EXISTS `infra_job_log`;
+CREATE TABLE `infra_job_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏃ュ織缂栧彿',
+  `job_id` bigint NOT NULL COMMENT '浠诲姟缂栧彿',
+  `handler_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '澶勭悊鍣ㄧ殑鍚嶅瓧',
+  `handler_param` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶勭悊鍣ㄧ殑鍙傛暟',
+  `execute_index` tinyint NOT NULL DEFAULT 1 COMMENT '绗嚑娆℃墽琛�',
+  `begin_time` datetime NOT NULL COMMENT '寮�濮嬫墽琛屾椂闂�',
+  `end_time` datetime NULL DEFAULT NULL COMMENT '缁撴潫鎵ц鏃堕棿',
+  `duration` int NULL DEFAULT NULL COMMENT '鎵ц鏃堕暱',
+  `status` tinyint NOT NULL COMMENT '浠诲姟鐘舵��',
+  `result` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '缁撴灉鏁版嵁',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_job_id`(`job_id` ASC) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 987 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀹氭椂浠诲姟鏃ュ織琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of infra_job_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mdm_brand
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_brand`;
+CREATE TABLE `mdm_brand`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍝佺墝缂栧彿',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍝佺墝缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍝佺墝鍚嶇О',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_code`(`code` ASC, `deleted` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 鍝佺墝琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_brand
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mdm_item
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_item`;
+CREATE TABLE `mdm_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐗╂枡缂栧彿',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐗╂枡缂栫爜',
+  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐗╂枡鍚嶇О',
+  `bar_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐗╂枡鏉$爜',
+  `specification` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勬牸鍨嬪彿',
+  `category_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡鍒嗙被缂栧彿',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `unit_measure_id2` bigint NULL DEFAULT NULL COMMENT '杈呭崟浣�1缂栧彿',
+  `unit_measure_rate1` decimal(24, 6) NULL DEFAULT NULL COMMENT '杈呭崟浣�1鎹㈢畻姣旂巼',
+  `unit_measure_id3` bigint NULL DEFAULT NULL COMMENT '杈呭崟浣�2缂栧彿',
+  `unit_measure_rate2` decimal(24, 6) NULL DEFAULT NULL COMMENT '杈呭崟浣�2鎹㈢畻姣旂巼',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '榛樿浠撳簱缂栧彿',
+  `warehouse_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '榛樿浠撳簱缂栫爜',
+  `brand_id` bigint NULL DEFAULT NULL COMMENT '鍝佺墝缂栧彿',
+  `item_type` tinyint NOT NULL DEFAULT 1 COMMENT '鐗╂枡绫诲瀷锛�1:鐗╂枡 2:浜у搧 3:鍗婃垚鍝侊級',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `purchase_price` decimal(24, 2) NULL DEFAULT NULL COMMENT '閲囪喘浠�',
+  `sales_price` decimal(24, 2) NULL DEFAULT NULL COMMENT '閿�鍞环',
+  `cost_price` decimal(24, 2) NULL DEFAULT NULL COMMENT '鎴愭湰浠�',
+  `min_price` decimal(24, 2) NULL DEFAULT NULL COMMENT '鏈�浣庝环',
+  `safety_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹夊叏搴撳瓨',
+  `min_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�浣庡簱瀛橀噺',
+  `max_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�楂樺簱瀛橀噺',
+  `min_order_qty` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�灏忚璐ч噺',
+  `lead_time` int NULL DEFAULT NULL COMMENT '閲囪喘鎻愬墠鏈燂紙澶╋級',
+  `is_batch_managed` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鎵规绠$悊',
+  `is_serial_managed` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁搴忓垪鍙风鐞�',
+  `barcode_rule_id` bigint NULL DEFAULT NULL COMMENT '鏉$爜瑙勫垯ID',
+  `expiry_day` int NULL DEFAULT NULL COMMENT '淇濊川鏈熷ぉ鏁�',
+  `high_value` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁楂樺�肩墿鏂�',
+  `weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '閲嶉噺(kg)',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_code`(`code` ASC, `deleted` ASC) USING BTREE,
+  INDEX `idx_name`(`name` ASC) USING BTREE,
+  INDEX `idx_category_id`(`category_id` ASC) USING BTREE,
+  INDEX `idx_item_type`(`item_type` ASC) USING BTREE,
+  INDEX `idx_status`(`status` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 鐗╂枡涓绘暟鎹〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_item
+-- ----------------------------
+INSERT INTO `mdm_item` VALUES (1, '001', '鍗楃摐瀛�', NULL, '涓�', NULL, 2, 1, 1000.000000, NULL, NULL, NULL, NULL, NULL, 3, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'1', b'0', NULL, NULL, b'0', NULL, NULL, '142', '2026-06-30 15:47:34', '1', '2026-07-02 10:57:16', b'0');
+INSERT INTO `mdm_item` VALUES (2, '002', '鍘熸枡11', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'1', b'0', NULL, NULL, b'0', NULL, NULL, '1', '2026-06-30 16:25:39', '1', '2026-06-30 16:25:39', b'0');
+INSERT INTO `mdm_item` VALUES (3, '003', '鍗婃垚鍝�11', NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'1', b'0', NULL, NULL, b'0', NULL, NULL, '1', '2026-06-30 16:25:54', '1', '2026-06-30 16:26:29', b'0');
+INSERT INTO `mdm_item` VALUES (4, '004', '杈呮枡11', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'1', b'0', NULL, NULL, b'0', NULL, NULL, '1', '2026-06-30 16:27:36', '1', '2026-06-30 16:27:36', b'0');
+INSERT INTO `mdm_item` VALUES (5, '021', '鍘熸枡222', NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'1', b'0', NULL, NULL, b'0', NULL, NULL, '1', '2026-07-01 09:30:34', '1', '2026-07-01 09:30:56', b'0');
+
+-- ----------------------------
+-- Table structure for mdm_item_batch_config
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_item_batch_config`;
+CREATE TABLE `mdm_item_batch_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '閰嶇疆缂栧彿',
+  `item_id` bigint NOT NULL COMMENT '鐗╂枡缂栧彿',
+  `produce_date_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤鐢熶骇鏃ユ湡',
+  `expire_date_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤澶辨晥鏃ユ湡',
+  `receipt_date_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤鍏ュ簱鏃ユ湡',
+  `vendor_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤渚涘簲鍟�',
+  `client_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤瀹㈡埛',
+  `sales_order_code_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤閿�鍞鍗曞彿',
+  `purchase_order_code_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤閲囪喘璁㈠崟鍙�',
+  `work_order_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤鐢熶骇宸ュ崟',
+  `task_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤鐢熶骇浠诲姟',
+  `workstation_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤宸ヤ綅',
+  `tool_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤宸ヨ澶瑰叿',
+  `mold_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤妯″叿',
+  `lot_number_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤鎵规鍙�',
+  `quality_status_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍚敤璐ㄩ噺鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_item_id`(`item_id` ASC, `deleted` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 鐗╂枡鎵规灞炴�ч厤缃〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_item_batch_config
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mdm_item_category
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_item_category`;
+CREATE TABLE `mdm_item_category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍒嗙被缂栧彿',
+  `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '鐖跺垎绫荤紪鍙凤紙鏍硅妭鐐�=0锛�',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍒嗙被缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒嗙被鍚嶇О',
+  `item_type` tinyint NULL DEFAULT NULL COMMENT '閫傜敤鐗╂枡绫诲瀷锛�1:鐗╂枡 2:浜у搧 3:鍗婃垚鍝� NULL:鍏ㄩ儴锛�',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鎺掑簭',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_parent_id`(`parent_id` ASC) USING BTREE,
+  INDEX `idx_code`(`code` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 鐗╂枡鍒嗙被琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_item_category
+-- ----------------------------
+INSERT INTO `mdm_item_category` VALUES (1, 0, '111', '鍘熸潗鏂�', 1, 1, 0, NULL, '1', '2026-06-30 15:17:42', '1', '2026-06-30 15:17:42', b'0');
+
+-- ----------------------------
+-- Table structure for mdm_item_migration_map
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_item_migration_map`;
+CREATE TABLE `mdm_item_migration_map`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏄犲皠ID',
+  `source_module` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏉ユ簮妯″潡(ERP/MES/WMS)',
+  `source_table` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏉ユ簮琛ㄥ悕',
+  `source_id` bigint NOT NULL COMMENT '鍘烮D',
+  `target_item_id` bigint NOT NULL COMMENT 'MDM鐗╂枡ID',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk_source`(`source_module` ASC, `source_table` ASC, `source_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐗╂枡杩佺Щ鏄犲皠琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_item_migration_map
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mdm_item_sku
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_item_sku`;
+CREATE TABLE `mdm_item_sku`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'SKU缂栧彿',
+  `item_id` bigint NOT NULL COMMENT '鐗╂枡缂栧彿',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU缂栫爜',
+  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU鍚嶇О',
+  `bar_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'SKU鏉$爜',
+  `length` decimal(24, 6) NULL DEFAULT NULL COMMENT '闀垮害锛坈m锛�',
+  `width` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹藉害锛坈m锛�',
+  `height` decimal(24, 6) NULL DEFAULT NULL COMMENT '楂樺害锛坈m锛�',
+  `gross_weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '姣涢噸锛坘g锛�',
+  `net_weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍑�閲嶏紙kg锛�',
+  `cost_price` decimal(24, 2) NULL DEFAULT NULL COMMENT '鎴愭湰浠�',
+  `sale_price` decimal(24, 2) NULL DEFAULT NULL COMMENT '閿�鍞环',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_code`(`code` ASC, `deleted` ASC) USING BTREE,
+  INDEX `idx_item_id`(`item_id` ASC) USING BTREE,
+  INDEX `idx_bar_code`(`bar_code` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 40002 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 鐗╂枡SKU琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_item_sku
+-- ----------------------------
+INSERT INTO `mdm_item_sku` VALUES (40001, 30001, '1', '12', '2121', 21.000000, NULL, 212.000000, 12.000000, 12.000000, 12.00, 12.00, 0, NULL, '1', '2026-06-26 14:54:22', '1', '2026-06-26 14:54:22', b'0');
+
+-- ----------------------------
+-- Table structure for mdm_unit_measure
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_unit_measure`;
+CREATE TABLE `mdm_unit_measure`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍗曚綅缂栧彿',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍗曚綅缂栫爜',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍗曚綅鍚嶇О',
+  `primary_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁涓诲崟浣�',
+  `primary_id` bigint NULL DEFAULT NULL COMMENT '涓诲崟浣嶇紪鍙�',
+  `change_rate` decimal(24, 6) NULL DEFAULT 1.000000 COMMENT '涓庝富鍗曚綅鎹㈢畻姣斾緥',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_code`(`code` ASC, `deleted` ASC) USING BTREE,
+  INDEX `idx_name`(`name` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 璁¢噺鍗曚綅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_unit_measure
+-- ----------------------------
+INSERT INTO `mdm_unit_measure` VALUES (1, '001', '鍚�', b'1', NULL, 1000.000000, 0, NULL, '1', '2026-06-30 16:05:50', '1', '2026-06-30 16:10:20', b'0');
+INSERT INTO `mdm_unit_measure` VALUES (2, 'kg', '鍗冨厠', b'0', 1, 1000.000000, 0, NULL, '142', '2026-06-30 16:05:55', '1', '2026-06-30 16:10:13', b'0');
+INSERT INTO `mdm_unit_measure` VALUES (3, '002', '鍗�', b'1', NULL, 1.000000, 0, NULL, '1', '2026-06-30 16:10:36', '1', '2026-07-01 09:30:49', b'0');
+
+-- ----------------------------
+-- Table structure for mdm_warehouse
+-- ----------------------------
+DROP TABLE IF EXISTS `mdm_warehouse`;
+CREATE TABLE `mdm_warehouse`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '浠撳簱缂栧彿',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浠撳簱缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浠撳簱鍚嶇О',
+  `type` tinyint NULL DEFAULT NULL COMMENT '浠撳簱绫诲瀷',
+  `address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠撳簱鍦板潃',
+  `principal` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璐熻矗浜�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_code`(`code` ASC, `deleted` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MDM 浠撳簱琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mdm_warehouse
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_holiday
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_holiday`;
+CREATE TABLE `mes_cal_holiday`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `day` datetime NULL DEFAULT NULL COMMENT '鏃ユ湡',
+  `type` int NULL DEFAULT NULL COMMENT '鏃ユ湡绫诲瀷',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍋囨湡璁剧疆' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_holiday
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_plan
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_plan`;
+CREATE TABLE `mes_cal_plan`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璁″垝缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璁″垝缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璁″垝鍚嶇О',
+  `calendar_type` int NULL DEFAULT NULL COMMENT '鐝粍绫诲瀷',
+  `start_date` datetime NULL DEFAULT NULL COMMENT '寮�濮嬫棩鏈�',
+  `end_date` datetime NULL DEFAULT NULL COMMENT '缁撴潫鏃ユ湡',
+  `shift_type` int NULL DEFAULT NULL COMMENT '杞彮鏂瑰紡',
+  `shift_method` int NULL DEFAULT NULL COMMENT '鍊掔彮鏂瑰紡',
+  `shift_count` int NULL DEFAULT NULL COMMENT '鍊掔彮澶╂暟',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鎺掔彮璁″垝' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_plan
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_plan_shift
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_plan_shift`;
+CREATE TABLE `mes_cal_plan_shift`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐝缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鎺掔彮璁″垝缂栧彿',
+  `sort` int NULL DEFAULT NULL COMMENT '鏄剧ず椤哄簭',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐝鍚嶇О',
+  `start_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�濮嬫椂闂达紙HH:mm 鏍煎紡锛�',
+  `end_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁撴潫鏃堕棿锛圚H:mm 鏍煎紡锛�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁″垝鐝' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_plan_shift
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_plan_team
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_plan_team`;
+CREATE TABLE `mes_cal_plan_team`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鎺掔彮璁″垝缂栧彿',
+  `team_id` bigint NULL DEFAULT NULL COMMENT '鐝粍缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁″垝鐝粍鍏宠仈' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_plan_team
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_team
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_team`;
+CREATE TABLE `mes_cal_team`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐝粍缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐝粍缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐝粍鍚嶇О',
+  `calendar_type` int NULL DEFAULT NULL COMMENT '鐝粍绫诲瀷',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐝粍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_team
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_team_member
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_team_member`;
+CREATE TABLE `mes_cal_team_member`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐝粍鎴愬憳缂栧彿',
+  `team_id` bigint NULL DEFAULT NULL COMMENT '鐝粍缂栧彿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐝粍鎴愬憳' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_team_member
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_cal_team_shift
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_cal_team_shift`;
+CREATE TABLE `mes_cal_team_shift`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鎺掔彮璁″垝缂栧彿',
+  `team_id` bigint NULL DEFAULT NULL COMMENT '鐝粍缂栧彿',
+  `shift_id` bigint NULL DEFAULT NULL COMMENT '鐝缂栧彿',
+  `day` datetime NULL DEFAULT NULL COMMENT '鏃ユ湡',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑簭',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐝粍鎺掔彮' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_cal_team_shift
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_check_plan
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_check_plan`;
+CREATE TABLE `mes_dv_check_plan`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂规缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂规鍚嶇О',
+  `type` int NULL DEFAULT NULL COMMENT '鏂规绫诲瀷',
+  `start_date` datetime NULL DEFAULT NULL COMMENT '寮�濮嬫棩鏈�',
+  `end_date` datetime NULL DEFAULT NULL COMMENT '缁撴潫鏃ユ湡',
+  `cycle_type` int NULL DEFAULT NULL COMMENT '鍛ㄦ湡绫诲瀷',
+  `cycle_count` int NULL DEFAULT NULL COMMENT '鍛ㄦ湡鏁伴噺',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐐规淇濆吇鏂规' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_check_plan
+-- ----------------------------
+INSERT INTO `mes_dv_check_plan` VALUES (1, '1', '1', 1, '2026-07-02 10:54:48', '2026-07-03 10:54:49', 1, 1, 0, NULL, '142', '2026-07-03 10:54:58', '142', '2026-07-03 10:54:58', b'0');
+
+-- ----------------------------
+-- Table structure for mes_dv_check_plan_machinery
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_check_plan_machinery`;
+CREATE TABLE `mes_dv_check_plan_machinery`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鏂规缂栧彿',
+  `machinery_id` bigint NULL DEFAULT NULL COMMENT '璁惧缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐐规淇濆吇鏂规璁惧' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_check_plan_machinery
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_check_plan_subject
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_check_plan_subject`;
+CREATE TABLE `mes_dv_check_plan_subject`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鏂规缂栧彿',
+  `subject_id` bigint NULL DEFAULT NULL COMMENT '椤圭洰缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐐规淇濆吇鏂规椤圭洰' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_check_plan_subject
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_check_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_check_record`;
+CREATE TABLE `mes_dv_check_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鐐规璁″垝缂栧彿',
+  `machinery_id` bigint NULL DEFAULT NULL COMMENT '璁惧缂栧彿',
+  `check_time` datetime NULL DEFAULT NULL COMMENT '鐐规鏃堕棿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐐规浜虹紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁惧鐐规璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_check_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_check_record_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_check_record_line`;
+CREATE TABLE `mes_dv_check_record_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `record_id` bigint NULL DEFAULT NULL COMMENT '鐐规璁板綍缂栧彿',
+  `subject_id` bigint NULL DEFAULT NULL COMMENT '鐐规椤圭洰缂栧彿',
+  `check_status` int NULL DEFAULT NULL COMMENT '鐐规缁撴灉',
+  `check_result` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮傚父鎻忚堪',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁惧鐐规璁板綍鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_check_record_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_machinery
+-- ----------------------------
+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 NULL DEFAULT NULL COMMENT '璁惧缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璁惧鍚嶇О',
+  `brand` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍝佺墝',
+  `specification` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勬牸鍨嬪彿',
+  `machinery_type_id` bigint NULL DEFAULT NULL COMMENT '璁惧绫诲瀷缂栧彿',
+  `workshop_id` bigint NULL DEFAULT NULL COMMENT '鎵�灞炶溅闂寸紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '璁惧鐘舵��',
+  `last_mainten_time` datetime NULL DEFAULT NULL COMMENT '鏈�杩戜繚鍏绘椂闂�',
+  `last_check_time` datetime NULL DEFAULT NULL COMMENT '鏈�杩戠偣妫�鏃堕棿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁惧鍙拌处' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_machinery
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_machinery_type
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_machinery_type`;
+CREATE TABLE `mes_dv_machinery_type`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绫诲瀷缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绫诲瀷鍚嶇О',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖剁被鍨嬬紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `sort` int NULL DEFAULT NULL COMMENT '鏄剧ず鎺掑簭',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁惧绫诲瀷' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_machinery_type
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_mainten_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_mainten_record`;
+CREATE TABLE `mes_dv_mainten_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '璁″垝缂栧彿',
+  `machinery_id` bigint NULL DEFAULT NULL COMMENT '璁惧缂栧彿',
+  `mainten_time` datetime NULL DEFAULT NULL COMMENT '淇濆吇鏃堕棿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁惧淇濆吇璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_mainten_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_mainten_record_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_mainten_record_line`;
+CREATE TABLE `mes_dv_mainten_record_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `record_id` bigint NULL DEFAULT NULL COMMENT '淇濆吇璁板綍缂栧彿',
+  `subject_id` bigint NULL DEFAULT NULL COMMENT '椤圭洰缂栧彿',
+  `status` int NULL DEFAULT NULL COMMENT '淇濆吇缁撴灉',
+  `result` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮傚父鎻忚堪',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁惧淇濆吇璁板綍鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_mainten_record_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_repair
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_repair`;
+CREATE TABLE `mes_dv_repair`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁翠慨宸ュ崟缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁翠慨宸ュ崟鍚嶇О',
+  `machinery_id` bigint NULL DEFAULT NULL COMMENT '璁惧缂栧彿',
+  `require_date` datetime NULL DEFAULT NULL COMMENT '鎶ヤ慨鏃ユ湡',
+  `finish_date` datetime NULL DEFAULT NULL COMMENT '缁翠慨瀹屾垚鏃ユ湡',
+  `confirm_date` datetime NULL DEFAULT NULL COMMENT '楠屾敹鏃ユ湡',
+  `result` int NULL DEFAULT NULL COMMENT '缁翠慨缁撴灉',
+  `accepted_user_id` bigint NULL DEFAULT NULL COMMENT '缁翠慨浜虹敤鎴风紪鍙�',
+  `confirm_user_id` bigint NULL DEFAULT NULL COMMENT '楠屾敹浜虹敤鎴风紪鍙�',
+  `source_doc_type` int NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁绫诲瀷',
+  `source_doc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栫爜',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 缁翠慨宸ュ崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_repair
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_repair_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_repair_line`;
+CREATE TABLE `mes_dv_repair_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `repair_id` bigint NULL DEFAULT NULL COMMENT '缁翠慨宸ュ崟缂栧彿',
+  `subject_id` bigint NULL DEFAULT NULL COMMENT '鐐规淇濆吇椤圭洰缂栧彿',
+  `malfunction` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏁呴殰鎻忚堪',
+  `malfunction_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏁呴殰鍥剧墖 URL',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁翠慨鎻忚堪',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 缁翠慨宸ュ崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_repair_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_dv_subject
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_dv_subject`;
+CREATE TABLE `mes_dv_subject`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '椤圭洰缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '椤圭洰鍚嶇О',
+  `type` int NULL DEFAULT NULL COMMENT '椤圭洰绫诲瀷',
+  `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '椤圭洰鍐呭',
+  `standard` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏍囧噯',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐐规淇濆吇椤圭洰' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_dv_subject
+-- ----------------------------
+INSERT INTO `mes_dv_subject` VALUES (1, '1', '娴嬭瘯', 1, '123', '123', 0, NULL, '142', '2026-07-03 10:54:34', '142', '2026-07-03 10:54:34', b'0');
+INSERT INTO `mes_dv_subject` VALUES (2, '2', '2', 2, '2', '2', 0, NULL, '142', '2026-07-03 10:54:40', '142', '2026-07-03 10:54:40', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_auto_code_part
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_auto_code_part`;
+CREATE TABLE `mes_md_auto_code_part`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `rule_id` bigint NULL DEFAULT NULL COMMENT '瑙勫垯缂栧彿',
+  `sort` int NULL DEFAULT NULL COMMENT '鍒嗘搴忓彿',
+  `type` int NULL DEFAULT NULL COMMENT '鍒嗘绫诲瀷',
+  `length` int NULL DEFAULT NULL COMMENT '鍒嗘闀垮害',
+  `date_format` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏃ユ湡鏍煎紡',
+  `fix_character` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥哄畾瀛楃',
+  `serial_start_no` int NULL DEFAULT NULL COMMENT '娴佹按鍙疯捣濮嬪��',
+  `serial_step` int NULL DEFAULT NULL COMMENT '娴佹按鍙锋闀�',
+  `cycle_flag` bit(1) NULL DEFAULT b'0' COMMENT '娴佹按鍙锋槸鍚﹀惊鐜�',
+  `cycle_method` int NULL DEFAULT NULL COMMENT '寰幆鏂瑰紡',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 195 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 缂栫爜瑙勫垯缁勬垚' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_auto_code_part
+-- ----------------------------
+INSERT INTO `mes_md_auto_code_part` VALUES (76, 1, 1, 3, 3, NULL, 'ITC', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (77, 1, 2, 4, 4, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (78, 2, 1, 3, 5, NULL, 'ITEM_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (79, 2, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (80, 2, 3, 4, 4, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (81, 3, 1, 3, 3, NULL, 'VDR', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (82, 3, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (83, 4, 1, 3, 3, NULL, 'CLT', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (84, 4, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (85, 5, 1, 3, 3, NULL, 'WKS', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (86, 5, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (87, 6, 1, 3, 3, NULL, 'WSP', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (88, 6, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (89, 7, 1, 3, 3, NULL, 'TTL', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (90, 7, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (91, 8, 1, 3, 3, NULL, 'WHS', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (92, 8, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (93, 9, 1, 3, 3, NULL, 'LOC', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (94, 9, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (95, 10, 1, 3, 3, NULL, 'ARA', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (96, 10, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (97, 11, 1, 3, 1, NULL, 'B', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (98, 11, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (99, 11, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (100, 12, 1, 3, 3, NULL, 'SN_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (101, 12, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (102, 12, 3, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (103, 13, 1, 3, 4, NULL, 'PKG_', NULL, NULL, b'0', NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (104, 13, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, b'0', NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (105, 14, 1, 3, 3, NULL, 'AN_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (106, 14, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (107, 14, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (108, 15, 1, 3, 3, NULL, 'IR_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (109, 15, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (110, 15, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (111, 16, 1, 3, 3, NULL, 'RV_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (112, 16, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (113, 16, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (114, 17, 1, 3, 3, NULL, 'RI_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (115, 17, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (116, 17, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (117, 18, 1, 3, 3, NULL, 'SO_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (118, 18, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (119, 18, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (120, 19, 1, 3, 3, NULL, 'SN_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (121, 19, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (122, 19, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (123, 20, 1, 3, 3, NULL, 'RS_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (124, 20, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (125, 20, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (126, 21, 1, 3, 3, NULL, 'MR_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (127, 21, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (128, 21, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (129, 22, 1, 3, 3, NULL, 'MI_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (130, 22, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (131, 22, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (132, 23, 1, 3, 3, NULL, 'SP_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (133, 23, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (134, 23, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (135, 24, 1, 3, 3, NULL, 'ST_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (136, 24, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (137, 24, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (138, 25, 1, 3, 3, NULL, 'TR_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (139, 25, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (140, 25, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (141, 26, 1, 3, 3, NULL, 'OI_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (142, 26, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (143, 26, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (144, 27, 1, 3, 3, NULL, 'OR_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (145, 27, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (146, 27, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (147, 28, 1, 3, 3, NULL, 'WO_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (148, 28, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (149, 28, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (150, 29, 1, 3, 3, NULL, 'TK_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (151, 29, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (152, 29, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (153, 30, 1, 3, 3, NULL, 'FB_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (154, 30, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (155, 30, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (156, 31, 1, 3, 3, NULL, 'RT_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (157, 31, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (158, 32, 1, 3, 4, NULL, 'IQC_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (159, 32, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (160, 32, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (161, 33, 1, 3, 5, NULL, 'IPQC_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (162, 33, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (163, 33, 3, 4, 3, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (164, 34, 1, 3, 5, NULL, 'OQC_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (165, 34, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (166, 34, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (167, 35, 1, 3, 4, NULL, 'RQC_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (168, 35, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (169, 35, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (170, 36, 1, 3, 3, NULL, 'DFC', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (171, 36, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (172, 37, 1, 3, 4, NULL, 'QIR_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (173, 37, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (174, 37, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (175, 38, 1, 3, 3, NULL, 'MC_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (176, 38, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (177, 39, 1, 3, 3, NULL, 'MCT', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (178, 39, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (179, 40, 1, 3, 3, NULL, 'SBJ', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (180, 40, 2, 4, 6, NULL, NULL, 1, 1, b'0', NULL, '娴佹按鍙�', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (181, 41, 1, 3, 3, NULL, 'RP_', NULL, NULL, NULL, NULL, '鍥哄畾鍓嶇紑', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (182, 41, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, NULL, NULL, '鏃ユ湡', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (183, 41, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, '娴佹按鍙�-鎸夊ぉ寰幆', '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (184, 43, 1, 3, 5, NULL, 'PD_SP', NULL, NULL, b'0', NULL, NULL, '1', '2026-07-03 14:59:23', '1', '2026-07-03 14:59:23', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (185, 43, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, b'0', NULL, NULL, '1', '2026-07-03 14:59:31', '1', '2026-07-03 14:59:31', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (186, 43, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, NULL, '1', '2026-07-03 14:59:41', '1', '2026-07-03 14:59:41', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (187, 42, 1, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, b'0', NULL, NULL, '1', '2026-07-03 15:00:30', '1', '2026-07-03 15:00:30', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (188, 42, 2, 4, 2, NULL, NULL, 1, 1, b'0', NULL, NULL, '1', '2026-07-03 15:00:50', '1', '2026-07-03 15:00:50', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (189, 44, 1, 3, 3, NULL, 'GD_', NULL, NULL, b'0', NULL, NULL, '1', '2026-07-03 16:55:14', '1', '2026-07-03 16:55:14', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (190, 44, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, b'0', NULL, NULL, '1', '2026-07-03 16:55:22', '1', '2026-07-03 16:55:22', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (191, 44, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, NULL, '1', '2026-07-03 16:55:29', '1', '2026-07-03 16:55:29', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (192, 45, 1, 3, 2, NULL, 'GX', NULL, NULL, b'0', NULL, NULL, '1', '2026-07-09 16:49:45', '1', '2026-07-09 16:49:45', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (193, 45, 2, 2, 8, 'yyyyMMdd', NULL, NULL, NULL, b'0', NULL, NULL, '1', '2026-07-09 16:49:53', '1', '2026-07-09 16:49:53', b'0');
+INSERT INTO `mes_md_auto_code_part` VALUES (194, 45, 3, 4, 4, NULL, NULL, 1, 1, b'1', 3, NULL, '1', '2026-07-09 16:50:01', '1', '2026-07-09 16:50:01', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_auto_code_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_auto_code_record`;
+CREATE TABLE `mes_md_auto_code_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `rule_id` bigint NULL DEFAULT NULL COMMENT '瑙勫垯缂栧彿',
+  `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢熸垚鐨勭紪鐮�',
+  `serial_no` bigint NULL DEFAULT NULL COMMENT '鐢熸垚鐨勬祦姘村彿',
+  `input_char` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浼犲叆鐨勫弬鏁�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 648 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 缂栫爜鐢熸垚璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_auto_code_record
+-- ----------------------------
+INSERT INTO `mes_md_auto_code_record` VALUES (1, 1, 'SC202607020002', 2, NULL, '1', '2026-07-02 14:41:47', '1', '2026-07-02 14:41:47', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (2, 1, 'SC202607020003', 3, NULL, '1', '2026-07-02 14:41:49', '1', '2026-07-02 14:41:49', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (3, 39, 'MCT000001', 1, NULL, '142', '2026-07-03 11:46:48', '142', '2026-07-03 11:46:48', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (4, 39, 'MCT000002', 2, NULL, '142', '2026-07-03 11:47:06', '142', '2026-07-03 11:47:06', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (5, 2, 'ITEM_202607030001', 1, NULL, '1', '2026-07-03 11:47:57', '1', '2026-07-03 11:47:57', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (6, 2, 'ITEM_202607030002', 2, NULL, '1', '2026-07-03 11:50:04', '1', '2026-07-03 11:50:04', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (7, 2, 'ITEM_202607030003', 3, NULL, '1', '2026-07-03 11:50:32', '1', '2026-07-03 11:50:32', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (8, 5, 'WKS000001', 1, NULL, '1', '2026-07-03 11:52:01', '1', '2026-07-03 11:52:01', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (9, 6, 'WSP000001', 1, NULL, '1', '2026-07-03 11:52:47', '1', '2026-07-03 11:52:47', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (10, 5, 'WKS000002', 2, NULL, '1', '2026-07-03 11:53:09', '1', '2026-07-03 11:53:09', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (11, 2, 'ITEM_202607030004', 4, NULL, '1', '2026-07-03 11:54:09', '1', '2026-07-03 11:54:09', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (12, 2, 'ITEM_202607030005', 5, NULL, '1', '2026-07-03 11:54:37', '1', '2026-07-03 11:54:37', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (13, 43, 'PD_SP20260703000', 1, NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 15:00:07', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (14, 43, 'PD_SP20260703001', 10, NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 15:00:07', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (15, 43, 'PD_SP20260703002', 20, NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 15:00:07', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (16, 43, 'PD_SP20260703003', 30, NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 15:00:07', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (17, 42, '2026070301', 1, NULL, '1', '2026-07-03 15:01:15', '1', '2026-07-03 15:01:15', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (18, 43, 'PD_SP20260703004', 40, NULL, '1', '2026-07-03 15:01:45', '1', '2026-07-03 15:01:45', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (19, 42, '2026070302', 2, NULL, '1', '2026-07-03 15:07:25', '1', '2026-07-03 15:07:25', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (20, 43, 'PD_SP20260703005', 50, NULL, '1', '2026-07-03 15:13:04', '1', '2026-07-03 15:13:04', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (21, 42, '2026070303', 3, NULL, '1', '2026-07-03 15:39:33', '1', '2026-07-03 15:39:33', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (22, 42, '2026070304', 4, NULL, '1', '2026-07-03 15:42:42', '1', '2026-07-03 15:42:42', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (23, 43, 'PD_SP20260703006', 60, NULL, '1', '2026-07-03 15:49:48', '1', '2026-07-03 15:49:48', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (24, 42, '2026070305', 5, NULL, '1', '2026-07-03 16:26:16', '1', '2026-07-03 16:26:16', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (25, 44, '0GD_202607030001', 1, NULL, '1', '2026-07-03 16:55:37', '1', '2026-07-03 16:55:37', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (226, 8, 'WHS000001', 1, NULL, '1', '2026-07-09 14:01:17', '1', '2026-07-09 14:01:17', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (527, 12, 'SN_20260709000501', 501, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (528, 12, 'SN_20260709000502', 502, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (529, 12, 'SN_20260709000503', 503, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (530, 12, 'SN_20260709000504', 504, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (531, 12, 'SN_20260709000505', 505, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (532, 12, 'SN_20260709000506', 506, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (533, 12, 'SN_20260709000507', 507, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (534, 12, 'SN_20260709000508', 508, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (535, 12, 'SN_20260709000509', 509, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (536, 12, 'SN_20260709000510', 510, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (537, 12, 'SN_20260709000511', 511, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (538, 12, 'SN_20260709000512', 512, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (539, 12, 'SN_20260709000513', 513, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (540, 12, 'SN_20260709000514', 514, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (541, 12, 'SN_20260709000515', 515, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (542, 12, 'SN_20260709000516', 516, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (543, 12, 'SN_20260709000517', 517, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (544, 12, 'SN_20260709000518', 518, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (545, 12, 'SN_20260709000519', 519, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (546, 12, 'SN_20260709000520', 520, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (547, 12, 'SN_20260709000521', 521, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (548, 12, 'SN_20260709000522', 522, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (549, 12, 'SN_20260709000523', 523, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (550, 12, 'SN_20260709000524', 524, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (551, 12, 'SN_20260709000525', 525, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (552, 12, 'SN_20260709000526', 526, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (553, 12, 'SN_20260709000527', 527, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (554, 12, 'SN_20260709000528', 528, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (555, 12, 'SN_20260709000529', 529, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (556, 12, 'SN_20260709000530', 530, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (557, 12, 'SN_20260709000531', 531, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (558, 12, 'SN_20260709000532', 532, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (559, 12, 'SN_20260709000533', 533, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (560, 12, 'SN_20260709000534', 534, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (561, 12, 'SN_20260709000535', 535, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (562, 12, 'SN_20260709000536', 536, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (563, 12, 'SN_20260709000537', 537, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (564, 12, 'SN_20260709000538', 538, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (565, 12, 'SN_20260709000539', 539, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (566, 12, 'SN_20260709000540', 540, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (567, 12, 'SN_20260709000541', 541, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (568, 12, 'SN_20260709000542', 542, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (569, 12, 'SN_20260709000543', 543, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (570, 12, 'SN_20260709000544', 544, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (571, 12, 'SN_20260709000545', 545, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (572, 12, 'SN_20260709000546', 546, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (573, 12, 'SN_20260709000547', 547, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (574, 12, 'SN_20260709000548', 548, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (575, 12, 'SN_20260709000549', 549, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (576, 12, 'SN_20260709000550', 550, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (577, 12, 'SN_20260709000551', 551, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (578, 12, 'SN_20260709000552', 552, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (579, 12, 'SN_20260709000553', 553, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (580, 12, 'SN_20260709000554', 554, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (581, 12, 'SN_20260709000555', 555, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (582, 12, 'SN_20260709000556', 556, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (583, 12, 'SN_20260709000557', 557, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (584, 12, 'SN_20260709000558', 558, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (585, 12, 'SN_20260709000559', 559, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (586, 12, 'SN_20260709000560', 560, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (587, 12, 'SN_20260709000561', 561, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (588, 12, 'SN_20260709000562', 562, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (589, 12, 'SN_20260709000563', 563, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (590, 12, 'SN_20260709000564', 564, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (591, 12, 'SN_20260709000565', 565, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (592, 12, 'SN_20260709000566', 566, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (593, 12, 'SN_20260709000567', 567, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (594, 12, 'SN_20260709000568', 568, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (595, 12, 'SN_20260709000569', 569, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (596, 12, 'SN_20260709000570', 570, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (597, 12, 'SN_20260709000571', 571, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (598, 12, 'SN_20260709000572', 572, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (599, 12, 'SN_20260709000573', 573, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (600, 12, 'SN_20260709000574', 574, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (601, 12, 'SN_20260709000575', 575, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (602, 12, 'SN_20260709000576', 576, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (603, 12, 'SN_20260709000577', 577, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (604, 12, 'SN_20260709000578', 578, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (605, 12, 'SN_20260709000579', 579, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (606, 12, 'SN_20260709000580', 580, NULL, '142', '2026-07-09 14:07:11', '142', '2026-07-09 14:07:11', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (607, 12, 'SN_20260709000581', 581, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (608, 12, 'SN_20260709000582', 582, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (609, 12, 'SN_20260709000583', 583, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (610, 12, 'SN_20260709000584', 584, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (611, 12, 'SN_20260709000585', 585, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (612, 12, 'SN_20260709000586', 586, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (613, 12, 'SN_20260709000587', 587, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (614, 12, 'SN_20260709000588', 588, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (615, 12, 'SN_20260709000589', 589, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (616, 12, 'SN_20260709000590', 590, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (617, 12, 'SN_20260709000591', 591, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (618, 12, 'SN_20260709000592', 592, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (619, 12, 'SN_20260709000593', 593, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (620, 12, 'SN_20260709000594', 594, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (621, 12, 'SN_20260709000595', 595, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (622, 12, 'SN_20260709000596', 596, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (623, 12, 'SN_20260709000597', 597, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (624, 12, 'SN_20260709000598', 598, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (625, 12, 'SN_20260709000599', 599, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (626, 12, 'SN_20260709000600', 600, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (627, 15, 'IR_202607090001', 1, NULL, '1', '2026-07-09 14:08:48', '1', '2026-07-09 14:08:48', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (628, 14, 'AN_202607090001', 1, NULL, '1', '2026-07-09 14:09:14', '1', '2026-07-09 14:09:14', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (629, 14, 'AN_202607090002', 2, NULL, '1', '2026-07-09 14:48:52', '1', '2026-07-09 14:48:52', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (630, 14, 'AN_202607090003', 3, NULL, '142', '2026-07-09 15:20:37', '142', '2026-07-09 15:20:37', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (631, 14, 'AN_202607090004', 4, NULL, '142', '2026-07-09 15:28:18', '142', '2026-07-09 15:28:18', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (632, 14, 'AN_202607090005', 5, NULL, '142', '2026-07-09 16:32:34', '142', '2026-07-09 16:32:34', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (633, 15, 'IR_202607090002', 2, NULL, '142', '2026-07-09 16:32:57', '142', '2026-07-09 16:32:57', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (634, 14, 'AN_202607090006', 6, NULL, '1', '2026-07-09 16:37:29', '1', '2026-07-09 16:37:29', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (635, 45, '00GX202607090001', 1, NULL, '1', '2026-07-09 16:50:06', '1', '2026-07-09 16:50:06', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (636, 45, 'GX202607090002', 2, NULL, '1', '2026-07-09 16:50:31', '1', '2026-07-09 16:50:31', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (637, 45, 'GX202607090003', 3, NULL, '1', '2026-07-09 16:51:16', '1', '2026-07-09 16:51:16', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (638, 45, 'GX202607090004', 4, NULL, '1', '2026-07-09 16:51:25', '1', '2026-07-09 16:51:25', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (639, 45, 'GX202607090005', 5, NULL, '1', '2026-07-09 16:51:32', '1', '2026-07-09 16:51:32', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (640, 45, 'GX202607090006', 6, NULL, '1', '2026-07-09 16:51:40', '1', '2026-07-09 16:51:40', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (641, 45, 'GX202607090007', 7, NULL, '1', '2026-07-09 16:51:47', '1', '2026-07-09 16:51:47', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (642, 31, 'RT_000001', 1, NULL, '1', '2026-07-09 17:07:57', '1', '2026-07-09 17:07:57', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (643, 14, 'AN_202607090007', 7, NULL, '142', '2026-07-09 17:21:59', '142', '2026-07-09 17:21:59', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (644, 14, 'AN_202607090008', 8, NULL, '142', '2026-07-09 17:43:53', '142', '2026-07-09 17:43:53', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (645, 14, 'AN_202607090009', 9, NULL, '142', '2026-07-09 17:49:43', '142', '2026-07-09 17:49:43', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (646, 14, 'AN_202607090010', 10, NULL, '142', '2026-07-09 17:54:00', '142', '2026-07-09 17:54:00', b'0');
+INSERT INTO `mes_md_auto_code_record` VALUES (647, 15, 'IR_202607100001', 1, NULL, '142', '2026-07-10 09:26:29', '142', '2026-07-10 09:26:29', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_auto_code_rule
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_auto_code_rule`;
+CREATE TABLE `mes_md_auto_code_rule`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勫垯缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勫垯鍚嶇О',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎻忚堪',
+  `max_length` int NULL DEFAULT NULL COMMENT '鏈�澶ч暱搴�',
+  `padded` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁琛ラ綈',
+  `padded_char` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '琛ラ綈瀛楃',
+  `padded_method` int NULL DEFAULT NULL COMMENT '琛ラ綈鏂瑰紡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 缂栫爜瑙勫垯' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_auto_code_rule
+-- ----------------------------
+INSERT INTO `mes_md_auto_code_rule` VALUES (1, 'MD_ITEM_TYPE_CODE', '鐗╂枡鍒嗙被缂栫爜', '鐢ㄤ簬鐢熸垚鐗╂枡鍒嗙被缂栫爜', 10, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (2, 'MD_ITEM_CODE', '鐗╂枡缂栫爜', '鐢ㄤ簬鐢熸垚鐗╂枡缂栫爜', 20, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (3, 'MD_VENDOR_CODE', '渚涘簲鍟嗙紪鐮�', '鐢ㄤ簬鐢熸垚渚涘簲鍟嗙紪鐮�', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (4, 'MD_CLIENT_CODE', '瀹㈡埛缂栫爜', '鐢ㄤ簬鐢熸垚瀹㈡埛缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (5, 'MD_WORKSTATION_CODE', '宸ヤ綔绔欑紪鐮�', '鐢ㄤ簬鐢熸垚宸ヤ綔绔欑紪鐮�', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (6, 'MD_WORKSHOP_CODE', '杞﹂棿缂栫爜', '鐢ㄤ簬鐢熸垚杞﹂棿缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (7, 'TM_TOOL_TYPE_CODE', '宸ュ叿绫诲瀷缂栫爜', '鐢ㄤ簬鐢熸垚宸ュ叿绫诲瀷缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (8, 'WM_WAREHOUSE_CODE', '浠撳簱缂栫爜', '鐢ㄤ簬鐢熸垚浠撳簱缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (9, 'WM_LOCATION_CODE', '搴撳尯缂栫爜', '鐢ㄤ簬鐢熸垚搴撳尯缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (10, 'WM_AREA_CODE', '搴撲綅缂栫爜', '鐢ㄤ簬鐢熸垚搴撲綅缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (11, 'WM_BATCH_CODE', '鎵规缂栫爜', '鐢ㄤ簬鐢熸垚鎵规缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (12, 'WM_SN_CODE', 'SN鐮�', '鐢ㄤ簬鐢熸垚SN鐮�', 20, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (13, 'WM_PACKAGE_CODE', '瑁呯鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚瑁呯鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (14, 'WM_ARRIVAL_NOTICE_CODE', '鍒拌揣閫氱煡鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚鍒拌揣閫氱煡鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (15, 'WM_ITEM_RECEIPT_CODE', '閲囪喘鍏ュ簱鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚閲囪喘鍏ュ簱鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (16, 'WM_RETURN_VENDOR_CODE', '閲囪喘閫�璐у崟缂栫爜', '鐢ㄤ簬鐢熸垚閲囪喘閫�璐у崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (17, 'WM_RETURN_ISSUE_CODE', '鐢熶骇閫�鏂欏崟缂栫爜', '鐢ㄤ簬鐢熸垚鐢熶骇閫�鏂欏崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (18, 'WM_PRODUCT_SALES_CODE', '閿�鍞嚭搴撳崟缂栫爜', '鐢ㄤ簬鐢熸垚閿�鍞嚭搴撳崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (19, 'WM_SALES_NOTICE_CODE', '鍙戣揣閫氱煡鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚鍙戣揣閫氱煡鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (20, 'WM_RETURN_SALES_CODE', '閿�鍞��璐у崟缂栫爜', '鐢ㄤ簬鐢熸垚閿�鍞��璐у崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (21, 'WM_MISC_RECEIPT_CODE', '鏉傞」鍏ュ簱鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚鏉傞」鍏ュ簱鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (22, 'WM_MISC_ISSUE_CODE', '鏉傞」鍑哄簱鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚鏉傞」鍑哄簱鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (23, 'WM_STOCK_TAKING_PLAN_CODE', '鐩樼偣鏂规缂栫爜', '鐢ㄤ簬鐢熸垚鐩樼偣鏂规缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (24, 'WM_STOCK_TAKING_CODE', '鐩樼偣浠诲姟缂栫爜', '鐢ㄤ簬鐢熸垚鐩樼偣浠诲姟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (25, 'TRANSFER_CODE', '杞Щ璋冩嫧鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚杞Щ璋冩嫧鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (26, 'WM_OUTSOURCE_ISSUE_CODE', '澶栧崗鍙戞枡鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚澶栧崗鍙戞枡鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (27, 'WM_OUTSOURCE_RECEIPT_CODE', '澶栧崗鍏ュ簱鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚澶栧崗鍏ュ簱鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (28, 'PRO_WORK_ORDER_CODE', '鐢熶骇宸ュ崟缂栫爜', '鐢ㄤ簬鐢熸垚鐢熶骇宸ュ崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (29, 'PRO_TASK_CODE', '鐢熶骇浠诲姟缂栫爜', '鐢ㄤ簬鐢熸垚鐢熶骇浠诲姟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (30, 'PRO_FEEDBACK_CODE', '鐢熶骇鎶ュ伐鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚鐢熶骇鎶ュ伐鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (31, 'PRO_ROUTE_CODE', '宸ヨ壓璺嚎缂栫爜', '鐢ㄤ簬鐢熸垚宸ヨ壓璺嚎缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (32, 'QC_IQC_CODE', '鏉ユ枡妫�楠屽崟缂栫爜', '鐢ㄤ簬鐢熸垚鏉ユ枡妫�楠屽崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (33, 'QC_IPQC_CODE', '杩囩▼妫�楠屽崟缂栫爜', '鐢ㄤ簬鐢熸垚杩囩▼妫�楠屽崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (34, 'QC_OQC_CODE', '鍑鸿揣妫�楠屽崟缂栫爜', '鐢ㄤ簬鐢熸垚鍑鸿揣妫�楠屽崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (35, 'QC_RQC_CODE', '閫�璐ф楠屽崟缂栫爜', '鐢ㄤ簬鐢熸垚閫�璐ф楠屽崟缂栫爜', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (36, 'QC_DEFECT_CODE', '缂洪櫡绫诲瀷缂栫爜', '鐢ㄤ簬鐢熸垚缂洪櫡绫诲瀷缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (37, 'QC_INDICATOR_RESULT_CODE', '鏍峰搧妫�楠岀粨鏋滅紪鐮�', '鐢ㄤ簬鐢熸垚鏍峰搧妫�楠岀粨鏋滅紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (38, 'DV_MACHINERY_CODE', '璁惧缂栫爜', '鐢ㄤ簬鐢熸垚璁惧缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (39, 'DV_MACHINERY_TYPE_CODE', '璁惧绫诲瀷缂栫爜', '鐢ㄤ簬鐢熸垚璁惧绫诲瀷缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (40, 'DV_SUBJECT_CODE', '鐐规淇濆吇椤圭洰缂栫爜', '鐢ㄤ簬鐢熸垚鐐规淇濆吇椤圭洰缂栫爜', 12, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (41, 'DV_REPAIR_CODE', '缁翠慨鍗曠紪鐮�', '鐢ㄤ簬鐢熸垚缁翠慨鍗曠紪鐮�', 16, b'0', NULL, NULL, 0, NULL, '1', '2026-07-03 03:46:33', '1', '2026-07-03 03:46:33', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (42, 'PD_PROJECT_CODE', '璁捐椤圭洰', '鍖哄垎璁捐椤圭洰', 10, b'1', '0', 1, 0, NULL, '1', '2026-07-03 14:57:28', '1', '2026-07-03 15:01:07', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (43, 'PD_DOCUMENT_AUDIT_CODE', '瀹℃壒缂栫爜', NULL, 16, b'1', '0', 1, 0, NULL, '1', '2026-07-03 14:58:27', '1', '2026-07-03 14:59:45', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (44, 'PD_ARCHIVE_CODE', '褰掓。缂栫爜', NULL, 16, b'1', '0', 1, 0, NULL, '1', '2026-07-03 16:54:59', '1', '2026-07-03 16:55:30', b'0');
+INSERT INTO `mes_md_auto_code_rule` VALUES (45, 'PRO_PROCESS_CODE', '宸ュ簭缂栫爜', NULL, 14, b'1', '0', 1, 0, NULL, '1', '2026-07-09 16:49:26', '1', '2026-07-09 16:50:26', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_client
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_client`;
+CREATE TABLE `mes_md_client`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛鍚嶇О',
+  `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛绠�绉�',
+  `english_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛鑻辨枃鍚嶇О',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛绠�浠�',
+  `logo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛LOGO鍦板潃',
+  `type` int NULL DEFAULT NULL COMMENT '瀹㈡埛绫诲瀷',
+  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛鍦板潃',
+  `website` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛瀹樼綉鍦板潃',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛閭鍦板潃',
+  `telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀹㈡埛鐢佃瘽',
+  `contact1_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�1',
+  `contact1_telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�1-鐢佃瘽',
+  `contact1_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�1-閭',
+  `contact2_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�2',
+  `contact2_telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�2-鐢佃瘽',
+  `contact2_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�2-閭',
+  `credit_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁熶竴绀句細淇$敤浠g爜',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 瀹㈡埛' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_client
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_md_item
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_item`;
+CREATE TABLE `mes_md_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐗╂枡缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐗╂枡鍚嶇О',
+  `specification` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勬牸鍨嬪彿',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `item_type_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡鍒嗙被缂栧彿',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `safe_stock_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍚敤瀹夊叏搴撳瓨',
+  `min_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�浣庡簱瀛橀噺',
+  `max_stock` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�楂樺簱瀛橀噺',
+  `high_value` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁楂樺�肩墿鏂�',
+  `batch_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍚敤鎵规绠$悊',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡浜у搧' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_item
+-- ----------------------------
+INSERT INTO `mes_md_item` VALUES (1, '12121212', '12121', '1212', 1, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:12:02', '1', '2026-06-23 09:34:26', b'1');
+INSERT INTO `mes_md_item` VALUES (2, '1111', '222', NULL, 1, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:14:34', '1', '2026-07-03 11:47:49', b'1');
+INSERT INTO `mes_md_item` VALUES (3, '111122222222', '22222222', NULL, 1, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:16:37', '1', '2026-06-23 09:34:26', b'1');
+INSERT INTO `mes_md_item` VALUES (4, '1', '1', NULL, 1, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:17:10', '1', '2026-07-03 11:47:52', b'1');
+INSERT INTO `mes_md_item` VALUES (5, '2', '2', NULL, 1, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:18:53', '1', '2026-07-03 11:49:51', b'1');
+INSERT INTO `mes_md_item` VALUES (6, '3', '3', NULL, 1, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:19:19', '1', '2026-07-03 11:49:53', b'1');
+INSERT INTO `mes_md_item` VALUES (7, '4', '4', NULL, 1, 1, 1, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:19:28', '1', '2026-07-03 11:49:55', b'1');
+INSERT INTO `mes_md_item` VALUES (8, '7', '7', NULL, 1, 1, 1, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:21:59', '1', '2026-07-03 11:49:57', b'1');
+INSERT INTO `mes_md_item` VALUES (9, '13213', '鍘熸枡1', '23123', 1, 1, 1, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:29:14', '1', '2026-07-03 11:49:58', b'1');
+INSERT INTO `mes_md_item` VALUES (10, 'aaa', '111', NULL, 1, 1, 1, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-06-23 17:37:52', '1', '2026-07-03 11:50:00', b'1');
+INSERT INTO `mes_md_item` VALUES (11, 'ITEM_202607030001', '瑁搁摐绾�', '4.5*7.6', 2, 1, 0, b'0', 0.000000, 0.000000, b'1', b'1', NULL, '1', '2026-07-03 11:48:38', '1', '2026-07-03 11:49:15', b'0');
+INSERT INTO `mes_md_item` VALUES (12, 'ITEM_202607030002', '閾滄潌', '4.6', 2, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-07-03 11:50:23', '1', '2026-07-03 11:51:24', b'0');
+INSERT INTO `mes_md_item` VALUES (13, 'ITEM_202607030003', '閾滄澘', '4.6', 2, 1, 0, b'0', 0.000000, 0.000000, b'0', b'1', NULL, '1', '2026-07-03 11:50:47', '1', '2026-07-03 11:51:04', b'0');
+INSERT INTO `mes_md_item` VALUES (14, 'ITEM_202607030004', '绾稿寘绾�', '4.5*7.6', 2, 1, 0, b'0', 0.000000, 0.000000, b'0', b'0', NULL, '1', '2026-07-03 11:54:28', '1', '2026-07-03 11:54:33', b'0');
+INSERT INTO `mes_md_item` VALUES (15, 'ITEM_202607030005', '婕嗗寘绾�', '4.5*7.6', 2, 1, 0, b'0', 0.000000, 0.000000, b'0', b'0', NULL, '1', '2026-07-03 11:54:49', '1', '2026-07-03 11:54:54', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_item_batch_config
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_item_batch_config`;
+CREATE TABLE `mes_md_item_batch_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡缂栧彿',
+  `produce_date_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-鐢熶骇鏃ユ湡',
+  `expire_date_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-鏈夋晥鏈�',
+  `receipt_date_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-鍏ュ簱鏃ユ湡',
+  `vendor_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-渚涘簲鍟�',
+  `client_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-瀹㈡埛',
+  `sales_order_code_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-閿�鍞鍗曠紪鍙�',
+  `purchase_order_code_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-閲囪喘璁㈠崟缂栧彿',
+  `work_order_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-鐢熶骇宸ュ崟',
+  `task_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-鐢熶骇浠诲姟',
+  `workstation_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-宸ヤ綔绔�',
+  `tool_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-宸ュ叿',
+  `mold_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-妯″叿',
+  `lot_number_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-鐢熶骇鎵瑰彿',
+  `quality_status_flag` bit(1) NULL DEFAULT b'0' COMMENT '鎵规灞炴��-璐ㄩ噺鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡鎵规灞炴�ч厤缃�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_item_batch_config
+-- ----------------------------
+INSERT INTO `mes_md_item_batch_config` VALUES (1, 5, b'1', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'1', '1', '2026-07-02 15:06:00', '1', '2026-07-03 03:49:46', b'1');
+INSERT INTO `mes_md_item_batch_config` VALUES (2, 11, b'1', b'0', b'1', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'1', b'0', '1', '2026-07-03 11:49:10', '1', '2026-07-03 11:49:10', b'0');
+INSERT INTO `mes_md_item_batch_config` VALUES (3, 13, b'1', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'1', '1', '2026-07-03 11:51:00', '1', '2026-07-03 11:51:00', b'0');
+INSERT INTO `mes_md_item_batch_config` VALUES (4, 12, b'1', b'0', b'1', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'1', '1', '2026-07-03 11:51:18', '1', '2026-07-03 11:51:18', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_item_type
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_item_type`;
+CREATE TABLE `mes_md_item_type`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍒嗙被缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍒嗙被鍚嶇О',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖跺垎绫荤紪鍙�',
+  `item_or_product` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐗╂枡/浜у搧鏍囪瘑',
+  `sort` int NULL DEFAULT NULL COMMENT '鏄剧ず鎺掑簭',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡浜у搧鍒嗙被' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_item_type
+-- ----------------------------
+INSERT INTO `mes_md_item_type` VALUES (1, '4812125564', '鍘熸枡', 0, 'ITEM', 0, 0, NULL, '1', '2026-06-23 17:11:44', '1', '2026-06-23 17:11:44', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_product_bom
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_product_bom`;
+CREATE TABLE `mes_md_product_bom`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡浜у搧缂栧彿',
+  `bom_item_id` bigint NULL DEFAULT NULL COMMENT 'BOM鐗╂枡缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐗╂枡浣跨敤姣斾緥',
+  `status` int NULL DEFAULT NULL COMMENT '鏄惁鍚敤',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 浜у搧 BOM' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_product_bom
+-- ----------------------------
+INSERT INTO `mes_md_product_bom` VALUES (1, 10, 8, 1.000000, NULL, NULL, '1', '2026-06-23 17:43:46', '1', '2026-07-03 03:49:55', b'1');
+
+-- ----------------------------
+-- Table structure for mes_md_product_sip
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_product_sip`;
+CREATE TABLE `mes_md_product_sip`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡浜у搧缂栧彿',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑垪椤哄簭',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏍囬',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇︾粏鎻忚堪',
+  `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥剧墖鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 浜у搧 SIP' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_product_sip
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_md_product_sop
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_product_sop`;
+CREATE TABLE `mes_md_product_sop`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡浜у搧缂栧彿',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑垪椤哄簭',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏍囬',
+  `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇︾粏鎻忚堪',
+  `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍥剧墖鍦板潃',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 浜у搧 SOP' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_product_sop
+-- ----------------------------
+INSERT INTO `mes_md_product_sop` VALUES (1, 5, 1, 1, '22', '13', NULL, NULL, '1', '2026-07-02 15:07:28', '1', '2026-07-03 03:49:46', b'1');
+INSERT INTO `mes_md_product_sop` VALUES (2, 5, 2, 2, '11', '13', NULL, NULL, '1', '2026-07-02 15:07:42', '1', '2026-07-03 03:49:46', b'1');
+
+-- ----------------------------
+-- Table structure for mes_md_unit_measure
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_unit_measure`;
+CREATE TABLE `mes_md_unit_measure`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曚綅缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曚綅鍚嶇О',
+  `primary_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁涓诲崟浣�',
+  `primary_id` bigint NULL DEFAULT NULL COMMENT '涓诲崟浣嶇紪鍙�',
+  `change_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓庝富鍗曚綅鎹㈢畻姣斾緥',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璁¢噺鍗曚綅' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_unit_measure
+-- ----------------------------
+INSERT INTO `mes_md_unit_measure` VALUES (1, '121212', '鍚�', b'1', 1, 1000.000000, 0, NULL, '1', '2026-06-23 17:10:38', '1', '2026-06-23 17:11:12', b'0');
+INSERT INTO `mes_md_unit_measure` VALUES (2, '4812125564', '鍗冨厠', b'0', 1, 1000.000000, 0, NULL, '1', '2026-06-23 17:11:24', '1', '2026-06-23 17:11:24', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_vendor
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_vendor`;
+CREATE TABLE `mes_md_vendor`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鐮�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗗悕绉�',
+  `nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙畝绉�',
+  `english_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗚嫳鏂囧悕绉�',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙畝浠�',
+  `logo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟哃OGO鍦板潃',
+  `level` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙瓑绾�',
+  `score` int NULL DEFAULT NULL COMMENT '渚涘簲鍟嗚瘎鍒�',
+  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗗湴鍧�',
+  `website` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗗畼缃戝湴鍧�',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗛偖绠卞湴鍧�',
+  `telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙數璇�',
+  `contact1_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�1',
+  `contact1_telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�1-鐢佃瘽',
+  `contact1_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�1-閭',
+  `contact2_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�2',
+  `contact2_telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�2-鐢佃瘽',
+  `contact2_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�2-閭',
+  `credit_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁熶竴绀句細淇$敤浠g爜',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 渚涘簲鍟�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_vendor
+-- ----------------------------
+INSERT INTO `mes_md_vendor` VALUES (1, '21', '2121', '121', '212', '1212', NULL, 'A', NULL, '121', '212', '262959@qq.com', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, '1', '2026-06-26 15:28:22', '1', '2026-06-26 15:28:22', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_workshop
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_workshop`;
+CREATE TABLE `mes_md_workshop`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杞﹂棿缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杞﹂棿鍚嶇О',
+  `area` decimal(24, 6) NULL DEFAULT NULL COMMENT '闈㈢Н锛堝钩鏂圭背锛�',
+  `charge_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹敤鎴风紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 杞﹂棿' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_workshop
+-- ----------------------------
+INSERT INTO `mes_md_workshop` VALUES (1, '861154', '浜у搧璁捐', 111.000000, 100, 0, '3213', '1', '2026-07-02 09:36:31', '1', '2026-07-03 11:52:44', b'1');
+INSERT INTO `mes_md_workshop` VALUES (2, 'WSP000001', '閾滄潌杞﹂棿', NULL, 118, 0, NULL, '1', '2026-07-03 11:53:01', '1', '2026-07-03 11:53:01', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_workstation
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_workstation`;
+CREATE TABLE `mes_md_workstation`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鐮�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヤ綔绔欏悕绉�',
+  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヤ綔绔欏湴鐐�',
+  `workshop_id` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄨ溅闂寸紪鍙�',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '绾胯竟搴撶紪鍙�',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯缂栧彿',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅缂栧彿',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヤ綔绔�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_workstation
+-- ----------------------------
+INSERT INTO `mes_md_workstation` VALUES (1, '861154', '褰掓。鍙拌处', NULL, 1, 1, 1, 1, NULL, 0, '12312', '1', '2026-07-02 09:37:38', '1', '2026-07-03 11:52:39', b'1');
+INSERT INTO `mes_md_workstation` VALUES (2, 'WKS000002', '閾滄潌宸ヤ綔绔�', NULL, 2, 1, 1, 1, NULL, 0, NULL, '1', '2026-07-03 11:53:45', '1', '2026-07-03 11:53:53', b'0');
+
+-- ----------------------------
+-- Table structure for mes_md_workstation_machine
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_workstation_machine`;
+CREATE TABLE `mes_md_workstation_machine`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `machinery_id` bigint NULL DEFAULT NULL COMMENT '璁惧缂栧彿',
+  `quantity` int NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヤ綔绔欒澶囪祫婧�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_workstation_machine
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_md_workstation_tool
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_workstation_tool`;
+CREATE TABLE `mes_md_workstation_tool`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `tool_type_id` bigint NULL DEFAULT NULL COMMENT '宸ュ叿绫诲瀷缂栧彿',
+  `quantity` int NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヤ綔绔欏伐瑁呭す鍏疯祫婧�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_workstation_tool
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_md_workstation_worker
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_md_workstation_worker`;
+CREATE TABLE `mes_md_workstation_worker`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `post_id` bigint NULL DEFAULT NULL COMMENT '宀椾綅缂栧彿',
+  `quantity` int NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヤ綔绔欎汉鍔涜祫婧�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_md_workstation_worker
+-- ----------------------------
+INSERT INTO `mes_md_workstation_worker` VALUES (1, 1, 4, 1, '311', '1', '2026-07-02 09:38:08', '1', '2026-07-03 03:52:34', b'1');
+
+-- ----------------------------
+-- Table structure for mes_pd_archive
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pd_archive`;
+CREATE TABLE `mes_pd_archive`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `archive_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '褰掓。缂栧彿',
+  `project_id` bigint NOT NULL COMMENT '璁捐椤圭洰ID',
+  `archiver` bigint NULL DEFAULT NULL COMMENT '褰掓。浜�',
+  `archive_status` tinyint NULL DEFAULT NULL COMMENT '褰掓。鐘舵��',
+  `archive_time` datetime NULL DEFAULT NULL COMMENT '褰掓。鏃堕棿',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MES 褰掓。鍙拌处' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pd_archive
+-- ----------------------------
+INSERT INTO `mes_pd_archive` VALUES (1, '0GD_202607030001', 6, 1, 1, '2026-07-03 16:55:37', NULL, '1', '2026-07-03 16:55:37', '1', '2026-07-03 16:55:37', b'0', 0);
+
+-- ----------------------------
+-- Table structure for mes_pd_document
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pd_document`;
+CREATE TABLE `mes_pd_document`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `project_id` bigint NOT NULL COMMENT '璁捐椤圭洰ID',
+  `document_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璧勬枡绫诲瀷',
+  `document_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璧勬枡鍚嶇О',
+  `document_version` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鐗堟湰',
+  `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏂囦欢鍚�',
+  `upload_user_id` bigint NULL DEFAULT NULL COMMENT '涓婁紶浜�',
+  `upload_time` datetime NULL DEFAULT NULL COMMENT '涓婁紶鏃堕棿',
+  `file_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏂囦欢URL锛堥鐣欙級',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MES 璁捐璧勬枡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pd_document
+-- ----------------------------
+INSERT INTO `mes_pd_document` VALUES (1, 1, 'scheme', '111', '1', NULL, NULL, NULL, NULL, NULL, '1', '2026-07-03 14:43:36', '1', '2026-07-03 14:43:36', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (2, 1, 'scheme', '22', '222', NULL, NULL, NULL, NULL, '2222', '1', '2026-07-03 14:43:46', '1', '2026-07-03 14:43:46', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (3, 1, 'drawing', '111', '124', NULL, NULL, NULL, NULL, NULL, '1', '2026-07-03 14:44:01', '1', '2026-07-03 14:44:01', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (4, 1, 'scheme', '2141', '412', NULL, NULL, NULL, NULL, '44444', '1', '2026-07-03 14:44:14', '1', '2026-07-03 14:44:14', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (5, 2, 'scheme', '11', 'v1.0', NULL, NULL, NULL, NULL, NULL, '1', '2026-07-03 15:01:23', '1', '2026-07-03 15:01:23', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (6, 4, 'scheme', '22', '222', NULL, NULL, NULL, NULL, NULL, '1', '2026-07-03 15:07:49', '1', '2026-07-03 15:07:49', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (7, 6, 'scheme', '22', '222', '1314', NULL, NULL, 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_8-13K%E3%80%91%E8%8C%83%E9%AB%98%E7%BF%94_3%E5%B9%B4.pdf', NULL, '1', '2026-07-03 15:46:53', '1', '2026-07-03 15:48:40', b'1', 0);
+INSERT INTO `mes_pd_document` VALUES (8, 6, 'scheme', '111', '1', NULL, NULL, NULL, 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_6-8K%E3%80%91%E6%96%BD%E6%B5%A9%E4%B8%9C_4%E5%B9%B4.pdf', NULL, '1', '2026-07-03 15:48:50', '1', '2026-07-03 15:48:50', b'0', 0);
+INSERT INTO `mes_pd_document` VALUES (9, 7, 'scheme', '111', '222', NULL, NULL, NULL, 'http://127.0.0.1:48080/admin-api/infra/file/29/get/mes/pd/20260703/%E3%80%90Java%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88_%E5%8D%97%E9%80%9A_8-13K%E3%80%91%E6%9D%8E%E6%96%87%E6%85%A7_7%E5%B9%B4.pdf', NULL, '1', '2026-07-03 16:26:50', '1', '2026-07-03 16:26:50', b'0', 0);
+
+-- ----------------------------
+-- Table structure for mes_pd_document_audit
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pd_document_audit`;
+CREATE TABLE `mes_pd_document_audit`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `audit_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瀹℃牳鍗曞彿',
+  `document_id` bigint NOT NULL COMMENT '璧勬枡ID',
+  `document_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璧勬枡鍚嶇О锛堝啑浣欙級',
+  `document_version` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璧勬枡鐗堟湰锛堝啑浣欙級',
+  `reviewer` bigint NULL DEFAULT NULL COMMENT '瀹℃牳浜�',
+  `audit_status` tinyint NULL DEFAULT NULL COMMENT '瀹℃牳鐘舵��',
+  `audit_time` datetime NULL DEFAULT NULL COMMENT '瀹℃牳鏃堕棿',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MES 璧勬枡瀹℃牳' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pd_document_audit
+-- ----------------------------
+INSERT INTO `mes_pd_document_audit` VALUES (1, 'PD_SP20260703000', 1, '111', '1', 1, 1, '2026-07-03 16:27:45', NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 16:27:45', b'0', 0);
+INSERT INTO `mes_pd_document_audit` VALUES (2, 'PD_SP20260703001', 2, '22', '222', 1, 1, '2026-07-03 16:27:39', NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 16:27:39', b'0', 0);
+INSERT INTO `mes_pd_document_audit` VALUES (3, 'PD_SP20260703002', 3, '111', '124', 1, 1, '2026-07-03 16:27:16', NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 16:27:16', b'0', 0);
+INSERT INTO `mes_pd_document_audit` VALUES (4, 'PD_SP20260703003', 4, '2141', '412', 1, 1, '2026-07-03 16:26:27', NULL, '1', '2026-07-03 15:00:07', '1', '2026-07-03 16:26:27', b'0', 0);
+INSERT INTO `mes_pd_document_audit` VALUES (5, 'PD_SP20260703004', 5, '11', 'v1.0', 1, 1, '2026-07-03 16:27:53', NULL, '1', '2026-07-03 15:01:45', '1', '2026-07-03 16:27:53', b'0', 0);
+INSERT INTO `mes_pd_document_audit` VALUES (6, 'PD_SP20260703005', 6, '22', '222', 1, 1, '2026-07-03 16:26:35', NULL, '1', '2026-07-03 15:13:04', '1', '2026-07-03 16:26:35', b'0', 0);
+INSERT INTO `mes_pd_document_audit` VALUES (7, 'PD_SP20260703006', 8, '111', '1', 1, 1, '2026-07-03 16:24:00', NULL, '1', '2026-07-03 15:49:48', '1', '2026-07-03 16:24:00', b'0', 0);
+
+-- ----------------------------
+-- Table structure for mes_pd_project
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pd_project`;
+CREATE TABLE `mes_pd_project`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `task_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '浠诲姟缂栫爜',
+  `task_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '浠诲姟鍚嶇О',
+  `product_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '浜у搧缂栫爜',
+  `product_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '浜у搧鍚嶇О',
+  `version` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鐗堟湰鍙�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0=寰呭彂甯� 1=寰呬笂浼� 2=寰呭鏍� 3=寰呭綊妗� 4=宸插綊妗o級',
+  `chief_designer` bigint NULL DEFAULT NULL COMMENT '涓昏璁″笀',
+  `reviewer` bigint NULL DEFAULT NULL COMMENT '瀹℃牳浜�',
+  `plan_finish_time` datetime NULL DEFAULT NULL COMMENT '璁″垝瀹屾垚鏃堕棿',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MES 璁捐椤圭洰' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pd_project
+-- ----------------------------
+INSERT INTO `mes_pd_project` VALUES (1, '2222', '閾滄澘 v.1.2 璁捐', 'ITEM_202607030003', '閾滄澘', 'v.1.2', 2, 103, 107, '2026-07-07 14:26:35', '414', '1', '2026-07-03 14:26:43', '1', '2026-07-03 15:00:07', b'0', 0);
+INSERT INTO `mes_pd_project` VALUES (2, '3333', '瑁搁摐绾� V1.1 璁捐', 'ITEM_202607030001', '瑁搁摐绾�', 'V1.1', 2, 100, 1, '2026-07-03 15:00:34', NULL, '1', '2026-07-03 15:00:36', '1', '2026-07-03 15:01:45', b'0', 0);
+INSERT INTO `mes_pd_project` VALUES (3, '2026070301', '绾稿寘绾� v.1.2 璁捐', 'ITEM_202607030004', '绾稿寘绾�', 'v.1.2', 2, 100, 104, '2026-07-03 15:01:25', NULL, '1', '2026-07-03 15:01:32', '1', '2026-07-03 15:02:19', b'0', 0);
+INSERT INTO `mes_pd_project` VALUES (4, '2026070302', '瑁搁摐绾� v.1.2 璁捐', 'ITEM_202607030001', '瑁搁摐绾�', 'v.1.2', 2, 1, 1, '2026-07-03 15:07:26', '11111', '1', '2026-07-03 15:07:30', '1', '2026-07-03 15:13:04', b'0', 0);
+INSERT INTO `mes_pd_project` VALUES (5, '2026070303', '瑁搁摐绾� v.1.2 璁捐', 'ITEM_202607030001', '瑁搁摐绾�', 'v.1.2', 3, 1, 1, '2026-07-03 15:39:43', NULL, '1', '2026-07-03 15:39:52', '1', '2026-07-03 16:54:13', b'0', 0);
+INSERT INTO `mes_pd_project` VALUES (6, '2026070304', '瑁搁摐绾� 1 璁捐', 'ITEM_202607030001', '瑁搁摐绾�', '1', 4, 1, 1, '2026-07-03 15:42:53', NULL, '1', '2026-07-03 15:42:54', '1', '2026-07-03 16:55:37', b'0', 0);
+INSERT INTO `mes_pd_project` VALUES (7, '2026070305', '閾滄澘 11 璁捐', 'ITEM_202607030003', '閾滄澘', '11', 1, 1, 1, '2026-07-03 16:26:27', NULL, '1', '2026-07-03 16:26:30', '1', '2026-07-03 16:26:37', b'0', 0);
+
+-- ----------------------------
+-- Table structure for mes_pro_andon_config
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_andon_config`;
+CREATE TABLE `mes_pro_andon_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍛煎彨鍘熷洜',
+  `level` int NULL DEFAULT NULL COMMENT '绾у埆',
+  `handler_role_id` bigint NULL DEFAULT NULL COMMENT '澶勭疆浜鸿鑹茬紪鍙�',
+  `handler_user_id` bigint NULL DEFAULT NULL COMMENT '澶勭疆浜虹紪鍙�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 瀹夌伅鍛煎彨閰嶇疆' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_andon_config
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_andon_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_andon_record`;
+CREATE TABLE `mes_pro_andon_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `config_id` bigint NULL DEFAULT NULL COMMENT '瀹夌伅閰嶇疆缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鍙戣捣鐢ㄦ埛缂栧彿',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍛煎彨鍘熷洜',
+  `level` int NULL DEFAULT NULL COMMENT '绾у埆',
+  `status` int NULL DEFAULT NULL COMMENT '澶勭疆鐘舵��',
+  `handle_time` datetime NULL DEFAULT NULL COMMENT '澶勭疆鏃堕棿',
+  `handler_user_id` bigint NULL DEFAULT NULL COMMENT '澶勭疆浜虹紪鍙�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 瀹夌伅鍛煎彨璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_andon_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_card
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_card`;
+CREATE TABLE `mes_pro_card`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佽浆鍗$紪鐮�',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `transfered_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '娴佽浆鏁伴噺',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇娴佽浆鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_card
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_card_process
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_card_process`;
+CREATE TABLE `mes_pro_card_process`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '娴佽浆鍗$紪鍙�',
+  `sort` int NULL DEFAULT NULL COMMENT '搴忓彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `input_time` datetime NULL DEFAULT NULL COMMENT '杩涘叆宸ュ簭鏃堕棿',
+  `output_time` datetime NULL DEFAULT NULL COMMENT '鍑哄伐搴忔椂闂�',
+  `input_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎶曞叆鏁伴噺',
+  `output_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '浜у嚭鏁伴噺',
+  `unqualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶅悎鏍煎搧鏁伴噺',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綅缂栧彿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `ipqc_id` bigint NULL DEFAULT NULL COMMENT '杩囩▼妫�楠屽崟缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 娴佽浆鍗″伐搴忚褰�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_card_process
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_feedback
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_feedback`;
+CREATE TABLE `mes_pro_feedback`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎶ュ伐鍗曠紪鍙�',
+  `type` int NULL DEFAULT NULL COMMENT '鎶ュ伐绫诲瀷',
+  `channel` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎶ュ伐閫斿緞',
+  `feedback_time` datetime NULL DEFAULT NULL COMMENT '鎶ュ伐鏃堕棿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `route_id` bigint NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `task_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇浠诲姟缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `expire_date` datetime NULL DEFAULT NULL COMMENT '杩囨湡鏃ユ湡',
+  `lot_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢熶骇鎵瑰彿',
+  `scheduled_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎺掍骇鏁伴噺',
+  `feedback_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈鎶ュ伐鏁伴噺',
+  `qualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堟牸鍝佹暟閲�',
+  `unqualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶈壇鍝佹暟閲�',
+  `uncheck_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '寰呮娴嬫暟閲�',
+  `labor_scrap_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸ュ簾鏁伴噺',
+  `material_scrap_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏂欏簾鏁伴噺',
+  `other_scrap_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏朵粬搴熷搧鏁伴噺',
+  `feedback_user_id` bigint NULL DEFAULT NULL COMMENT '鎶ュ伐鐢ㄦ埛缂栧彿',
+  `approve_user_id` bigint NULL DEFAULT NULL COMMENT '瀹℃牳鐢ㄦ埛缂栧彿',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇鎶ュ伐' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_feedback
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_process
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_process`;
+CREATE TABLE `mes_pro_process`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ簭缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ簭鍚嶇О',
+  `attention` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヨ壓瑕佹眰',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇宸ュ簭' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_process
+-- ----------------------------
+INSERT INTO `mes_pro_process` VALUES (1, '1231', '213133', NULL, 0, NULL, '1', '2026-06-26 15:25:33', '1', '2026-07-09 16:51:10', b'1');
+INSERT INTO `mes_pro_process` VALUES (2, '1', '1', '1', 0, NULL, '1', '2026-07-02 10:00:08', '1', '2026-07-09 16:51:11', b'1');
+INSERT INTO `mes_pro_process` VALUES (3, '861154', '浜у搧璁捐', '12312', 0, NULL, '1', '2026-07-02 10:17:59', '1', '2026-07-09 16:51:14', b'1');
+INSERT INTO `mes_pro_process` VALUES (4, 'GX202607090002', '鎷変笣', NULL, 0, NULL, '1', '2026-07-09 16:50:39', '1', '2026-07-09 16:50:39', b'0');
+INSERT INTO `mes_pro_process` VALUES (5, 'GX202607090003', '缁炵嚎', NULL, 0, NULL, '1', '2026-07-09 16:51:22', '1', '2026-07-09 16:51:22', b'0');
+INSERT INTO `mes_pro_process` VALUES (6, 'GX202607090004', '绾稿寘', NULL, 0, NULL, '1', '2026-07-09 16:51:30', '1', '2026-07-09 16:51:30', b'0');
+INSERT INTO `mes_pro_process` VALUES (7, 'GX202607090005', '涓濆寘', NULL, 0, NULL, '1', '2026-07-09 16:51:38', '1', '2026-07-09 16:51:38', b'0');
+INSERT INTO `mes_pro_process` VALUES (8, 'GX202607090006', '婕嗗寘', NULL, 0, NULL, '1', '2026-07-09 16:51:44', '1', '2026-07-09 16:51:44', b'0');
+INSERT INTO `mes_pro_process` VALUES (9, 'GX202607090007', '鎹綅', NULL, 0, NULL, '1', '2026-07-09 16:51:56', '1', '2026-07-09 16:51:56', b'0');
+
+-- ----------------------------
+-- Table structure for mes_pro_process_content
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_process_content`;
+CREATE TABLE `mes_pro_process_content`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `sort` int NULL DEFAULT NULL COMMENT '椤哄簭缂栧彿',
+  `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姝ラ璇存槑',
+  `device` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杈呭姪璁惧',
+  `material` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杈呭姪鏉愭枡',
+  `doc_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉愭枡鏂囨。 URL',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇宸ュ簭鍐呭' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_process_content
+-- ----------------------------
+INSERT INTO `mes_pro_process_content` VALUES (1, 1, 1, '123', '124', '412', '412', '41', '1', '2026-07-02 10:18:15', '1', '2026-07-09 08:51:06', b'1');
+
+-- ----------------------------
+-- Table structure for mes_pro_route
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_route`;
+CREATE TABLE `mes_pro_route`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎鍚嶇О',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎璇存槑',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヨ壓璺嚎' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_route
+-- ----------------------------
+INSERT INTO `mes_pro_route` VALUES (1, '12313', '213', '213213', 1, NULL, '1', '2026-06-26 15:25:40', '1', '2026-07-09 16:50:58', b'1');
+INSERT INTO `mes_pro_route` VALUES (2, '861154', '璁捐椤圭洰', '13', 1, '312', '1', '2026-07-02 09:40:54', '1', '2026-07-09 16:51:00', b'1');
+INSERT INTO `mes_pro_route` VALUES (3, '861155', '浜у搧璁捐', NULL, 1, NULL, '1', '2026-07-02 09:53:58', '1', '2026-07-09 16:51:02', b'1');
+INSERT INTO `mes_pro_route` VALUES (4, '59637833', '璁捐椤圭洰', '31', 1, NULL, '1', '2026-07-02 15:46:14', '1', '2026-07-09 16:51:04', b'1');
+INSERT INTO `mes_pro_route` VALUES (5, 'RT_000001', '绾稿寘宸ヨ壓璺嚎', NULL, 1, NULL, '1', '2026-07-09 17:08:07', '1', '2026-07-09 17:08:07', b'0');
+
+-- ----------------------------
+-- Table structure for mes_pro_route_process
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_route_process`;
+CREATE TABLE `mes_pro_route_process`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `route_id` bigint NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `sort` int NULL DEFAULT NULL COMMENT '搴忓彿',
+  `next_process_id` bigint NULL DEFAULT NULL COMMENT '涓嬩竴閬撳伐搴忕紪鍙�',
+  `link_type` int NULL DEFAULT NULL COMMENT '涓庝笅涓�閬撳伐搴忓叧绯�',
+  `prepare_time` int NULL DEFAULT NULL COMMENT '鍑嗗鏃堕棿锛堝垎閽燂級',
+  `wait_time` int NULL DEFAULT NULL COMMENT '绛夊緟鏃堕棿锛堝垎閽燂級',
+  `color_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢樼壒鍥炬樉绀洪鑹�',
+  `key_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍏抽敭宸ュ簭',
+  `check_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁璐ㄦ宸ュ簭',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヨ壓璺嚎宸ュ簭' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_route_process
+-- ----------------------------
+INSERT INTO `mes_pro_route_process` VALUES (1, 1, 1, 1, NULL, 0, 12, 12, '#00AEF3', b'1', b'1', NULL, '1', '2026-06-26 15:25:59', '1', '2026-07-09 08:50:54', b'1');
+INSERT INTO `mes_pro_route_process` VALUES (2, 3, 1, 1, 2, 2, 1, 1, '#00AEF3', b'1', b'1', NULL, '1', '2026-07-02 09:58:46', '1', '2026-07-09 08:50:59', b'1');
+INSERT INTO `mes_pro_route_process` VALUES (3, 3, 2, 2, NULL, 2, 1, 1, '#00AEF3', b'0', b'1', NULL, '1', '2026-07-02 10:00:35', '1', '2026-07-09 08:50:59', b'1');
+INSERT INTO `mes_pro_route_process` VALUES (4, 5, 4, 1, 5, 3, 10, 10, '#00AEF3', b'0', b'0', NULL, '1', '2026-07-09 17:08:28', '1', '2026-07-09 17:08:28', b'0');
+INSERT INTO `mes_pro_route_process` VALUES (5, 5, 5, 2, 6, 0, 10, 10, '#00AEF3', b'0', b'0', NULL, '1', '2026-07-09 17:08:46', '1', '2026-07-09 17:08:46', b'0');
+INSERT INTO `mes_pro_route_process` VALUES (6, 5, 6, 3, NULL, 1, 10, 10, '#00AEF3', b'0', b'0', NULL, '1', '2026-07-09 17:08:57', '1', '2026-07-09 17:08:57', b'0');
+
+-- ----------------------------
+-- Table structure for mes_pro_route_product
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_route_product`;
+CREATE TABLE `mes_pro_route_product`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `route_id` bigint NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `quantity` int NULL DEFAULT NULL COMMENT '鐢熶骇鏁伴噺',
+  `production_time` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐢熶骇鐢ㄦ椂',
+  `time_unit_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏃堕棿鍗曚綅',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヨ壓璺嚎浜у搧' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_route_product
+-- ----------------------------
+INSERT INTO `mes_pro_route_product` VALUES (1, 1, 2, 1, 1.000000, 'MINUTE', NULL, '1', '2026-06-26 15:26:06', '1', '2026-07-09 08:50:54', b'1');
+INSERT INTO `mes_pro_route_product` VALUES (2, 3, 6, 1, 1.000000, 'MINUTE', NULL, '1', '2026-07-02 09:54:38', '1', '2026-07-09 08:50:59', b'1');
+INSERT INTO `mes_pro_route_product` VALUES (3, 3, 4, 1, 1.000000, 'MINUTE', '11', '1', '2026-07-02 09:59:10', '1', '2026-07-09 08:50:59', b'1');
+INSERT INTO `mes_pro_route_product` VALUES (4, 3, 1, 1, 1.000000, 'MINUTE', NULL, '1', '2026-07-02 14:59:02', '1', '2026-07-09 08:50:59', b'1');
+INSERT INTO `mes_pro_route_product` VALUES (5, 5, 12, 2, 2.000000, 'MINUTE', NULL, '1', '2026-07-09 17:09:11', '1', '2026-07-09 17:09:11', b'0');
+
+-- ----------------------------
+-- Table structure for mes_pro_route_product_bom
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_route_product_bom`;
+CREATE TABLE `mes_pro_route_product_bom`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `route_id` bigint NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT 'BOM 鐗╂枡缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐢ㄦ枡姣斾緥',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ヨ壓璺嚎浜у搧 BOM' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_route_product_bom
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_task
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_task`;
+CREATE TABLE `mes_pro_task`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠诲姟缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠诲姟鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `route_id` bigint NULL DEFAULT NULL COMMENT '宸ヨ壓璺嚎缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎺掍骇鏁伴噺',
+  `produced_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸茬敓浜ф暟閲�',
+  `qualify_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堟牸鍝佹暟閲�',
+  `unqualify_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶈壇鍝佹暟閲�',
+  `changed_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '璋冩暣鏁伴噺',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `start_time` datetime NULL DEFAULT NULL COMMENT '寮�濮嬬敓浜ф椂闂�',
+  `duration` int NULL DEFAULT NULL COMMENT '鐢熶骇鏃堕暱',
+  `end_time` datetime NULL DEFAULT NULL COMMENT '缁撴潫鐢熶骇鏃堕棿',
+  `color_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢樼壒鍥炬樉绀洪鑹�',
+  `finish_date` datetime NULL DEFAULT NULL COMMENT '瀹屾垚鏃ユ湡',
+  `cancel_date` datetime NULL DEFAULT NULL COMMENT '鍙栨秷鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '浠诲姟鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇浠诲姟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_task
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_task_issue
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_task_issue`;
+CREATE TABLE `mes_pro_task_issue`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `task_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇浠诲姟缂栧彿',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `source_doc_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁绫诲瀷',
+  `source_doc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `source_line_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁琛岀紪鍙�',
+  `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栫爜',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎶曟枡鎵规',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '鍗曚綅缂栧彿',
+  `issued_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬绘姇鏂欐暟閲�',
+  `available_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '褰撳墠鍙敤鏁伴噺',
+  `used_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '褰撳墠浣跨敤鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇浠诲姟鎶曟枡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_task_issue
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_work_order
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_work_order`;
+CREATE TABLE `mes_pro_work_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ崟缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ崟鍚嶇О',
+  `type` int NULL DEFAULT NULL COMMENT '宸ュ崟绫诲瀷',
+  `order_source_type` int NULL DEFAULT NULL COMMENT '鏉ユ簮绫诲瀷',
+  `order_source_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `product_id` bigint NULL DEFAULT NULL COMMENT '浜у搧缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐢熶骇鏁伴噺',
+  `quantity_produced` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸茬敓浜ф暟閲�',
+  `quantity_changed` decimal(24, 6) NULL DEFAULT NULL COMMENT '璋冩暣鏁伴噺',
+  `quantity_scheduled` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸叉帓浜ф暟閲�',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `request_date` datetime NULL DEFAULT NULL COMMENT '闇�姹傛棩鏈�',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖跺伐鍗曠紪鍙�',
+  `finish_date` datetime NULL DEFAULT NULL COMMENT '瀹屾垚鏃堕棿',
+  `cancel_date` datetime NULL DEFAULT NULL COMMENT '鍙栨秷鏃堕棿',
+  `status` int NULL DEFAULT NULL COMMENT '宸ュ崟鐘舵��',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'BPM 娴佺▼瀹炰緥缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇宸ュ崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_work_order
+-- ----------------------------
+INSERT INTO `mes_pro_work_order` VALUES (1, '12123', '12', 1, 2, NULL, 9, 123.000000, NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-30 17:35:54', 0, NULL, NULL, 0, NULL, NULL, '1', '2026-06-23 17:35:56', '1', '2026-06-23 17:35:56', b'0');
+INSERT INTO `mes_pro_work_order` VALUES (2, '861154', '浜у搧璁捐', 1, 2, NULL, 2, 200.000000, NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-10 10:05:09', 0, NULL, NULL, 1, NULL, NULL, '1', '2026-07-02 10:05:11', '1', '2026-07-02 10:14:10', b'0');
+INSERT INTO `mes_pro_work_order` VALUES (3, '502890', '浜у搧璁捐', 1, 1, NULL, 4, 22.000000, NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-02 10:26:43', 0, NULL, NULL, 0, NULL, NULL, '1', '2026-07-02 10:26:44', '1', '2026-07-02 10:26:44', b'0');
+INSERT INTO `mes_pro_work_order` VALUES (4, 'SC202607020003', '娴嬭瘯鍗�', 1, 2, NULL, 1, 100.000000, NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-04 14:42:06', 0, NULL, NULL, 0, NULL, NULL, '1', '2026-07-02 14:42:09', '1', '2026-07-02 14:42:09', b'0');
+
+-- ----------------------------
+-- Table structure for mes_pro_work_order_bom
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_work_order_bom`;
+CREATE TABLE `mes_pro_work_order_bom`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT 'BOM 鐗╂枡缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '棰勮浣跨敤閲�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇宸ュ崟 BOM' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_work_order_bom
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_pro_work_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_work_record`;
+CREATE TABLE `mes_pro_work_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `type` int NULL DEFAULT NULL COMMENT '褰撳墠鐘舵��',
+  `clock_in_time` datetime NULL DEFAULT NULL COMMENT '涓婂伐鏃堕棿',
+  `clock_out_time` datetime NULL DEFAULT NULL COMMENT '涓嬪伐鏃堕棿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢ㄦ埛宸ヤ綔绔欑粦瀹氬叧绯�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_work_record
+-- ----------------------------
+INSERT INTO `mes_pro_work_record` VALUES (1, 1, 1, 1, '2026-07-02 10:03:32', NULL, NULL, '1', '2026-07-02 10:03:32', '1', '2026-07-02 10:03:32', b'0');
+
+-- ----------------------------
+-- Table structure for mes_pro_work_record_log
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_pro_work_record_log`;
+CREATE TABLE `mes_pro_work_record_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綔绔欑紪鍙�',
+  `type` int NULL DEFAULT NULL COMMENT '鎿嶄綔绫诲瀷',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 涓婁笅宸ヨ褰曟祦姘�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_pro_work_record_log
+-- ----------------------------
+INSERT INTO `mes_pro_work_record_log` VALUES (1, 1, 1, 1, NULL, '1', '2026-07-02 10:03:32', '1', '2026-07-02 10:03:32', b'0');
+
+-- ----------------------------
+-- Table structure for mes_qc_defect
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_defect`;
+CREATE TABLE `mes_qc_defect`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缂洪櫡缂栫爜',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缂洪櫡鎻忚堪',
+  `type` int NULL DEFAULT NULL COMMENT '妫�娴嬮」绫诲瀷',
+  `level` int NULL DEFAULT NULL COMMENT '缂洪櫡绛夌骇',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 缂洪櫡绫诲瀷' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_defect
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_defect_record
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_defect_record`;
+CREATE TABLE `mes_qc_defect_record`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `qc_type` int NULL DEFAULT NULL COMMENT '妫�楠岀被鍨�',
+  `qc_id` bigint NULL DEFAULT NULL COMMENT '妫�楠屽崟缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '妫�楠岃缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缂洪櫡鎻忚堪',
+  `level` int NULL DEFAULT NULL COMMENT '缂洪櫡绛夌骇',
+  `quantity` int NULL DEFAULT NULL COMMENT '缂洪櫡鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璐ㄦ缂洪櫡璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_defect_record
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_indicator
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_indicator`;
+CREATE TABLE `mes_qc_indicator`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬮」缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬮」鍚嶇О',
+  `type` int NULL DEFAULT NULL COMMENT '妫�娴嬮」绫诲瀷',
+  `tool` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬪伐鍏�',
+  `result_type` int NULL DEFAULT NULL COMMENT '缁撴灉鍊肩被鍨�',
+  `result_specification` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁撴灉鍊煎睘鎬�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璐ㄦ鎸囨爣' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_indicator
+-- ----------------------------
+INSERT INTO `mes_qc_indicator` VALUES (1, '1', '閰掓硥', 1, '123', 2, NULL, NULL, '1', '2026-06-24 09:50:00', '1', '2026-06-24 09:50:00', b'0');
+
+-- ----------------------------
+-- Table structure for mes_qc_indicator_result
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_indicator_result`;
+CREATE TABLE `mes_qc_indicator_result`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏍峰搧缂栧彿',
+  `qc_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈璐ㄦ鍗曠紪鍙�',
+  `qc_type` int NULL DEFAULT NULL COMMENT '璐ㄦ绫诲瀷',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `sn` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐗╄祫 SN',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 妫�楠岀粨鏋滆褰�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_indicator_result
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_indicator_result_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_indicator_result_detail`;
+CREATE TABLE `mes_qc_indicator_result_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `result_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈妫�楠岀粨鏋滅紪鍙�',
+  `indicator_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬫寚鏍囩紪鍙�',
+  `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬪��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 妫�楠岀粨鏋滄槑缁嗚褰�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_indicator_result_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_ipqc
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_ipqc`;
+CREATE TABLE `mes_qc_ipqc`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟鍚嶇О',
+  `type` int NULL DEFAULT NULL COMMENT 'IPQC 妫�楠岀被鍨�',
+  `template_id` bigint NULL DEFAULT NULL COMMENT '妫�楠屾ā鏉跨紪鍙�',
+  `source_doc_type` int NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁绫诲瀷',
+  `source_doc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `source_line_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁琛岀紪鍙�',
+  `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `task_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇浠诲姟缂栧彿',
+  `workstation_id` bigint NULL DEFAULT NULL COMMENT '宸ヤ綅缂栧彿',
+  `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `check_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '妫�娴嬫暟閲�',
+  `qualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堟牸鍝佹暟閲�',
+  `unqualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶅悎鏍煎搧鏁伴噺',
+  `labor_scrap_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '宸ュ簾鏁伴噺',
+  `material_scrap_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏂欏簾鏁伴噺',
+  `other_scrap_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏朵粬搴熷搧鏁伴噺',
+  `critical_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鐜�',
+  `major_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鐜�',
+  `minor_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鐜�',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `check_result` int NULL DEFAULT NULL COMMENT '妫�娴嬬粨鏋�',
+  `inspect_date` datetime NULL DEFAULT NULL COMMENT '妫�娴嬫棩鏈�',
+  `inspector_user_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬩汉鍛樼敤鎴风紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 杩囩▼妫�楠屽崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_ipqc
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_ipqc_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_ipqc_line`;
+CREATE TABLE `mes_qc_ipqc_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `ipqc_id` bigint NULL DEFAULT NULL COMMENT '杩囩▼妫�楠屽崟缂栧彿',
+  `indicator_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬫寚鏍囩紪鍙�',
+  `tool` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬪伐鍏�',
+  `check_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬫柟娉�',
+  `standard_value` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏍囧噯鍊�',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `max_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓婇檺',
+  `min_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓嬮檺',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 杩囩▼妫�楠屽崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_ipqc_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_iqc
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_iqc`;
+CREATE TABLE `mes_qc_iqc`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟鍚嶇О',
+  `template_id` bigint NULL DEFAULT NULL COMMENT '妫�楠屾ā鏉跨紪鍙�',
+  `source_doc_type` int NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁绫诲瀷',
+  `source_doc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `source_line_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁琛岀紪鍙�',
+  `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `vendor_batch` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗘壒娆″彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `received_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈鎺ユ敹鏁伴噺',
+  `check_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈妫�娴嬫暟閲�',
+  `qualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堟牸鍝佹暟閲�',
+  `unqualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶅悎鏍煎搧鏁伴噺',
+  `critical_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鐜�',
+  `major_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鐜�',
+  `minor_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鐜�',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `check_result` int NULL DEFAULT NULL COMMENT '妫�娴嬬粨鏋�',
+  `receive_date` datetime NULL DEFAULT NULL COMMENT '鏉ユ枡鏃ユ湡',
+  `inspect_date` datetime NULL DEFAULT NULL COMMENT '妫�娴嬫棩鏈�',
+  `inspector_user_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬩汉鍛樼敤鎴风紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鏉ユ枡妫�楠屽崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_iqc
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_iqc_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_iqc_line`;
+CREATE TABLE `mes_qc_iqc_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `iqc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ枡妫�楠屽崟缂栧彿',
+  `indicator_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬫寚鏍囩紪鍙�',
+  `tool` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬪伐鍏�',
+  `check_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬫柟娉�',
+  `standard_value` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏍囧噯鍊�',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `max_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓婇檺',
+  `min_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓嬮檺',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鏉ユ枡妫�楠屽崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_iqc_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_oqc
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_oqc`;
+CREATE TABLE `mes_qc_oqc`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟鍚嶇О',
+  `template_id` bigint NULL DEFAULT NULL COMMENT '妫�楠屾ā鏉跨紪鍙�',
+  `source_doc_type` int NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁绫诲瀷',
+  `source_doc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `source_line_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁琛岀紪鍙�',
+  `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `min_check_quantity` int NULL DEFAULT NULL COMMENT '鏈�浣庢娴嬫暟',
+  `max_unqualified_quantity` int NULL DEFAULT NULL COMMENT '鏈�澶т笉鍚堟牸鏁�',
+  `out_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈鍑鸿揣鏁伴噺',
+  `check_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈妫�娴嬫暟閲�',
+  `qualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堟牸鍝佹暟閲�',
+  `unqualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶅悎鏍煎搧鏁伴噺',
+  `critical_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鐜�',
+  `major_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鐜�',
+  `minor_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鐜�',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `check_result` int NULL DEFAULT NULL COMMENT '妫�娴嬬粨鏋�',
+  `out_date` datetime NULL DEFAULT NULL COMMENT '鍑鸿揣鏃ユ湡',
+  `inspect_date` datetime NULL DEFAULT NULL COMMENT '妫�娴嬫棩鏈�',
+  `inspector_user_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬩汉鍛樼敤鎴风紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍑鸿揣妫�楠屽崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_oqc
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_oqc_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_oqc_line`;
+CREATE TABLE `mes_qc_oqc_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `oqc_id` bigint NULL DEFAULT NULL COMMENT '鍑鸿揣妫�楠屽崟缂栧彿',
+  `indicator_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬫寚鏍囩紪鍙�',
+  `tool` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬪伐鍏�',
+  `check_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬫柟娉�',
+  `standard_value` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏍囧噯鍊�',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `max_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓婇檺',
+  `min_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓嬮檺',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍑鸿揣妫�楠屽崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_oqc_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_rqc
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_rqc`;
+CREATE TABLE `mes_qc_rqc`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�楠屽崟鍚嶇О',
+  `template_id` bigint NULL DEFAULT NULL COMMENT '妫�楠屾ā鏉跨紪鍙�',
+  `source_doc_type` int NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁绫诲瀷',
+  `source_doc_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `source_line_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁琛岀紪鍙�',
+  `source_doc_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁缂栧彿',
+  `type` int NULL DEFAULT NULL COMMENT '妫�楠岀被鍨�',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `check_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '妫�娴嬫暟閲�',
+  `qualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍚堟牸鍝佹暟閲�',
+  `unqualified_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓嶅悎鏍兼暟閲�',
+  `critical_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鐜�',
+  `major_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鐜�',
+  `minor_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鐜�',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `check_result` int NULL DEFAULT NULL COMMENT '妫�娴嬬粨鏋�',
+  `inspect_date` datetime NULL DEFAULT NULL COMMENT '妫�娴嬫棩鏈�',
+  `inspector_user_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬩汉鍛樼敤鎴风紪鍙�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閫�璐ф楠屽崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_rqc
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_rqc_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_rqc_line`;
+CREATE TABLE `mes_qc_rqc_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `rqc_id` bigint NULL DEFAULT NULL COMMENT '閫�璐ф楠屽崟缂栧彿',
+  `indicator_id` bigint NULL DEFAULT NULL COMMENT '妫�娴嬫寚鏍囩紪鍙�',
+  `tool` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬪伐鍏�',
+  `check_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬫柟娉�',
+  `standard_value` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏍囧噯鍊�',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `max_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓婇檺',
+  `min_threshold` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓嬮檺',
+  `critical_quantity` int NULL DEFAULT NULL COMMENT '鑷村懡缂洪櫡鏁伴噺',
+  `major_quantity` int NULL DEFAULT NULL COMMENT '涓ラ噸缂洪櫡鏁伴噺',
+  `minor_quantity` int NULL DEFAULT NULL COMMENT '杞诲井缂洪櫡鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閫�璐ф楠岃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_rqc_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_template
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_template`;
+CREATE TABLE `mes_qc_template`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂规缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏂规鍚嶇О',
+  `types` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬬绫�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璐ㄦ鏂规' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_template
+-- ----------------------------
+INSERT INTO `mes_qc_template` VALUES (1, '12', '閰掓硥', '1', 0, NULL, '1', '2026-06-24 09:50:11', '1', '2026-06-24 09:50:11', b'0');
+
+-- ----------------------------
+-- Table structure for mes_qc_template_indicator
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_template_indicator`;
+CREATE TABLE `mes_qc_template_indicator`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `template_id` bigint NULL DEFAULT NULL COMMENT '璐ㄦ鏂规缂栧彿',
+  `indicator_id` bigint NULL DEFAULT NULL COMMENT '璐ㄦ鎸囨爣缂栧彿',
+  `check_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妫�娴嬫柟娉�',
+  `standard_value` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏍囧噯鍊�',
+  `unit_measure_id` bigint NULL DEFAULT NULL COMMENT '璁¢噺鍗曚綅缂栧彿',
+  `threshold_max` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓婇檺',
+  `threshold_min` decimal(24, 6) NULL DEFAULT NULL COMMENT '璇樊涓嬮檺',
+  `doc_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璇存槑鍥� URL',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璐ㄦ鏂规妫�娴嬫寚鏍囬」' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_template_indicator
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_qc_template_item
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_qc_template_item`;
+CREATE TABLE `mes_qc_template_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `template_id` bigint NULL DEFAULT NULL COMMENT '璐ㄦ鏂规缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '浜у搧鐗╂枡缂栧彿',
+  `quantity_check` int NULL DEFAULT NULL COMMENT '鏈�浣庢娴嬫暟',
+  `quantity_unqualified` int NULL DEFAULT NULL COMMENT '鏈�澶т笉鍚堟牸鏁�',
+  `critical_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�澶ц嚧鍛界己闄风巼',
+  `major_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�澶т弗閲嶇己闄风巼',
+  `minor_rate` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�澶ц交寰己闄风巼',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 璐ㄦ鏂规浜у搧鍏宠仈' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_qc_template_item
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_tm_tool
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_tm_tool`;
+CREATE TABLE `mes_tm_tool`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ叿缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宸ュ叿鍚嶇О',
+  `brand` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍝佺墝',
+  `specification` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍨嬪彿瑙勬牸',
+  `tool_type_id` bigint NULL DEFAULT NULL COMMENT '宸ュ叿绫诲瀷缂栧彿',
+  `quantity` int NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `available_quantity` int NULL DEFAULT NULL COMMENT '鍙敤鏁伴噺',
+  `mainten_type` int NULL DEFAULT NULL COMMENT '淇濆吇缁存姢绫诲瀷',
+  `next_mainten_period` int NULL DEFAULT NULL COMMENT '涓嬫淇濆吇鍛ㄦ湡锛堟鏁帮級',
+  `next_mainten_date` datetime NULL DEFAULT NULL COMMENT '涓嬫淇濆吇鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ュ叿鍙拌处' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_tm_tool
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_tm_tool_type
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_tm_tool_type`;
+CREATE TABLE `mes_tm_tool_type`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绫诲瀷缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绫诲瀷鍚嶇О',
+  `code_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁缂栫爜绠$悊',
+  `mainten_type` int NULL DEFAULT NULL COMMENT '淇濆吇缁存姢绫诲瀷',
+  `mainten_period` int NULL DEFAULT NULL COMMENT '淇濆吇鍛ㄦ湡',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 宸ュ叿绫诲瀷' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_tm_tool_type
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_arrival_notice
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_arrival_notice`;
+CREATE TABLE `mes_wm_arrival_notice`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `purchase_order_id` bigint NULL DEFAULT NULL COMMENT '閲囪喘璁㈠崟缂栧彿',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟� ID',
+  `arrival_date` datetime NULL DEFAULT NULL COMMENT '棰勮鍒拌揣鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `contact_telephone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜虹數璇�',
+  `contact_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍒拌揣閫氱煡鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_arrival_notice
+-- ----------------------------
+INSERT INTO `mes_wm_arrival_notice` VALUES (1, 'AN_202607090010', '閰掓硥', 2, 1, '2026-07-09 17:54:05', 0, '1', '1', NULL, '142', '2026-07-09 17:54:07', '142', '2026-07-09 17:54:56', b'0');
+
+-- ----------------------------
+-- Table structure for mes_wm_arrival_notice_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_arrival_notice_line`;
+CREATE TABLE `mes_wm_arrival_notice_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `notice_id` bigint NULL DEFAULT NULL COMMENT '鍒拌揣閫氱煡鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍒拌揣閫氱煡鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_arrival_notice_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_barcode
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_barcode`;
+CREATE TABLE `mes_wm_barcode`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `config_id` bigint NULL DEFAULT NULL COMMENT '鏉$爜閰嶇疆缂栧彿',
+  `format` int NULL DEFAULT NULL COMMENT '鏉$爜鏍煎紡',
+  `biz_type` int NULL DEFAULT NULL COMMENT '涓氬姟绫诲瀷',
+  `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉$爜鍐呭',
+  `biz_id` bigint NULL DEFAULT NULL COMMENT '涓氬姟缂栧彿',
+  `biz_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟缂栫爜',
+  `biz_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍚嶇О',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鏉$爜娓呭崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_barcode
+-- ----------------------------
+INSERT INTO `mes_wm_barcode` VALUES (1, 2, 1, 102, 'WH-1212', 1, '1212', '1212', 0, NULL, '1', '2026-06-26 15:27:35', '1', '2026-06-26 15:27:35', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (2, 3, 1, 103, 'LOC-121', 1, '121', '212', 0, NULL, '1', '2026-06-26 15:27:45', '1', '2026-06-26 15:27:45', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (3, 5, 1, 601, 'VENDOR-21', 1, '21', '2121', 0, NULL, '1', '2026-06-26 15:28:22', '1', '2026-06-26 15:28:22', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (4, 8, 1, 603, 'SHOP-861154', 1, '861154', '浜у搧璁捐', 0, NULL, '1', '2026-07-02 09:36:31', '1', '2026-07-02 09:36:31', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (5, 7, 1, 602, 'WS-861154', 1, '861154', '褰掓。鍙拌处', 0, NULL, '1', '2026-07-02 09:37:38', '1', '2026-07-02 09:37:38', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (6, 1, 1, 600, 'ITEM_202607030001', 11, 'ITEM_202607030001', '瑁搁摐绾�', 0, NULL, '1', '2026-07-03 11:48:38', '1', '2026-07-03 11:48:38', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (7, 1, 1, 600, 'ITEM_202607030002', 12, 'ITEM_202607030002', '閾滄潌', 0, NULL, '1', '2026-07-03 11:50:24', '1', '2026-07-03 11:50:24', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (8, 1, 1, 600, 'ITEM_202607030003', 13, 'ITEM_202607030003', '閾滄澘', 0, NULL, '1', '2026-07-03 11:50:47', '1', '2026-07-03 11:50:47', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (9, 8, 1, 603, 'SHOP-WSP000001', 2, 'WSP000001', '閾滄潌杞﹂棿', 0, NULL, '1', '2026-07-03 11:53:01', '1', '2026-07-03 11:53:01', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (10, 7, 1, 602, 'WS-WKS000002', 2, 'WKS000002', '閾滄潌宸ヤ綔绔�', 0, NULL, '1', '2026-07-03 11:53:45', '1', '2026-07-03 11:53:45', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (11, 1, 1, 600, 'ITEM_202607030004', 14, 'ITEM_202607030004', '绾稿寘绾�', 0, NULL, '1', '2026-07-03 11:54:28', '1', '2026-07-03 11:54:28', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (12, 1, 1, 600, 'ITEM_202607030005', 15, 'ITEM_202607030005', '婕嗗寘绾�', 0, NULL, '1', '2026-07-03 11:54:49', '1', '2026-07-03 11:54:49', b'0');
+INSERT INTO `mes_wm_barcode` VALUES (13, 2, 1, 102, 'WH-WHS000001', 2, 'WHS000001', '222', 0, NULL, '1', '2026-07-09 14:01:28', '1', '2026-07-09 14:01:28', b'0');
+
+-- ----------------------------
+-- Table structure for mes_wm_barcode_config
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_barcode_config`;
+CREATE TABLE `mes_wm_barcode_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `format` int NULL DEFAULT NULL COMMENT '鏉$爜鏍煎紡',
+  `biz_type` int NULL DEFAULT NULL COMMENT '涓氬姟绫诲瀷',
+  `content_format` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍐呭鏍煎紡妯℃澘',
+  `content_example` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍐呭鏍蜂緥',
+  `auto_generate_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鑷姩鐢熸垚',
+  `default_template` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '榛樿鎵撳嵃妯℃澘',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鏉$爜閰嶇疆' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_barcode_config
+-- ----------------------------
+INSERT INTO `mes_wm_barcode_config` VALUES (1, 1, 600, '{BUSINESSCODE}', 'ITEM-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (2, 1, 102, 'WH-{BUSINESSCODE}', 'WH-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (3, 1, 103, 'LOC-{BUSINESSCODE}', 'LOC-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (4, 1, 104, 'AREA-{BUSINESSCODE}', 'AREA-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (5, 1, 601, 'VENDOR-{BUSINESSCODE}', 'VENDOR-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (6, 1, 605, 'CLIENT-{BUSINESSCODE}', 'CLIENT-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (7, 1, 602, 'WS-{BUSINESSCODE}', 'WS-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+INSERT INTO `mes_wm_barcode_config` VALUES (8, 1, 603, 'SHOP-{BUSINESSCODE}', 'SHOP-001', b'1', NULL, 0, NULL, '1', '2026-06-23 09:54:25', '1', '2026-06-23 09:54:25', b'0');
+
+-- ----------------------------
+-- Table structure for mes_wm_batch
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_batch`;
+CREATE TABLE `mes_wm_batch`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `produce_date` datetime NULL DEFAULT NULL COMMENT '鐢熶骇鏃ユ湡',
+  `expire_date` datetime NULL DEFAULT NULL COMMENT '澶辨晥鏃ユ湡',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟� ID',
+  `vendor_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鐮�',
+  `vendor_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '渚涘簲鍟嗗悕绉�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鎵规' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_batch
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_item_consume
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_item_consume`;
+CREATE TABLE `mes_wm_item_consume`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟 ID',
+  `return_date` datetime NULL DEFAULT NULL COMMENT '閫�鏂欐棩鏈�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡閫�鏂欏崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_item_consume
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_item_consume_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_item_consume_detail`;
+CREATE TABLE `mes_wm_item_consume_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `consume_id` bigint NULL DEFAULT NULL COMMENT '閫�鏂欏崟 ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡閫�鏂欏崟鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_item_consume_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_item_consume_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_item_consume_line`;
+CREATE TABLE `mes_wm_item_consume_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `consume_id` bigint NULL DEFAULT NULL COMMENT '閫�鏂欏崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡閫�鏂欏崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_item_consume_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_item_receipt
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_item_receipt`;
+CREATE TABLE `mes_wm_item_receipt`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟 ID',
+  `receipt_date` datetime NULL DEFAULT NULL COMMENT '閫�搴撴棩鏈�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡閫�搴撳崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_item_receipt
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_item_receipt_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_item_receipt_detail`;
+CREATE TABLE `mes_wm_item_receipt_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '閫�搴撳崟 ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡閫�搴撳崟鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_item_receipt_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_item_receipt_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_item_receipt_line`;
+CREATE TABLE `mes_wm_item_receipt_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '閫�搴撳崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐗╂枡閫�搴撳崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_item_receipt_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_material_stock
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_material_stock`;
+CREATE TABLE `mes_wm_material_stock`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `item_type_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡鍒嗙被缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '搴撳瓨鏁伴噺',
+  `erp_time` datetime NULL DEFAULT NULL COMMENT 'ERP 璐︽湡',
+  `receipt_time` datetime NULL DEFAULT NULL COMMENT '鍏ュ簱鏃堕棿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 搴撳瓨璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_material_stock
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_misc_issue
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_misc_issue`;
+CREATE TABLE `mes_wm_misc_issue`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `issue_date` datetime NULL DEFAULT NULL COMMENT '鍑哄簱鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍏朵粬鍑哄簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_misc_issue
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_misc_issue_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_misc_issue_detail`;
+CREATE TABLE `mes_wm_misc_issue_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '鍑哄簱鍗� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍏朵粬鍑哄簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_misc_issue_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_misc_issue_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_misc_issue_line`;
+CREATE TABLE `mes_wm_misc_issue_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '鍑哄簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍏朵粬鍑哄簱鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_misc_issue_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_misc_receipt
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_misc_receipt`;
+CREATE TABLE `mes_wm_misc_receipt`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `receipt_date` datetime NULL DEFAULT NULL COMMENT '鍏ュ簱鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍏朵粬鍏ュ簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_misc_receipt
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_misc_receipt_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_misc_receipt_detail`;
+CREATE TABLE `mes_wm_misc_receipt_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍏朵粬鍏ュ簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_misc_receipt_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_misc_receipt_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_misc_receipt_line`;
+CREATE TABLE `mes_wm_misc_receipt_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍏朵粬鍏ュ簱鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_misc_receipt_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_outsource_issue
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_outsource_issue`;
+CREATE TABLE `mes_wm_outsource_issue`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '澶栧崗宸ュ崟 ID',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟� ID',
+  `issue_date` datetime NULL DEFAULT NULL COMMENT '鍙戞枡鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 澶栧崗鍙戞枡鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_outsource_issue
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_outsource_issue_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_outsource_issue_detail`;
+CREATE TABLE `mes_wm_outsource_issue_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '鍙戞枡鍗� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 澶栧崗鍙戞枡鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_outsource_issue_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_outsource_issue_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_outsource_issue_line`;
+CREATE TABLE `mes_wm_outsource_issue_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '鍙戞枡鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 澶栧崗鍙戞枡鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_outsource_issue_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_outsource_receipt
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_outsource_receipt`;
+CREATE TABLE `mes_wm_outsource_receipt`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '澶栧崗宸ュ崟 ID',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟� ID',
+  `receipt_date` datetime NULL DEFAULT NULL COMMENT '鍏ュ簱鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 澶栧崗鍏ュ簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_outsource_receipt
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_outsource_receipt_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_outsource_receipt_detail`;
+CREATE TABLE `mes_wm_outsource_receipt_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 澶栧崗鍏ュ簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_outsource_receipt_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_outsource_receipt_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_outsource_receipt_line`;
+CREATE TABLE `mes_wm_outsource_receipt_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 澶栧崗鍏ュ簱鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_outsource_receipt_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_package
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_package`;
+CREATE TABLE `mes_wm_package`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍖呰鍗曠紪鐮�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍖呰鍗曞悕绉�',
+  `barcode_id` bigint NULL DEFAULT NULL COMMENT '鏉$爜 ID',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍖呰鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_package
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_package_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_package_line`;
+CREATE TABLE `mes_wm_package_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `package_id` bigint NULL DEFAULT NULL COMMENT '鍖呰鍗� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鍖呰鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_package_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_issue
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_issue`;
+CREATE TABLE `mes_wm_product_issue`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟 ID',
+  `issue_date` datetime NULL DEFAULT NULL COMMENT '棰嗘枡鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇棰嗘枡鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_issue
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_issue_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_issue_detail`;
+CREATE TABLE `mes_wm_product_issue_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '棰嗘枡鍗� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇棰嗘枡鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_issue_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_issue_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_issue_line`;
+CREATE TABLE `mes_wm_product_issue_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '棰嗘枡鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇棰嗘枡鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_issue_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_produce
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_produce`;
+CREATE TABLE `mes_wm_product_produce`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟 ID',
+  `produce_date` datetime NULL DEFAULT NULL COMMENT '鍏ュ簱鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇鍏ュ簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_produce
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_produce_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_produce_detail`;
+CREATE TABLE `mes_wm_product_produce_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `produce_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇鍏ュ簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_produce_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_produce_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_produce_line`;
+CREATE TABLE `mes_wm_product_produce_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `produce_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇鍏ュ簱鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_produce_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_receipt
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_receipt`;
+CREATE TABLE `mes_wm_product_receipt`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟 ID',
+  `receipt_date` datetime NULL DEFAULT NULL COMMENT '閫�鏂欐棩鏈�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇閫�鏂欏崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_receipt
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_receipt_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_receipt_detail`;
+CREATE TABLE `mes_wm_product_receipt_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '閫�鏂欏崟 ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇閫�鏂欏崟鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_receipt_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_receipt_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_receipt_line`;
+CREATE TABLE `mes_wm_product_receipt_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `receipt_id` bigint NULL DEFAULT NULL COMMENT '閫�鏂欏崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇閫�鏂欏崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_receipt_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_sales
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_sales`;
+CREATE TABLE `mes_wm_product_sales`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛 ID',
+  `sales_date` datetime NULL DEFAULT NULL COMMENT '鍑哄簱鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞嚭搴撳崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_sales
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_sales_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_sales_detail`;
+CREATE TABLE `mes_wm_product_sales_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `sales_id` bigint NULL DEFAULT NULL COMMENT '鍑哄簱鍗� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞嚭搴撳崟鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_sales_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_product_sales_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_product_sales_line`;
+CREATE TABLE `mes_wm_product_sales_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `sales_id` bigint NULL DEFAULT NULL COMMENT '鍑哄簱鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞嚭搴撳崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_product_sales_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_issue
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_issue`;
+CREATE TABLE `mes_wm_return_issue`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟 ID',
+  `issue_date` datetime NULL DEFAULT NULL COMMENT '閫�鏂欐棩鏈�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇閫�鏂欏崟锛堝彂鏂欙級' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_issue
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_issue_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_issue_detail`;
+CREATE TABLE `mes_wm_return_issue_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '閫�鏂欏崟 ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇閫�鏂欏崟鏄庣粏锛堝彂鏂欙級' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_issue_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_issue_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_issue_line`;
+CREATE TABLE `mes_wm_return_issue_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `issue_id` bigint NULL DEFAULT NULL COMMENT '閫�鏂欏崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐢熶骇閫�鏂欏崟琛岋紙鍙戞枡锛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_issue_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_sales
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_sales`;
+CREATE TABLE `mes_wm_return_sales`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛 ID',
+  `return_date` datetime NULL DEFAULT NULL COMMENT '閫�璐ф棩鏈�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞��璐у崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_sales
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_sales_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_sales_detail`;
+CREATE TABLE `mes_wm_return_sales_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `return_id` bigint NULL DEFAULT NULL COMMENT '閫�璐у崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞��璐у崟鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_sales_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_sales_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_sales_line`;
+CREATE TABLE `mes_wm_return_sales_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `return_id` bigint NULL DEFAULT NULL COMMENT '閫�璐у崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞��璐у崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_sales_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_vendor
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_vendor`;
+CREATE TABLE `mes_wm_return_vendor`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `vendor_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟� ID',
+  `return_date` datetime NULL DEFAULT NULL COMMENT '閫�璐ф棩鏈�',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閲囪喘閫�璐у崟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_vendor
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_vendor_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_vendor_detail`;
+CREATE TABLE `mes_wm_return_vendor_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '琛� ID',
+  `return_id` bigint NULL DEFAULT NULL COMMENT '閫�璐у崟 ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閲囪喘閫�璐у崟鏄庣粏' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_vendor_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_return_vendor_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_return_vendor_line`;
+CREATE TABLE `mes_wm_return_vendor_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `return_id` bigint NULL DEFAULT NULL COMMENT '閫�璐у崟 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閲囪喘閫�璐у崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_return_vendor_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_sales_notice
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_sales_notice`;
+CREATE TABLE `mes_wm_sales_notice`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曞彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛 ID',
+  `delivery_date` datetime NULL DEFAULT NULL COMMENT '棰勮鍙戣揣鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞彂璐ч�氱煡鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_sales_notice
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_sales_notice_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_sales_notice_line`;
+CREATE TABLE `mes_wm_sales_notice_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `notice_id` bigint NULL DEFAULT NULL COMMENT '閿�鍞彂璐ч�氱煡鍗� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 閿�鍞彂璐ч�氱煡鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_sales_notice_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_sn
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_sn`;
+CREATE TABLE `mes_wm_sn`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `uuid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规UUID',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴忓垪鍙�',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `work_order_id` bigint NULL DEFAULT NULL COMMENT '鐢熶骇宸ュ崟缂栧彿',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 101 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 搴忓垪鍙�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_sn
+-- ----------------------------
+INSERT INTO `mes_wm_sn` VALUES (1, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000501', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (2, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000502', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (3, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000503', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (4, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000504', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (5, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000505', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (6, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000506', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (7, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000507', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (8, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000508', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (9, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000509', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (10, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000510', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (11, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000511', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (12, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000512', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (13, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000513', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (14, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000514', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (15, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000515', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (16, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000516', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (17, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000517', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (18, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000518', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (19, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000519', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (20, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000520', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (21, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000521', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (22, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000522', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (23, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000523', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (24, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000524', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (25, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000525', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (26, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000526', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (27, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000527', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (28, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000528', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (29, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000529', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (30, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000530', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (31, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000531', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (32, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000532', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (33, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000533', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (34, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000534', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (35, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000535', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (36, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000536', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (37, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000537', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (38, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000538', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (39, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000539', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (40, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000540', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (41, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000541', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (42, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000542', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (43, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000543', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (44, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000544', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (45, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000545', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (46, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000546', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (47, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000547', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (48, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000548', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (49, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000549', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (50, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000550', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (51, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000551', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (52, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000552', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (53, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000553', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (54, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000554', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (55, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000555', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (56, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000556', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (57, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000557', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (58, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000558', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (59, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000559', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (60, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000560', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (61, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000561', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (62, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000562', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (63, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000563', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (64, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000564', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (65, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000565', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (66, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000566', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (67, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000567', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (68, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000568', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (69, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000569', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (70, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000570', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (71, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000571', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (72, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000572', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (73, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000573', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (74, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000574', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (75, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000575', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (76, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000576', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (77, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000577', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (78, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000578', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (79, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000579', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (80, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000580', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (81, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000581', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (82, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000582', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (83, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000583', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (84, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000584', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (85, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000585', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (86, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000586', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (87, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000587', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (88, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000588', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (89, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000589', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (90, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000590', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (91, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000591', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (92, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000592', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (93, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000593', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (94, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000594', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (95, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000595', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (96, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000596', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (97, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000597', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (98, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000598', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (99, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000599', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+INSERT INTO `mes_wm_sn` VALUES (100, '486f05b188cc46f983f6ce3c2f9aeaa5', 'SN_20260709000600', 14, NULL, NULL, NULL, NULL, NULL, '142', '2026-07-09 14:07:12', '142', '2026-07-09 14:07:12', b'0');
+
+-- ----------------------------
+-- Table structure for mes_wm_stock_taking_plan
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_stock_taking_plan`;
+CREATE TABLE `mes_wm_stock_taking_plan`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩樼偣璁″垝缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩樼偣璁″垝鍚嶇О',
+  `plan_date` datetime NULL DEFAULT NULL COMMENT '鐩樼偣鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐩樼偣璁″垝' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_stock_taking_plan
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_stock_taking_plan_param
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_stock_taking_plan_param`;
+CREATE TABLE `mes_wm_stock_taking_plan_param`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鐩樼偣璁″垝 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `item_type_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡鍒嗙被 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐩樼偣璁″垝鍙傛暟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_stock_taking_plan_param
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_stock_taking_task
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_stock_taking_task`;
+CREATE TABLE `mes_wm_stock_taking_task`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩樼偣浠诲姟缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩樼偣浠诲姟鍚嶇О',
+  `plan_id` bigint NULL DEFAULT NULL COMMENT '鐩樼偣璁″垝 ID',
+  `task_date` datetime NULL DEFAULT NULL COMMENT '鐩樼偣鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐩樼偣浠诲姟' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_stock_taking_task
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_stock_taking_task_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_stock_taking_task_line`;
+CREATE TABLE `mes_wm_stock_taking_task_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `task_id` bigint NULL DEFAULT NULL COMMENT '鐩樼偣浠诲姟 ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '璐﹂潰鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐩樼偣浠诲姟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_stock_taking_task_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_stock_taking_task_result
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_stock_taking_task_result`;
+CREATE TABLE `mes_wm_stock_taking_task_result`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `task_id` bigint NULL DEFAULT NULL COMMENT '鐩樼偣浠诲姟 ID',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '鐩樼偣浠诲姟琛� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨 ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹炵洏鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 鐩樼偣浠诲姟缁撴灉' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_stock_taking_task_result
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_transaction
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_transaction`;
+CREATE TABLE `mes_wm_transaction`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `type` int NULL DEFAULT NULL COMMENT '浜嬪姟绫诲瀷',
+  `biz_type` int NULL DEFAULT NULL COMMENT '涓氬姟绫诲瀷',
+  `biz_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮涓氬姟涓诲崟 ID',
+  `biz_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉ユ簮涓氬姟鍗曞彿',
+  `biz_line_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮涓氬姟琛� ID',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨璁板綍 ID',
+  `related_transaction_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈鐨勪簨鍔� ID',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡 ID',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈鍙樺姩鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规 ID',
+  `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱 ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯 ID',
+  `area_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅 ID',
+  `transaction_time` datetime NULL DEFAULT NULL COMMENT '浜嬪姟鍙戠敓鏃堕棿',
+  `erp_time` datetime NULL DEFAULT NULL COMMENT 'ERP 璐︽湡',
+  `receipt_time` datetime NULL DEFAULT NULL COMMENT '鍏ュ簱鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 搴撳瓨浜嬪姟娴佹按' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_transaction
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_transfer
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_transfer`;
+CREATE TABLE `mes_wm_transfer`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杞Щ鍗曠紪鍙�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杞Щ鍗曞悕绉�',
+  `type` int NULL DEFAULT NULL COMMENT '杞Щ鍗曠被鍨�',
+  `delivery_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁閰嶉��',
+  `recipient_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏀惰揣浜�',
+  `recipient_telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴鏂瑰紡',
+  `destination_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩殑鍦�',
+  `carrier` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵胯繍鍟�',
+  `shipping_number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '杩愯緭鍗曞彿',
+  `confirm_flag` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁宸茬‘璁�',
+  `transfer_date` datetime NULL DEFAULT NULL COMMENT '杞Щ鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹炰緥ID',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 杞Щ鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_transfer
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_transfer_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_transfer_detail`;
+CREATE TABLE `mes_wm_transfer_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `line_id` bigint NULL DEFAULT NULL COMMENT '杞Щ鍗曡缂栧彿',
+  `transfer_id` bigint NULL DEFAULT NULL COMMENT '杞Щ鍗曠紪鍙�',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '涓婃灦鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规缂栧彿',
+  `to_warehouse_id` bigint NULL DEFAULT NULL COMMENT '绉诲叆浠撳簱缂栧彿',
+  `to_location_id` bigint NULL DEFAULT NULL COMMENT '绉诲叆搴撳尯缂栧彿',
+  `to_area_id` bigint NULL DEFAULT NULL COMMENT '绉诲叆搴撲綅缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 杞Щ鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_transfer_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_transfer_line
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_transfer_line`;
+CREATE TABLE `mes_wm_transfer_line`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `transfer_id` bigint NULL DEFAULT NULL COMMENT '杞Щ鍗曠紪鍙�',
+  `material_stock_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨璁板綍缂栧彿',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鐗╂枡缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '杞Щ鏁伴噺',
+  `batch_id` bigint NULL DEFAULT NULL COMMENT '鎵规缂栧彿',
+  `from_warehouse_id` bigint NULL DEFAULT NULL COMMENT '绉诲嚭浠撳簱缂栧彿',
+  `from_location_id` bigint NULL DEFAULT NULL COMMENT '绉诲嚭搴撳尯缂栧彿',
+  `from_area_id` bigint NULL DEFAULT NULL COMMENT '绉诲嚭搴撲綅缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 杞Щ鍗曡' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_transfer_line
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_warehouse
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_warehouse`;
+CREATE TABLE `mes_wm_warehouse`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠撳簱缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠撳簱鍚嶇О',
+  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠撳簱鍦板潃',
+  `area` decimal(24, 6) NULL DEFAULT NULL COMMENT '闈㈢Н',
+  `charge_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜虹敤鎴风紪鍙�',
+  `frozen` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍐荤粨',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 浠撳簱' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_warehouse
+-- ----------------------------
+INSERT INTO `mes_wm_warehouse` VALUES (1, '1212', '1212', '212', 12.000000, 1, b'0', NULL, '1', '2026-06-26 15:27:35', '1', '2026-06-26 15:27:35', b'0');
+INSERT INTO `mes_wm_warehouse` VALUES (2, 'WHS000001', '222', '222', 222.000000, 1, b'0', NULL, '1', '2026-07-09 14:01:28', '1', '2026-07-09 14:01:28', b'0');
+
+-- ----------------------------
+-- Table structure for mes_wm_warehouse_area
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_warehouse_area`;
+CREATE TABLE `mes_wm_warehouse_area`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴撲綅缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴撲綅鍚嶇О',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撳尯缂栧彿',
+  `area` decimal(24, 6) NULL DEFAULT NULL COMMENT '闈㈢Н',
+  `max_load` decimal(24, 6) NULL DEFAULT NULL COMMENT '鏈�澶ц浇閲�',
+  `position_x` int NULL DEFAULT NULL COMMENT '浣嶇疆 X',
+  `position_y` int NULL DEFAULT NULL COMMENT '浣嶇疆 Y',
+  `position_z` int NULL DEFAULT NULL COMMENT '浣嶇疆 Z',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `frozen` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍐荤粨',
+  `allow_item_mixing` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍏佽鐗╂枡娣锋斁',
+  `allow_batch_mixing` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍏佽鎵规娣锋斁',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 搴撲綅' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_warehouse_area
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for mes_wm_warehouse_location
+-- ----------------------------
+DROP TABLE IF EXISTS `mes_wm_warehouse_location`;
+CREATE TABLE `mes_wm_warehouse_location`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴撳尯缂栫爜',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴撳尯鍚嶇О',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `area` decimal(24, 6) NULL DEFAULT NULL COMMENT '闈㈢Н',
+  `frozen` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍐荤粨',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 搴撳尯' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of mes_wm_warehouse_location
+-- ----------------------------
+INSERT INTO `mes_wm_warehouse_location` VALUES (1, '121', '212', 1, 1212.000000, b'0', '1', '1', '2026-06-26 15:27:45', '1', '2026-06-26 15:27:45', b'0');
+
+-- ----------------------------
+-- Table structure for qrtz_blob_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_blob_triggers`;
+CREATE TABLE `qrtz_blob_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `BLOB_DATA` blob NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `SCHED_NAME`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE,
+  CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_blob_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_calendars
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_calendars`;
+CREATE TABLE `qrtz_calendars`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `CALENDAR` blob NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_calendars
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_cron_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_cron_triggers`;
+CREATE TABLE `qrtz_cron_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_cron_triggers
+-- ----------------------------
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'accessLogCleanJob', 'DEFAULT', '0 0 0 * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'brokerageRecordUnfreezeJob', 'DEFAULT', '0 * * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'errorLogCleanJob', 'DEFAULT', '0 0 0 * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'jobLogCleanJob', 'DEFAULT', '0 0 0 * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', '* * * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'payOrderExpireJob', 'DEFAULT', '0 0/1 * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'payOrderSyncJob', 'DEFAULT', '0 0/1 * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'payRefundSyncJob', 'DEFAULT', '0 0/1 * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'tradeOrderAutoCancelJob', 'DEFAULT', '0 * * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'tradeOrderAutoCommentJob', 'DEFAULT', '0 * * * * ?', 'Asia/Shanghai');
+INSERT INTO `qrtz_cron_triggers` VALUES ('schedulerName', 'tradeOrderAutoReceiveJob', 'DEFAULT', '0 * * * * ?', 'Asia/Shanghai');
+
+-- ----------------------------
+-- Table structure for qrtz_fired_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_fired_triggers`;
+CREATE TABLE `qrtz_fired_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `FIRED_TIME` bigint NOT NULL,
+  `SCHED_TIME` bigint NOT NULL,
+  `PRIORITY` int NOT NULL,
+  `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME` ASC, `INSTANCE_NAME` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME` ASC, `INSTANCE_NAME` ASC, `REQUESTS_RECOVERY` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_fired_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_job_details
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_job_details`;
+CREATE TABLE `qrtz_job_details`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `JOB_DATA` blob NULL,
+  PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME` ASC, `REQUESTS_RECOVERY` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_job_details
+-- ----------------------------
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'accessLogCleanJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000197400104A4F425F48414E444C45525F4E414D457400116163636573734C6F67436C65616E4A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'brokerageRecordUnfreezeJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000187400104A4F425F48414E444C45525F4E414D4574001A62726F6B65726167655265636F7264556E667265657A654A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'errorLogCleanJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000001A7400104A4F425F48414E444C45525F4E414D457400106572726F724C6F67436C65616E4A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'jobLogCleanJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000001B7400104A4F425F48414E444C45525F4E414D4574000E6A6F624C6F67436C65616E4A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000057400104A4F425F48414E444C45525F4E414D4574000C7061794E6F746966794A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'payOrderExpireJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000127400104A4F425F48414E444C45525F4E414D457400117061794F726465724578706972654A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'payOrderSyncJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000117400104A4F425F48414E444C45525F4E414D4574000F7061794F7264657253796E634A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'payRefundSyncJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000137400104A4F425F48414E444C45525F4E414D45740010706179526566756E6453796E634A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'tradeOrderAutoCancelJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000157400104A4F425F48414E444C45525F4E414D4574001774726164654F726465724175746F43616E63656C4A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'tradeOrderAutoCommentJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000177400104A4F425F48414E444C45525F4E414D4574001874726164654F726465724175746F436F6D6D656E744A6F627800);
+INSERT INTO `qrtz_job_details` VALUES ('schedulerName', 'tradeOrderAutoReceiveJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000167400104A4F425F48414E444C45525F4E414D4574001874726164654F726465724175746F526563656976654A6F627800);
+
+-- ----------------------------
+-- Table structure for qrtz_locks
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_locks`;
+CREATE TABLE `qrtz_locks`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_locks
+-- ----------------------------
+INSERT INTO `qrtz_locks` VALUES ('iotScheduler', 'STATE_ACCESS');
+INSERT INTO `qrtz_locks` VALUES ('schedulerName', 'STATE_ACCESS');
+INSERT INTO `qrtz_locks` VALUES ('schedulerName', 'TRIGGER_ACCESS');
+
+-- ----------------------------
+-- Table structure for qrtz_paused_trigger_grps
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`;
+CREATE TABLE `qrtz_paused_trigger_grps`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_paused_trigger_grps
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_scheduler_state
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_scheduler_state`;
+CREATE TABLE `qrtz_scheduler_state`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `LAST_CHECKIN_TIME` bigint NOT NULL,
+  `CHECKIN_INTERVAL` bigint NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_scheduler_state
+-- ----------------------------
+INSERT INTO `qrtz_scheduler_state` VALUES ('iotScheduler', 'DESKTOP-ENHE54J1782118637086', 1782118637105, 15000);
+INSERT INTO `qrtz_scheduler_state` VALUES ('schedulerName', 'DESKTOP-ENHE54J1783646246324', 1783646970495, 15000);
+
+-- ----------------------------
+-- Table structure for qrtz_simple_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_simple_triggers`;
+CREATE TABLE `qrtz_simple_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `REPEAT_COUNT` bigint NOT NULL,
+  `REPEAT_INTERVAL` bigint NOT NULL,
+  `TIMES_TRIGGERED` bigint NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_simple_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_simprop_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_simprop_triggers`;
+CREATE TABLE `qrtz_simprop_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `INT_PROP_1` int NULL DEFAULT NULL,
+  `INT_PROP_2` int NULL DEFAULT NULL,
+  `LONG_PROP_1` bigint NULL DEFAULT NULL,
+  `LONG_PROP_2` bigint NULL DEFAULT NULL,
+  `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL,
+  `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL,
+  `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_simprop_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_triggers`;
+CREATE TABLE `qrtz_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `NEXT_FIRE_TIME` bigint NULL DEFAULT NULL,
+  `PREV_FIRE_TIME` bigint NULL DEFAULT NULL,
+  `PRIORITY` int NULL DEFAULT NULL,
+  `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `START_TIME` bigint NOT NULL,
+  `END_TIME` bigint NULL DEFAULT NULL,
+  `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `MISFIRE_INSTR` smallint NULL DEFAULT NULL,
+  `JOB_DATA` blob NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_T_J`(`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_C`(`SCHED_NAME` ASC, `CALENDAR_NAME` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_G`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME` ASC, `TRIGGER_STATE` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME` ASC, `TRIGGER_STATE` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_STATE` ASC) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE,
+  CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of qrtz_triggers
+-- ----------------------------
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'accessLogCleanJob', 'DEFAULT', 'accessLogCleanJob', 'DEFAULT', NULL, 1696348800000, -1, 5, 'PAUSED', 'CRON', 1696301981000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'brokerageRecordUnfreezeJob', 'DEFAULT', 'brokerageRecordUnfreezeJob', 'DEFAULT', NULL, 1695909720000, -1, 5, 'PAUSED', 'CRON', 1695909706000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'errorLogCleanJob', 'DEFAULT', 'errorLogCleanJob', 'DEFAULT', NULL, 1696348800000, -1, 5, 'PAUSED', 'CRON', 1696302043000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'jobLogCleanJob', 'DEFAULT', 'jobLogCleanJob', 'DEFAULT', NULL, 1696348800000, -1, 5, 'PAUSED', 'CRON', 1696302092000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', 'payNotifyJob', 'DEFAULT', NULL, 1688907102000, 1688907101000, 5, 'PAUSED', 'CRON', 1635294882000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'payOrderExpireJob', 'DEFAULT', 'payOrderExpireJob', 'DEFAULT', NULL, 1690011600000, -1, 5, 'PAUSED', 'CRON', 1690011553000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'payOrderSyncJob', 'DEFAULT', 'payOrderSyncJob', 'DEFAULT', NULL, 1690011600000, 1690011540000, 5, 'PAUSED', 'CRON', 1690007785000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'payRefundSyncJob', 'DEFAULT', 'payRefundSyncJob', 'DEFAULT', NULL, 1690117560000, 1690117500000, 5, 'PAUSED', 'CRON', 1690117424000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'tradeOrderAutoCancelJob', 'DEFAULT', 'tradeOrderAutoCancelJob', 'DEFAULT', NULL, 1695727440000, 1695727380000, 5, 'PAUSED', 'CRON', 1695656605000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'tradeOrderAutoCommentJob', 'DEFAULT', 'tradeOrderAutoCommentJob', 'DEFAULT', NULL, 1695783840000, 1695783780000, 5, 'PAUSED', 'CRON', 1695742709000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+INSERT INTO `qrtz_triggers` VALUES ('schedulerName', 'tradeOrderAutoReceiveJob', 'DEFAULT', 'tradeOrderAutoReceiveJob', 'DEFAULT', NULL, 1695742740000, 1695742680000, 5, 'PAUSED', 'CRON', 1695727433000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D7400007400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E547371007E000A000000037800);
+
+-- ----------------------------
+-- Table structure for report_go_view_project
+-- ----------------------------
+DROP TABLE IF EXISTS `report_go_view_project`;
+CREATE TABLE `report_go_view_project`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '椤圭洰鍚嶇О',
+  `pic_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '棰勮鍥剧墖 URL',
+  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '鎶ヨ〃鍐呭锛圝SON 閰嶇疆锛�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鍙戝竷鐘舵�侊細0-宸插彂甯冿紝1-鏈彂甯�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '椤圭洰澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'GoView 椤圭洰琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of report_go_view_project
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_dept
+-- ----------------------------
+DROP TABLE IF EXISTS `system_dept`;
+CREATE TABLE `system_dept`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '閮ㄩ棬id',
+  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '閮ㄩ棬鍚嶇О',
+  `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '鐖堕儴闂╥d',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鏄剧ず椤哄簭',
+  `leader_user_id` bigint NULL DEFAULT NULL COMMENT '璐熻矗浜�',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閭',
+  `status` tinyint NOT NULL COMMENT '閮ㄩ棬鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 118 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '閮ㄩ棬琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_dept
+-- ----------------------------
+INSERT INTO `system_dept` VALUES (100, '鑺嬮亾婧愮爜', 0, 0, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2026-01-04 18:01:12', b'0', 1);
+INSERT INTO `system_dept` VALUES (101, '娣卞湷鎬诲叕鍙�', 100, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2025-03-29 15:49:55', b'0', 1);
+INSERT INTO `system_dept` VALUES (102, '闀挎矙鍒嗗叕鍙�', 100, 2, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:40', b'0', 1);
+INSERT INTO `system_dept` VALUES (103, '鐮斿彂閮ㄩ棬', 101, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2026-01-04 18:01:24', b'0', 1);
+INSERT INTO `system_dept` VALUES (104, '甯傚満閮ㄩ棬', 101, 2, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:38', b'0', 1);
+INSERT INTO `system_dept` VALUES (105, '娴嬭瘯閮ㄩ棬', 101, 3, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-05-16 20:25:15', b'0', 1);
+INSERT INTO `system_dept` VALUES (106, '璐㈠姟閮ㄩ棬', 101, 4, 103, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', '2022-01-15 21:32:22', b'0', 1);
+INSERT INTO `system_dept` VALUES (107, '杩愮淮閮ㄩ棬', 101, 5, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2023-12-02 09:28:22', b'0', 1);
+INSERT INTO `system_dept` VALUES (108, '甯傚満閮ㄩ棬', 102, 1, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-02-16 08:35:45', b'0', 1);
+INSERT INTO `system_dept` VALUES (109, '璐㈠姟閮ㄩ棬', 102, 2, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:29', b'0', 1);
+INSERT INTO `system_dept` VALUES (110, '鏂伴儴闂�', 0, 1, NULL, NULL, NULL, 0, '110', '2022-02-23 20:46:30', '110', '2022-02-23 20:46:30', b'0', 121);
+INSERT INTO `system_dept` VALUES (111, '椤剁骇閮ㄩ棬', 0, 1, NULL, NULL, NULL, 0, '113', '2022-03-07 21:44:50', '113', '2022-03-07 21:44:50', b'0', 122);
+INSERT INTO `system_dept` VALUES (112, '浜у搧閮ㄩ棬', 101, 100, 1, NULL, NULL, 1, '1', '2023-12-02 09:45:13', '1', '2023-12-02 09:45:31', b'0', 1);
+INSERT INTO `system_dept` VALUES (113, '鏀寔閮ㄩ棬', 102, 3, 104, NULL, NULL, 1, '1', '2023-12-02 09:47:38', '1', '2025-03-29 15:00:56', b'0', 1);
+INSERT INTO `system_dept` VALUES (116, '鏌愪釜瀛愰儴闂�', 0, 1, NULL, NULL, NULL, 0, '1', '2025-12-08 14:51:12', '1', '2025-12-08 14:51:12', b'0', 1);
+INSERT INTO `system_dept` VALUES (117, '鏌愪釜瀛愰儴闂� 2', 0, 2, NULL, NULL, NULL, 0, '1', '2025-12-08 14:51:25', '1', '2025-12-08 14:51:25', b'0', 1);
+
+-- ----------------------------
+-- Table structure for system_dict_data
+-- ----------------------------
+DROP TABLE IF EXISTS `system_dict_data`;
+CREATE TABLE `system_dict_data`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '瀛楀吀缂栫爜',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '瀛楀吀鎺掑簭',
+  `label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀛楀吀鏍囩',
+  `value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀛楀吀閿��',
+  `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀛楀吀绫诲瀷',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `color_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '棰滆壊绫诲瀷',
+  `css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT 'css 鏍峰紡',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1061205 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀛楀吀鏁版嵁琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_dict_data
+-- ----------------------------
+INSERT INTO `system_dict_data` VALUES (1, 1, '鐢�', '1', 'system_user_sex', 0, 'primary', 'A', '鎬у埆鐢�', 'admin', '2021-01-05 17:03:48', '1', '2025-12-10 13:19:26', b'0');
+INSERT INTO `system_dict_data` VALUES (2, 2, '濂�', '2', 'system_user_sex', 0, 'success', '', '鎬у埆濂�', 'admin', '2021-01-05 17:03:48', '1', '2023-11-15 23:30:37', b'0');
+INSERT INTO `system_dict_data` VALUES (8, 1, '姝e父', '1', 'infra_job_status', 0, 'success', '', '姝e父鐘舵��', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 19:33:38', b'0');
+INSERT INTO `system_dict_data` VALUES (9, 2, '鏆傚仠', '2', 'infra_job_status', 0, 'danger', '', '鍋滅敤鐘舵��', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 19:33:45', b'0');
+INSERT INTO `system_dict_data` VALUES (12, 1, '绯荤粺鍐呯疆', '1', 'infra_config_type', 0, 'danger', '', '鍙傛暟绫诲瀷 - 绯荤粺鍐呯疆', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 19:06:02', b'0');
+INSERT INTO `system_dict_data` VALUES (13, 2, '鑷畾涔�', '2', 'infra_config_type', 0, 'primary', '', '鍙傛暟绫诲瀷 - 鑷畾涔�', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 19:06:07', b'0');
+INSERT INTO `system_dict_data` VALUES (14, 1, '閫氱煡', '1', 'system_notice_type', 0, 'success', '', '閫氱煡', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 13:05:57', b'0');
+INSERT INTO `system_dict_data` VALUES (15, 2, '鍏憡', '2', 'system_notice_type', 0, 'info', '', '鍏憡', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 13:06:01', b'0');
+INSERT INTO `system_dict_data` VALUES (16, 0, '鍏跺畠', '0', 'infra_operate_type', 0, 'default', '', '鍏跺畠鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:19', b'0');
+INSERT INTO `system_dict_data` VALUES (17, 1, '鏌ヨ', '1', 'infra_operate_type', 0, 'info', '', '鏌ヨ鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:20', b'0');
+INSERT INTO `system_dict_data` VALUES (18, 2, '鏂板', '2', 'infra_operate_type', 0, 'primary', '', '鏂板鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:21', b'0');
+INSERT INTO `system_dict_data` VALUES (19, 3, '淇敼', '3', 'infra_operate_type', 0, 'warning', '', '淇敼鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:22', b'0');
+INSERT INTO `system_dict_data` VALUES (20, 4, '鍒犻櫎', '4', 'infra_operate_type', 0, 'danger', '', '鍒犻櫎鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:23', b'0');
+INSERT INTO `system_dict_data` VALUES (22, 5, '瀵煎嚭', '5', 'infra_operate_type', 0, 'default', '', '瀵煎嚭鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:24', b'0');
+INSERT INTO `system_dict_data` VALUES (23, 6, '瀵煎叆', '6', 'infra_operate_type', 0, 'default', '', '瀵煎叆鎿嶄綔', 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:25', b'0');
+INSERT INTO `system_dict_data` VALUES (27, 1, '寮�鍚�', '0', 'common_status', 0, 'primary', '', '寮�鍚姸鎬�', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 08:00:39', b'0');
+INSERT INTO `system_dict_data` VALUES (28, 2, '鍏抽棴', '1', 'common_status', 0, 'info', '', '鍏抽棴鐘舵��', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 08:00:44', b'0');
+INSERT INTO `system_dict_data` VALUES (29, 1, '鐩綍', '1', 'system_menu_type', 0, '', '', '鐩綍', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:43:45', b'0');
+INSERT INTO `system_dict_data` VALUES (30, 2, '鑿滃崟', '2', 'system_menu_type', 0, '', '', '鑿滃崟', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:43:41', b'0');
+INSERT INTO `system_dict_data` VALUES (31, 3, '鎸夐挳', '3', 'system_menu_type', 0, '', '', '鎸夐挳', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:43:39', b'0');
+INSERT INTO `system_dict_data` VALUES (32, 1, '鍐呯疆', '1', 'system_role_type', 0, 'danger', '', '鍐呯疆瑙掕壊', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 13:02:08', b'0');
+INSERT INTO `system_dict_data` VALUES (33, 2, '鑷畾涔�', '2', 'system_role_type', 0, 'primary', '', '鑷畾涔夎鑹�', 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 13:02:12', b'0');
+INSERT INTO `system_dict_data` VALUES (34, 1, '鍏ㄩ儴鏁版嵁鏉冮檺', '1', 'system_data_scope', 0, '', '', '鍏ㄩ儴鏁版嵁鏉冮檺', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:47:17', b'0');
+INSERT INTO `system_dict_data` VALUES (35, 2, '鎸囧畾閮ㄩ棬鏁版嵁鏉冮檺', '2', 'system_data_scope', 0, '', '', '鎸囧畾閮ㄩ棬鏁版嵁鏉冮檺', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:47:18', b'0');
+INSERT INTO `system_dict_data` VALUES (36, 3, '鏈儴闂ㄦ暟鎹潈闄�', '3', 'system_data_scope', 0, '', '', '鏈儴闂ㄦ暟鎹潈闄�', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:47:16', b'0');
+INSERT INTO `system_dict_data` VALUES (37, 4, '鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺', '4', 'system_data_scope', 0, '', '', '鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:47:21', b'0');
+INSERT INTO `system_dict_data` VALUES (38, 5, '浠呮湰浜烘暟鎹潈闄�', '5', 'system_data_scope', 0, '', '', '浠呮湰浜烘暟鎹潈闄�', 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:47:23', b'0');
+INSERT INTO `system_dict_data` VALUES (39, 0, '鎴愬姛', '0', 'system_login_result', 0, 'success', '', '鐧婚檰缁撴灉 - 鎴愬姛', '', '2021-01-18 06:17:36', '1', '2022-02-16 13:23:49', b'0');
+INSERT INTO `system_dict_data` VALUES (40, 10, '璐﹀彿鎴栧瘑鐮佷笉姝g‘', '10', 'system_login_result', 0, 'primary', '', '鐧婚檰缁撴灉 - 璐﹀彿鎴栧瘑鐮佷笉姝g‘', '', '2021-01-18 06:17:54', '1', '2022-02-16 13:24:27', b'0');
+INSERT INTO `system_dict_data` VALUES (41, 20, '鐢ㄦ埛琚鐢�', '20', 'system_login_result', 0, 'warning', '', '鐧婚檰缁撴灉 - 鐢ㄦ埛琚鐢�', '', '2021-01-18 06:17:54', '1', '2022-02-16 13:23:57', b'0');
+INSERT INTO `system_dict_data` VALUES (42, 30, '楠岃瘉鐮佷笉瀛樺湪', '30', 'system_login_result', 0, 'info', '', '鐧婚檰缁撴灉 - 楠岃瘉鐮佷笉瀛樺湪', '', '2021-01-18 06:17:54', '1', '2022-02-16 13:24:07', b'0');
+INSERT INTO `system_dict_data` VALUES (43, 31, '楠岃瘉鐮佷笉姝g‘', '31', 'system_login_result', 0, 'info', '', '鐧婚檰缁撴灉 - 楠岃瘉鐮佷笉姝g‘', '', '2021-01-18 06:17:54', '1', '2022-02-16 13:24:11', b'0');
+INSERT INTO `system_dict_data` VALUES (44, 100, '鏈煡寮傚父', '100', 'system_login_result', 0, 'danger', '', '鐧婚檰缁撴灉 - 鏈煡寮傚父', '', '2021-01-18 06:17:54', '1', '2022-02-16 13:24:23', b'0');
+INSERT INTO `system_dict_data` VALUES (45, 1, '鏄�', 'true', 'infra_boolean_string', 0, 'danger', '', 'Boolean 鏄惁绫诲瀷 - 鏄�', '', '2021-01-19 03:20:55', '1', '2022-03-15 23:01:45', b'0');
+INSERT INTO `system_dict_data` VALUES (46, 1, '鍚�', 'false', 'infra_boolean_string', 0, 'info', '', 'Boolean 鏄惁绫诲瀷 - 鍚�', '', '2021-01-19 03:20:55', '1', '2022-03-15 23:09:45', b'0');
+INSERT INTO `system_dict_data` VALUES (50, 1, '鍗曡〃锛堝鍒犳敼鏌ワ級', '1', 'infra_codegen_template_type', 0, '', '', NULL, '', '2021-02-05 07:09:06', '', '2022-03-10 16:33:15', b'0');
+INSERT INTO `system_dict_data` VALUES (51, 2, '鏍戣〃锛堝鍒犳敼鏌ワ級', '2', 'infra_codegen_template_type', 0, '', '', NULL, '', '2021-02-05 07:14:46', '', '2022-03-10 16:33:19', b'0');
+INSERT INTO `system_dict_data` VALUES (53, 0, '鍒濆鍖栦腑', '0', 'infra_job_status', 0, 'primary', '', NULL, '', '2021-02-07 07:46:49', '1', '2022-02-16 19:33:29', b'0');
+INSERT INTO `system_dict_data` VALUES (57, 0, '杩愯涓�', '0', 'infra_job_log_status', 0, 'primary', '', 'RUNNING', '', '2021-02-08 10:04:24', '1', '2022-02-16 19:07:48', b'0');
+INSERT INTO `system_dict_data` VALUES (58, 1, '鎴愬姛', '1', 'infra_job_log_status', 0, 'success', '', NULL, '', '2021-02-08 10:06:57', '1', '2022-02-16 19:07:52', b'0');
+INSERT INTO `system_dict_data` VALUES (59, 2, '澶辫触', '2', 'infra_job_log_status', 0, 'warning', '', '澶辫触', '', '2021-02-08 10:07:38', '1', '2022-02-16 19:07:56', b'0');
+INSERT INTO `system_dict_data` VALUES (60, 1, '浼氬憳', '1', 'user_type', 0, 'primary', '', NULL, '', '2021-02-26 00:16:27', '1', '2022-02-16 10:22:19', b'0');
+INSERT INTO `system_dict_data` VALUES (61, 2, '绠$悊鍛�', '2', 'user_type', 0, 'success', '', NULL, '', '2021-02-26 00:16:34', '1', '2025-04-06 18:37:43', b'0');
+INSERT INTO `system_dict_data` VALUES (62, 0, '鏈鐞�', '0', 'infra_api_error_log_process_status', 0, 'primary', '', NULL, '', '2021-02-26 07:07:19', '1', '2022-02-16 20:14:17', b'0');
+INSERT INTO `system_dict_data` VALUES (63, 1, '宸插鐞�', '1', 'infra_api_error_log_process_status', 0, 'success', '', NULL, '', '2021-02-26 07:07:26', '1', '2022-02-16 20:14:08', b'0');
+INSERT INTO `system_dict_data` VALUES (64, 2, '宸插拷鐣�', '2', 'infra_api_error_log_process_status', 0, 'danger', '', NULL, '', '2021-02-26 07:07:34', '1', '2022-02-16 20:14:14', b'0');
+INSERT INTO `system_dict_data` VALUES (66, 1, '闃块噷浜�', 'ALIYUN', 'system_sms_channel_code', 0, 'primary', '', NULL, '1', '2021-04-05 01:05:26', '1', '2024-07-22 22:23:25', b'0');
+INSERT INTO `system_dict_data` VALUES (67, 1, '楠岃瘉鐮�', '1', 'system_sms_template_type', 0, 'warning', '', NULL, '1', '2021-04-05 21:50:57', '1', '2022-02-16 12:48:30', b'0');
+INSERT INTO `system_dict_data` VALUES (68, 2, '閫氱煡', '2', 'system_sms_template_type', 0, 'primary', '', NULL, '1', '2021-04-05 21:51:08', '1', '2022-02-16 12:48:27', b'0');
+INSERT INTO `system_dict_data` VALUES (69, 0, '钀ラ攢', '3', 'system_sms_template_type', 0, 'danger', '', NULL, '1', '2021-04-05 21:51:15', '1', '2022-02-16 12:48:22', b'0');
+INSERT INTO `system_dict_data` VALUES (70, 0, '鍒濆鍖�', '0', 'system_sms_send_status', 0, 'primary', '', NULL, '1', '2021-04-11 20:18:33', '1', '2022-02-16 10:26:07', b'0');
+INSERT INTO `system_dict_data` VALUES (71, 1, '鍙戦�佹垚鍔�', '10', 'system_sms_send_status', 0, 'success', '', NULL, '1', '2021-04-11 20:18:43', '1', '2022-02-16 10:25:56', b'0');
+INSERT INTO `system_dict_data` VALUES (72, 2, '鍙戦�佸け璐�', '20', 'system_sms_send_status', 0, 'danger', '', NULL, '1', '2021-04-11 20:18:49', '1', '2022-02-16 10:26:03', b'0');
+INSERT INTO `system_dict_data` VALUES (73, 3, '涓嶅彂閫�', '30', 'system_sms_send_status', 0, 'info', '', NULL, '1', '2021-04-11 20:19:44', '1', '2022-02-16 10:26:10', b'0');
+INSERT INTO `system_dict_data` VALUES (74, 0, '绛夊緟缁撴灉', '0', 'system_sms_receive_status', 0, 'primary', '', NULL, '1', '2021-04-11 20:27:43', '1', '2022-02-16 10:28:24', b'0');
+INSERT INTO `system_dict_data` VALUES (75, 1, '鎺ユ敹鎴愬姛', '10', 'system_sms_receive_status', 0, 'success', '', NULL, '1', '2021-04-11 20:29:25', '1', '2022-02-16 10:28:28', b'0');
+INSERT INTO `system_dict_data` VALUES (76, 2, '鎺ユ敹澶辫触', '20', 'system_sms_receive_status', 0, 'danger', '', NULL, '1', '2021-04-11 20:29:31', '1', '2022-02-16 10:28:32', b'0');
+INSERT INTO `system_dict_data` VALUES (77, 0, '璋冭瘯(閽夐拤)', 'DEBUG_DING_TALK', 'system_sms_channel_code', 0, 'info', '', NULL, '1', '2021-04-13 00:20:37', '1', '2022-02-16 10:10:00', b'0');
+INSERT INTO `system_dict_data` VALUES (80, 100, '璐﹀彿鐧诲綍', '100', 'system_login_type', 0, 'primary', '', '璐﹀彿鐧诲綍', '1', '2021-10-06 00:52:02', '1', '2022-02-16 13:11:34', b'0');
+INSERT INTO `system_dict_data` VALUES (81, 101, '绀句氦鐧诲綍', '101', 'system_login_type', 0, 'info', '', '绀句氦鐧诲綍', '1', '2021-10-06 00:52:17', '1', '2022-02-16 13:11:40', b'0');
+INSERT INTO `system_dict_data` VALUES (83, 200, '涓诲姩鐧诲嚭', '200', 'system_login_type', 0, 'primary', '', '涓诲姩鐧诲嚭', '1', '2021-10-06 00:52:58', '1', '2022-02-16 13:11:49', b'0');
+INSERT INTO `system_dict_data` VALUES (85, 202, '寮哄埗鐧诲嚭', '202', 'system_login_type', 0, 'danger', '', '寮哄埗閫�鍑�', '1', '2021-10-06 00:53:41', '1', '2022-02-16 13:11:57', b'0');
+INSERT INTO `system_dict_data` VALUES (86, 0, '鐥呭亣', '1', 'bpm_oa_leave_type', 0, 'primary', '', NULL, '1', '2021-09-21 22:35:28', '1', '2022-02-16 10:00:41', b'0');
+INSERT INTO `system_dict_data` VALUES (87, 1, '浜嬪亣', '2', 'bpm_oa_leave_type', 0, 'info', '', NULL, '1', '2021-09-21 22:36:11', '1', '2022-02-16 10:00:49', b'0');
+INSERT INTO `system_dict_data` VALUES (88, 2, '濠氬亣', '3', 'bpm_oa_leave_type', 0, 'warning', '', NULL, '1', '2021-09-21 22:36:38', '1', '2022-02-16 10:00:53', b'0');
+INSERT INTO `system_dict_data` VALUES (112, 0, '寰俊 Wap 缃戠珯鏀粯', 'wx_wap', 'pay_channel_code', 0, 'success', '', '寰俊 Wap 缃戠珯鏀粯', '1', '2023-07-19 20:08:06', '1', '2023-07-19 20:09:08', b'0');
+INSERT INTO `system_dict_data` VALUES (113, 1, '寰俊鍏紬鍙锋敮浠�', 'wx_pub', 'pay_channel_code', 0, 'success', '', '寰俊鍏紬鍙锋敮浠�', '1', '2021-12-03 10:40:24', '1', '2023-07-19 20:08:47', b'0');
+INSERT INTO `system_dict_data` VALUES (114, 2, '寰俊灏忕▼搴忔敮浠�', 'wx_lite', 'pay_channel_code', 0, 'success', '', '寰俊灏忕▼搴忔敮浠�', '1', '2021-12-03 10:41:06', '1', '2023-07-19 20:08:50', b'0');
+INSERT INTO `system_dict_data` VALUES (115, 3, '寰俊 App 鏀粯', 'wx_app', 'pay_channel_code', 0, 'success', '', '寰俊 App 鏀粯', '1', '2021-12-03 10:41:20', '1', '2023-07-19 20:08:56', b'0');
+INSERT INTO `system_dict_data` VALUES (116, 10, '鏀粯瀹� PC 缃戠珯鏀粯', 'alipay_pc', 'pay_channel_code', 0, 'primary', '', '鏀粯瀹� PC 缃戠珯鏀粯', '1', '2021-12-03 10:42:09', '1', '2023-07-19 20:09:12', b'0');
+INSERT INTO `system_dict_data` VALUES (117, 11, '鏀粯瀹� Wap 缃戠珯鏀粯', 'alipay_wap', 'pay_channel_code', 0, 'primary', '', '鏀粯瀹� Wap 缃戠珯鏀粯', '1', '2021-12-03 10:42:26', '1', '2023-07-19 20:09:16', b'0');
+INSERT INTO `system_dict_data` VALUES (118, 12, '鏀粯瀹� App 鏀粯', 'alipay_app', 'pay_channel_code', 0, 'primary', '', '鏀粯瀹� App 鏀粯', '1', '2021-12-03 10:42:55', '1', '2023-07-19 20:09:20', b'0');
+INSERT INTO `system_dict_data` VALUES (119, 14, '鏀粯瀹濇壂鐮佹敮浠�', 'alipay_qr', 'pay_channel_code', 0, 'primary', '', '鏀粯瀹濇壂鐮佹敮浠�', '1', '2021-12-03 10:43:10', '1', '2023-07-19 20:09:28', b'0');
+INSERT INTO `system_dict_data` VALUES (120, 10, '閫氱煡鎴愬姛', '10', 'pay_notify_status', 0, 'success', '', '閫氱煡鎴愬姛', '1', '2021-12-03 11:02:41', '1', '2023-07-19 10:08:19', b'0');
+INSERT INTO `system_dict_data` VALUES (121, 20, '閫氱煡澶辫触', '20', 'pay_notify_status', 0, 'danger', '', '閫氱煡澶辫触', '1', '2021-12-03 11:02:59', '1', '2023-07-19 10:08:21', b'0');
+INSERT INTO `system_dict_data` VALUES (122, 0, '绛夊緟閫氱煡', '0', 'pay_notify_status', 0, 'info', '', '鏈�氱煡', '1', '2021-12-03 11:03:10', '1', '2023-07-19 10:08:24', b'0');
+INSERT INTO `system_dict_data` VALUES (123, 10, '鏀粯鎴愬姛', '10', 'pay_order_status', 0, 'success', '', '鏀粯鎴愬姛', '1', '2021-12-03 11:18:29', '1', '2023-07-19 18:04:28', b'0');
+INSERT INTO `system_dict_data` VALUES (124, 30, '鏀粯鍏抽棴', '30', 'pay_order_status', 0, 'info', '', '鏀粯鍏抽棴', '1', '2021-12-03 11:18:42', '1', '2023-07-19 18:05:07', b'0');
+INSERT INTO `system_dict_data` VALUES (125, 0, '绛夊緟鏀粯', '0', 'pay_order_status', 0, 'info', '', '鏈敮浠�', '1', '2021-12-03 11:18:18', '1', '2023-07-19 18:04:15', b'0');
+INSERT INTO `system_dict_data` VALUES (600, 5, '棣栭〉', '1', 'promotion_banner_position', 0, 'warning', '', '', '1', '2023-10-11 07:45:24', '1', '2023-10-11 07:45:38', b'0');
+INSERT INTO `system_dict_data` VALUES (601, 4, '绉掓潃娲诲姩椤�', '2', 'promotion_banner_position', 0, 'warning', '', '', '1', '2023-10-11 07:45:24', '1', '2023-10-11 07:45:38', b'0');
+INSERT INTO `system_dict_data` VALUES (602, 3, '鐮嶄环娲诲姩椤�', '3', 'promotion_banner_position', 0, 'warning', '', '', '1', '2023-10-11 07:45:24', '1', '2023-10-11 07:45:38', b'0');
+INSERT INTO `system_dict_data` VALUES (603, 2, '闄愭椂鎶樻墸椤�', '4', 'promotion_banner_position', 0, 'warning', '', '', '1', '2023-10-11 07:45:24', '1', '2023-10-11 07:45:38', b'0');
+INSERT INTO `system_dict_data` VALUES (604, 1, '婊″噺閫侀〉', '5', 'promotion_banner_position', 0, 'warning', '', '', '1', '2023-10-11 07:45:24', '1', '2023-10-11 07:45:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1118, 0, '绛夊緟閫�娆�', '0', 'pay_refund_status', 0, 'info', '', '绛夊緟閫�娆�', '1', '2021-12-10 16:44:59', '1', '2023-07-19 10:14:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1119, 20, '閫�娆惧け璐�', '20', 'pay_refund_status', 0, 'danger', '', '閫�娆惧け璐�', '1', '2021-12-10 16:45:10', '1', '2023-07-19 10:15:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1124, 10, '閫�娆炬垚鍔�', '10', 'pay_refund_status', 0, 'success', '', '閫�娆炬垚鍔�', '1', '2021-12-10 16:46:26', '1', '2023-07-19 10:15:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1127, 1, '瀹℃壒涓�', '1', 'bpm_process_instance_status', 0, 'default', '', '娴佺▼瀹炰緥鐨勭姸鎬� - 杩涜涓�', '1', '2022-01-07 23:47:22', '1', '2024-03-16 16:11:45', b'0');
+INSERT INTO `system_dict_data` VALUES (1128, 2, '瀹℃壒閫氳繃', '2', 'bpm_process_instance_status', 0, 'success', '', '娴佺▼瀹炰緥鐨勭姸鎬� - 宸插畬鎴�', '1', '2022-01-07 23:47:49', '1', '2024-03-16 16:11:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1129, 1, '瀹℃壒涓�', '1', 'bpm_task_status', 0, 'primary', '', '娴佺▼瀹炰緥鐨勭粨鏋� - 澶勭悊涓�', '1', '2022-01-07 23:48:32', '1', '2024-03-08 22:41:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1130, 2, '瀹℃壒閫氳繃', '2', 'bpm_task_status', 0, 'success', '', '娴佺▼瀹炰緥鐨勭粨鏋� - 閫氳繃', '1', '2022-01-07 23:48:45', '1', '2024-03-08 22:41:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1131, 3, '瀹℃壒涓嶉�氳繃', '3', 'bpm_task_status', 0, 'danger', '', '娴佺▼瀹炰緥鐨勭粨鏋� - 涓嶉�氳繃', '1', '2022-01-07 23:48:55', '1', '2024-03-08 22:41:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1132, 4, '宸插彇娑�', '4', 'bpm_task_status', 0, 'info', '', '娴佺▼瀹炰緥鐨勭粨鏋� - 鎾ら攢', '1', '2022-01-07 23:49:06', '1', '2024-03-08 22:41:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1133, 10, '娴佺▼琛ㄥ崟', '10', 'bpm_model_form_type', 0, '', '', '娴佺▼鐨勮〃鍗曠被鍨� - 娴佺▼琛ㄥ崟', '103', '2022-01-11 23:51:30', '103', '2022-01-11 23:51:30', b'0');
+INSERT INTO `system_dict_data` VALUES (1134, 20, '涓氬姟琛ㄥ崟', '20', 'bpm_model_form_type', 0, '', '', '娴佺▼鐨勮〃鍗曠被鍨� - 涓氬姟琛ㄥ崟', '103', '2022-01-11 23:51:47', '103', '2022-01-11 23:51:47', b'0');
+INSERT INTO `system_dict_data` VALUES (1135, 10, '瑙掕壊', '10', 'bpm_task_candidate_strategy', 0, 'info', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 瑙掕壊', '103', '2022-01-12 23:21:22', '1', '2024-03-06 02:53:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1136, 20, '閮ㄩ棬鐨勬垚鍛�', '20', 'bpm_task_candidate_strategy', 0, 'primary', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 閮ㄩ棬鐨勬垚鍛�', '103', '2022-01-12 23:21:47', '1', '2024-03-06 02:53:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1137, 21, '閮ㄩ棬鐨勮礋璐d汉', '21', 'bpm_task_candidate_strategy', 0, 'primary', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 閮ㄩ棬鐨勮礋璐d汉', '103', '2022-01-12 23:33:36', '1', '2024-03-06 02:53:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1138, 30, '鐢ㄦ埛', '30', 'bpm_task_candidate_strategy', 0, 'info', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 鐢ㄦ埛', '103', '2022-01-12 23:34:02', '1', '2024-03-06 02:53:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1139, 40, '鐢ㄦ埛缁�', '40', 'bpm_task_candidate_strategy', 0, 'warning', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 鐢ㄦ埛缁�', '103', '2022-01-12 23:34:21', '1', '2024-03-06 02:53:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1140, 60, '娴佺▼琛ㄨ揪寮�', '60', 'bpm_task_candidate_strategy', 0, 'danger', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 娴佺▼琛ㄨ揪寮�', '103', '2022-01-12 23:34:43', '1', '2024-03-06 02:53:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1141, 22, '宀椾綅', '22', 'bpm_task_candidate_strategy', 0, 'success', '', '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨� - 宀椾綅', '103', '2022-01-14 18:41:55', '1', '2024-03-06 02:53:21', b'0');
+INSERT INTO `system_dict_data` VALUES (1145, 1, '绠$悊鍚庡彴', '1', 'infra_codegen_scene', 0, '', '', '浠g爜鐢熸垚鐨勫満鏅灇涓� - 绠$悊鍚庡彴', '1', '2022-02-02 13:15:06', '1', '2022-03-10 16:32:59', b'0');
+INSERT INTO `system_dict_data` VALUES (1146, 2, '鐢ㄦ埛 APP', '2', 'infra_codegen_scene', 0, '', '', '浠g爜鐢熸垚鐨勫満鏅灇涓� - 鐢ㄦ埛 APP', '1', '2022-02-02 13:15:19', '1', '2022-03-10 16:33:03', b'0');
+INSERT INTO `system_dict_data` VALUES (1150, 1, '鏁版嵁搴�', '1', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:25:28', '1', '2022-03-15 00:25:28', b'0');
+INSERT INTO `system_dict_data` VALUES (1151, 10, '鏈湴纾佺洏', '10', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:25:41', '1', '2022-03-15 00:25:56', b'0');
+INSERT INTO `system_dict_data` VALUES (1152, 11, 'FTP 鏈嶅姟鍣�', '11', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:06', '1', '2022-03-15 00:26:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1153, 12, 'SFTP 鏈嶅姟鍣�', '12', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:22', '1', '2022-03-15 00:26:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1154, 20, 'S3 瀵硅薄瀛樺偍', '20', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:31', '1', '2022-03-15 00:26:45', b'0');
+INSERT INTO `system_dict_data` VALUES (1155, 103, '鐭俊鐧诲綍', '103', 'system_login_type', 0, 'default', '', NULL, '1', '2022-05-09 23:57:58', '1', '2022-05-09 23:58:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1156, 1, 'password', 'password', 'system_oauth2_grant_type', 0, 'default', '', '瀵嗙爜妯″紡', '1', '2022-05-12 00:22:05', '1', '2022-05-11 16:26:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1157, 2, 'authorization_code', 'authorization_code', 'system_oauth2_grant_type', 0, 'primary', '', '鎺堟潈鐮佹ā寮�', '1', '2022-05-12 00:22:59', '1', '2022-05-11 16:26:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1158, 3, 'implicit', 'implicit', 'system_oauth2_grant_type', 0, 'success', '', '绠�鍖栨ā寮�', '1', '2022-05-12 00:23:40', '1', '2022-05-11 16:26:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1159, 4, 'client_credentials', 'client_credentials', 'system_oauth2_grant_type', 0, 'default', '', '瀹㈡埛绔ā寮�', '1', '2022-05-12 00:23:51', '1', '2022-05-11 16:26:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1160, 5, 'refresh_token', 'refresh_token', 'system_oauth2_grant_type', 0, 'info', '', '鍒锋柊妯″紡', '1', '2022-05-12 00:24:02', '1', '2022-05-11 16:26:11', b'0');
+INSERT INTO `system_dict_data` VALUES (1162, 1, '閿�鍞腑', '1', 'product_spu_status', 0, 'success', '', '鍟嗗搧 SPU 鐘舵�� - 閿�鍞腑', '1', '2022-10-24 21:19:47', '1', '2022-10-24 21:20:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1163, 0, '浠撳簱涓�', '0', 'product_spu_status', 0, 'info', '', '鍟嗗搧 SPU 鐘舵�� - 浠撳簱涓�', '1', '2022-10-24 21:20:54', '1', '2022-10-24 21:21:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1164, 0, '鍥炴敹绔�', '-1', 'product_spu_status', 0, 'default', '', '鍟嗗搧 SPU 鐘舵�� - 鍥炴敹绔�', '1', '2022-10-24 21:21:11', '1', '2022-10-24 21:21:11', b'0');
+INSERT INTO `system_dict_data` VALUES (1165, 1, '婊″噺', '1', 'promotion_discount_type', 0, 'success', '', '浼樻儬绫诲瀷 - 婊″噺', '1', '2022-11-01 12:46:41', '1', '2022-11-01 12:50:11', b'0');
+INSERT INTO `system_dict_data` VALUES (1166, 2, '鎶樻墸', '2', 'promotion_discount_type', 0, 'primary', '', '浼樻儬绫诲瀷 - 鎶樻墸', '1', '2022-11-01 12:46:51', '1', '2022-11-01 12:50:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1167, 1, '鍥哄畾鏃ユ湡', '1', 'promotion_coupon_template_validity_type', 0, 'default', '', '浼樻儬鍔垫ā鏉跨殑鏈夐檺鏈熺被鍨� - 鍥哄畾鏃ユ湡', '1', '2022-11-02 00:07:34', '1', '2022-11-04 00:07:49', b'0');
+INSERT INTO `system_dict_data` VALUES (1168, 2, '棰嗗彇涔嬪悗', '2', 'promotion_coupon_template_validity_type', 0, 'default', '', '浼樻儬鍔垫ā鏉跨殑鏈夐檺鏈熺被鍨� - 棰嗗彇涔嬪悗', '1', '2022-11-02 00:07:54', '1', '2022-11-04 00:07:52', b'0');
+INSERT INTO `system_dict_data` VALUES (1169, 1, '閫氱敤鍔�', '1', 'promotion_product_scope', 0, 'default', '', '钀ラ攢鐨勫晢鍝佽寖鍥� - 鍏ㄩ儴鍟嗗搧鍙備笌', '1', '2022-11-02 00:28:22', '1', '2023-09-28 00:27:42', b'0');
+INSERT INTO `system_dict_data` VALUES (1170, 2, '鍟嗗搧鍔�', '2', 'promotion_product_scope', 0, 'default', '', '钀ラ攢鐨勫晢鍝佽寖鍥� - 鎸囧畾鍟嗗搧鍙備笌', '1', '2022-11-02 00:28:34', '1', '2023-09-28 00:27:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1171, 1, '鏈娇鐢�', '1', 'promotion_coupon_status', 0, 'primary', '', '浼樻儬鍔电殑鐘舵�� - 宸查鍙�', '1', '2022-11-04 00:15:08', '1', '2023-10-03 12:54:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1172, 2, '宸蹭娇鐢�', '2', 'promotion_coupon_status', 0, 'success', '', '浼樻儬鍔电殑鐘舵�� - 宸蹭娇鐢�', '1', '2022-11-04 00:15:21', '1', '2022-11-04 19:16:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1173, 3, '宸茶繃鏈�', '3', 'promotion_coupon_status', 0, 'info', '', '浼樻儬鍔电殑鐘舵�� - 宸茶繃鏈�', '1', '2022-11-04 00:15:43', '1', '2022-11-04 19:16:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1174, 1, '鐩存帴棰嗗彇', '1', 'promotion_coupon_take_type', 0, 'primary', '', '浼樻儬鍔电殑棰嗗彇鏂瑰紡 - 鐩存帴棰嗗彇', '1', '2022-11-04 19:13:00', '1', '2022-11-04 19:13:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1175, 2, '鎸囧畾鍙戞斁', '2', 'promotion_coupon_take_type', 0, 'success', '', '浼樻儬鍔电殑棰嗗彇鏂瑰紡 - 鎸囧畾鍙戞斁', '1', '2022-11-04 19:13:13', '1', '2022-11-04 19:14:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1176, 10, '鏈紑濮�', '10', 'promotion_activity_status', 0, 'primary', '', '淇冮攢娲诲姩鐨勭姸鎬佹灇涓� - 鏈紑濮�', '1', '2022-11-04 22:54:49', '1', '2022-11-04 22:55:53', b'0');
+INSERT INTO `system_dict_data` VALUES (1177, 20, '杩涜涓�', '20', 'promotion_activity_status', 0, 'success', '', '淇冮攢娲诲姩鐨勭姸鎬佹灇涓� - 杩涜涓�', '1', '2022-11-04 22:55:06', '1', '2022-11-04 22:55:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1178, 30, '宸茬粨鏉�', '30', 'promotion_activity_status', 0, 'info', '', '淇冮攢娲诲姩鐨勭姸鎬佹灇涓� - 宸茬粨鏉�', '1', '2022-11-04 22:55:41', '1', '2022-11-04 22:55:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1179, 40, '宸插叧闂�', '40', 'promotion_activity_status', 0, 'warning', '', '淇冮攢娲诲姩鐨勭姸鎬佹灇涓� - 宸插叧闂�', '1', '2022-11-04 22:56:10', '1', '2022-11-04 22:56:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1180, 10, '婊� N 鍏�', '10', 'promotion_condition_type', 0, 'primary', '', '钀ラ攢鐨勬潯浠剁被鍨� - 婊� N 鍏�', '1', '2022-11-04 22:59:45', '1', '2022-11-04 22:59:45', b'0');
+INSERT INTO `system_dict_data` VALUES (1181, 20, '婊� N 浠�', '20', 'promotion_condition_type', 0, 'success', '', '钀ラ攢鐨勬潯浠剁被鍨� - 婊� N 浠�', '1', '2022-11-04 23:00:02', '1', '2022-11-04 23:00:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1182, 10, '鐢宠鍞悗', '10', 'trade_after_sale_status', 0, 'primary', '', '浜ゆ槗鍞悗鐘舵�� - 鐢宠鍞悗', '1', '2022-11-19 20:53:33', '1', '2022-11-19 20:54:42', b'0');
+INSERT INTO `system_dict_data` VALUES (1183, 20, '鍟嗗搧寰呴��璐�', '20', 'trade_after_sale_status', 0, 'primary', '', '浜ゆ槗鍞悗鐘舵�� - 鍟嗗搧寰呴��璐�', '1', '2022-11-19 20:54:36', '1', '2022-11-19 20:58:58', b'0');
+INSERT INTO `system_dict_data` VALUES (1184, 30, '鍟嗗寰呮敹璐�', '30', 'trade_after_sale_status', 0, 'primary', '', '浜ゆ槗鍞悗鐘舵�� - 鍟嗗寰呮敹璐�', '1', '2022-11-19 20:56:56', '1', '2022-11-19 20:59:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1185, 40, '绛夊緟閫�娆�', '40', 'trade_after_sale_status', 0, 'primary', '', '浜ゆ槗鍞悗鐘舵�� - 绛夊緟閫�娆�', '1', '2022-11-19 20:59:54', '1', '2022-11-19 21:00:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1186, 50, '閫�娆炬垚鍔�', '50', 'trade_after_sale_status', 0, 'default', '', '浜ゆ槗鍞悗鐘舵�� - 閫�娆炬垚鍔�', '1', '2022-11-19 21:00:33', '1', '2022-11-19 21:00:33', b'0');
+INSERT INTO `system_dict_data` VALUES (1187, 61, '涔板鍙栨秷', '61', 'trade_after_sale_status', 0, 'info', '', '浜ゆ槗鍞悗鐘舵�� - 涔板鍙栨秷', '1', '2022-11-19 21:01:29', '1', '2022-11-19 21:01:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1188, 62, '鍟嗗鎷掔粷', '62', 'trade_after_sale_status', 0, 'info', '', '浜ゆ槗鍞悗鐘舵�� - 鍟嗗鎷掔粷', '1', '2022-11-19 21:02:17', '1', '2022-11-19 21:02:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1189, 63, '鍟嗗鎷掓敹璐�', '63', 'trade_after_sale_status', 0, 'info', '', '浜ゆ槗鍞悗鐘舵�� - 鍟嗗鎷掓敹璐�', '1', '2022-11-19 21:02:37', '1', '2022-11-19 21:03:07', b'0');
+INSERT INTO `system_dict_data` VALUES (1190, 10, '鍞腑閫�娆�', '10', 'trade_after_sale_type', 0, 'success', '', '浜ゆ槗鍞悗鐨勭被鍨� - 鍞腑閫�娆�', '1', '2022-11-19 21:05:05', '1', '2022-11-19 21:38:23', b'0');
+INSERT INTO `system_dict_data` VALUES (1191, 20, '鍞悗閫�娆�', '20', 'trade_after_sale_type', 0, 'primary', '', '浜ゆ槗鍞悗鐨勭被鍨� - 鍞悗閫�娆�', '1', '2022-11-19 21:05:32', '1', '2022-11-19 21:38:32', b'0');
+INSERT INTO `system_dict_data` VALUES (1192, 10, '浠呴��娆�', '10', 'trade_after_sale_way', 0, 'primary', '', '浜ゆ槗鍞悗鐨勬柟寮� - 浠呴��娆�', '1', '2022-11-19 21:39:19', '1', '2022-11-19 21:39:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1193, 20, '閫�璐ч��娆�', '20', 'trade_after_sale_way', 0, 'success', '', '浜ゆ槗鍞悗鐨勬柟寮� - 閫�璐ч��娆�', '1', '2022-11-19 21:39:38', '1', '2022-11-19 21:39:49', b'0');
+INSERT INTO `system_dict_data` VALUES (1194, 10, '寰俊灏忕▼搴�', '10', 'terminal', 0, 'default', '', '缁堢 - 寰俊灏忕▼搴�', '1', '2022-12-10 10:51:11', '1', '2022-12-10 10:51:57', b'0');
+INSERT INTO `system_dict_data` VALUES (1195, 20, 'H5 缃戦〉', '20', 'terminal', 0, 'default', '', '缁堢 - H5 缃戦〉', '1', '2022-12-10 10:51:30', '1', '2022-12-10 10:51:59', b'0');
+INSERT INTO `system_dict_data` VALUES (1196, 11, '寰俊鍏紬鍙�', '11', 'terminal', 0, 'default', '', '缁堢 - 寰俊鍏紬鍙�', '1', '2022-12-10 10:54:16', '1', '2022-12-10 10:52:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1197, 31, '鑻规灉 App', '31', 'terminal', 0, 'default', '', '缁堢 - 鑻规灉 App', '1', '2022-12-10 10:54:42', '1', '2022-12-10 10:52:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1198, 32, '瀹夊崜 App', '32', 'terminal', 0, 'default', '', '缁堢 - 瀹夊崜 App', '1', '2022-12-10 10:55:02', '1', '2022-12-10 10:59:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1199, 0, '鏅�氳鍗�', '0', 'trade_order_type', 0, 'default', '', '浜ゆ槗璁㈠崟鐨勭被鍨� - 鏅�氳鍗�', '1', '2022-12-10 16:34:14', '1', '2022-12-10 16:34:14', b'0');
+INSERT INTO `system_dict_data` VALUES (1200, 1, '绉掓潃璁㈠崟', '1', 'trade_order_type', 0, 'default', '', '浜ゆ槗璁㈠崟鐨勭被鍨� - 绉掓潃璁㈠崟', '1', '2022-12-10 16:34:26', '1', '2022-12-10 16:34:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1201, 2, '鐮嶄环璁㈠崟', '2', 'trade_order_type', 0, 'default', '', '浜ゆ槗璁㈠崟鐨勭被鍨� - 鎷煎洟璁㈠崟', '1', '2022-12-10 16:34:36', '1', '2024-09-07 14:18:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1202, 3, '鎷煎洟璁㈠崟', '3', 'trade_order_type', 0, 'default', '', '浜ゆ槗璁㈠崟鐨勭被鍨� - 鐮嶄环璁㈠崟', '1', '2022-12-10 16:34:48', '1', '2024-09-07 14:18:32', b'0');
+INSERT INTO `system_dict_data` VALUES (1203, 0, '寰呮敮浠�', '0', 'trade_order_status', 0, 'default', '', '浜ゆ槗璁㈠崟鐘舵�� - 寰呮敮浠�', '1', '2022-12-10 16:49:29', '1', '2022-12-10 16:49:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1204, 10, '寰呭彂璐�', '10', 'trade_order_status', 0, 'primary', '', '浜ゆ槗璁㈠崟鐘舵�� - 寰呭彂璐�', '1', '2022-12-10 16:49:53', '1', '2022-12-10 16:51:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1205, 20, '宸插彂璐�', '20', 'trade_order_status', 0, 'primary', '', '浜ゆ槗璁㈠崟鐘舵�� - 宸插彂璐�', '1', '2022-12-10 16:50:13', '1', '2022-12-10 16:51:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1206, 30, '宸插畬鎴�', '30', 'trade_order_status', 0, 'success', '', '浜ゆ槗璁㈠崟鐘舵�� - 宸插畬鎴�', '1', '2022-12-10 16:50:30', '1', '2022-12-10 16:51:06', b'0');
+INSERT INTO `system_dict_data` VALUES (1207, 40, '宸插彇娑�', '40', 'trade_order_status', 0, 'danger', '', '浜ゆ槗璁㈠崟鐘舵�� - 宸插彇娑�', '1', '2022-12-10 16:50:50', '1', '2022-12-10 16:51:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1208, 0, '鏈敭鍚�', '0', 'trade_order_item_after_sale_status', 0, 'info', '', '浜ゆ槗璁㈠崟椤圭殑鍞悗鐘舵�� - 鏈敭鍚�', '1', '2022-12-10 20:58:42', '1', '2022-12-10 20:59:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1209, 10, '鍞悗涓�', '10', 'trade_order_item_after_sale_status', 0, 'primary', '', '浜ゆ槗璁㈠崟椤圭殑鍞悗鐘舵�� - 鍞悗涓�', '1', '2022-12-10 20:59:21', '1', '2024-07-21 17:01:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1210, 20, '宸查��娆�', '20', 'trade_order_item_after_sale_status', 0, 'success', '', '浜ゆ槗璁㈠崟椤圭殑鍞悗鐘舵�� - 宸查��娆�', '1', '2022-12-10 20:59:46', '1', '2024-07-21 17:01:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1211, 1, '瀹屽叏鍖归厤', '1', 'mp_auto_reply_request_match', 0, 'primary', '', '鍏紬鍙疯嚜鍔ㄥ洖澶嶇殑璇锋眰鍏抽敭瀛楀尮閰嶆ā寮� - 瀹屽叏鍖归厤', '1', '2023-01-16 23:30:39', '1', '2023-01-16 23:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1212, 2, '鍗婂尮閰�', '2', 'mp_auto_reply_request_match', 0, 'success', '', '鍏紬鍙疯嚜鍔ㄥ洖澶嶇殑璇锋眰鍏抽敭瀛楀尮閰嶆ā寮� - 鍗婂尮閰�', '1', '2023-01-16 23:30:55', '1', '2023-01-16 23:31:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1213, 1, '鏂囨湰', 'text', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 鏂囨湰', '1', '2023-01-17 22:17:32', '1', '2023-01-17 22:17:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1214, 2, '鍥剧墖', 'image', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 鍥剧墖', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:19:47', b'0');
+INSERT INTO `system_dict_data` VALUES (1215, 3, '璇煶', 'voice', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 璇煶', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:20:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1216, 4, '瑙嗛', 'video', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 瑙嗛', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:21:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1217, 5, '灏忚棰�', 'shortvideo', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 灏忚棰�', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:19:59', b'0');
+INSERT INTO `system_dict_data` VALUES (1218, 6, '鍥炬枃', 'news', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 鍥炬枃', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:22:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1219, 7, '闊充箰', 'music', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 闊充箰', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:22:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1220, 8, '鍦扮悊浣嶇疆', 'location', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 鍦扮悊浣嶇疆', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:23:51', b'0');
+INSERT INTO `system_dict_data` VALUES (1221, 9, '閾炬帴', 'link', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 閾炬帴', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:24:49', b'0');
+INSERT INTO `system_dict_data` VALUES (1222, 10, '浜嬩欢', 'event', 'mp_message_type', 0, 'default', '', '鍏紬鍙风殑娑堟伅绫诲瀷 - 浜嬩欢', '1', '2023-01-17 22:17:32', '1', '2023-01-17 14:24:49', b'0');
+INSERT INTO `system_dict_data` VALUES (1223, 0, '鍒濆鍖�', '0', 'system_mail_send_status', 0, 'primary', '', '閭欢鍙戦�佺姸鎬� - 鍒濆鍖朶n', '1', '2023-01-26 09:53:49', '1', '2023-01-26 16:36:14', b'0');
+INSERT INTO `system_dict_data` VALUES (1224, 10, '鍙戦�佹垚鍔�', '10', 'system_mail_send_status', 0, 'success', '', '閭欢鍙戦�佺姸鎬� - 鍙戦�佹垚鍔�', '1', '2023-01-26 09:54:28', '1', '2023-01-26 16:36:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1225, 20, '鍙戦�佸け璐�', '20', 'system_mail_send_status', 0, 'danger', '', '閭欢鍙戦�佺姸鎬� - 鍙戦�佸け璐�', '1', '2023-01-26 09:54:50', '1', '2023-01-26 16:36:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1226, 30, '涓嶅彂閫�', '30', 'system_mail_send_status', 0, 'info', '', '閭欢鍙戦�佺姸鎬� -  涓嶅彂閫�', '1', '2023-01-26 09:55:06', '1', '2023-01-26 16:36:36', b'0');
+INSERT INTO `system_dict_data` VALUES (1227, 1, '閫氱煡鍏憡', '1', 'system_notify_template_type', 0, 'primary', '', '绔欏唴淇℃ā鐗堢殑绫诲瀷 - 閫氱煡鍏憡', '1', '2023-01-28 10:35:59', '1', '2023-01-28 10:35:59', b'0');
+INSERT INTO `system_dict_data` VALUES (1228, 2, '绯荤粺娑堟伅', '2', 'system_notify_template_type', 0, 'success', '', '绔欏唴淇℃ā鐗堢殑绫诲瀷 - 绯荤粺娑堟伅', '1', '2023-01-28 10:36:20', '1', '2023-01-28 10:36:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1230, 13, '鏀粯瀹濇潯鐮佹敮浠�', 'alipay_bar', 'pay_channel_code', 0, 'primary', '', '鏀粯瀹濇潯鐮佹敮浠�', '1', '2023-02-18 23:32:24', '1', '2023-07-19 20:09:23', b'0');
+INSERT INTO `system_dict_data` VALUES (1231, 10, 'Vue2 Element UI 鏍囧噯妯$増', '10', 'infra_codegen_front_type', 0, '', '', '', '1', '2023-04-13 00:03:55', '1', '2023-04-13 00:03:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1232, 20, 'Vue3 Element Plus 鏍囧噯妯$増', '20', 'infra_codegen_front_type', 0, '', '', '', '1', '2023-04-13 00:04:08', '1', '2023-04-13 00:04:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1234, 30, 'Vben2.0 Ant Design Schema 妯$増', '30', 'infra_codegen_front_type', 1, '', '', '', '1', '2023-04-13 00:04:26', '1', '2025-07-27 10:55:14', b'0');
+INSERT INTO `system_dict_data` VALUES (1244, 0, '鎸変欢', '1', 'trade_delivery_express_charge_mode', 0, '', '', '', '1', '2023-05-21 22:46:40', '1', '2023-05-21 22:46:40', b'0');
+INSERT INTO `system_dict_data` VALUES (1245, 1, '鎸夐噸閲�', '2', 'trade_delivery_express_charge_mode', 0, '', '', '', '1', '2023-05-21 22:46:58', '1', '2023-05-21 22:46:58', b'0');
+INSERT INTO `system_dict_data` VALUES (1246, 2, '鎸変綋绉�', '3', 'trade_delivery_express_charge_mode', 0, '', '', '', '1', '2023-05-21 22:47:18', '1', '2023-05-21 22:47:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1335, 11, '璁㈠崟绉垎鎶垫墸', '11', 'member_point_biz_type', 0, '', '', '', '1', '2023-06-10 12:15:27', '1', '2023-10-11 07:41:43', b'0');
+INSERT INTO `system_dict_data` VALUES (1336, 1, '绛惧埌', '1', 'member_point_biz_type', 0, '', '', '', '1', '2023-06-10 12:15:48', '1', '2023-08-20 11:59:53', b'0');
+INSERT INTO `system_dict_data` VALUES (1341, 20, '宸查��娆�', '20', 'pay_order_status', 0, 'danger', '', '宸查��娆�', '1', '2023-07-19 18:05:37', '1', '2023-07-19 18:05:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1342, 21, '璇锋眰鎴愬姛锛屼絾鏄粨鏋滃け璐�', '21', 'pay_notify_status', 0, 'warning', '', '璇锋眰鎴愬姛锛屼絾鏄粨鏋滃け璐�', '1', '2023-07-19 18:10:47', '1', '2023-07-19 18:11:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1343, 22, '璇锋眰澶辫触', '22', 'pay_notify_status', 0, 'warning', '', NULL, '1', '2023-07-19 18:11:05', '1', '2023-07-19 18:11:27', b'0');
+INSERT INTO `system_dict_data` VALUES (1344, 4, '寰俊鎵爜鏀粯', 'wx_native', 'pay_channel_code', 0, 'success', '', '寰俊鎵爜鏀粯', '1', '2023-07-19 20:07:47', '1', '2023-07-19 20:09:03', b'0');
+INSERT INTO `system_dict_data` VALUES (1345, 5, '寰俊鏉$爜鏀粯', 'wx_bar', 'pay_channel_code', 0, 'success', '', '寰俊鏉$爜鏀粯\n', '1', '2023-07-19 20:08:06', '1', '2023-07-19 20:09:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1346, 1, '鏀粯鍗�', '1', 'pay_notify_type', 0, 'primary', '', '鏀粯鍗�', '1', '2023-07-20 12:23:17', '1', '2023-07-20 12:23:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1347, 2, '閫�娆惧崟', '2', 'pay_notify_type', 0, 'danger', '', NULL, '1', '2023-07-20 12:23:26', '1', '2023-07-20 12:23:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1348, 20, '妯℃嫙鏀粯', 'mock', 'pay_channel_code', 0, 'default', '', '妯℃嫙鏀粯', '1', '2023-07-29 11:10:51', '1', '2023-07-29 03:14:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1349, 12, '璁㈠崟绉垎鎶垫墸锛堟暣鍗曞彇娑堬級', '12', 'member_point_biz_type', 0, '', '', '', '1', '2023-08-20 12:00:03', '1', '2023-10-11 07:42:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1350, 0, '绠$悊鍛樿皟鏁�', '0', 'member_experience_biz_type', 0, '', '', NULL, '', '2023-08-22 12:41:01', '', '2023-08-22 12:41:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1351, 1, '閭�鏂板鍔�', '1', 'member_experience_biz_type', 0, '', '', NULL, '', '2023-08-22 12:41:01', '', '2023-08-22 12:41:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1352, 11, '涓嬪崟濂栧姳', '11', 'member_experience_biz_type', 0, 'success', '', NULL, '', '2023-08-22 12:41:01', '1', '2023-10-11 07:45:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1353, 12, '涓嬪崟濂栧姳锛堟暣鍗曞彇娑堬級', '12', 'member_experience_biz_type', 0, 'warning', '', NULL, '', '2023-08-22 12:41:01', '1', '2023-10-11 07:45:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1354, 4, '绛惧埌濂栧姳', '4', 'member_experience_biz_type', 0, '', '', NULL, '', '2023-08-22 12:41:01', '', '2023-08-22 12:41:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1355, 5, '鎶藉濂栧姳', '5', 'member_experience_biz_type', 0, '', '', NULL, '', '2023-08-22 12:41:01', '', '2023-08-22 12:41:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1356, 1, '蹇�掑彂璐�', '1', 'trade_delivery_type', 0, '', '', '', '1', '2023-08-23 00:04:55', '1', '2023-08-23 00:04:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1357, 2, '鐢ㄦ埛鑷彁', '2', 'trade_delivery_type', 0, '', '', '', '1', '2023-08-23 00:05:05', '1', '2023-08-23 00:05:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1358, 3, '鍝佺被鍔�', '3', 'promotion_product_scope', 0, 'default', '', '', '1', '2023-09-01 23:43:07', '1', '2023-09-28 00:27:47', b'0');
+INSERT INTO `system_dict_data` VALUES (1359, 1, '浜轰汉鍒嗛攢', '1', 'brokerage_enabled_condition', 0, '', '', '鎵�鏈夌敤鎴烽兘鍙互鍒嗛攢', '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1360, 2, '鎸囧畾鍒嗛攢', '2', 'brokerage_enabled_condition', 0, '', '', '浠呭彲鍚庡彴鎵嬪姩璁剧疆鎺ㄥ箍鍛�', '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1361, 1, '棣栨缁戝畾', '1', 'brokerage_bind_mode', 0, '', '', '鍙鐢ㄦ埛娌℃湁鎺ㄥ箍浜猴紝闅忔椂閮藉彲浠ョ粦瀹氭帹骞垮叧绯�', '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1362, 2, '娉ㄥ唽缁戝畾', '2', 'brokerage_bind_mode', 0, '', '', '浠呮柊鐢ㄦ埛娉ㄥ唽鏃舵墠鑳界粦瀹氭帹骞垮叧绯�', '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1363, 3, '瑕嗙洊缁戝畾', '3', 'brokerage_bind_mode', 0, '', '', '濡傛灉鐢ㄦ埛宸茬粡鏈夋帹骞夸汉锛屾帹骞夸汉浼氳鍙樻洿', '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1364, 1, '閽卞寘', '1', 'brokerage_withdraw_type', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1365, 2, '閾惰鍗�', '2', 'brokerage_withdraw_type', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1366, 3, '寰俊鏀舵鐮�', '3', 'brokerage_withdraw_type', 0, '', '', '鎵嬪姩鎵撴', '', '2023-09-28 02:46:05', '1', '2025-05-10 08:24:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1367, 4, '鏀粯瀹濇敹娆剧爜', '4', 'brokerage_withdraw_type', 0, '', '', '鎵嬪姩鎵撴', '', '2023-09-28 02:46:05', '1', '2025-05-10 08:24:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1368, 1, '璁㈠崟杩斾剑', '1', 'brokerage_record_biz_type', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1369, 2, '鐢宠鎻愮幇', '2', 'brokerage_record_biz_type', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1370, 3, '鐢宠鎻愮幇椹冲洖', '3', 'brokerage_record_biz_type', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1371, 0, '寰呯粨绠�', '0', 'brokerage_record_status', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1372, 1, '宸茬粨绠�', '1', 'brokerage_record_status', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1373, 2, '宸插彇娑�', '2', 'brokerage_record_status', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1374, 0, '瀹℃牳涓�', '0', 'brokerage_withdraw_status', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1375, 10, '瀹℃牳閫氳繃', '10', 'brokerage_withdraw_status', 0, 'success', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1376, 11, '鎻愮幇鎴愬姛', '11', 'brokerage_withdraw_status', 0, 'success', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1377, 20, '瀹℃牳涓嶉�氳繃', '20', 'brokerage_withdraw_status', 0, 'danger', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1378, 21, '鎻愮幇澶辫触', '21', 'brokerage_withdraw_status', 0, 'danger', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1379, 0, '宸ュ晢閾惰', '0', 'brokerage_bank_name', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1380, 1, '寤鸿閾惰', '1', 'brokerage_bank_name', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1381, 2, '鍐滀笟閾惰', '2', 'brokerage_bank_name', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1382, 3, '涓浗閾惰', '3', 'brokerage_bank_name', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1383, 4, '浜ら�氶摱琛�', '4', 'brokerage_bank_name', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1384, 5, '鎷涘晢閾惰', '5', 'brokerage_bank_name', 0, '', '', NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1385, 21, '閽卞寘', 'wallet', 'pay_channel_code', 0, 'primary', '', '', '1', '2023-10-01 21:46:19', '1', '2023-10-01 21:48:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1386, 1, '鐮嶄环涓�', '1', 'promotion_bargain_record_status', 0, 'default', '', '', '1', '2023-10-05 10:41:26', '1', '2023-10-05 10:41:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1387, 2, '鐮嶄环鎴愬姛', '2', 'promotion_bargain_record_status', 0, 'success', '', '', '1', '2023-10-05 10:41:39', '1', '2023-10-05 10:41:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1388, 3, '鐮嶄环澶辫触', '3', 'promotion_bargain_record_status', 0, 'warning', '', '', '1', '2023-10-05 10:41:57', '1', '2023-10-05 10:41:57', b'0');
+INSERT INTO `system_dict_data` VALUES (1389, 0, '鎷煎洟涓�', '0', 'promotion_combination_record_status', 0, '', '', '', '1', '2023-10-08 07:24:44', '1', '2024-10-13 10:08:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1390, 1, '鎷煎洟鎴愬姛', '1', 'promotion_combination_record_status', 0, 'success', '', '', '1', '2023-10-08 07:24:56', '1', '2024-10-13 10:08:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1391, 2, '鎷煎洟澶辫触', '2', 'promotion_combination_record_status', 0, 'warning', '', '', '1', '2023-10-08 07:25:11', '1', '2024-10-13 10:08:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1392, 2, '绠$悊鍛樹慨鏀�', '2', 'member_point_biz_type', 0, 'default', '', '', '1', '2023-10-11 07:41:34', '1', '2023-10-11 07:41:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1393, 13, '璁㈠崟绉垎鎶垫墸锛堝崟涓��娆撅級', '13', 'member_point_biz_type', 0, '', '', '', '1', '2023-10-11 07:42:29', '1', '2023-10-11 07:42:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1394, 21, '璁㈠崟绉垎濂栧姳', '21', 'member_point_biz_type', 0, 'default', '', '', '1', '2023-10-11 07:42:44', '1', '2023-10-11 07:42:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1395, 22, '璁㈠崟绉垎濂栧姳锛堟暣鍗曞彇娑堬級', '22', 'member_point_biz_type', 0, 'default', '', '', '1', '2023-10-11 07:42:55', '1', '2023-10-11 07:43:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1396, 23, '璁㈠崟绉垎濂栧姳锛堝崟涓��娆撅級', '23', 'member_point_biz_type', 0, 'default', '', '', '1', '2023-10-11 07:43:16', '1', '2023-10-11 07:43:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1397, 13, '涓嬪崟濂栧姳锛堝崟涓��娆撅級', '13', 'member_experience_biz_type', 0, 'warning', '', '', '1', '2023-10-11 07:45:24', '1', '2023-10-11 07:45:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1398, 5, '缃戜笂杞处', '5', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:24', '1', '2023-10-18 21:55:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1399, 6, '鏀粯瀹�', '6', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:38', '1', '2023-10-18 21:55:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1400, 7, '寰俊鏀粯', '7', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:53', '1', '2023-10-18 21:55:53', b'0');
+INSERT INTO `system_dict_data` VALUES (1401, 8, '鍏朵粬', '8', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:56:06', '1', '2023-10-18 21:56:06', b'0');
+INSERT INTO `system_dict_data` VALUES (1402, 1, 'IT', '1', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:02:15', '1', '2024-02-18 23:30:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1403, 2, '閲戣瀺涓�', '2', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:02:29', '1', '2024-02-18 23:30:43', b'0');
+INSERT INTO `system_dict_data` VALUES (1404, 3, '鎴垮湴浜�', '3', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:02:41', '1', '2024-02-18 23:30:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1405, 4, '鍟嗕笟鏈嶅姟', '4', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:02:54', '1', '2024-02-18 23:30:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1406, 5, '杩愯緭/鐗╂祦', '5', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:03:03', '1', '2024-02-18 23:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1407, 6, '鐢熶骇', '6', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:03:13', '1', '2024-02-18 23:31:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1408, 7, '鏀垮簻', '7', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:03:27', '1', '2024-02-18 23:31:13', b'0');
+INSERT INTO `system_dict_data` VALUES (1409, 8, '鏂囧寲浼犲獟', '8', 'crm_customer_industry', 0, 'default', '', '', '1', '2023-10-28 23:03:37', '1', '2024-02-18 23:31:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1422, 1, 'A 锛堥噸鐐瑰鎴凤級', '1', 'crm_customer_level', 0, 'primary', '', '', '1', '2023-10-28 23:07:13', '1', '2023-10-28 23:07:13', b'0');
+INSERT INTO `system_dict_data` VALUES (1423, 2, 'B 锛堟櫘閫氬鎴凤級', '2', 'crm_customer_level', 0, 'info', '', '', '1', '2023-10-28 23:07:35', '1', '2023-10-28 23:07:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1424, 3, 'C 锛堥潪浼樺厛瀹㈡埛锛�', '3', 'crm_customer_level', 0, 'default', '', '', '1', '2023-10-28 23:07:53', '1', '2023-10-28 23:07:53', b'0');
+INSERT INTO `system_dict_data` VALUES (1425, 1, '淇冮攢', '1', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:08:29', '1', '2023-10-28 23:08:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1426, 2, '鎼滅储寮曟搸', '2', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:08:39', '1', '2023-10-28 23:08:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1427, 3, '骞垮憡', '3', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:08:47', '1', '2023-10-28 23:08:47', b'0');
+INSERT INTO `system_dict_data` VALUES (1428, 4, '杞粙缁�', '4', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:08:58', '1', '2023-10-28 23:08:58', b'0');
+INSERT INTO `system_dict_data` VALUES (1429, 5, '绾夸笂娉ㄥ唽', '5', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:09:12', '1', '2023-10-28 23:09:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1430, 6, '绾夸笂鍜ㄨ', '6', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:09:22', '1', '2023-10-28 23:09:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1431, 7, '棰勭害涓婇棬', '7', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:09:39', '1', '2023-10-28 23:09:39', b'0');
+INSERT INTO `system_dict_data` VALUES (1432, 8, '闄屾嫓', '8', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:10:04', '1', '2023-10-28 23:10:04', b'0');
+INSERT INTO `system_dict_data` VALUES (1433, 9, '鐢佃瘽鍜ㄨ', '9', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:10:18', '1', '2023-10-28 23:10:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1434, 10, '閭欢鍜ㄨ', '10', 'crm_customer_source', 0, 'default', '', '', '1', '2023-10-28 23:10:33', '1', '2023-10-28 23:10:33', b'0');
+INSERT INTO `system_dict_data` VALUES (1435, 10, 'Gitee', '10', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:04:42', '1', '2023-11-04 13:04:42', b'0');
+INSERT INTO `system_dict_data` VALUES (1436, 20, '閽夐拤', '20', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:04:54', '1', '2023-11-04 13:04:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1437, 30, '浼佷笟寰俊', '30', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:05:09', '1', '2023-11-04 13:05:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1438, 31, '寰俊鍏紬骞冲彴', '31', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:05:18', '1', '2023-11-04 13:05:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1439, 32, '寰俊寮�鏀惧钩鍙�', '32', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:05:30', '1', '2023-11-04 13:05:30', b'0');
+INSERT INTO `system_dict_data` VALUES (1440, 34, '寰俊灏忕▼搴�', '34', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:05:38', '1', '2023-11-04 13:07:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1441, 1, '涓婃灦', '1', 'crm_product_status', 0, 'success', '', '', '1', '2023-10-30 21:49:34', '1', '2023-10-30 21:49:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1442, 0, '涓嬫灦', '0', 'crm_product_status', 0, 'success', '', '', '1', '2023-10-30 21:49:13', '1', '2023-10-30 21:49:13', b'0');
+INSERT INTO `system_dict_data` VALUES (1443, 15, '瀛愯〃', '15', 'infra_codegen_template_type', 0, 'default', '', '', '1', '2023-11-13 23:06:16', '1', '2023-11-13 23:06:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1444, 10, '涓昏〃锛堟爣鍑嗘ā寮忥級', '10', 'infra_codegen_template_type', 0, 'default', '', '', '1', '2023-11-14 12:32:49', '1', '2023-11-14 12:32:49', b'0');
+INSERT INTO `system_dict_data` VALUES (1445, 11, '涓昏〃锛圗RP 妯″紡锛�', '11', 'infra_codegen_template_type', 0, 'default', '', '', '1', '2023-11-14 12:33:05', '1', '2023-11-14 12:33:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1446, 12, '涓昏〃锛堝唴宓屾ā寮忥級', '12', 'infra_codegen_template_type', 0, '', '', '', '1', '2023-11-14 12:33:31', '1', '2023-11-14 12:33:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1447, 1, '璐熻矗浜�', '1', 'crm_permission_level', 0, 'default', '', '', '1', '2023-11-30 09:53:12', '1', '2023-11-30 09:53:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1448, 2, '鍙', '2', 'crm_permission_level', 0, '', '', '', '1', '2023-11-30 09:53:29', '1', '2023-11-30 09:53:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1449, 3, '璇诲啓', '3', 'crm_permission_level', 0, '', '', '', '1', '2023-11-30 09:53:36', '1', '2023-11-30 09:53:36', b'0');
+INSERT INTO `system_dict_data` VALUES (1450, 0, '鏈彁浜�', '0', 'crm_audit_status', 0, '', '', '', '1', '2023-11-30 18:56:59', '1', '2023-11-30 18:56:59', b'0');
+INSERT INTO `system_dict_data` VALUES (1451, 10, '瀹℃壒涓�', '10', 'crm_audit_status', 0, '', '', '', '1', '2023-11-30 18:57:10', '1', '2023-11-30 18:57:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1452, 20, '瀹℃牳閫氳繃', '20', 'crm_audit_status', 0, '', '', '', '1', '2023-11-30 18:57:24', '1', '2023-11-30 18:57:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1453, 30, '瀹℃牳涓嶉�氳繃', '30', 'crm_audit_status', 0, '', '', '', '1', '2023-11-30 18:57:32', '1', '2023-11-30 18:57:32', b'0');
+INSERT INTO `system_dict_data` VALUES (1454, 40, '宸插彇娑�', '40', 'crm_audit_status', 0, '', '', '', '1', '2023-11-30 18:57:42', '1', '2023-11-30 18:57:42', b'0');
+INSERT INTO `system_dict_data` VALUES (1456, 1, '鏀エ', '1', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:54:29', '1', '2023-10-18 21:54:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1457, 2, '鐜伴噾', '2', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:54:41', '1', '2023-10-18 21:54:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1458, 3, '閭斂姹囨', '3', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:54:53', '1', '2023-10-18 21:54:53', b'0');
+INSERT INTO `system_dict_data` VALUES (1459, 4, '鐢垫眹', '4', 'crm_receivable_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:07', '1', '2023-10-18 21:55:07', b'0');
+INSERT INTO `system_dict_data` VALUES (1461, 1, '涓�', '1', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:02:26', '1', '2023-12-05 23:02:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1462, 2, '鍧�', '2', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:02:34', '1', '2023-12-05 23:02:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1463, 3, '鍙�', '3', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:02:57', '1', '2023-12-05 23:02:57', b'0');
+INSERT INTO `system_dict_data` VALUES (1464, 4, '鎶�', '4', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:03:05', '1', '2023-12-05 23:03:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1465, 5, '鏋�', '5', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:03:14', '1', '2023-12-05 23:03:14', b'0');
+INSERT INTO `system_dict_data` VALUES (1466, 6, '鐡�', '6', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:03:20', '1', '2023-12-05 23:03:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1467, 7, '鐩�', '7', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:03:30', '1', '2023-12-05 23:03:30', b'0');
+INSERT INTO `system_dict_data` VALUES (1468, 8, '鍙�', '8', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:03:41', '1', '2023-12-05 23:03:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1469, 9, '鍚�', '9', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:03:48', '1', '2023-12-05 23:03:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1470, 10, '鍗冨厠', '10', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:04:03', '1', '2023-12-05 23:04:03', b'0');
+INSERT INTO `system_dict_data` VALUES (1471, 11, '绫�', '11', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:04:12', '1', '2023-12-05 23:04:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1472, 12, '绠�', '12', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:04:25', '1', '2023-12-05 23:04:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1473, 13, '濂�', '13', 'crm_product_unit', 0, '', '', '', '1', '2023-12-05 23:04:34', '1', '2023-12-05 23:04:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1474, 1, '鎵撶數璇�', '1', 'crm_follow_up_type', 0, '', '', '', '1', '2024-01-15 20:48:20', '1', '2024-01-15 20:48:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1475, 2, '鍙戠煭淇�', '2', 'crm_follow_up_type', 0, '', '', '', '1', '2024-01-15 20:48:31', '1', '2024-01-15 20:48:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1476, 3, '涓婇棬鎷滆', '3', 'crm_follow_up_type', 0, '', '', '', '1', '2024-01-15 20:49:07', '1', '2024-01-15 20:49:07', b'0');
+INSERT INTO `system_dict_data` VALUES (1477, 4, '寰俊娌熼��', '4', 'crm_follow_up_type', 0, '', '', '', '1', '2024-01-15 20:49:15', '1', '2024-01-15 20:49:15', b'0');
+INSERT INTO `system_dict_data` VALUES (1482, 4, '杞处澶辫触', '20', 'pay_transfer_status', 0, 'warning', '', '', '1', '2023-10-28 16:24:16', '1', '2025-05-08 12:59:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1483, 3, '杞处鎴愬姛', '10', 'pay_transfer_status', 0, 'success', '', '', '1', '2023-10-28 16:23:50', '1', '2025-05-08 12:58:58', b'0');
+INSERT INTO `system_dict_data` VALUES (1484, 2, '杞处杩涜涓�', '5', 'pay_transfer_status', 0, 'info', '', '', '1', '2023-10-28 16:23:12', '1', '2025-05-08 12:58:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1485, 1, '绛夊緟杞处', '0', 'pay_transfer_status', 0, 'default', '', '', '1', '2023-10-28 16:21:43', '1', '2023-10-28 16:23:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1486, 10, '鍏跺畠鍏ュ簱', '10', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-05 18:07:25', '1', '2024-02-05 18:07:43', b'0');
+INSERT INTO `system_dict_data` VALUES (1487, 11, '鍏跺畠鍏ュ簱锛堜綔搴燂級', '11', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-05 18:08:07', '1', '2024-02-05 19:20:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1488, 20, '鍏跺畠鍑哄簱', '20', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-05 18:08:51', '1', '2024-02-05 18:08:51', b'0');
+INSERT INTO `system_dict_data` VALUES (1489, 21, '鍏跺畠鍑哄簱锛堜綔搴燂級', '21', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-05 18:09:00', '1', '2024-02-05 19:20:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1490, 10, '瀹℃壒涓�', '10', 'erp_audit_status', 0, 'default', '', '', '1', '2024-02-06 00:00:21', '1', '2026-06-26 08:46:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1491, 20, '瀹℃壒閫氳繃', '20', 'erp_audit_status', 0, 'success', '', '', '1', '2024-02-06 00:00:35', '1', '2026-06-26 08:46:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1492, 30, '璋冩嫧鍏ュ簱', '30', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-07 20:34:19', '1', '2024-02-07 12:36:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1493, 31, '璋冩嫧鍏ュ簱锛堜綔搴燂級', '31', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-07 20:34:29', '1', '2024-02-07 20:37:11', b'0');
+INSERT INTO `system_dict_data` VALUES (1494, 32, '璋冩嫧鍑哄簱', '32', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-07 20:34:38', '1', '2024-02-07 12:36:33', b'0');
+INSERT INTO `system_dict_data` VALUES (1495, 33, '璋冩嫧鍑哄簱锛堜綔搴燂級', '33', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-07 20:34:49', '1', '2024-02-07 20:37:06', b'0');
+INSERT INTO `system_dict_data` VALUES (1496, 40, '鐩樼泩鍏ュ簱', '40', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-08 08:53:00', '1', '2024-02-08 08:53:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1497, 41, '鐩樼泩鍏ュ簱锛堜綔搴燂級', '41', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-08 08:53:39', '1', '2024-02-16 19:40:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1498, 42, '鐩樹簭鍑哄簱', '42', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-08 08:54:16', '1', '2024-02-08 08:54:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1499, 43, '鐩樹簭鍑哄簱锛堜綔搴燂級', '43', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-08 08:54:31', '1', '2024-02-16 19:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (1500, 50, '閿�鍞嚭搴�', '50', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-11 21:47:25', '1', '2024-02-11 21:50:40', b'0');
+INSERT INTO `system_dict_data` VALUES (1501, 51, '閿�鍞嚭搴擄紙浣滃簾锛�', '51', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-11 21:47:37', '1', '2024-02-11 21:51:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1502, 60, '閿�鍞��璐у叆搴�', '60', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-12 06:51:05', '1', '2024-02-12 06:51:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1503, 61, '閿�鍞��璐у叆搴擄紙浣滃簾锛�', '61', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-12 06:51:18', '1', '2024-02-12 06:51:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1504, 70, '閲囪喘鍏ュ簱', '70', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-16 13:10:02', '1', '2024-02-16 13:10:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1505, 71, '閲囪喘鍏ュ簱锛堜綔搴燂級', '71', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-16 13:10:10', '1', '2024-02-16 19:40:40', b'0');
+INSERT INTO `system_dict_data` VALUES (1506, 80, '閲囪喘閫�璐у嚭搴�', '80', 'erp_stock_record_biz_type', 0, '', '', '', '1', '2024-02-16 13:10:17', '1', '2024-02-16 13:10:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1507, 81, '閲囪喘閫�璐у嚭搴擄紙浣滃簾锛�', '81', 'erp_stock_record_biz_type', 0, 'danger', '', '', '1', '2024-02-16 13:10:26', '1', '2024-02-16 19:40:33', b'0');
+INSERT INTO `system_dict_data` VALUES (1509, 3, '瀹℃壒涓嶉�氳繃', '3', 'bpm_process_instance_status', 0, 'danger', '', '', '1', '2024-03-16 16:12:06', '1', '2024-03-16 16:12:06', b'0');
+INSERT INTO `system_dict_data` VALUES (1510, 4, '宸插彇娑�', '4', 'bpm_process_instance_status', 0, 'warning', '', '', '1', '2024-03-16 16:12:22', '1', '2024-03-16 16:12:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1511, 5, '宸查��鍥�', '5', 'bpm_task_status', 0, 'warning', '', '', '1', '2024-03-16 19:10:46', '1', '2024-03-08 22:41:40', b'0');
+INSERT INTO `system_dict_data` VALUES (1512, 6, '濮旀淳涓�', '6', 'bpm_task_status', 0, 'primary', '', '', '1', '2024-03-17 10:06:22', '1', '2024-03-08 22:41:40', b'0');
+INSERT INTO `system_dict_data` VALUES (1513, 7, '瀹℃壒閫氳繃涓�', '7', 'bpm_task_status', 0, 'success', '', '', '1', '2024-03-17 10:06:47', '1', '2024-03-08 22:41:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1514, 0, '寰呭鎵�', '0', 'bpm_task_status', 0, 'info', '', '', '1', '2024-03-17 10:07:11', '1', '2024-03-08 22:41:42', b'0');
+INSERT INTO `system_dict_data` VALUES (1515, 35, '鍙戣捣浜鸿嚜閫�', '35', 'bpm_task_candidate_strategy', 0, '', '', '', '1', '2024-03-22 19:45:16', '1', '2024-03-22 19:45:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1516, 1, '鎵ц鐩戝惉鍣�', 'execution', 'bpm_process_listener_type', 0, 'primary', '', '', '1', '2024-03-23 12:54:03', '1', '2024-03-23 19:14:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1517, 1, '浠诲姟鐩戝惉鍣�', 'task', 'bpm_process_listener_type', 0, 'success', '', '', '1', '2024-03-23 12:54:13', '1', '2024-03-23 19:14:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1526, 1, 'Java 绫�', 'class', 'bpm_process_listener_value_type', 0, 'primary', '', '', '1', '2024-03-23 15:08:45', '1', '2024-03-23 19:14:32', b'0');
+INSERT INTO `system_dict_data` VALUES (1527, 2, '琛ㄨ揪寮�', 'expression', 'bpm_process_listener_value_type', 0, 'success', '', '', '1', '2024-03-23 15:09:06', '1', '2024-03-23 19:14:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1528, 3, '浠g悊琛ㄨ揪寮�', 'delegateExpression', 'bpm_process_listener_value_type', 0, 'info', '', '', '1', '2024-03-23 15:11:23', '1', '2024-03-23 19:14:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1529, 1, '澶�', '1', 'date_interval', 0, '', '', '', '1', '2024-03-29 22:50:26', '1', '2024-03-29 22:50:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1530, 2, '鍛�', '2', 'date_interval', 0, '', '', '', '1', '2024-03-29 22:50:36', '1', '2024-03-29 22:50:36', b'0');
+INSERT INTO `system_dict_data` VALUES (1531, 3, '鏈�', '3', 'date_interval', 0, '', '', '', '1', '2024-03-29 22:50:46', '1', '2024-03-29 22:50:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1532, 4, '瀛e害', '4', 'date_interval', 0, '', '', '', '1', '2024-03-29 22:51:01', '1', '2024-03-29 22:51:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1533, 5, '骞�', '5', 'date_interval', 0, '', '', '', '1', '2024-03-29 22:51:07', '1', '2024-03-29 22:51:07', b'0');
+INSERT INTO `system_dict_data` VALUES (1534, 1, '璧㈠崟', '1', 'crm_business_end_status_type', 0, 'success', '', '', '1', '2024-04-13 23:26:57', '1', '2024-04-13 23:26:57', b'0');
+INSERT INTO `system_dict_data` VALUES (1535, 2, '杈撳崟', '2', 'crm_business_end_status_type', 0, 'primary', '', '', '1', '2024-04-13 23:27:31', '1', '2024-04-13 23:27:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1536, 3, '鏃犳晥', '3', 'crm_business_end_status_type', 0, 'info', '', '', '1', '2024-04-13 23:27:59', '1', '2024-04-13 23:27:59', b'0');
+INSERT INTO `system_dict_data` VALUES (1537, 1, 'OpenAI', 'OpenAI', 'ai_platform', 0, '', '', '', '1', '2024-05-09 22:33:47', '1', '2024-05-09 22:58:46', b'0');
+INSERT INTO `system_dict_data` VALUES (1538, 2, 'Ollama', 'Ollama', 'ai_platform', 0, '', '', '', '1', '2024-05-17 23:02:55', '1', '2024-05-17 23:02:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1539, 3, '鏂囧績涓�瑷�', 'YiYan', 'ai_platform', 0, '', '', '', '1', '2024-05-18 09:24:20', '1', '2024-05-18 09:29:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1540, 4, '璁鏄熺伀', 'XingHuo', 'ai_platform', 0, '', '', '', '1', '2024-05-18 10:08:56', '1', '2024-05-18 10:08:56', b'0');
+INSERT INTO `system_dict_data` VALUES (1541, 5, '閫氫箟鍗冮棶', 'TongYi', 'ai_platform', 0, '', '', '', '1', '2024-05-18 10:32:29', '1', '2024-07-06 15:42:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1542, 6, 'StableDiffusion', 'StableDiffusion', 'ai_platform', 0, '', '', '', '1', '2024-06-01 15:09:31', '1', '2024-06-01 15:10:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1543, 10, '杩涜涓�', '10', 'ai_image_status', 0, 'primary', '', '', '1', '2024-06-26 20:51:41', '1', '2024-06-26 20:52:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1544, 20, '宸插畬鎴�', '20', 'ai_image_status', 0, 'success', '', '', '1', '2024-06-26 20:52:07', '1', '2024-06-26 20:52:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1545, 30, '宸插け璐�', '30', 'ai_image_status', 0, 'warning', '', '', '1', '2024-06-26 20:52:25', '1', '2024-06-26 20:52:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1546, 7, 'Midjourney', 'Midjourney', 'ai_platform', 0, '', '', '', '1', '2024-06-26 22:14:46', '1', '2024-06-26 22:14:46', b'0');
+INSERT INTO `system_dict_data` VALUES (1547, 10, '杩涜涓�', '10', 'ai_music_status', 0, 'primary', '', '', '1', '2024-06-27 22:45:22', '1', '2024-06-28 00:56:17', b'0');
+INSERT INTO `system_dict_data` VALUES (1548, 20, '宸插畬鎴�', '20', 'ai_music_status', 0, 'success', '', '', '1', '2024-06-27 22:45:33', '1', '2024-06-28 00:56:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1549, 30, '宸插け璐�', '30', 'ai_music_status', 0, 'danger', '', '', '1', '2024-06-27 22:45:44', '1', '2024-06-28 00:56:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1550, 1, '姝岃瘝妯″紡', '1', 'ai_generate_mode', 0, '', '', '', '1', '2024-06-27 22:46:31', '1', '2024-06-28 01:22:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1551, 2, '鎻忚堪妯″紡', '2', 'ai_generate_mode', 0, '', '', '', '1', '2024-06-27 22:46:37', '1', '2024-06-28 01:22:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1552, 8, 'Suno', 'Suno', 'ai_platform', 0, '', '', '', '1', '2024-06-29 09:13:36', '1', '2024-06-29 09:13:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1553, 9, 'DeepSeek', 'DeepSeek', 'ai_platform', 0, '', '', '', '1', '2024-07-06 12:04:30', '1', '2024-07-06 12:05:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1554, 13, '鏅鸿氨', 'ZhiPu', 'ai_platform', 0, '', '', '', '1', '2024-07-06 18:00:35', '1', '2025-02-24 20:18:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1555, 4, '闀�', '4', 'ai_write_length', 0, '', '', '', '1', '2024-07-07 15:49:03', '1', '2024-07-07 15:49:03', b'0');
+INSERT INTO `system_dict_data` VALUES (1556, 5, '娈佃惤', '5', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:49:54', '1', '2024-07-07 15:49:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1557, 6, '鏂囩珷', '6', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:50:05', '1', '2024-07-07 15:50:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1558, 7, '鍗氬鏂囩珷', '7', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:50:23', '1', '2024-07-07 15:50:23', b'0');
+INSERT INTO `system_dict_data` VALUES (1559, 8, '鎯虫硶', '8', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:50:31', '1', '2024-07-07 15:50:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1560, 9, '澶х翰', '9', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:50:37', '1', '2024-07-07 15:50:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1561, 1, '鑷姩', '1', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:51:06', '1', '2024-07-07 15:51:06', b'0');
+INSERT INTO `system_dict_data` VALUES (1562, 2, '鍙嬪杽', '2', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:51:19', '1', '2024-07-07 15:51:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1563, 3, '闅忔剰', '3', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:51:27', '1', '2024-07-07 15:51:27', b'0');
+INSERT INTO `system_dict_data` VALUES (1564, 4, '鍙嬪ソ', '4', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:51:37', '1', '2024-07-07 15:51:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1565, 5, '涓撲笟', '5', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:51:49', '1', '2024-07-07 15:52:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1566, 6, '璇欒皭', '6', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:52:15', '1', '2024-07-07 15:52:15', b'0');
+INSERT INTO `system_dict_data` VALUES (1567, 7, '鏈夎叮', '7', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:52:24', '1', '2024-07-07 15:52:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1568, 8, '姝e紡', '8', 'ai_write_tone', 0, '', '', '', '1', '2024-07-07 15:54:33', '1', '2024-07-07 15:54:33', b'0');
+INSERT INTO `system_dict_data` VALUES (1570, 1, '鑷姩', '1', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:19:34', '1', '2024-07-07 15:19:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1571, 2, '鐢靛瓙閭欢', '2', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:19:50', '1', '2024-07-07 15:49:30', b'0');
+INSERT INTO `system_dict_data` VALUES (1572, 3, '娑堟伅', '3', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:20:01', '1', '2024-07-07 15:49:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1573, 4, '璇勮', '4', 'ai_write_format', 0, '', '', '', '1', '2024-07-07 15:20:13', '1', '2024-07-07 15:49:45', b'0');
+INSERT INTO `system_dict_data` VALUES (1574, 1, '鑷姩', '1', 'ai_write_language', 0, '', '', '', '1', '2024-07-07 15:44:18', '1', '2024-07-07 15:44:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1575, 2, '涓枃', '2', 'ai_write_language', 0, '', '', '', '1', '2024-07-07 15:44:28', '1', '2024-07-07 15:44:28', b'0');
+INSERT INTO `system_dict_data` VALUES (1576, 3, '鑻辨枃', '3', 'ai_write_language', 0, '', '', '', '1', '2024-07-07 15:44:37', '1', '2024-07-07 15:44:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1577, 4, '闊╄', '4', 'ai_write_language', 0, '', '', '', '1', '2024-07-07 15:46:28', '1', '2024-07-07 15:46:28', b'0');
+INSERT INTO `system_dict_data` VALUES (1578, 5, '鏃ヨ', '5', 'ai_write_language', 0, '', '', '', '1', '2024-07-07 15:46:44', '1', '2024-07-07 15:46:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1579, 1, '鑷姩', '1', 'ai_write_length', 0, '', '', '', '1', '2024-07-07 15:48:34', '1', '2024-07-07 15:48:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1580, 2, '鐭�', '2', 'ai_write_length', 0, '', '', '', '1', '2024-07-07 15:48:44', '1', '2024-07-07 15:48:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1581, 3, '涓瓑', '3', 'ai_write_length', 0, '', '', '', '1', '2024-07-07 15:48:52', '1', '2024-07-07 15:48:52', b'0');
+INSERT INTO `system_dict_data` VALUES (1584, 1, '鎾板啓', '1', 'ai_write_type', 0, '', '', '', '1', '2024-07-10 21:26:00', '1', '2024-07-10 21:26:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1585, 2, '鍥炲', '2', 'ai_write_type', 0, '', '', '', '1', '2024-07-10 21:26:06', '1', '2024-07-10 21:26:06', b'0');
+INSERT INTO `system_dict_data` VALUES (1586, 2, '鑵捐浜�', 'TENCENT', 'system_sms_channel_code', 0, '', '', '', '1', '2024-07-22 22:23:16', '1', '2024-07-22 22:23:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1587, 3, '鍗庝负浜�', 'HUAWEI', 'system_sms_channel_code', 0, '', '', '', '1', '2024-07-22 22:23:46', '1', '2024-07-22 22:23:53', b'0');
+INSERT INTO `system_dict_data` VALUES (1588, 1, 'OpenAI 寰蒋', 'AzureOpenAI', 'ai_platform', 0, '', '', '', '1', '2024-08-10 14:07:41', '1', '2024-08-10 14:07:41', b'0');
+INSERT INTO `system_dict_data` VALUES (1589, 10, 'BPMN 璁捐鍣�', '10', 'bpm_model_type', 0, 'primary', '', '', '1', '2024-08-26 15:22:17', '1', '2024-08-26 16:46:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1590, 20, 'SIMPLE 璁捐鍣�', '20', 'bpm_model_type', 0, 'success', '', '', '1', '2024-08-26 15:22:27', '1', '2024-08-26 16:45:58', b'0');
+INSERT INTO `system_dict_data` VALUES (1591, 4, '涓冪墰浜�', 'QINIU', 'system_sms_channel_code', 0, '', '', '', '1', '2024-08-31 08:45:03', '1', '2024-08-31 08:45:24', b'0');
+INSERT INTO `system_dict_data` VALUES (1592, 3, '鏂颁汉鍒�', '3', 'promotion_coupon_take_type', 0, 'info', '', '鏂颁汉娉ㄥ唽鍚庯紝鑷姩鍙戞斁', '1', '2024-09-03 11:57:16', '1', '2024-09-03 11:57:28', b'0');
+INSERT INTO `system_dict_data` VALUES (1593, 5, '寰俊闆堕挶', '5', 'brokerage_withdraw_type', 0, '', '', 'API 鎵撴', '1', '2024-10-13 11:06:48', '1', '2025-05-10 08:24:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1683, 10, '瀛楄妭璞嗗寘', 'DouBao', 'ai_platform', 0, '', '', '', '1', '2025-02-23 19:51:40', '1', '2025-02-23 19:52:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1684, 11, '鑵捐娣峰厓', 'HunYuan', 'ai_platform', 0, '', '', '', '1', '2025-02-23 20:58:04', '1', '2025-02-23 20:58:04', b'0');
+INSERT INTO `system_dict_data` VALUES (1685, 12, '纭呭熀娴佸姩', 'SiliconFlow', 'ai_platform', 0, '', '', '', '1', '2025-02-24 20:19:09', '1', '2025-02-24 20:19:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1686, 1, '鑱婂ぉ', '1', 'ai_model_type', 0, '', '', '', '1', '2025-03-03 12:26:34', '1', '2025-03-03 12:26:34', b'0');
+INSERT INTO `system_dict_data` VALUES (1687, 2, '鍥惧儚', '2', 'ai_model_type', 0, '', '', '', '1', '2025-03-03 12:27:23', '1', '2025-03-03 12:27:23', b'0');
+INSERT INTO `system_dict_data` VALUES (1688, 3, '闊抽', '3', 'ai_model_type', 0, '', '', '', '1', '2025-03-03 12:27:51', '1', '2025-03-03 12:27:51', b'0');
+INSERT INTO `system_dict_data` VALUES (1689, 4, '瑙嗛', '4', 'ai_model_type', 0, '', '', '', '1', '2025-03-03 12:28:03', '1', '2025-03-03 12:28:03', b'0');
+INSERT INTO `system_dict_data` VALUES (1690, 5, '鍚戦噺', '5', 'ai_model_type', 0, '', '', '', '1', '2025-03-03 12:28:15', '1', '2025-03-03 12:28:15', b'0');
+INSERT INTO `system_dict_data` VALUES (1691, 6, '閲嶆帓', '6', 'ai_model_type', 0, '', '', '', '1', '2025-03-03 12:28:26', '1', '2025-03-03 12:28:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1692, 14, 'MiniMax', 'MiniMax', 'ai_platform', 0, '', '', '', '1', '2025-03-11 20:04:51', '1', '2025-03-11 20:04:51', b'0');
+INSERT INTO `system_dict_data` VALUES (1693, 15, '鏈堜箣鏆楅潰', 'Moonshot', 'ai_platform', 0, '', '', '', '1', '2025-03-11 20:05:08', '1', '2025-11-24 07:17:39', b'0');
+INSERT INTO `system_dict_data` VALUES (2002, 0, '鐩磋繛璁惧', '0', 'iot_product_device_type', 0, 'default', '', '', '1', '2024-08-10 11:54:58', '1', '2025-03-17 09:28:22', b'0');
+INSERT INTO `system_dict_data` VALUES (2003, 2, '缃戝叧璁惧', '2', 'iot_product_device_type', 0, 'default', '', '', '1', '2024-08-10 11:55:08', '1', '2025-03-17 09:28:28', b'0');
+INSERT INTO `system_dict_data` VALUES (2004, 1, '缃戝叧瀛愯澶�', '1', 'iot_product_device_type', 0, 'default', '', '', '1', '2024-08-10 11:55:20', '1', '2025-03-17 09:28:31', b'0');
+INSERT INTO `system_dict_data` VALUES (2005, 1, '宸插彂甯�', '1', 'iot_product_status', 0, 'success', '', '', '1', '2024-08-10 12:10:33', '1', '2025-03-17 09:28:34', b'0');
+INSERT INTO `system_dict_data` VALUES (2006, 0, '寮�鍙戜腑', '0', 'iot_product_status', 0, 'default', '', '', '1', '2024-08-10 14:19:18', '1', '2025-03-17 09:28:39', b'0');
+INSERT INTO `system_dict_data` VALUES (2009, 0, 'Wi-Fi', '0', 'iot_net_type', 0, '', '', '', '1', '2024-09-06 22:04:47', '1', '2025-03-17 09:28:47', b'0');
+INSERT INTO `system_dict_data` VALUES (2010, 1, '绉诲姩缃戠粶', '1', 'iot_net_type', 0, '', '', '', '1', '2024-09-06 22:05:14', '1', '2025-06-12 23:27:19', b'0');
+INSERT INTO `system_dict_data` VALUES (2011, 2, '浠ュお缃�', '2', 'iot_net_type', 0, '', '', '', '1', '2024-09-06 22:05:35', '1', '2025-03-17 09:28:51', b'0');
+INSERT INTO `system_dict_data` VALUES (2012, 3, '鍏朵粬', '3', 'iot_net_type', 0, '', '', '', '1', '2024-09-06 22:05:52', '1', '2025-03-17 09:28:54', b'0');
+INSERT INTO `system_dict_data` VALUES (2018, 0, '鏈縺娲�', '0', 'iot_device_state', 0, '', '', '', '1', '2024-09-21 08:13:34', '1', '2025-03-17 09:29:09', b'0');
+INSERT INTO `system_dict_data` VALUES (2019, 1, '鍦ㄧ嚎', '1', 'iot_device_state', 0, '', '', '', '1', '2024-09-21 08:13:48', '1', '2025-03-17 09:29:12', b'0');
+INSERT INTO `system_dict_data` VALUES (2020, 2, '绂荤嚎', '2', 'iot_device_state', 0, '', '', '', '1', '2024-09-21 08:13:59', '1', '2025-03-17 09:29:14', b'0');
+INSERT INTO `system_dict_data` VALUES (2021, 1, '灞炴��', '1', 'iot_thing_model_type', 0, '', '', '', '1', '2024-09-29 20:03:01', '1', '2025-03-17 09:29:24', b'0');
+INSERT INTO `system_dict_data` VALUES (2022, 2, '鏈嶅姟', '2', 'iot_thing_model_type', 0, '', '', '', '1', '2024-09-29 20:03:11', '1', '2025-03-17 09:29:27', b'0');
+INSERT INTO `system_dict_data` VALUES (2023, 3, '浜嬩欢', '3', 'iot_thing_model_type', 0, '', '', '', '1', '2024-09-29 20:03:20', '1', '2025-03-17 09:29:29', b'0');
+INSERT INTO `system_dict_data` VALUES (2030, 1, '鍗囨瘡鍒嗛挓', 'L/min', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:34:24', b'0');
+INSERT INTO `system_dict_data` VALUES (2031, 2, '姣厠姣忓崈鍏�', 'mg/kg', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:34:27', b'0');
+INSERT INTO `system_dict_data` VALUES (2032, 3, '娴婂害', 'NTU', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:34:31', b'0');
+INSERT INTO `system_dict_data` VALUES (2033, 4, 'PH鍊�', 'pH', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:34:36', b'0');
+INSERT INTO `system_dict_data` VALUES (2034, 5, '鍦熷¥EC鍊�', 'dS/m', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:34:43', b'0');
+INSERT INTO `system_dict_data` VALUES (2035, 6, '澶槼鎬昏緪灏�', 'W/銕�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:36:20', b'0');
+INSERT INTO `system_dict_data` VALUES (2036, 7, '闄嶉洦閲�', 'mm/hour', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:36:24', b'0');
+INSERT INTO `system_dict_data` VALUES (2037, 8, '涔�', 'var', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:36:27', b'0');
+INSERT INTO `system_dict_data` VALUES (2038, 9, '鍘樻硦', 'cP', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:36:33', b'0');
+INSERT INTO `system_dict_data` VALUES (2039, 10, '楗卞拰搴�', 'aw', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:11', b'0');
+INSERT INTO `system_dict_data` VALUES (2040, 11, '涓�', 'pcs', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:19', b'0');
+INSERT INTO `system_dict_data` VALUES (2041, 12, '鍘樻柉', 'cst', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:22', b'0');
+INSERT INTO `system_dict_data` VALUES (2042, 13, '宸�', 'bar', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:24', b'0');
+INSERT INTO `system_dict_data` VALUES (2043, 14, '绾冲厠姣忓崌', 'ppt', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:27', b'0');
+INSERT INTO `system_dict_data` VALUES (2044, 15, '鍗佷嚎鍒嗕箣涓�', 'ppb', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2026-04-05 15:53:29', b'0');
+INSERT INTO `system_dict_data` VALUES (2045, 16, '寰タ姣忓帢绫�', 'uS/cm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:34', b'0');
+INSERT INTO `system_dict_data` VALUES (2046, 17, '鐗涢】姣忓簱浠�', 'N/C', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:38', b'0');
+INSERT INTO `system_dict_data` VALUES (2047, 18, '浼忕壒姣忕背', 'V/m', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:43', b'0');
+INSERT INTO `system_dict_data` VALUES (2048, 19, '婊撮��', 'ml/min', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2049, 20, '姣背姹炴煴', 'mmHg', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:48', b'0');
+INSERT INTO `system_dict_data` VALUES (2050, 21, '琛�绯�', 'mmol/L', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:37:54', b'0');
+INSERT INTO `system_dict_data` VALUES (2051, 22, '姣背姣忕', 'mm/s', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:02', b'0');
+INSERT INTO `system_dict_data` VALUES (2052, 23, '杞瘡绫�', 'turn/m', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2026-04-05 15:53:29', b'0');
+INSERT INTO `system_dict_data` VALUES (2053, 24, '娆�', 'count', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:09', b'0');
+INSERT INTO `system_dict_data` VALUES (2054, 25, '妗�', 'gear', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:11', b'0');
+INSERT INTO `system_dict_data` VALUES (2055, 26, '姝�', 'stepCount', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:13', b'0');
+INSERT INTO `system_dict_data` VALUES (2056, 27, '鏍囧噯绔嬫柟绫虫瘡灏忔椂', 'Nm3/h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:15', b'0');
+INSERT INTO `system_dict_data` VALUES (2057, 28, '鍗冧紡', 'kV', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:20', b'0');
+INSERT INTO `system_dict_data` VALUES (2058, 29, '鍗冧紡瀹�', 'kVA', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:38:24', b'0');
+INSERT INTO `system_dict_data` VALUES (2060, 30, '鍗冧箯', 'kVar', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2061, 31, '寰摝姣忓钩鏂瑰帢绫�', 'uw/cm2', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2062, 32, '鍙�', '鍙�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2063, 33, '鐩稿婀垮害', '%RH', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2064, 34, '绔嬫柟绫虫瘡绉�', 'm鲁/s', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2065, 35, '鍏枻姣忕', 'kg/s', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2066, 36, '杞瘡鍒嗛挓', 'r/min', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2067, 37, '鍚ㄦ瘡灏忔椂', 't/h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2068, 38, '鍗冨崱姣忓皬鏃�', 'KCL/h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2069, 39, '鍗囨瘡绉�', 'L/s', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2070, 40, '鍏嗗笗', 'MPa', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2026-04-05 15:53:29', b'0');
+INSERT INTO `system_dict_data` VALUES (2071, 41, '绔嬫柟绫虫瘡灏忔椂', 'm鲁/h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2072, 42, '鍗冧箯鏃�', 'kvarh', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2073, 43, '寰厠姣忓崌', '渭g/L', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2074, 44, '鍗冨崱璺噷', 'kcal', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2075, 45, '鍚夊瓧鑺�', 'GB', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2076, 46, '鍏嗗瓧鑺�', 'MB', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2077, 47, '鍗冨瓧鑺�', 'KB', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2078, 48, '瀛楄妭', 'B', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2079, 49, '寰厠姣忓钩鏂瑰垎绫虫瘡澶�', '渭g/(d銕÷穌)', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2080, 50, '鏃�', '', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2081, 51, '鐧句竾鍒嗙巼', 'ppm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2082, 52, '鍍忕礌', 'pixel', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2083, 53, '鐓у害', 'Lux', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2084, 54, '閲嶅姏鍔犻�熷害', 'grav', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2085, 55, '鍒嗚礉', 'dB', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2086, 56, '鐧惧垎姣�', '%', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2087, 57, '娴佹槑', 'lm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2088, 58, '姣旂壒', 'bit', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2089, 59, '鍏嬫瘡姣崌', 'g/mL', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2090, 60, '鍏嬫瘡鍗�', 'g/L', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2091, 61, '姣厠姣忓崌', 'mg/L', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2092, 62, '寰厠姣忕珛鏂圭背', '渭g/m鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2093, 63, '姣厠姣忕珛鏂圭背', 'mg/m鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2094, 64, '鍏嬫瘡绔嬫柟绫�', 'g/m鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2095, 65, '鍗冨厠姣忕珛鏂圭背', 'kg/m鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2096, 66, '绾虫硶', 'nF', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2097, 67, '鐨硶', 'pF', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2098, 68, '寰硶', '渭F', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2099, 69, '娉曟媺', 'F', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2100, 70, '娆у', '惟', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2101, 71, '寰畨', '渭A', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2102, 72, '姣畨', 'mA', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2103, 73, '鍗冨畨', 'kA', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2104, 74, '瀹夊煿', 'A', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2105, 75, '姣紡', 'mV', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2106, 76, '浼忕壒', 'V', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2107, 77, '姣', 'ms', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2108, 78, '绉�', 's', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2109, 79, '鍒嗛挓', 'min', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2110, 80, '灏忔椂', 'h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2111, 81, '鏃�', 'day', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2112, 82, '鍛�', 'week', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2113, 83, '鏈�', 'month', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2114, 84, '骞�', 'year', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2115, 85, '鑺�', 'kn', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2116, 86, '鍗冪背姣忓皬鏃�', 'km/h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2117, 87, '绫虫瘡绉�', 'm/s', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2118, 88, '瑙掔', '鈥�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2026-04-05 15:53:29', b'0');
+INSERT INTO `system_dict_data` VALUES (2119, 89, '鍒�', '鈥�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2120, 90, '搴�', '掳', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2121, 91, '寮у害', 'rad', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2122, 92, '璧吂', 'Hz', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2123, 93, '寰摝', '渭W', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2124, 94, '姣摝', 'mW', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2125, 95, '鍗冪摝鐗�', 'kW', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2126, 96, '鐡︾壒', 'W', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2127, 97, '鍗¤矾閲�', 'cal', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2128, 98, '鍗冪摝鏃�', 'kW路h', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2129, 99, '鐡︽椂', 'Wh', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2130, 100, '鐢靛瓙浼�', 'eV', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2131, 101, '鍗冪劍', 'kJ', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2132, 102, '鐒﹁��', 'J', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2133, 103, '鍗庢皬搴�', '鈩�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2134, 104, '寮�灏旀枃', 'K', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2135, 105, '鍚�', 't', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2136, 106, '鎽勬皬搴�', '掳C', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2137, 107, '姣笗', '1e-3Pa', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2026-04-05 15:53:29', b'0');
+INSERT INTO `system_dict_data` VALUES (2138, 108, '鐧惧笗', 'hPa', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2139, 109, '鍗冨笗', 'kPa', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2140, 110, '甯曟柉鍗�', 'Pa', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2141, 111, '姣厠', 'mg', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2142, 112, '鍏�', 'g', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2143, 113, '鍗冨厠', 'kg', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2144, 114, '鐗�', 'N', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2145, 115, '姣崌', 'mL', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2146, 116, '鍗�', 'L', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2147, 117, '绔嬫柟姣背', 'mm鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2148, 118, '绔嬫柟鍘樼背', 'cm鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2149, 119, '绔嬫柟鍗冪背', 'km鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2150, 120, '绔嬫柟绫�', 'm鲁', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2151, 121, '鍏》', 'h銕�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2152, 122, '骞虫柟鍘樼背', 'c銕�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2153, 123, '骞虫柟姣背', 'm銕�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2154, 124, '骞虫柟鍗冪背', 'k銕�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2155, 125, '骞虫柟绫�', '銕�', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2156, 126, '绾崇背', 'nm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2157, 127, '寰背', '渭m', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2158, 128, '姣背', 'mm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2159, 129, '鍘樼背', 'cm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2160, 130, '鍒嗙背', 'dm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2161, 131, '鍗冪背', 'km', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2162, 132, '绫�', 'm', 'iot_thing_model_unit', 0, '', '', '', '1', '2024-12-13 11:08:41', '1', '2025-03-17 09:40:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2165, 1, 'HTTP', '1', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:39:54', '1', '2025-06-24 12:44:47', b'0');
+INSERT INTO `system_dict_data` VALUES (2166, 2, 'TCP', '2', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:40:06', '1', '2025-06-24 12:44:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2167, 3, 'WebSocket', '3', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:40:24', '1', '2025-06-24 12:44:45', b'0');
+INSERT INTO `system_dict_data` VALUES (2168, 10, 'MQTT', '10', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:40:37', '1', '2025-06-24 12:44:44', b'0');
+INSERT INTO `system_dict_data` VALUES (2169, 20, 'Database', '20', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:41:05', '1', '2025-06-24 12:44:44', b'0');
+INSERT INTO `system_dict_data` VALUES (2170, 21, 'Redis Stream', '21', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:41:18', '1', '2025-06-24 12:44:43', b'0');
+INSERT INTO `system_dict_data` VALUES (2171, 30, 'RocketMQ', '30', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:41:30', '1', '2025-06-24 12:44:42', b'0');
+INSERT INTO `system_dict_data` VALUES (2172, 31, 'RabbitMQ', '31', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:41:47', '1', '2025-06-24 12:44:41', b'0');
+INSERT INTO `system_dict_data` VALUES (2173, 32, 'Kafka', '32', 'iot_data_sink_type_enum', 0, 'default', '', '', '1', '2025-03-09 12:41:59', '1', '2025-06-24 12:44:39', b'0');
+INSERT INTO `system_dict_data` VALUES (2174, 1, '璁惧涓婁笅绾垮彉鏇�', '1', 'iot_rule_scene_trigger_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:00:01', '\"1\"', '2025-07-06 10:28:16', b'0');
+INSERT INTO `system_dict_data` VALUES (2175, 2, '鐗╂ā鍨嬪睘鎬т笂鎶�', '2', 'iot_rule_scene_trigger_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:00:09', '\"1\"', '2025-07-06 10:28:22', b'0');
+INSERT INTO `system_dict_data` VALUES (2176, 1, '璁惧鐘舵��', 'state', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:24:58', '1', '2025-03-20 15:24:58', b'0');
+INSERT INTO `system_dict_data` VALUES (2177, 2, '璁惧灞炴��', 'property', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:25:09', '1', '2025-03-20 15:25:09', b'0');
+INSERT INTO `system_dict_data` VALUES (2178, 3, '璁惧浜嬩欢', 'event', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:25:23', '1', '2025-03-20 15:25:23', b'0');
+INSERT INTO `system_dict_data` VALUES (2179, 4, '璁惧鏈嶅姟', 'service', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:25:39', '1', '2025-03-20 15:25:39', b'0');
+INSERT INTO `system_dict_data` VALUES (2180, 5, '璁惧閰嶇疆', 'config', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:25:51', '1', '2025-03-20 15:25:57', b'0');
+INSERT INTO `system_dict_data` VALUES (2181, 6, '璁惧 OTA', 'ota', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:26:17', '1', '2025-03-20 15:26:17', b'0');
+INSERT INTO `system_dict_data` VALUES (2182, 7, '璁惧娉ㄥ唽', 'register', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:26:35', '1', '2025-03-20 15:26:35', b'0');
+INSERT INTO `system_dict_data` VALUES (2183, 8, '璁惧鎷撴墤', 'topology', 'iot_device_message_type_enum', 0, 'primary', '', '', '1', '2025-03-20 15:26:46', '1', '2025-03-20 15:26:46', b'0');
+INSERT INTO `system_dict_data` VALUES (2184, 1, '璁惧灞炴�ц缃�', '1', 'iot_rule_scene_action_type_enum', 0, 'primary', '', '', '1', '2025-03-28 15:27:12', '\"1\"', '2025-07-06 10:37:33', b'0');
+INSERT INTO `system_dict_data` VALUES (2185, 2, '璁惧鏈嶅姟璋冪敤', '2', 'iot_rule_scene_action_type_enum', 0, 'primary', '', '', '1', '2025-03-28 15:27:25', '\"1\"', '2025-07-06 10:37:41', b'0');
+INSERT INTO `system_dict_data` VALUES (2186, 100, '鍛婅瑙﹀彂', '100', 'iot_rule_scene_action_type_enum', 0, 'primary', '', '', '1', '2025-03-28 15:27:35', '\"1\"', '2025-07-06 10:37:50', b'0');
+INSERT INTO `system_dict_data` VALUES (3000, 16, '鐧惧窛鏅鸿兘', 'BaiChuan', 'ai_platform', 0, '', '', '', '1', '2025-03-23 12:15:46', '1', '2025-03-23 12:15:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3001, 40, 'Vben5.0 Ant Design Schema 妯$増', '40', 'infra_codegen_front_type', 0, '', '', NULL, '1', '2025-04-23 21:47:47', '1', '2025-09-04 23:25:12', b'0');
+INSERT INTO `system_dict_data` VALUES (3002, 6, '鏀粯瀹濅綑棰�', '6', 'brokerage_withdraw_type', 0, '', '', 'API 鎵撴', '1', '2025-05-10 08:24:49', '1', '2025-05-10 08:24:49', b'0');
+INSERT INTO `system_dict_data` VALUES (3004, 3, 'WARN', '3', 'iot_alert_level', 0, 'warning', '', '', '1', '2025-06-27 20:32:22', '1', '2025-06-27 20:34:31', b'0');
+INSERT INTO `system_dict_data` VALUES (3005, 1, 'INFO', '1', 'iot_alert_level', 0, 'primary', '', '', '1', '2025-06-27 20:33:28', '1', '2025-06-27 20:34:35', b'0');
+INSERT INTO `system_dict_data` VALUES (3006, 5, 'ERROR', '5', 'iot_alert_level', 0, 'danger', '', '', '1', '2025-06-27 20:33:50', '1', '2025-06-27 20:33:50', b'0');
+INSERT INTO `system_dict_data` VALUES (3007, 1, '鐭俊', '1', 'iot_alert_receive_type', 0, '', '', '', '1', '2025-06-27 22:49:30', '1', '2025-06-27 22:49:30', b'0');
+INSERT INTO `system_dict_data` VALUES (3008, 2, '閭', '2', 'iot_alert_receive_type', 0, '', '', '', '1', '2025-06-27 22:49:39', '1', '2025-06-27 22:50:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3009, 3, '绔欏唴淇�', '3', 'iot_alert_receive_type', 0, '', '', '', '1', '2025-06-27 22:50:20', '1', '2025-06-27 22:50:20', b'0');
+INSERT INTO `system_dict_data` VALUES (3010, 1, '鍏ㄩ儴璁惧', '1', 'iot_ota_task_device_scope', 0, '', '', '', '1', '2025-07-02 09:43:09', '1', '2025-07-02 09:43:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3011, 2, '鎸囧畾璁惧', '2', 'iot_ota_task_device_scope', 0, '', '', '', '1', '2025-07-02 09:43:15', '1', '2025-07-02 09:43:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3012, 10, '杩涜涓�', '10', 'iot_ota_task_status', 0, 'primary', '', '', '1', '2025-07-02 09:44:01', '\"1\"', '2025-07-02 09:44:21', b'0');
+INSERT INTO `system_dict_data` VALUES (3013, 20, '宸茬粨鏉�', '20', 'iot_ota_task_status', 0, 'success', '', '', '1', '2025-07-02 09:44:14', '\"1\"', '2025-07-02 23:56:12', b'0');
+INSERT INTO `system_dict_data` VALUES (3014, 30, '宸插彇娑�', '30', 'iot_ota_task_status', 0, 'danger', '', '', '1', '2025-07-02 09:44:36', '1', '2025-07-02 09:44:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3015, 0, '寰呮帹閫�', '0', 'iot_ota_task_record_status', 0, '', '', '', '1', '2025-07-02 09:45:16', '1', '2025-07-02 09:45:16', b'0');
+INSERT INTO `system_dict_data` VALUES (3016, 10, '宸叉帹閫�', '10', 'iot_ota_task_record_status', 0, '', '', '', '1', '2025-07-02 09:45:25', '1', '2025-07-02 09:45:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3017, 20, '鍗囩骇涓�', '20', 'iot_ota_task_record_status', 0, 'primary', '', '', '1', '2025-07-02 09:45:37', '1', '2025-07-02 09:45:37', b'0');
+INSERT INTO `system_dict_data` VALUES (3018, 30, '鍗囩骇鎴愬姛', '30', 'iot_ota_task_record_status', 0, 'success', '', '', '1', '2025-07-02 09:45:47', '1', '2025-07-02 09:45:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3019, 40, '鍗囩骇澶辫触', '40', 'iot_ota_task_record_status', 0, 'danger', '', '', '1', '2025-07-02 09:46:02', '1', '2025-07-02 09:46:02', b'0');
+INSERT INTO `system_dict_data` VALUES (3020, 50, '鍗囩骇鍙栨秷', '50', 'iot_ota_task_record_status', 0, 'warning', '', '', '1', '2025-07-02 09:46:09', '\"1\"', '2025-07-02 09:46:27', b'0');
+INSERT INTO `system_dict_data` VALUES (3024, 3, '璁惧浜嬩欢涓婃姤', '3', 'iot_rule_scene_trigger_type_enum', 0, '', '', '', '1', '2025-07-06 10:28:29', '1', '2025-07-06 10:28:29', b'0');
+INSERT INTO `system_dict_data` VALUES (3025, 4, '璁惧鏈嶅姟璋冪敤', '4', 'iot_rule_scene_trigger_type_enum', 0, '', '', '', '1', '2025-07-06 10:28:35', '1', '2025-07-06 10:28:35', b'0');
+INSERT INTO `system_dict_data` VALUES (3026, 100, '瀹氭椂瑙﹀彂', '100', 'iot_rule_scene_trigger_type_enum', 0, '', '', '', '1', '2025-07-06 10:28:48', '1', '2025-07-06 10:28:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3027, 101, '鍛婅鎭㈠', '101', 'iot_rule_scene_action_type_enum', 0, '', '', '', '1', '2025-07-06 10:37:57', '1', '2025-07-06 10:37:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3028, 2, 'Anthropic', 'Anthropic', 'ai_platform', 0, '', '', '', '1', '2025-08-21 22:54:24', '1', '2025-08-21 22:57:58', b'0');
+INSERT INTO `system_dict_data` VALUES (3029, 2, '璋锋瓕 Gemini', 'Gemini', 'ai_platform', 0, '', '', '', '1', '2025-08-22 22:39:35', '1', '2025-08-22 22:44:49', b'0');
+INSERT INTO `system_dict_data` VALUES (3030, 1, '鏂囦欢绯荤粺', 'filesystem', 'ai_mcp_client_name', 0, '', '', '', '1', '2025-08-28 13:58:43', '1', '2025-08-28 21:19:42', b'0');
+INSERT INTO `system_dict_data` VALUES (3031, 41, 'Vben5.0 Ant Design 鏍囧噯妯$増', '41', 'infra_codegen_front_type', 0, '', '', '', '1', '2025-09-04 23:26:07', '1', '2025-09-04 23:26:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3032, 50, 'Vben5.0 Element Plus Schema 妯$増', '50', 'infra_codegen_front_type', 0, '', '', '', '1', '2025-09-04 23:26:38', '1', '2025-09-04 23:26:38', b'0');
+INSERT INTO `system_dict_data` VALUES (3033, 51, 'Vben5.0 Element Plus 鏍囧噯妯$増', '51', 'infra_codegen_front_type', 0, '', '', '', '1', '2025-09-04 23:26:49', '1', '2025-09-04 23:26:49', b'0');
+INSERT INTO `system_dict_data` VALUES (3034, 1, 'ttt', 'tt', 'iot_ota_task_record_status', 0, 'success', '', NULL, '1', '2025-09-06 00:02:21', '1', '2025-09-06 00:02:31', b'0');
+INSERT INTO `system_dict_data` VALUES (3035, 40, '鏀粯瀹濆皬绋嬪簭', '40', 'system_social_type', 0, '', '', '', '1', '2023-11-04 13:05:38', '1', '2023-11-04 13:07:16', b'0');
+INSERT INTO `system_dict_data` VALUES (3036, 60, 'Admin Uniapp 绉诲姩绔�', '60', 'infra_codegen_front_type', 0, '', '', NULL, '1', '2025-12-16 19:25:51', '1', '2025-12-17 09:46:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3037, 42, 'Vben5.0 Antdv Next Schema 妯$増', '42', 'infra_codegen_front_type', 0, '', '', '', '1', '2026-05-23 13:52:25', '1', '2026-05-23 13:52:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3038, 43, 'Vben5.0 Antdv Next 鏍囧噯妯$増', '43', 'infra_codegen_front_type', 0, '', '', '', '1', '2026-05-23 13:52:25', '1', '2026-05-23 13:52:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3040, 1, 'UDP', 'udp', 'iot_protocol_type', 0, '', '', 'UDP 鍗忚', '1', '2026-02-04 00:32:47', '1', '2026-02-04 00:32:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3041, 2, 'WebSocket', 'websocket', 'iot_protocol_type', 0, '', '', 'WebSocket 鍗忚', '1', '2026-02-04 00:32:55', '1', '2026-02-04 00:32:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3042, 3, 'HTTP', 'http', 'iot_protocol_type', 0, '', '', 'HTTP 鍗忚', '1', '2026-02-04 00:32:55', '1', '2026-02-04 00:32:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3043, 4, 'MQTT', 'mqtt', 'iot_protocol_type', 0, 'success', '', 'MQTT 鍗忚', '1', '2026-02-04 00:32:55', '1', '2026-02-04 00:32:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3044, 5, 'EMQX', 'emqx', 'iot_protocol_type', 0, 'success', '', 'EMQX 鍗忚', '1', '2026-02-04 00:32:55', '1', '2026-02-04 00:32:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3045, 6, 'CoAP', 'coap', 'iot_protocol_type', 0, '', '', 'CoAP 鍗忚', '1', '2026-02-04 00:32:55', '1', '2026-02-04 00:32:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3046, 7, 'Modbus TCP Server', 'modbus_tcp_server', 'iot_protocol_type', 0, '', '', 'Modbus TCP Server 鍗忚', '1', '2026-02-04 00:32:55', '1', '2026-02-12 15:16:45', b'0');
+INSERT INTO `system_dict_data` VALUES (3047, 0, 'JSON', 'json', 'iot_serialize_type', 0, 'success', '', 'JSON 鏍煎紡', '1', '2026-02-04 00:33:19', '1', '2026-02-04 00:33:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3048, 1, '浜岃繘鍒�', 'binary', 'iot_serialize_type', 0, 'warning', '', '浜岃繘鍒舵牸寮�', '1', '2026-02-04 00:33:19', '1', '2026-02-04 00:33:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3049, 8, 'Modbus TCP Client', 'modbus_tcp_client', 'iot_protocol_type', 0, '', '', 'Modbus TCP Client 鍗忚', '1', '2026-02-08 18:29:46', '1', '2026-02-12 15:16:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3050, 2, '杈圭紭閲囬泦', '2', 'iot_modbus_mode', 0, 'success', '', '璁惧涓诲姩涓婃姤鏁版嵁锛屾棤闇�杞', '1', '2025-06-12 22:56:06', '1', '2026-02-09 13:03:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3051, 1, 'Modbus TCP', '1', 'iot_modbus_frame_format', 0, 'default', '', 'MBAP 澶撮儴鏍煎紡', '1', '2025-06-12 22:56:06', '1', '2025-06-12 22:56:06', b'0');
+INSERT INTO `system_dict_data` VALUES (3052, 2, 'Modbus RTU', '2', 'iot_modbus_frame_format', 0, 'warning', '', 'CRC16 鏍¢獙鏍煎紡', '1', '2025-06-12 22:56:06', '1', '2025-06-12 22:56:06', b'0');
+INSERT INTO `system_dict_data` VALUES (3053, 1, '浜戠杞', '1', 'iot_modbus_mode', 0, 'primary', '', '缃戝叧涓诲姩杞璇诲彇璁惧瀵勫瓨鍣�', '1', '2025-06-12 22:56:06', '1', '2025-06-12 22:56:06', b'0');
+INSERT INTO `system_dict_data` VALUES (3054, 1, '浼佷笟瀹㈡埛', '1', 'mes_client_type', 0, 'primary', '', '', '1', '2026-02-15 14:38:25', '1', '2026-02-15 14:38:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3055, 2, '涓汉', '2', 'mes_client_type', 0, 'success', '', '', '1', '2026-02-15 14:38:25', '1', '2026-02-15 14:38:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3056, 1, '浼樿川渚涘簲鍟�', 'A', 'mes_vendor_level', 0, 'success', '', '', '1', '2026-02-15 15:59:15', '1', '2026-02-15 15:59:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3057, 2, '姝e父', 'B', 'mes_vendor_level', 0, 'primary', '', '', '1', '2026-02-15 15:59:15', '1', '2026-02-15 15:59:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3058, 3, '閲嶇偣鍏虫敞', 'C', 'mes_vendor_level', 0, 'warning', '', '', '1', '2026-02-15 15:59:15', '1', '2026-02-15 15:59:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3059, 4, '鍔h川渚涘簲鍟�', 'D', 'mes_vendor_level', 0, 'danger', '', '', '1', '2026-02-15 15:59:15', '1', '2026-02-15 15:59:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3060, 5, '榛戝悕鍗�', 'E', 'mes_vendor_level', 0, 'info', '', '', '1', '2026-02-15 15:59:15', '1', '2026-02-15 15:59:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3061, 1, '鍋囨湡', '2', 'mes_cal_holiday_type', 0, 'success', '', '', '1', '2026-02-16 07:35:58', '1', '2026-02-16 11:20:42', b'0');
+INSERT INTO `system_dict_data` VALUES (3062, 2, '宸ヤ綔鏃�', '1', 'mes_cal_holiday_type', 0, 'primary', '', '', '1', '2026-02-16 07:35:58', '1', '2026-02-16 11:20:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3063, 1, '鍦ㄥ簱', '1', 'mes_tm_tool_status', 0, 'success', '', '', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3064, 2, '棰嗙敤涓�', '2', 'mes_tm_tool_status', 0, 'primary', '', '', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3065, 3, '缁翠慨涓�', '3', 'mes_tm_tool_status', 0, 'warning', '', '', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3066, 4, '鎶ュ簾', '4', 'mes_tm_tool_status', 0, 'danger', '', '', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3067, 1, '瀹氭湡缁存姢', '1', 'mes_tm_mainten_type', 0, 'primary', '', '', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3068, 2, '鎸変娇鐢ㄦ鏁扮淮鎶�', '2', 'mes_tm_mainten_type', 0, 'success', '', '', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3069, 1, '鍋滄満', '1', 'mes_dv_machinery_status', 0, 'success', '', '', '1', '2026-02-17 01:00:06', '1', '2026-02-17 03:28:27', b'0');
+INSERT INTO `system_dict_data` VALUES (3070, 2, '鐢熶骇涓�', '2', 'mes_dv_machinery_status', 0, 'info', '', '', '1', '2026-02-17 01:00:06', '1', '2026-02-17 03:28:33', b'0');
+INSERT INTO `system_dict_data` VALUES (3071, 3, '缁存姢涓�', '3', 'mes_dv_machinery_status', 0, 'danger', '', '', '1', '2026-02-17 01:00:06', '1', '2026-02-17 03:28:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3072, 1, '灏哄', '1', 'mes_indicator_type', 0, '', '', '', '1', '2026-02-17 02:18:18', '1', '2026-04-09 14:38:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3073, 2, '澶栬', '2', 'mes_indicator_type', 0, '', '', '', '1', '2026-02-17 02:18:18', '1', '2026-04-09 14:38:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3074, 3, '閲嶉噺', '3', 'mes_indicator_type', 0, '', '', '', '1', '2026-02-17 02:18:18', '1', '2026-04-09 14:38:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3075, 4, '鎬ц兘', '4', 'mes_indicator_type', 0, '', '', '', '1', '2026-02-17 02:18:18', '1', '2026-04-09 14:38:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3076, 5, '鎴愬垎', '5', 'mes_indicator_type', 0, '', '', '', '1', '2026-02-17 02:18:18', '1', '2026-04-09 14:38:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3077, 1, '鑷村懡缂洪櫡', '1', 'mes_defect_level', 0, 'danger', '', '', '1', '2026-02-17 02:18:18', '1', '2026-02-21 12:21:12', b'0');
+INSERT INTO `system_dict_data` VALUES (3078, 2, '涓ラ噸缂洪櫡', '2', 'mes_defect_level', 0, 'warning', '', '', '1', '2026-02-17 02:18:18', '1', '2026-02-21 12:21:15', b'0');
+INSERT INTO `system_dict_data` VALUES (3079, 3, '杞诲井缂洪櫡', '3', 'mes_defect_level', 0, 'info', '', '', '1', '2026-02-17 02:18:18', '1', '2026-02-21 12:21:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3080, 1, '鍗曠櫧鐝�', '1', 'mes_cal_shift_type', 0, 'primary', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3081, 2, '涓ょ彮鍊�', '2', 'mes_cal_shift_type', 0, 'success', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3082, 3, '涓夌彮鍊�', '3', 'mes_cal_shift_type', 0, 'warning', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3083, 1, '鎸夊搴�', '1', 'mes_cal_shift_method', 0, '', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3084, 2, '鎸夋湀', '2', 'mes_cal_shift_method', 0, '', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3085, 3, '鎸夊懆', '3', 'mes_cal_shift_method', 0, '', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3086, 4, '鎸夊ぉ', '4', 'mes_cal_shift_method', 0, '', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3089, 0, '鑽夌', '0', 'mes_cal_plan_status', 0, 'info', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3090, 1, '宸茬‘璁�', '1', 'mes_cal_plan_status', 0, 'success', '', '', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3100, 0, '鑽夌', '0', 'mes_pro_work_order_status', 0, 'info', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3101, 1, '宸茬‘璁�', '1', 'mes_pro_work_order_status', 0, 'primary', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3102, 2, '宸插畬鎴�', '2', 'mes_pro_work_order_status', 0, 'success', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3103, 3, '宸插彇娑�', '3', 'mes_pro_work_order_status', 0, 'warning', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3104, 1, '瀹㈡埛璁㈠崟', '1', 'mes_pro_work_order_source_type', 0, 'primary', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3105, 2, '搴撳瓨澶囪揣', '2', 'mes_pro_work_order_source_type', 0, 'success', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3106, 1, '鑷鐢熶骇', '1', 'mes_pro_work_order_type', 0, 'primary', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3107, 2, '浠e伐', '2', 'mes_pro_work_order_type', 0, 'warning', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3108, 3, '閲囪喘', '3', 'mes_pro_work_order_type', 0, 'info', '', '', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3121, 1, 'IQC锛堟潵鏂欐楠岋級', '1', 'mes_qc_type', 0, 'primary', '', '鏉ユ枡璐ㄩ噺妫�楠�', '1', '2026-02-18 14:12:05', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_dict_data` VALUES (3122, 2, 'IPQC锛堣繃绋嬫楠岋級', '2', 'mes_qc_type', 0, 'warning', '', '鐢熶骇鍒剁▼璐ㄩ噺妫�楠�', '1', '2026-02-18 14:12:05', '1', '2026-03-24 15:21:34', b'0');
+INSERT INTO `system_dict_data` VALUES (3123, 3, 'OQC锛堝嚭璐ф楠岋級', '3', 'mes_qc_type', 0, 'success', '', '鍑鸿揣璐ㄩ噺妫�楠�', '1', '2026-02-18 14:12:05', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_dict_data` VALUES (3124, 4, 'RQC锛堥��鏂欐楠岋級', '4', 'mes_qc_type', 0, 'danger', '', '閫�璐ц川閲忔楠�', '1', '2026-02-18 14:12:05', '1', '2026-03-24 15:22:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3125, 0, '寮�濮�-寮�濮�(SS)', '0', 'mes_pro_link_type', 0, 'default', '', '鍓嶅簭寮�濮嬪悗锛屽悗搴忓彲浠ュ紑濮�', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3126, 1, '缁撴潫-缁撴潫(FF)', '1', 'mes_pro_link_type', 0, 'default', '', '鍓嶅簭缁撴潫鍚庯紝鍚庡簭鎵嶈兘缁撴潫', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3127, 2, '寮�濮�-缁撴潫(SF)', '2', 'mes_pro_link_type', 0, 'default', '', '鍓嶅簭寮�濮嬪悗锛屽悗搴忔墠鑳界粨鏉�', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3128, 3, '缁撴潫-寮�濮�(FS)', '3', 'mes_pro_link_type', 0, 'default', '', '鍓嶅簭缁撴潫鍚庯紝鍚庡簭鎵嶈兘寮�濮�', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3129, 1, '鍒嗛挓', 'MINUTE', 'mes_time_unit_type', 0, 'default', '', '', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3130, 2, '灏忔椂', 'HOUR', 'mes_time_unit_type', 0, 'default', '', '', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3131, 3, '澶�', 'DAY', 'mes_time_unit_type', 0, 'default', '', '', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3137, 1, '璁惧鐐规', '1', 'mes_dv_subject_type', 0, 'info', '', '', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_dict_data` VALUES (3138, 2, '璁惧淇濆吇', '2', 'mes_dv_subject_type', 0, 'success', '', '', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_dict_data` VALUES (3139, 1, '寰呬繚鍏�', '0', 'mes_mainten_record_status', 0, 'info', '', NULL, 'admin', '2026-02-20 02:59:55', '1', '2026-04-16 05:32:37', b'0');
+INSERT INTO `system_dict_data` VALUES (3140, 2, '宸插畬鎴�', '4', 'mes_mainten_record_status', 0, 'success', '', NULL, 'admin', '2026-02-20 02:59:55', '1', '2026-04-16 05:32:37', b'0');
+INSERT INTO `system_dict_data` VALUES (3141, 1, '姝e父', '1', 'mes_mainten_status', 0, 'success', '', NULL, 'admin', '2026-02-20 02:59:55', 'admin', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3142, 2, '寮傚父', '0', 'mes_mainten_status', 0, 'danger', '', NULL, 'admin', '2026-02-20 02:59:55', 'admin', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3143, 1, '澶�', '1', 'mes_dv_cycle_type', 0, 'default', '', '', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0');
+INSERT INTO `system_dict_data` VALUES (3144, 2, '鍛�', '2', 'mes_dv_cycle_type', 0, 'default', '', '', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0');
+INSERT INTO `system_dict_data` VALUES (3145, 3, '鏈�', '3', 'mes_dv_cycle_type', 0, 'default', '', '', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0');
+INSERT INTO `system_dict_data` VALUES (3146, 4, '骞�', '4', 'mes_dv_cycle_type', 0, 'default', '', '', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0');
+INSERT INTO `system_dict_data` VALUES (3147, 0, '鑽夌', '0', 'mes_dv_check_plan_status', 0, 'info', '', '', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0');
+INSERT INTO `system_dict_data` VALUES (3148, 1, '宸插惎鐢�', '1', 'mes_dv_check_plan_status', 0, 'success', '', '', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0');
+INSERT INTO `system_dict_data` VALUES (3149, 1, '寰呯偣妫�', '10', 'mes_dv_check_record_status', 0, 'info', '', NULL, 'admin', '2026-02-20 09:46:19', 'admin', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3150, 2, '宸插畬鎴�', '20', 'mes_dv_check_record_status', 0, 'success', '', NULL, 'admin', '2026-02-20 09:46:19', 'admin', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3151, 1, '姝e父', '1', 'mes_dv_check_result', 0, 'success', '', NULL, 'admin', '2026-02-20 09:46:19', 'admin', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3152, 2, '寮傚父', '2', 'mes_dv_check_result', 0, 'danger', '', NULL, 'admin', '2026-02-20 09:46:19', 'admin', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3157, 1, '淇鎴愬姛', '1', 'mes_dv_repair_result', 0, 'success', '', '', '1', '2026-02-20 10:56:24', '1', '2026-02-20 10:56:24', b'0');
+INSERT INTO `system_dict_data` VALUES (3158, 2, '鎶ュ簾', '2', 'mes_dv_repair_result', 0, 'danger', '', '', '1', '2026-02-20 10:56:24', '1', '2026-02-20 10:56:24', b'0');
+INSERT INTO `system_dict_data` VALUES (3161, 1, '鏍¢獙閫氳繃', '1', 'mes_qc_check_result', 0, 'success', '', '', '1', '2026-02-20 11:23:35', '1', '2026-02-20 16:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (3162, 2, '鏍¢獙涓嶉�氳繃', '2', 'mes_qc_check_result', 0, 'danger', '', '', '1', '2026-02-20 11:23:35', '1', '2026-02-20 16:15:52', b'0');
+INSERT INTO `system_dict_data` VALUES (3166, 0, '鏈缃�', '0', 'mes_pro_andon_status', 0, 'danger', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', b'0');
+INSERT INTO `system_dict_data` VALUES (3167, 1, '宸插缃�', '1', 'mes_pro_andon_status', 0, 'success', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', b'0');
+INSERT INTO `system_dict_data` VALUES (3168, 1, '涓�绾�', '1', 'mes_pro_andon_level', 0, 'danger', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', b'0');
+INSERT INTO `system_dict_data` VALUES (3169, 2, '浜岀骇', '2', 'mes_pro_andon_level', 0, 'warning', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', b'0');
+INSERT INTO `system_dict_data` VALUES (3170, 3, '涓夌骇', '3', 'mes_pro_andon_level', 0, 'info', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', b'0');
+INSERT INTO `system_dict_data` VALUES (3171, 0, '鑽夌', '0', 'mes_pro_feedback_status', 0, 'info', '', '', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3172, 2, '瀹℃壒涓�', '2', 'mes_pro_feedback_status', 0, 'primary', '', '', '1', '2026-02-21 00:50:32', '1', '2026-03-19 00:51:54', b'0');
+INSERT INTO `system_dict_data` VALUES (3173, 3, '寰呮楠�', '3', 'mes_pro_feedback_status', 0, 'warning', '', '', '1', '2026-02-21 00:50:32', '1', '2026-03-19 00:51:54', b'0');
+INSERT INTO `system_dict_data` VALUES (3174, 4, '宸插畬鎴�', '4', 'mes_pro_feedback_status', 0, 'success', '', '', '1', '2026-02-21 00:50:32', '1', '2026-03-19 00:51:54', b'0');
+INSERT INTO `system_dict_data` VALUES (3176, 1, '鑷鎶ュ伐', '1', 'mes_pro_feedback_type', 0, 'primary', '', '', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3177, 2, '缁熶竴鎶ュ伐', '2', 'mes_pro_feedback_type', 0, 'success', '', '', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3178, 1, 'PC', 'PC', 'mes_pro_feedback_channel', 0, 'primary', '', '', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3179, 2, 'APP', 'APP', 'mes_pro_feedback_channel', 0, 'success', '', '', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3180, 3, 'PDA', 'PDA', 'mes_pro_feedback_channel', 0, 'info', '', '', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3181, 1, '娴偣', '1', 'mes_qc_result_type', 0, 'primary', '', '', '1', '2026-02-21 13:37:17', '1', '2026-02-21 13:37:17', b'0');
+INSERT INTO `system_dict_data` VALUES (3182, 2, '鏁存暟', '2', 'mes_qc_result_type', 0, 'success', '', '', '1', '2026-02-21 13:37:17', '1', '2026-02-21 13:37:17', b'0');
+INSERT INTO `system_dict_data` VALUES (3183, 3, '鏂囨湰', '3', 'mes_qc_result_type', 0, 'info', '', '', '1', '2026-02-21 13:37:17', '1', '2026-02-21 13:37:17', b'0');
+INSERT INTO `system_dict_data` VALUES (3184, 4, '瀛楀吀', '4', 'mes_qc_result_type', 0, 'warning', '', '', '1', '2026-02-21 13:37:17', '1', '2026-02-21 13:37:17', b'0');
+INSERT INTO `system_dict_data` VALUES (3185, 5, '鏂囦欢', '5', 'mes_qc_result_type', 0, 'danger', '', '', '1', '2026-02-21 13:37:17', '1', '2026-02-21 13:37:17', b'0');
+INSERT INTO `system_dict_data` VALUES (3186, 1, '鐢熶骇閫�鏂�', '1', 'mes_rqc_type', 0, 'default', '', '鐢熶骇閫�鏂欐楠�', '1', '2026-02-22 06:44:09', '1', '2026-02-22 06:44:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3187, 2, '閿�鍞��璐�', '2', 'mes_rqc_type', 0, 'default', '', '閿�鍞��璐ф楠�', '1', '2026-02-22 06:44:09', '1', '2026-02-22 06:44:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3188, 1, '鑷埗宸ュ簭妫�楠�', '1', 'mes_ipqc_type', 0, 'primary', '', '', '1', '2026-02-22 07:01:04', '1', '2026-02-22 07:01:04', b'0');
+INSERT INTO `system_dict_data` VALUES (3189, 2, '棣栨', '2', 'mes_ipqc_type', 0, 'success', '', '', '1', '2026-02-22 07:01:04', '1', '2026-02-22 07:01:04', b'0');
+INSERT INTO `system_dict_data` VALUES (3190, 3, '宸℃', '3', 'mes_ipqc_type', 0, 'warning', '', '', '1', '2026-02-22 07:01:04', '1', '2026-02-22 07:01:04', b'0');
+INSERT INTO `system_dict_data` VALUES (3191, 4, '鑷', '4', 'mes_ipqc_type', 0, 'info', '', '', '1', '2026-02-22 07:01:04', '1', '2026-02-22 07:01:04', b'0');
+INSERT INTO `system_dict_data` VALUES (3192, 5, '鎴愬搧妫�楠�', '5', 'mes_ipqc_type', 0, 'danger', '', '', '1', '2026-02-22 07:01:04', '1', '2026-02-22 07:01:04', b'0');
+INSERT INTO `system_dict_data` VALUES (3205, 0, '鑽夌', '0', 'mes_wm_arrival_notice_status', 0, 'info', '', '', '1', '2026-02-22 14:53:18', '1', '2026-02-22 14:53:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3206, 2, '寰呰川妫�', '2', 'mes_wm_arrival_notice_status', 0, 'warning', '', '', '1', '2026-02-22 14:53:18', '1', '2026-02-26 05:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3207, 3, '寰呭叆搴�', '3', 'mes_wm_arrival_notice_status', 0, 'success', '', '', '1', '2026-02-22 14:53:18', '1', '2026-02-26 05:24:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3208, 4, '宸插畬鎴�', '4', 'mes_wm_arrival_notice_status', 0, 'primary', '', '', '1', '2026-02-22 14:53:18', '1', '2026-02-26 05:24:52', b'0');
+INSERT INTO `system_dict_data` VALUES (3209, 0, '鑽夌', '0', 'mes_wm_item_receipt_status', 0, 'info', '', '', '1', '2026-02-22 14:54:05', '1', '2026-02-22 14:54:05', b'0');
+INSERT INTO `system_dict_data` VALUES (3210, 1, '寰呬笂鏋�', '2', 'mes_wm_item_receipt_status', 0, 'warning', '', '', '1', '2026-02-22 14:54:05', '1', '2026-02-26 08:03:35', b'0');
+INSERT INTO `system_dict_data` VALUES (3211, 2, '寰呮墽琛屽叆搴�', '3', 'mes_wm_item_receipt_status', 0, 'success', '', '', '1', '2026-02-22 14:54:05', '1', '2026-02-26 08:03:31', b'0');
+INSERT INTO `system_dict_data` VALUES (3212, 3, '宸插畬鎴�', '4', 'mes_wm_item_receipt_status', 0, 'primary', '', '', '1', '2026-02-22 14:54:05', '1', '2026-02-26 08:03:20', b'0');
+INSERT INTO `system_dict_data` VALUES (3213, 4, '宸插彇娑�', '5', 'mes_wm_item_receipt_status', 0, 'danger', '', '', '1', '2026-02-22 14:54:05', '1', '2026-02-26 08:03:24', b'0');
+INSERT INTO `system_dict_data` VALUES (3214, 1, '鑽夌', '0', 'mes_order_status', 0, 'info', '', '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:16:03', b'0');
+INSERT INTO `system_dict_data` VALUES (3215, 2, '宸茬‘璁�', '1', 'mes_order_status', 0, 'primary', '', '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:16:03', b'0');
+INSERT INTO `system_dict_data` VALUES (3216, 3, '瀹℃壒涓�', '2', 'mes_order_status', 0, 'warning', '', '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:16:03', b'0');
+INSERT INTO `system_dict_data` VALUES (3217, 4, '宸插鎵�', '3', 'mes_order_status', 0, 'success', '', '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:16:03', b'0');
+INSERT INTO `system_dict_data` VALUES (3218, 5, '宸插畬鎴�', '4', 'mes_order_status', 0, 'success', '', '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:16:03', b'0');
+INSERT INTO `system_dict_data` VALUES (3219, 6, '宸插彇娑�', '5', 'mes_order_status', 0, 'danger', '', '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:16:03', b'0');
+INSERT INTO `system_dict_data` VALUES (3220, 1, '鑽夌', '0', 'mes_wm_issue_status', 0, 'info', '', '鑽夌鐘舵�侊紝鏈畬鎴�', '1', '2026-02-26 15:54:25', '1', '2026-02-26 15:54:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3221, 2, '宸插畬鎴�', '4', 'mes_wm_issue_status', 0, 'success', '', '宸插畬鎴愬嚭搴�', '1', '2026-02-26 15:54:25', '1', '2026-02-26 15:54:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3222, 1, '鑽夌', '0', 'mes_wm_product_issue_status', 0, 'info', '', '鑽夌鐘舵�侊紝鍙紪杈�', '1', '2026-02-26 16:39:12', '1', '2026-03-23 13:18:02', b'0');
+INSERT INTO `system_dict_data` VALUES (3223, 2, '寰呮嫞璐�', '2', 'mes_wm_product_issue_status', 0, 'warning', '', '瀹℃壒涓紝鍙墽琛屾嫞璐�', '1', '2026-02-26 16:39:12', '1', '2026-03-23 13:18:02', b'0');
+INSERT INTO `system_dict_data` VALUES (3224, 3, '寰呮墽琛岄鍑�', '3', 'mes_wm_product_issue_status', 0, 'primary', '', '宸插鎵癸紝鎷h揣瀹屾垚', '1', '2026-02-26 16:39:12', '1', '2026-03-23 13:18:02', b'0');
+INSERT INTO `system_dict_data` VALUES (3225, 4, '宸插畬鎴�', '4', 'mes_wm_product_issue_status', 0, 'success', '', '宸插畬鎴愬嚭搴�', '1', '2026-02-26 16:39:12', '1', '2026-03-23 13:18:02', b'0');
+INSERT INTO `system_dict_data` VALUES (3226, 5, '宸插彇娑�', '5', 'mes_wm_product_issue_status', 0, 'success', '', '宸插畬鎴愬嚭搴�', '1', '2026-02-26 16:39:12', '1', '2026-03-23 13:18:02', b'0');
+INSERT INTO `system_dict_data` VALUES (3232, 1, '鑽夌', '0', 'mes_wm_return_issue_status', 0, 'info', '', '鑽夌鐘舵�侊紝鍙紪杈�', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:28:24', b'0');
+INSERT INTO `system_dict_data` VALUES (3233, 2, '寰呮楠�', '1', 'mes_wm_return_issue_status', 0, 'default', '', '宸茬‘璁わ紝绛夊緟璐ㄦ', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:28:28', b'0');
+INSERT INTO `system_dict_data` VALUES (3234, 3, '寰呬笂鏋�', '2', 'mes_wm_return_issue_status', 0, 'warning', '', '妫�楠屽畬鎴愶紝绛夊緟浠撳簱涓婃灦', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:28:31', b'0');
+INSERT INTO `system_dict_data` VALUES (3235, 4, '寰呮墽琛岄��鏂�', '3', 'mes_wm_return_issue_status', 0, 'primary', '', '涓婃灦瀹屾垚锛岀瓑寰呮墽琛岄��鏂欐搷浣�', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:28:34', b'0');
+INSERT INTO `system_dict_data` VALUES (3236, 5, '宸插畬鎴�', '4', 'mes_wm_return_issue_status', 0, 'success', '', '閫�鏂欐墽琛屽畬鎴愶紝搴撳瓨宸叉洿鏂�', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:28:37', b'0');
+INSERT INTO `system_dict_data` VALUES (3237, 6, '宸插彇娑�', '5', 'mes_wm_return_issue_status', 0, 'danger', '', '宸插彇娑�', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:28:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3238, 1, '浣欐枡閫�鏂�', '1', 'mes_wm_return_issue_type', 0, 'success', '', '浣欐枡閫�鍥烇紝鐩存帴鍚堟牸', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:27:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3239, 2, '涓嶈壇閫�鏂�', '2', 'mes_wm_return_issue_type', 0, 'danger', '', '涓嶈壇鍝侀��鍥�', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:27:49', b'0');
+INSERT INTO `system_dict_data` VALUES (3240, 3, '鍏朵粬閫�鏂�', '3', 'mes_wm_return_issue_type', 0, 'info', '', '鍏朵粬鍘熷洜閫�鏂�', '1', '2026-02-28 14:11:12', '1', '2026-02-28 14:27:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3241, 1, '寰呮', '0', 'mes_wm_quality_status', 0, 'warning', '', '寰呮鐘舵��', '1', '2026-02-28 15:00:53', '1', '2026-02-28 15:00:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3242, 2, '鍚堟牸', '1', 'mes_wm_quality_status', 0, 'success', '', '鍚堟牸鐘舵��', '1', '2026-02-28 15:00:53', '1', '2026-02-28 15:00:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3243, 3, '涓嶅悎鏍�', '2', 'mes_wm_quality_status', 0, 'danger', '', '涓嶅悎鏍肩姸鎬�', '1', '2026-02-28 15:00:53', '1', '2026-02-28 15:00:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3244, 1, '鑽夌', '0', 'mes_wm_product_receipt_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-03-01 06:03:07', '1', '2026-03-01 06:03:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3245, 2, '寰呬笂鏋�', '2', 'mes_wm_product_receipt_status', 0, 'primary', '', '寰呬笂鏋�', '1', '2026-03-01 06:03:07', '1', '2026-03-01 06:03:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3246, 3, '寰呮墽琛屽叆搴�', '3', 'mes_wm_product_receipt_status', 0, 'warning', '', '寰呮墽琛屽叆搴�', '1', '2026-03-01 06:03:07', '1', '2026-03-01 06:03:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3247, 4, '宸插畬鎴�', '4', 'mes_wm_product_receipt_status', 0, 'success', '', '宸插畬鎴�', '1', '2026-03-01 06:03:07', '1', '2026-03-01 06:03:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3248, 5, '宸插彇娑�', '5', 'mes_wm_product_receipt_status', 0, 'danger', '', '宸插彇娑�', '1', '2026-03-01 06:03:07', '1', '2026-03-01 06:03:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3252, 1, '鑽夌', '0', 'mes_wm_product_sales_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-03-02 08:55:11', '1', '2026-03-02 08:55:11', b'0');
+INSERT INTO `system_dict_data` VALUES (3253, 3, '寰呮嫞璐�', '2', 'mes_wm_product_sales_status', 0, 'warning', '', '寰呮嫞璐х姸鎬�', '1', '2026-03-02 08:55:11', '1', '2026-03-27 11:44:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3254, 4, '寰呭嚭搴�', '3', 'mes_wm_product_sales_status', 0, 'primary', '', '寰呭嚭搴撶姸鎬�', '1', '2026-03-02 08:55:11', '1', '2026-03-27 11:44:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3255, 5, '宸插畬鎴�', '4', 'mes_wm_product_sales_status', 0, 'success', '', '宸插畬鎴愮姸鎬�', '1', '2026-03-02 08:55:11', '1', '2026-03-27 11:44:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3256, 6, '宸插彇娑�', '5', 'mes_wm_product_sales_status', 0, 'danger', '', '宸插彇娑堢姸鎬�', '1', '2026-03-02 08:55:11', '1', '2026-03-27 11:44:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3272, 1, '鑽夌', '0', 'mes_wm_misc_receipt_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-03-03 07:33:41', '1', '2026-03-03 07:33:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3273, 2, '寰呮墽琛屽叆搴�', '3', 'mes_wm_misc_receipt_status', 0, 'primary', '', '寰呮墽琛屽叆搴撶姸鎬�', '1', '2026-03-03 07:33:41', '1', '2026-03-03 07:37:34', b'0');
+INSERT INTO `system_dict_data` VALUES (3274, 3, '宸插畬鎴�', '4', 'mes_wm_misc_receipt_status', 0, 'success', '', '宸插畬鎴愮姸鎬�', '1', '2026-03-03 07:33:41', '1', '2026-03-03 07:33:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3275, 4, '宸插彇娑�', '5', 'mes_wm_misc_receipt_status', 0, 'danger', '', '宸插彇娑堢姸鎬�', '1', '2026-03-03 07:33:41', '1', '2026-03-03 07:33:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3277, 1, '搴撳瓨璋冩暣', '1', 'mes_wm_misc_receipt_type', 0, 'primary', '', '搴撳瓨璋冩暣鍏ュ簱', '1', '2026-03-03 07:34:33', '1', '2026-03-03 07:34:33', b'0');
+INSERT INTO `system_dict_data` VALUES (3278, 1, '搴撳瓨璋冩暣', '1', 'mes_wm_misc_issue_type', 0, 'primary', '', '搴撳瓨璋冩暣鍑哄簱', '1', '2026-03-03 07:34:33', '1', '2026-03-03 07:34:33', b'0');
+INSERT INTO `system_dict_data` VALUES (3279, 2, '鎶ュ簾鍑哄簱', '2', 'mes_wm_misc_issue_type', 0, 'danger', '', '鎶ュ簾鍑哄簱', '1', '2026-03-03 07:36:13', '1', '2026-03-03 07:36:13', b'0');
+INSERT INTO `system_dict_data` VALUES (3280, 1, '鑽夌', '0', 'mes_wm_outsource_receipt_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-03-03 14:03:57', '1', '2026-03-03 14:03:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3281, 2, '寰呮楠�', '1', 'mes_wm_outsource_receipt_status', 0, 'warning', '', '宸茬‘璁わ紝绛夊緟璐ㄦ', '1', '2026-03-03 14:03:57', '1', '2026-03-03 14:03:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3282, 3, '寰呬笂鏋�', '2', 'mes_wm_outsource_receipt_status', 0, 'primary', '', '妫�楠屽畬鎴愶紝绛夊緟浠撳簱涓婃灦', '1', '2026-03-03 14:03:57', '1', '2026-03-03 14:03:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3283, 4, '寰呮墽琛屽叆搴�', '3', 'mes_wm_outsource_receipt_status', 0, 'warning', '', '涓婃灦瀹屾垚锛岀瓑寰呮墽琛屽叆搴撴搷浣�', '1', '2026-03-03 14:03:57', '1', '2026-03-03 14:03:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3284, 5, '宸插畬鎴�', '4', 'mes_wm_outsource_receipt_status', 0, 'success', '', '鍏ュ簱鎵ц瀹屾垚锛屽簱瀛樺凡鏇存柊', '1', '2026-03-03 14:03:57', '1', '2026-03-03 14:03:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3285, 6, '宸插彇娑�', '5', 'mes_wm_outsource_receipt_status', 0, 'danger', '', '宸插彇娑�', '1', '2026-03-03 14:03:57', '1', '2026-03-03 14:03:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3286, 1, '鑽夌', '0', 'mes_wm_outsource_issue_status', 0, 'info', '', '鑽夌鐘舵�侊紝鍙紪杈戙�佸垹闄ゃ�佹墽琛屽嚭搴�', '1', '2026-03-03 16:31:00', '1', '2026-03-03 16:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3287, 2, '寰呮嫞璐�', '2', 'mes_wm_outsource_issue_status', 0, 'warning', '', '寰呮嫞璐х姸鎬�', '1', '2026-03-03 16:31:00', '1', '2026-03-03 16:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3288, 3, '寰呮墽琛屽嚭搴�', '3', 'mes_wm_outsource_issue_status', 0, 'primary', '', '寰呮墽琛屽嚭搴撶姸鎬�', '1', '2026-03-03 16:31:00', '1', '2026-03-03 16:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3289, 4, '宸插畬鎴�', '4', 'mes_wm_outsource_issue_status', 0, 'success', '', '宸插畬鎴愶紝搴撳瓨宸叉墸鍑�', '1', '2026-03-03 16:31:00', '1', '2026-03-03 16:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3290, 5, '宸插彇娑�', '5', 'mes_wm_outsource_issue_status', 0, 'danger', '', '宸插彇娑堢姸鎬�', '1', '2026-03-03 16:31:00', '1', '2026-03-03 16:31:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3301, 1, '杈撳叆瀛楃', '1', 'mes_md_auto_code_part_type', 0, 'default', '', '杈撳叆瀛楃', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3302, 2, '褰撳墠鏃ユ湡', '2', 'mes_md_auto_code_part_type', 0, 'primary', '', '褰撳墠鏃ユ湡鏃堕棿', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3303, 3, '鍥哄畾瀛楃', '3', 'mes_md_auto_code_part_type', 0, 'success', '', '鍥哄畾瀛楃', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3304, 4, '娴佹按鍙�', '4', 'mes_md_auto_code_part_type', 0, 'warning', '', '娴佹按鍙�', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3305, 1, '宸﹁ˉ榻�', '1', 'mes_md_auto_code_padded_method', 0, 'primary', '', '宸﹁ˉ榻�', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3306, 2, '鍙宠ˉ榻�', '2', 'mes_md_auto_code_padded_method', 0, 'success', '', '鍙宠ˉ榻�', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3307, 1, '鎸夊勾', '1', 'mes_md_auto_code_cycle_method', 0, 'default', '', '鎸夊勾寰幆', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3308, 2, '鎸夋湀', '2', 'mes_md_auto_code_cycle_method', 0, 'primary', '', '鎸夋湀寰幆', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3309, 3, '鎸夊ぉ', '3', 'mes_md_auto_code_cycle_method', 0, 'success', '', '鎸夊ぉ寰幆', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3310, 4, '鎸夊皬鏃�', '4', 'mes_md_auto_code_cycle_method', 0, 'warning', '', '鎸夊皬鏃跺惊鐜�', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3311, 5, '鎸夊垎閽�', '5', 'mes_md_auto_code_cycle_method', 0, 'danger', '', '鎸夊垎閽熷惊鐜�', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3312, 10, '鎸変紶鍏ュ瓧绗�', '10', 'mes_md_auto_code_cycle_method', 0, 'info', '', '鎸変紶鍏ュ瓧绗﹀惊鐜�', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0');
+INSERT INTO `system_dict_data` VALUES (3313, 1, '浜岀淮鐮�', '1', 'mes_wm_barcode_format', 0, 'primary', '', 'QR_CODE', '1', '2026-03-05 14:37:20', '1', '2026-03-06 13:18:21', b'0');
+INSERT INTO `system_dict_data` VALUES (3314, 2, 'EAN13 鍟嗗搧鏉$爜', '2', 'mes_wm_barcode_format', 0, 'success', '', 'EAN13', '1', '2026-03-05 14:37:20', '1', '2026-03-06 13:18:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3315, 3, 'CODE39 宸ヤ笟鏉$爜', '3', 'mes_wm_barcode_format', 0, 'info', '', 'CODE39', '1', '2026-03-05 14:37:20', '1', '2026-03-06 13:18:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3316, 4, 'UPC-A 缇庡浗鍟嗗搧鐮�', '4', 'mes_wm_barcode_format', 0, 'warning', '', 'UPC_A', '1', '2026-03-05 14:37:20', '1', '2026-03-06 13:18:28', b'0');
+INSERT INTO `system_dict_data` VALUES (3318, 3, '搴撲綅', '104', 'mes_wm_barcode_biz_type', 0, 'default', '', 'AREA', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3319, 4, '瑁呯鍗�', '105', 'mes_wm_barcode_biz_type', 0, 'default', '', 'PACKAGE', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3320, 5, '搴撳瓨', '106', 'mes_wm_barcode_biz_type', 0, 'default', '', 'STOCK', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3321, 6, '鎵规', '107', 'mes_wm_barcode_biz_type', 0, 'default', '', 'BATCH', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3322, 7, '娴佽浆鍗�', '300', 'mes_wm_barcode_biz_type', 0, 'primary', '', 'PROCARD', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3323, 8, '宸ュ崟', '301', 'mes_wm_barcode_biz_type', 0, 'primary', '', 'WORKORDER', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3324, 9, '娴佽浆鍗�', '302', 'mes_wm_barcode_biz_type', 0, 'primary', '', 'TRANSORDER', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3325, 10, '璁惧', '400', 'mes_wm_barcode_biz_type', 0, 'success', '', 'MACHINERY', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3327, 12, '浜у搧鐗╂枡', '600', 'mes_wm_barcode_biz_type', 0, 'info', '', 'ITEM', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3328, 13, '渚涘簲鍟�', '601', 'mes_wm_barcode_biz_type', 0, 'info', '', 'VENDOR', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3329, 14, '宸ヤ綔绔�', '602', 'mes_wm_barcode_biz_type', 0, 'info', '', 'WORKSTATION', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3330, 15, '杞﹂棿', '603', 'mes_wm_barcode_biz_type', 0, 'info', '', 'WORKSHOP', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3331, 16, '浜哄憳', '604', 'mes_wm_barcode_biz_type', 0, 'info', '', 'USER', '1', '2026-03-05 14:37:20', '1', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3351, 1, '浠撳簱', '102', 'mes_wm_barcode_biz_type', 0, '', '', NULL, '', '2026-03-07 06:22:27', '', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3352, 2, '搴撳尯', '103', 'mes_wm_barcode_biz_type', 0, '', '', NULL, '', '2026-03-07 06:22:27', '', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3353, 11, '宸ュ叿', '500', 'mes_wm_barcode_biz_type', 0, '', '', NULL, '', '2026-03-07 06:22:27', '', '2026-03-07 06:22:27', b'0');
+INSERT INTO `system_dict_data` VALUES (3354, 17, '瀹㈡埛', '605', 'mes_wm_barcode_biz_type', 0, '', '', NULL, '', '2026-03-07 06:22:27', '', '2026-03-07 06:25:19', b'0');
+INSERT INTO `system_dict_data` VALUES (3355, 1, '鑽夌', '0', 'mes_wm_package_status', 0, 'info', '', '鑽夌鐘舵�侊紝鍙紪杈�', '1', '2026-03-08 02:05:46', '1', '2026-03-08 02:05:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3356, 2, '宸插畬鎴�', '4', 'mes_wm_package_status', 0, 'success', '', '瑁呯宸插畬鎴�', '1', '2026-03-08 02:05:46', '1', '2026-03-08 02:05:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3357, 1, '鑽夌', '0', 'mes_wm_transfer_status', 0, 'info', '', '鑽夌鐘舵�侊紝鍙紪杈�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3358, 2, '寰呯‘璁�', '1', 'mes_wm_transfer_status', 0, 'warning', '', '澶栭儴璋冩嫧寰呯‘璁ゅ埌璐�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3359, 3, '寰呬笂鏋�', '2', 'mes_wm_transfer_status', 0, 'primary', '', '寰呯淮鎶ょ洰鏍囧簱浣嶆槑缁�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3360, 4, '寰呮墽琛�', '3', 'mes_wm_transfer_status', 0, 'success', '', '鐩爣搴撲綅宸插垎閰嶏紝寰呮墽琛岃皟鎷�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3361, 5, '宸插畬鎴�', '4', 'mes_wm_transfer_status', 0, 'success', '', '璋冩嫧宸插畬鎴�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3362, 6, '宸插彇娑�', '5', 'mes_wm_transfer_status', 0, 'danger', '', '璋冩嫧宸插彇娑�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3363, 1, '鍐呴儴璋冩嫧', '1', 'mes_wm_transfer_type', 0, 'success', '', '鍐呴儴浠撳偍璋冩嫧', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3364, 2, '澶栭儴璋冩嫧', '2', 'mes_wm_transfer_type', 0, 'warning', '', '澶栭儴閰嶉��/澶栭儴鏀惰揣璋冩嫧', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3365, 1, '闈欐�佺洏鐐�', '1', 'mes_wm_stock_taking_type', 0, 'primary', '', '闈欐�佺洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3366, 2, '鍔ㄦ�佺洏鐐�', '2', 'mes_wm_stock_taking_type', 0, 'success', '', '鍔ㄦ�佺洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3367, 1, '浠撳簱', '102', 'mes_wm_stock_taking_plan_param_type', 0, 'primary', '', '鎸変粨搴撶洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3368, 2, '搴撳尯', '103', 'mes_wm_stock_taking_plan_param_type', 0, 'success', '', '鎸夊簱鍖虹洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3369, 3, '搴撲綅', '104', 'mes_wm_stock_taking_plan_param_type', 0, 'info', '', '鎸夊簱浣嶇洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3370, 4, '鐗╂枡', '600', 'mes_wm_stock_taking_plan_param_type', 0, 'warning', '', '鎸夌墿鏂欑洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3371, 5, '鎵规', '107', 'mes_wm_stock_taking_plan_param_type', 0, 'danger', '', '鎸夋壒娆$洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3372, 1, '鑽夌', '0', 'mes_wm_stock_taking_task_status', 0, 'info', '', '鑽夌', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3373, 2, '瀹℃壒涓�', '2', 'mes_wm_stock_taking_task_status', 0, 'primary', '', '鐩樼偣浠诲姟瀹℃壒涓�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3374, 3, '宸插畬鎴�', '4', 'mes_wm_stock_taking_task_status', 0, 'success', '', '宸插畬鎴�', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3375, 4, '宸插彇娑�', '5', 'mes_wm_stock_taking_task_status', 0, 'danger', '', '宸插彇娑�', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3377, 1, '姝e父', '1', 'mes_wm_stock_taking_task_line_status', 0, 'success', '', '姝e父', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3378, 2, '鐩樼泩', '2', 'mes_wm_stock_taking_task_line_status', 0, 'primary', '', '鐩樼泩', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3379, 3, '鐩樹簭', '3', 'mes_wm_stock_taking_task_line_status', 0, 'danger', '', '鐩樹簭', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3380, 6, '璐ㄩ噺鐘舵��', '900', 'mes_wm_stock_taking_plan_param_type', 0, 'default', '', '鎸夎川閲忕姸鎬佺洏鐐�', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3381, 1, '鐗╂枡', 'ITEM', 'mes_md_item_or_product', 0, 'info', '', '', '1', '2026-03-15 01:55:06', '1', '2026-03-15 01:55:06', b'0');
+INSERT INTO `system_dict_data` VALUES (3382, 2, '浜у搧', 'PRODUCT', 'mes_md_item_or_product', 0, 'success', '', '', '1', '2026-03-15 01:55:06', '1', '2026-03-15 01:55:06', b'0');
+INSERT INTO `system_dict_data` VALUES (3383, 1, '鑽夌', '0', 'mes_wm_item_consume_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-03-19 15:06:23', '1', '2026-03-19 15:06:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3384, 2, '宸插畬鎴�', '4', 'mes_wm_item_consume_status', 0, 'success', '', '宸插畬鎴�', '1', '2026-03-19 15:06:23', '1', '2026-03-19 15:06:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3385, 1, '鍒拌揣閫氱煡鍗�', '100', 'mes_qc_source_doc_type', 0, 'primary', '', 'IQC', '1', '2026-03-26 13:01:09', '1', '2026-03-26 13:01:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3386, 2, '澶栧崗鍏ュ簱鍗�', '121', 'mes_qc_source_doc_type', 0, 'warning', '', 'IQC', '1', '2026-03-26 13:01:09', '1', '2026-03-26 13:01:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3387, 3, '鐢熶骇鎶ュ伐', '304', 'mes_qc_source_doc_type', 0, 'success', '', 'IPQC', '1', '2026-03-26 13:01:09', '1', '2026-03-26 13:01:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3388, 4, '閿�鍞嚭搴撳崟', '118', 'mes_qc_source_doc_type', 0, 'info', '', 'OQC', '1', '2026-03-26 13:01:09', '1', '2026-03-26 13:01:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3389, 5, '鐢熶骇閫�鏂欏崟', '116', 'mes_qc_source_doc_type', 0, 'danger', '', 'RQC', '1', '2026-03-26 13:01:09', '1', '2026-03-26 13:01:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3390, 6, '閿�鍞��璐у崟', '119', 'mes_qc_source_doc_type', 0, 'default', '', 'RQC', '1', '2026-03-26 13:01:09', '1', '2026-03-26 13:01:09', b'0');
+INSERT INTO `system_dict_data` VALUES (3397, 2, '寰呮娴�', '1', 'mes_wm_product_sales_status', 0, 'warning', '', 'OQC 妫�楠屼腑', '1', '2026-03-27 11:44:48', '1', '2026-03-27 11:44:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3398, 0, '鑽夌', '0', 'mes_wm_return_vendor_status', 0, 'info', '', NULL, '', '2026-03-29 13:49:57', '', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3399, 1, '寰呮嫞璐�', '2', 'mes_wm_return_vendor_status', 0, 'primary', '', NULL, '', '2026-03-29 13:49:57', '', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3400, 2, '寰呮墽琛岄��璐�', '3', 'mes_wm_return_vendor_status', 0, 'warning', '', NULL, '', '2026-03-29 13:49:57', '', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3401, 3, '宸插畬鎴�', '4', 'mes_wm_return_vendor_status', 0, 'success', '', NULL, '', '2026-03-29 13:49:57', '', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3402, 4, '宸插彇娑�', '5', 'mes_wm_return_vendor_status', 0, 'danger', '', NULL, '', '2026-03-29 13:49:57', '', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3403, 1, '鑽夌', '0', 'mes_wm_sales_notice_status', 0, 'info', '', '鑽夌鐘舵�侊紝鍙互淇敼鍜屽垹闄�', '1', '2026-03-30 08:54:30', '1', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3404, 2, '寰呭嚭搴�', '3', 'mes_wm_sales_notice_status', 0, 'success', '', '宸叉彁浜ょ姸鎬侊紝涓嶅彲淇敼鍜屽垹闄�', '1', '2026-03-30 08:54:30', '1', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3405, 3, '宸插畬鎴�', '4', 'mes_wm_sales_notice_status', 0, '', '', NULL, '1', '2026-03-30 10:02:10', '1', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3406, 1, '鑽夌', '0', 'mes_wm_misc_issue_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-03-30 15:00:18', '1', '2026-03-30 15:00:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3407, 2, '寰呭嚭搴�', '3', 'mes_wm_misc_issue_status', 0, 'warning', '', '寰呭嚭搴撶姸鎬�', '1', '2026-03-30 15:00:18', '1', '2026-03-30 15:00:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3408, 3, '宸插畬鎴�', '4', 'mes_wm_misc_issue_status', 0, 'success', '', '鎵ц鍑哄簱鍚庣殑鐘舵��', '1', '2026-03-30 15:00:18', '1', '2026-03-30 15:00:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3409, 4, '宸插彇娑�', '5', 'mes_wm_misc_issue_status', 0, 'danger', '', '宸插彇娑堢姸鎬�', '1', '2026-03-30 15:00:18', '1', '2026-03-30 15:00:18', b'0');
+INSERT INTO `system_dict_data` VALUES (3415, 1, '娉ㄥ', '1', 'mes_cal_calendar_type', 0, 'primary', '', '', '1', '2026-04-01 15:23:14', '1', '2026-04-01 16:08:31', b'0');
+INSERT INTO `system_dict_data` VALUES (3416, 2, '鏈哄姞宸�', '2', 'mes_cal_calendar_type', 0, 'success', '', '', '1', '2026-04-01 15:23:14', '1', '2026-04-01 16:08:32', b'0');
+INSERT INTO `system_dict_data` VALUES (3417, 3, '缁勮', '3', 'mes_cal_calendar_type', 0, 'warning', '', '', '1', '2026-04-01 15:23:14', '1', '2026-04-01 16:08:33', b'0');
+INSERT INTO `system_dict_data` VALUES (3418, 4, '浠撳簱', '4', 'mes_cal_calendar_type', 0, 'danger', '', '', '1', '2026-04-01 15:23:14', '1', '2026-04-01 16:08:34', b'0');
+INSERT INTO `system_dict_data` VALUES (3419, 0, '鑽夌', '0', 'mes_dv_repair_status', 0, 'info', '', '', '1', '2026-04-03 17:20:23', '1', '2026-04-03 17:20:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3420, 1, '缁翠慨涓�', '1', 'mes_dv_repair_status', 0, 'primary', '', '', '1', '2026-04-03 17:20:23', '1', '2026-04-03 17:20:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3421, 2, '寰呴獙鏀�', '2', 'mes_dv_repair_status', 0, 'warning', '', '', '1', '2026-04-03 17:20:23', '1', '2026-04-03 17:20:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3422, 3, '宸茬‘璁�', '4', 'mes_dv_repair_status', 0, 'success', '', '', '1', '2026-04-03 17:20:23', '1', '2026-04-03 17:20:23', b'0');
+INSERT INTO `system_dict_data` VALUES (3423, 0, '鑽夌', '0', 'mes_wm_return_sales_status', 0, 'info', '', '', '1', '2026-04-03 17:20:25', '1', '2026-04-03 17:20:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3424, 1, '寰呮楠�', '1', 'mes_wm_return_sales_status', 0, 'warning', '', '', '1', '2026-04-03 17:20:25', '1', '2026-04-03 17:20:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3425, 2, '寰呮墽琛�', '2', 'mes_wm_return_sales_status', 0, 'warning', '', '', '1', '2026-04-03 17:20:25', '1', '2026-04-03 17:20:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3426, 3, '寰呬笂鏋�', '3', 'mes_wm_return_sales_status', 0, 'primary', '', '', '1', '2026-04-03 17:20:25', '1', '2026-04-03 17:20:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3427, 4, '宸插畬鎴�', '4', 'mes_wm_return_sales_status', 0, 'success', '', '', '1', '2026-04-03 17:20:25', '1', '2026-04-03 17:20:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3428, 5, '宸插彇娑�', '5', 'mes_wm_return_sales_status', 0, 'danger', '', '', '1', '2026-04-03 17:20:25', '1', '2026-04-03 17:20:25', b'0');
+INSERT INTO `system_dict_data` VALUES (3436, 1, '涓婂伐', '1', 'mes_pro_work_record_type', 0, 'success', '', '', '1', '2026-04-05 14:07:27', '1', '2026-04-05 14:07:27', b'0');
+INSERT INTO `system_dict_data` VALUES (3437, 2, '涓嬪伐', '2', 'mes_pro_work_record_type', 0, 'danger', '', '', '1', '2026-04-05 14:07:27', '1', '2026-04-05 14:07:27', b'0');
+INSERT INTO `system_dict_data` VALUES (3443, 1, '鑽夌', '0', 'mes_wm_product_produce_status', 0, 'info', '', '鑽夌鐘舵��', '1', '2026-04-05 15:53:46', '1', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3444, 2, '宸插畬鎴�', '4', 'mes_wm_product_produce_status', 0, 'success', '', '宸插畬鎴愮姸鎬�', '1', '2026-04-05 15:53:46', '1', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3445, 3, '宸插彇娑�', '5', 'mes_wm_product_produce_status', 0, 'danger', '', '宸插彇娑堢姸鎬�', '1', '2026-04-05 15:53:46', '1', '2026-04-05 15:53:46', b'0');
+INSERT INTO `system_dict_data` VALUES (3446, 0, '鑽夌', '0', 'mes_pro_task_status', 0, 'default', '', 'PREPARE', '1', '2026-04-16 09:47:00', '1', '2026-06-13 10:32:58', b'0');
+INSERT INTO `system_dict_data` VALUES (3447, 1, '宸插畬鎴�', '4', 'mes_pro_task_status', 0, 'success', '', 'FINISHED', '1', '2026-04-16 09:47:00', '1', '2026-06-13 10:32:58', b'0');
+INSERT INTO `system_dict_data` VALUES (3448, 2, '宸插彇娑�', '5', 'mes_pro_task_status', 0, 'danger', '', 'CANCELED', '1', '2026-04-16 09:47:00', '1', '2026-06-13 10:32:58', b'0');
+INSERT INTO `system_dict_data` VALUES (3525, 1, '姝e父', '0', 'im_message_status', 0, 'success', '', '姝e父锛堝垵濮嬬姸鎬侊級', 'admin', '2026-04-30 15:14:36', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3526, 2, '宸叉挙鍥�', '2', 'im_message_status', 0, 'danger', '', '宸叉挙鍥�', 'admin', '2026-04-30 15:14:36', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3530, 1, '涓嶉渶瑕佸洖鎵�', '0', 'im_message_receipt_status', 0, 'info', '', 'NO_RECEIPT', 'admin', '2026-04-30 11:35:07', 'admin', '2026-06-14 00:32:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3531, 2, '寰呭畬鎴�', '1', 'im_message_receipt_status', 0, 'warning', '', 'PENDING', 'admin', '2026-04-30 11:35:07', 'admin', '2026-06-14 00:32:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3532, 3, '宸插畬鎴�', '2', 'im_message_receipt_status', 0, 'success', '', 'DONE', 'admin', '2026-04-30 11:35:07', 'admin', '2026-06-14 00:32:47', b'0');
+INSERT INTO `system_dict_data` VALUES (3540, 1, '姝e父', '0', 'im_friend_status', 0, 'success', '', '姝e父濂藉弸鍏崇郴', 'admin', '2026-04-30 11:35:07', 'admin', '2026-04-30 11:35:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3541, 2, '宸插垹闄�', '1', 'im_friend_status', 0, 'danger', '', '宸插垹闄ゅソ鍙嬪叧绯�', 'admin', '2026-04-30 11:35:07', 'admin', '2026-04-30 11:35:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3550, 1, '姝e父', '0', 'im_group_status', 0, 'success', '', '缇ゆ甯�', 'admin', '2026-04-30 11:35:07', 'admin', '2026-04-30 11:35:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3551, 2, '宸茶В鏁�', '1', 'im_group_status', 0, 'info', '', '缇ゅ凡瑙f暎', 'admin', '2026-04-30 11:35:07', 'admin', '2026-04-30 11:35:07', b'0');
+INSERT INTO `system_dict_data` VALUES (3552, 1, '缇や富', '1', 'im_group_member_role', 0, 'primary', '', NULL, '1', '2026-05-02 02:14:12', '1', '2026-05-02 02:14:12', b'0');
+INSERT INTO `system_dict_data` VALUES (3553, 2, '绠$悊鍛�', '2', 'im_group_member_role', 0, 'warning', '', NULL, '1', '2026-05-02 02:14:12', '1', '2026-05-02 02:14:12', b'0');
+INSERT INTO `system_dict_data` VALUES (3554, 3, '鏅�氭垚鍛�', '3', 'im_group_member_role', 0, 'info', '', NULL, '1', '2026-05-02 02:14:12', '1', '2026-05-02 02:14:12', b'0');
+INSERT INTO `system_dict_data` VALUES (3555, 1, '鎼滅储', '1', 'im_friend_add_source', 0, 'default', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-05 11:46:57', b'0');
+INSERT INTO `system_dict_data` VALUES (3556, 2, '缇よ亰', '2', 'im_friend_add_source', 0, 'default', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-05 11:46:53', b'0');
+INSERT INTO `system_dict_data` VALUES (3557, 3, '鎵爜', '3', 'im_friend_add_source', 0, 'default', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-05 11:46:50', b'0');
+INSERT INTO `system_dict_data` VALUES (3558, 4, '鍚嶇墖', '4', 'im_friend_add_source', 0, 'default', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-05 11:46:48', b'0');
+INSERT INTO `system_dict_data` VALUES (3559, 1, '绛夊緟楠岃瘉', '0', 'im_friend_request_handle_result', 0, 'warning', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-04 02:43:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3560, 2, '宸叉坊鍔�', '1', 'im_friend_request_handle_result', 0, 'success', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-04 02:43:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3561, 3, '宸叉嫆缁�', '2', 'im_friend_request_handle_result', 0, 'info', '', NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-04 02:43:41', b'0');
+INSERT INTO `system_dict_data` VALUES (3562, 101, '鏂囨湰', '101', 'im_content_type', 0, '', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3563, 102, '鍥剧墖', '102', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3564, 103, '璇煶', '103', 'im_content_type', 0, 'warning', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3565, 104, '瑙嗛', '104', 'im_content_type', 0, 'warning', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3566, 105, '鏂囦欢', '105', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3568, 2101, '鎾ゅ洖', '2101', 'im_content_type', 0, 'danger', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3569, 2200, '鍥炴墽', '2200', 'im_content_type', 0, 'warning', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3570, 2201, '宸茶', '2201', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3571, 1501, '缇ゅ垱寤�', '1501', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3572, 1502, '缇や俊鎭彉鏇�', '1502', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3573, 1503, '鏀跺埌鏂扮殑鍏ョ兢鐢宠', '1503', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3574, 1504, '鎴愬憳閫�缇�', '1504', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3575, 1505, '鍏ョ兢鐢宠琚悓鎰�', '1505', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3576, 1506, '鍏ョ兢鐢宠琚嫆缁�', '1506', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (3577, 1507, '缇や富杞', '1507', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3578, 1508, '鎴愬憳琚Щ鍑�', '1508', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3579, 1509, '鎴愬憳鍔犲叆', '1509', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3580, 1510, '鑷敱杩涚兢', '1510', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3581, 1511, '缇よВ鏁�', '1511', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3582, 1512, '鎴愬憳绂佽█', '1512', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3583, 1513, '鎴愬憳鍙栨秷绂佽█', '1513', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3584, 1514, '鍏ㄧ兢绂佽█', '1514', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3585, 1515, '鍏ㄧ兢鍙栨秷绂佽█', '1515', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3586, 1516, '鎴愬憳鏄电О鍙樻洿', '1516', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3587, 1517, '娣诲姞绠$悊鍛�', '1517', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3588, 1518, '鎾ら攢绠$悊鍛�', '1518', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3589, 1519, '缇ゅ叕鍛婂彉鏇�', '1519', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3590, 1520, '缇ゅ悕鍙樻洿', '1520', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3591, 1531, '缇ゆ秷鎭疆椤�', '1531', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3592, 1532, '缇ゆ秷鎭彇娑堢疆椤�', '1532', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3593, 1533, '缇ゅ皝绂佸彉鏇�', '1533', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 11:52:30', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3594, 1204, '鏂板濂藉弸', '1204', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-05-05 13:26:53', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3595, 1205, '濂藉弸琚垹闄�', '1205', 'im_content_type', 0, 'warning', '', NULL, 'admin', '2026-05-05 13:26:53', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (3596, 1, '鎼滅储', '1', 'im_group_add_source', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3597, 2, '閭�璇�', '2', 'im_group_add_source', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3598, 3, '鎵爜', '3', 'im_group_add_source', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3599, 4, '鍒嗕韩閾炬帴', '4', 'im_group_add_source', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3600, 1, '鏈鐞�', '0', 'im_group_request_handle_result', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3601, 2, '鍚屾剰', '1', 'im_group_request_handle_result', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (3602, 3, '鎷掔粷', '2', 'im_group_request_handle_result', 0, '', '', NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0');
+INSERT INTO `system_dict_data` VALUES (1061051, 1, '瀹㈡埛', '1', 'merchant_type', 0, 'primary', '', '瀹㈡埛', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061052, 2, '渚涘簲鍟�', '2', 'merchant_type', 0, 'success', '', '渚涘簲鍟�', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061053, 3, '瀹㈡埛/渚涘簲鍟�', '3', 'merchant_type', 0, 'warning', '', '瀹㈡埛/渚涘簲鍟�', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061061, 1, '鍏ュ簱鍗�', '1', 'wms_order_type', 0, 'success', '', '', '1', '2026-05-10 17:51:46', '1', '2026-05-14 08:14:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061062, 2, '鍑哄簱鍗�', '2', 'wms_order_type', 0, 'danger', '', '', '1', '2026-05-10 17:51:46', '1', '2026-05-14 08:14:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061063, 3, '绉诲簱鍗�', '3', 'wms_order_type', 0, 'primary', '', '', '1', '2026-05-10 17:51:46', '1', '2026-05-14 08:14:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061064, 4, '鐩樺簱鍗�', '4', 'wms_order_type', 0, 'warning', '', '', '1', '2026-05-10 17:51:46', '1', '2026-05-14 08:14:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061071, 1, '鑽夌', '0', 'wms_order_status', 0, 'info', '', '鑽夌', '1', '2026-05-12 13:40:29', '1', '2026-05-12 13:40:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1061072, 2, '宸插畬鎴�', '4', 'wms_order_status', 0, 'success', '', '宸插畬鎴�', '1', '2026-05-12 13:40:29', '1', '2026-05-12 13:40:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1061073, 3, '宸蹭綔搴�', '5', 'wms_order_status', 0, 'danger', '', '宸蹭綔搴�', '1', '2026-05-12 13:40:29', '1', '2026-05-12 13:40:29', b'0');
+INSERT INTO `system_dict_data` VALUES (1061081, 1, '鐢熶骇鍏ュ簱', '100', 'wms_receipt_order_type', 0, 'success', '', '', '1', '2026-05-11 11:21:49', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1061082, 2, '閲囪喘鍏ュ簱', '101', 'wms_receipt_order_type', 0, 'primary', '', '', '1', '2026-05-11 11:21:49', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1061083, 3, '閫�璐у叆搴�', '102', 'wms_receipt_order_type', 0, 'warning', '', '', '1', '2026-05-11 11:21:49', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1061084, 4, '褰掕繕鍏ュ簱', '103', 'wms_receipt_order_type', 0, 'info', '', '', '1', '2026-05-13 16:02:33', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_dict_data` VALUES (1061091, 1, '閫�璐у嚭搴�', '200', 'wms_shipment_order_type', 0, 'warning', '', '閫�璐у嚭搴�', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1061092, 2, '閿�鍞嚭搴�', '201', 'wms_shipment_order_type', 0, 'primary', '', '閿�鍞嚭搴�', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1061093, 3, '鐢熶骇鍑哄簱', '202', 'wms_shipment_order_type', 0, 'success', '', '鐢熶骇鍑哄簱', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1061096, 1, '璇煶', '1', 'im_rtc_call_media_type', 0, '', '', '璇煶閫氳瘽', 'admin', '2026-05-16 11:34:50', 'admin', '2026-05-16 11:34:50', b'0');
+INSERT INTO `system_dict_data` VALUES (1061097, 2, '瑙嗛', '2', 'im_rtc_call_media_type', 0, '', '', '瑙嗛閫氳瘽', 'admin', '2026-05-16 11:34:50', 'admin', '2026-05-16 11:34:50', b'0');
+INSERT INTO `system_dict_data` VALUES (1061098, 1, '绉佽亰', '1', 'im_rtc_call_conversation_type', 0, 'primary', '', '涓�瀵逛竴绉佽亰閫氳瘽', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061099, 2, '缇よ亰', '2', 'im_rtc_call_conversation_type', 0, 'success', '', '缇ゅ唴澶氫汉閫氳瘽', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061100, 1, '鍒涘缓', '10', 'im_rtc_call_status', 0, 'info', '', '閫氳瘽宸插垱寤猴紝绛夊緟鎺ラ��', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061101, 2, '杩涜涓�', '20', 'im_rtc_call_status', 0, 'primary', '', '宸叉湁浜烘帴閫氾紝閫氳瘽涓�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061102, 3, '宸茬粨鏉�', '30', 'im_rtc_call_status', 0, 'success', '', '閫氳瘽缁撴潫', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061103, 1, '閫氳瘽缁撴潫', '1', 'im_rtc_call_end_reason', 0, 'success', '', '鎺ラ�氬悗浠讳竴鏂逛富鍔ㄦ寕鏂�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061104, 2, '宸叉嫆缁�', '2', 'im_rtc_call_end_reason', 0, 'warning', '', '琚彨鎺ラ�氬墠鐐规嫆鎺�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061105, 3, '宸插彇娑�', '3', 'im_rtc_call_end_reason', 0, 'info', '', '涓诲彨鎺ラ�氬墠涓诲姩鍙栨秷', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061106, 4, '鏃犱汉鎺ュ惉', '4', 'im_rtc_call_end_reason', 0, 'info', '', '鎸搩瓒呮椂鏈帴閫�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061107, 5, '瀵规柟姝e繖', '5', 'im_rtc_call_end_reason', 0, 'warning', '', '瀵规柟鍦ㄥ彟涓�閫氳瘽涓�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061108, 6, '閫氳瘽寮傚父', '9', 'im_rtc_call_end_reason', 0, 'danger', '', '缃戠粶涓柇銆佽澶囧け璐ョ瓑', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061109, 1, '鍙戣捣浜�', '1', 'im_rtc_participant_role', 0, 'primary', '', '閫氳瘽鍙戣捣鑰�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061110, 2, '琚個璇疯��', '2', 'im_rtc_participant_role', 0, 'info', '', '琚個璇峰姞鍏�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061111, 3, '涓诲姩鍔犲叆鑰�', '3', 'im_rtc_participant_role', 0, 'success', '', '缇ら�氳瘽鍦烘櫙锛屾梺瑙傝�呬富鍔ㄥ姞鍏�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061112, 1, '閭�璇蜂腑', '10', 'im_rtc_participant_status', 0, 'info', '', '宸插彂鍑� invite锛岀瓑寰呭搷搴�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061113, 2, '宸插姞鍏�', '20', 'im_rtc_participant_status', 0, 'primary', '', '宸叉帴閫氬苟杩涘叆鎴块棿', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061114, 3, '宸叉嫆缁�', '30', 'im_rtc_participant_status', 0, 'warning', '', '鎺ラ�氬墠鐐规嫆鎺�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061115, 4, '鏈簲绛�', '40', 'im_rtc_participant_status', 0, 'info', '', '閫氳瘽宸茬粨鏉熶粛鏈簲绛�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061116, 5, '宸茬寮�', '50', 'im_rtc_participant_status', 0, 'success', '', '鎺ラ�氬悗鎸傛柇 / 绂诲紑', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_dict_data` VALUES (1061117, 1610, '閫氳瘽寮�濮�', '1610', 'im_content_type', 0, 'info', '', '鍏ユ秷鎭祦锛涚鑱婂畾鍚戦�氱煡锛岀兢鑱婂叏鍛樺箍鎾�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1061118, 1611, '閫氳瘽缁撴潫', '1611', 'im_content_type', 0, 'info', '', '鍏ユ秷鎭祦锛涚鑱婂噯姘旀场锛岀兢鑱婄郴缁� tip', 'admin', '2026-05-18 03:36:12', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1061119, 125, '绱犳潗', '125', 'im_content_type', 0, 'success', '', '棰戦亾杩愯惀鎺ㄩ�佺殑鍥炬枃鍗$墖娑堟伅', '1', '2026-05-18 13:14:34', 'admin', '2026-06-16 03:41:55', b'0');
+INSERT INTO `system_dict_data` VALUES (1061120, 1, '瀵屾枃鏈�', '1', 'im_channel_material_type', 0, 'primary', '', '', '1', '2026-05-19 14:09:25', '1', '2026-05-19 14:09:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061121, 2, '澶栭摼', '2', 'im_channel_material_type', 0, 'info', '', '', '1', '2026-05-19 14:09:25', '1', '2026-05-19 14:09:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061122, 7, 'SN 鐮�', '109', 'mes_wm_barcode_biz_type', 0, 'default', '', 'SN', '1', '2026-06-13 10:30:30', '1', '2026-06-13 10:30:30', b'0');
+INSERT INTO `system_dict_data` VALUES (1061123, 107, '鍚堝苟杞彂', '107', 'im_content_type', 0, '', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061124, 108, '鍚嶇墖', '108', 'im_content_type', 0, '', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061125, 115, '琛ㄦ儏', '115', 'im_content_type', 0, '', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061126, 1201, '濂藉弸鐢宠琚悓鎰�', '1201', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061127, 1202, '濂藉弸鐢宠琚嫆缁�', '1202', 'im_content_type', 0, 'warning', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061128, 1203, '鏀跺埌鏂扮殑濂藉弸鐢宠', '1203', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061129, 1207, '鍔犲叆榛戝悕鍗�', '1207', 'im_content_type', 0, 'danger', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061130, 1208, '绉诲嚭榛戝悕鍗�', '1208', 'im_content_type', 0, 'success', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061131, 1209, '濂藉弸璧勬枡鍙樻洿', '1209', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061132, 1210, '濂藉弸淇℃伅鎵归噺鏇存柊', '1210', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061133, 1530, '缇ゆ垚鍛樹釜浜鸿缃彉鏇�', '1530', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061134, 1601, '閫氳瘽淇′护', '1601', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061135, 1602, '閫氳瘽鍙備笌鑰呭姞鍏�', '1602', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061136, 1603, '閫氳瘽鍙備笌鑰呯寮�', '1603', 'im_content_type', 0, 'info', '', NULL, 'admin', '2026-06-16 03:47:00', 'admin', '2026-06-16 03:47:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061137, 10, '閿�鍞鐣�', '10', 'wms_reserve_biz_type', 0, 'primary', '', '閿�鍞鍗曢鐣欏簱瀛�', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061138, 20, '鐢熶骇棰勭暀', '20', 'wms_reserve_biz_type', 0, 'success', '', '鐢熶骇宸ュ崟棰勭暀搴撳瓨', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061139, 10, '鍏ュ簱', '10', 'wms_transaction_type', 0, 'success', '', '搴撳瓨鍏ュ簱', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061140, 20, '鍑哄簱', '20', 'wms_transaction_type', 0, 'warning', '', '搴撳瓨鍑哄簱', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061141, 30, '棰勭暀', '30', 'wms_transaction_type', 0, 'primary', '', '搴撳瓨棰勭暀', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061142, 40, '閲婃斁', '40', 'wms_transaction_type', 0, 'info', '', '棰勭暀閲婃斁', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061143, 50, '鐩樼偣', '50', 'wms_transaction_type', 0, 'default', '', '搴撳瓨鐩樼偣', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061144, 60, '璋冩嫧', '60', 'wms_transaction_type', 0, 'default', '', '搴撳瓨璋冩嫧', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061145, 0, '棰勭暀涓�', '0', 'wms_reserve_status', 0, 'primary', '', '搴撳瓨棰勭暀涓�', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061146, 1, '閮ㄥ垎浣跨敤', '1', 'wms_reserve_status', 0, 'warning', '', '閮ㄥ垎宸蹭娇鐢�', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061147, 2, '宸蹭娇鐢�', '2', 'wms_reserve_status', 0, 'success', '', '宸插叏閮ㄤ娇鐢�', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061148, 3, '宸查噴鏀�', '3', 'wms_reserve_status', 0, 'info', '', '棰勭暀宸查噴鏀�', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061149, 0, '鑽夌', '0', 'erp_audit_status', 0, 'info', '', '璁㈠崟鑽夌鐘舵��', '1', '2026-06-26 08:46:48', '1', '2026-06-26 08:46:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1061150, 30, '瀹℃壒涓嶉�氳繃', '30', 'erp_audit_status', 0, 'danger', '', '瀹℃壒涓嶉�氳繃', '1', '2026-06-26 08:46:48', '1', '2026-06-26 08:46:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1061151, 1, '瀹℃壒涓�', '1', 'mes_pro_work_order_status', 0, 'warning', '', 'MES鐢熶骇宸ュ崟鐘舵��-瀹℃壒涓�', '1', '2026-06-26 09:46:00', '1', '2026-06-26 09:46:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061152, 5, '瀹℃壒涓嶉�氳繃', '5', 'mes_pro_work_order_status', 0, 'danger', '', 'MES鐢熶骇宸ュ崟鐘舵��-瀹℃壒涓嶉�氳繃', '1', '2026-06-26 09:46:00', '1', '2026-06-26 09:46:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061153, 1, '鏁板�兼牸寮�', '1', 'mes_pd_param_type', 0, '', '', NULL, '1', '2026-07-02 14:00:17', '1', '2026-07-02 14:01:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1061154, 2, '鏂囨湰鏍煎紡', '2', 'mes_pd_param_type', 0, '', '', NULL, '1', '2026-07-02 14:00:31', '1', '2026-07-02 14:01:15', b'0');
+INSERT INTO `system_dict_data` VALUES (1061155, 3, '涓嬫媺閫夐」', '3', 'mes_pd_param_type', 0, '', '', NULL, '1', '2026-07-02 14:01:00', '1', '2026-07-02 14:01:10', b'0');
+INSERT INTO `system_dict_data` VALUES (1061156, 4, '鏃堕棿鏍煎紡', '4', 'mes_pd_param_type', 0, '', '', NULL, '1', '2026-07-02 14:01:37', '1', '2026-07-02 14:01:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1061157, 5, '鏃ユ湡鏍煎紡', '5', 'mes_pd_param_type', 0, '', '', NULL, '1', '2026-07-02 14:01:48', '1', '2026-07-02 14:01:48', b'0');
+INSERT INTO `system_dict_data` VALUES (1061158, 1, '鐢熶骇瑕佹眰', '1', 'mes_pd_template_type', 0, '', '', NULL, '1', '2026-07-02 14:02:31', '1', '2026-07-02 14:02:31', b'0');
+INSERT INTO `system_dict_data` VALUES (1061159, 2, '鑷瑕佹眰', '2', 'mes_pd_template_type', 0, '', '', NULL, '1', '2026-07-02 14:02:42', '1', '2026-07-02 14:02:42', b'0');
+INSERT INTO `system_dict_data` VALUES (1061160, 3, '宸℃瑕佹眰', '3', 'mes_pd_template_type', 0, '', '', NULL, '1', '2026-07-02 14:02:54', '1', '2026-07-02 14:02:54', b'0');
+INSERT INTO `system_dict_data` VALUES (1061161, 0, '寰呭彂甯�', '0', 'mes_pd_project_status', 0, 'info', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061162, 1, '寰呬笂浼�', '1', 'mes_pd_project_status', 0, 'primary', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061163, 2, '寰呭鏍�', '2', 'mes_pd_project_status', 0, 'warning', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061164, 3, '寰呭綊妗�', '3', 'mes_pd_project_status', 0, 'success', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061165, 4, '宸插綊妗�', '4', 'mes_pd_project_status', 0, 'danger', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061166, 0, '寰呭鏍�', '0', 'mes_pd_document_audit_status', 0, 'info', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061167, 1, '瀹℃牳閫氳繃', '1', 'mes_pd_document_audit_status', 0, 'success', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061168, 2, '瀹℃牳涓嶉�氳繃', '2', 'mes_pd_document_audit_status', 0, 'danger', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061169, 0, '寰呭綊妗�', '0', 'mes_pd_archive_status', 0, 'info', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061170, 1, '宸插綊妗�', '1', 'mes_pd_archive_status', 0, 'success', '', '', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061171, 1, '鐢�', '1', 'hrm_gender', 0, '', '', NULL, '1', '2026-07-06 11:00:38', '1', '2026-07-06 11:00:38', b'0');
+INSERT INTO `system_dict_data` VALUES (1061172, 2, '濂�', '2', 'hrm_gender', 0, '', '', NULL, '1', '2026-07-06 11:00:47', '1', '2026-07-06 11:00:47', b'0');
+INSERT INTO `system_dict_data` VALUES (1061173, 1, '鍦ㄨ亴', '1', 'hrm_employee_status', 0, '', '', NULL, '1', '2026-07-06 11:01:37', '1', '2026-07-06 11:01:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1061174, 2, '璇曠敤', '2', 'hrm_employee_status', 0, '', '', NULL, '1', '2026-07-06 11:01:44', '1', '2026-07-06 11:01:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1061175, 3, '绂昏亴', '3', 'hrm_employee_status', 0, '', '', NULL, '1', '2026-07-06 11:01:49', '1', '2026-07-06 11:01:49', b'0');
+INSERT INTO `system_dict_data` VALUES (1061176, 1, '楂樹腑', '1', 'hrm_degree', 0, '', '', NULL, '1', '2026-07-06 11:14:01', '1', '2026-07-06 11:14:01', b'0');
+INSERT INTO `system_dict_data` VALUES (1061177, 2, '澶т笓', '2', 'hrm_degree', 0, '', '', NULL, '1', '2026-07-06 11:14:15', '1', '2026-07-06 11:14:15', b'0');
+INSERT INTO `system_dict_data` VALUES (1061178, 3, '鏈', '3', 'hrm_degree', 0, '', '', NULL, '1', '2026-07-06 11:14:26', '1', '2026-07-06 11:14:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1061179, 4, '纭曞+', '4', 'hrm_degree', 0, '', '', NULL, '1', '2026-07-06 11:14:32', '1', '2026-07-06 11:14:32', b'0');
+INSERT INTO `system_dict_data` VALUES (1061180, 5, '鍗氬+', '5', 'hrm_degree', 0, '', '', NULL, '1', '2026-07-06 11:14:40', '1', '2026-07-06 11:14:40', b'0');
+INSERT INTO `system_dict_data` VALUES (1061181, 1, '浜嬪亣', '1', 'hrm_leave_type', 0, '', '', NULL, '1', '2026-07-06 11:16:00', '1', '2026-07-06 11:16:00', b'0');
+INSERT INTO `system_dict_data` VALUES (1061182, 2, '鐥呭亣', '2', 'hrm_leave_type', 0, '', '', NULL, '1', '2026-07-06 11:17:02', '1', '2026-07-06 11:17:02', b'0');
+INSERT INTO `system_dict_data` VALUES (1061183, 3, '骞村亣', '3', 'hrm_leave_type', 0, '', '', NULL, '1', '2026-07-06 11:17:19', '1', '2026-07-06 11:17:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1061184, 4, '濠氬亣', '4', 'hrm_leave_type', 0, '', '', NULL, '1', '2026-07-06 11:17:27', '1', '2026-07-06 11:17:27', b'0');
+INSERT INTO `system_dict_data` VALUES (1061185, 5, '浜у亣', '5', 'hrm_leave_type', 0, '', '', NULL, '1', '2026-07-06 11:17:37', '1', '2026-07-06 11:17:37', b'0');
+INSERT INTO `system_dict_data` VALUES (1061186, 6, '涓у亣', '6', 'hrm_leave_type', 0, '', '', NULL, '1', '2026-07-06 11:17:44', '1', '2026-07-06 11:17:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1061187, 1, '骞宠皟', '1', 'hrm_transfer_type', 0, '', '', NULL, '1', '2026-07-06 11:18:09', '1', '2026-07-06 11:18:09', b'0');
+INSERT INTO `system_dict_data` VALUES (1061188, 2, '鍗囪亴', '2', 'hrm_transfer_type', 0, '', '', NULL, '1', '2026-07-06 11:18:16', '1', '2026-07-06 11:18:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1061189, 3, '闄嶈亴', '3', 'hrm_transfer_type', 0, '', '', NULL, '1', '2026-07-06 11:18:22', '1', '2026-07-06 11:18:22', b'0');
+INSERT INTO `system_dict_data` VALUES (1061190, 1, '涓诲姩绂昏亴', '1', 'hrm_resignation_type', 0, '', '', NULL, '1', '2026-07-06 11:20:26', '1', '2026-07-06 11:20:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1061191, 2, '琚姩绂昏亴', '2', 'hrm_resignation_type', 0, '', '', NULL, '1', '2026-07-06 11:20:35', '1', '2026-07-06 11:20:35', b'0');
+INSERT INTO `system_dict_data` VALUES (1061192, 3, '鍚堝悓鍒版湡', '3', 'hrm_resignation_type', 0, '', '', NULL, '1', '2026-07-06 11:20:44', '1', '2026-07-06 11:20:44', b'0');
+INSERT INTO `system_dict_data` VALUES (1061193, 1, '姝e父', '1', 'hrm_clock_type', 0, '', '', NULL, '1', '2026-07-06 11:21:04', '1', '2026-07-06 11:21:04', b'0');
+INSERT INTO `system_dict_data` VALUES (1061194, 2, '杩熷埌/鏃╅��', '2', 'hrm_clock_type', 0, '', '', NULL, '1', '2026-07-06 11:21:19', '1', '2026-07-06 11:21:19', b'0');
+INSERT INTO `system_dict_data` VALUES (1061195, 3, '缂哄崱', '3', 'hrm_clock_type', 0, '', '', NULL, '1', '2026-07-06 11:21:26', '1', '2026-07-06 11:21:26', b'0');
+INSERT INTO `system_dict_data` VALUES (1061196, 0, '寰呯‘璁�', '0', 'hrm_salary_status', 0, '', '', NULL, '1', '2026-07-06 11:22:05', '1', '2026-07-06 11:22:05', b'0');
+INSERT INTO `system_dict_data` VALUES (1061197, 1, '宸茬‘璁�', '10', 'hrm_salary_status', 0, '', '', NULL, '1', '2026-07-06 11:22:16', '1', '2026-07-06 11:22:16', b'0');
+INSERT INTO `system_dict_data` VALUES (1061198, 2, '宸插彂鏀�', '20', 'hrm_salary_status', 0, '', '', NULL, '1', '2026-07-06 11:22:25', '1', '2026-07-06 11:22:25', b'0');
+INSERT INTO `system_dict_data` VALUES (1061199, 1, '鏈紑濮�', '0', 'hrm_handover_status', 0, '', '', NULL, '1', '2026-07-06 11:23:08', '1', '2026-07-06 11:23:08', b'0');
+INSERT INTO `system_dict_data` VALUES (1061200, 2, '杩涜涓�', '10', 'hrm_handover_status', 0, '', '', NULL, '1', '2026-07-06 11:23:18', '1', '2026-07-06 11:23:18', b'0');
+INSERT INTO `system_dict_data` VALUES (1061201, 3, '宸插畬鎴�', '20', 'hrm_handover_status', 0, '', '', NULL, '1', '2026-07-06 11:23:28', '1', '2026-07-06 11:23:28', b'0');
+INSERT INTO `system_dict_data` VALUES (1061202, 1, '閾惰杞处', '1', 'hrm_payment_method', 0, '', '', NULL, '1', '2026-07-06 11:23:45', '1', '2026-07-06 11:23:45', b'0');
+INSERT INTO `system_dict_data` VALUES (1061203, 2, '鐜伴噾', '2', 'hrm_payment_method', 0, '', '', NULL, '1', '2026-07-06 11:23:52', '1', '2026-07-06 11:23:52', b'0');
+INSERT INTO `system_dict_data` VALUES (1061204, 3, '鏀エ', '3', 'hrm_payment_method', 0, '', '', NULL, '1', '2026-07-06 11:23:59', '1', '2026-07-06 11:23:59', b'0');
+
+-- ----------------------------
+-- Table structure for system_dict_type
+-- ----------------------------
+DROP TABLE IF EXISTS `system_dict_type`;
+CREATE TABLE `system_dict_type`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '瀛楀吀涓婚敭',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀛楀吀鍚嶇О',
+  `type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀛楀吀绫诲瀷',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `deleted_time` datetime NULL DEFAULT NULL COMMENT '鍒犻櫎鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1061118 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀛楀吀绫诲瀷琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_dict_type
+-- ----------------------------
+INSERT INTO `system_dict_type` VALUES (1, '鐢ㄦ埛鎬у埆', 'system_user_sex', 0, NULL, 'admin', '2021-01-05 17:03:48', '1', '2022-05-16 20:29:32', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (6, '鍙傛暟绫诲瀷', 'infra_config_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:36:54', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (7, '閫氱煡绫诲瀷', 'system_notice_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:35:26', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (9, '鎿嶄綔绫诲瀷', 'infra_operate_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '1', '2024-03-14 12:44:01', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (10, '绯荤粺鐘舵��', 'common_status', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:21:28', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (11, 'Boolean 鏄惁绫诲瀷', 'infra_boolean_string', 0, 'boolean 杞槸鍚�', '', '2021-01-19 03:20:08', '', '2022-02-01 16:37:10', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (104, '鐧婚檰缁撴灉', 'system_login_result', 0, '鐧婚檰缁撴灉', '', '2021-01-18 06:17:11', '', '2022-02-01 16:36:00', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (106, '浠g爜鐢熸垚妯℃澘绫诲瀷', 'infra_codegen_template_type', 0, NULL, '', '2021-02-05 07:08:06', '1', '2022-05-16 20:26:50', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (107, '瀹氭椂浠诲姟鐘舵��', 'infra_job_status', 0, NULL, '', '2021-02-07 07:44:16', '', '2022-02-01 16:51:11', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (108, '瀹氭椂浠诲姟鏃ュ織鐘舵��', 'infra_job_log_status', 0, NULL, '', '2021-02-08 10:03:51', '', '2022-02-01 16:50:43', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (109, '鐢ㄦ埛绫诲瀷', 'user_type', 0, NULL, '', '2021-02-26 00:15:51', '', '2021-02-26 00:15:51', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (110, 'API 寮傚父鏁版嵁鐨勫鐞嗙姸鎬�', 'infra_api_error_log_process_status', 0, NULL, '', '2021-02-26 07:07:01', '', '2022-02-01 16:50:53', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (111, '鐭俊娓犻亾缂栫爜', 'system_sms_channel_code', 0, NULL, '1', '2021-04-05 01:04:50', '1', '2022-02-16 02:09:08', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (112, '鐭俊妯℃澘鐨勭被鍨�', 'system_sms_template_type', 0, NULL, '1', '2021-04-05 21:50:43', '1', '2022-02-01 16:35:06', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (113, '鐭俊鍙戦�佺姸鎬�', 'system_sms_send_status', 0, NULL, '1', '2021-04-11 20:18:03', '1', '2022-02-01 16:35:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (114, '鐭俊鎺ユ敹鐘舵��', 'system_sms_receive_status', 0, NULL, '1', '2021-04-11 20:27:14', '1', '2022-02-01 16:35:14', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (116, '鐧婚檰鏃ュ織鐨勭被鍨�', 'system_login_type', 0, '鐧婚檰鏃ュ織鐨勭被鍨�', '1', '2021-10-06 00:50:46', '1', '2022-02-01 16:35:56', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (117, 'OA 璇峰亣绫诲瀷', 'bpm_oa_leave_type', 0, NULL, '1', '2021-09-21 22:34:33', '1', '2022-01-22 10:41:37', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (130, '鏀粯娓犻亾缂栫爜绫诲瀷', 'pay_channel_code', 0, '鏀粯娓犻亾鐨勭紪鐮�', '1', '2021-12-03 10:35:08', '1', '2023-07-10 10:11:39', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (131, '鏀粯鍥炶皟鐘舵��', 'pay_notify_status', 0, '鏀粯鍥炶皟鐘舵�侊紙鍖呮嫭閫�娆惧洖璋冿級', '1', '2021-12-03 10:53:29', '1', '2023-07-19 18:09:43', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (132, '鏀粯璁㈠崟鐘舵��', 'pay_order_status', 0, '鏀粯璁㈠崟鐘舵��', '1', '2021-12-03 11:17:50', '1', '2021-12-03 11:17:50', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (134, '閫�娆捐鍗曠姸鎬�', 'pay_refund_status', 0, '閫�娆捐鍗曠姸鎬�', '1', '2021-12-10 16:42:50', '1', '2023-07-19 10:13:17', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (139, '娴佺▼瀹炰緥鐨勭姸鎬�', 'bpm_process_instance_status', 0, '娴佺▼瀹炰緥鐨勭姸鎬�', '1', '2022-01-07 23:46:42', '1', '2022-01-07 23:46:42', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (140, '娴佺▼瀹炰緥鐨勭粨鏋�', 'bpm_task_status', 0, '娴佺▼瀹炰緥鐨勭粨鏋�', '1', '2022-01-07 23:48:10', '1', '2024-03-08 22:42:03', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (141, '娴佺▼鐨勮〃鍗曠被鍨�', 'bpm_model_form_type', 0, '娴佺▼鐨勮〃鍗曠被鍨�', '103', '2022-01-11 23:50:45', '103', '2022-01-11 23:50:45', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (142, '浠诲姟鍒嗛厤瑙勫垯鐨勭被鍨�', 'bpm_task_candidate_strategy', 0, 'BPM 浠诲姟鐨勫�欓�変汉鐨勭瓥鐣�', '103', '2022-01-12 23:21:04', '103', '2024-03-06 02:53:59', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (144, '浠g爜鐢熸垚鐨勫満鏅灇涓�', 'infra_codegen_scene', 0, '浠g爜鐢熸垚鐨勫満鏅灇涓�', '1', '2022-02-02 13:14:45', '1', '2022-03-10 16:33:46', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (145, '瑙掕壊绫诲瀷', 'system_role_type', 0, '瑙掕壊绫诲瀷', '1', '2022-02-16 13:01:46', '1', '2022-02-16 13:01:46', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (146, '鏂囦欢瀛樺偍鍣�', 'infra_file_storage', 0, '鏂囦欢瀛樺偍鍣�', '1', '2022-03-15 00:24:38', '1', '2022-03-15 00:24:38', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (147, 'OAuth 2.0 鎺堟潈绫诲瀷', 'system_oauth2_grant_type', 0, 'OAuth 2.0 鎺堟潈绫诲瀷锛堟ā寮忥級', '1', '2022-05-12 00:20:52', '1', '2022-05-11 16:25:49', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (149, '鍟嗗搧 SPU 鐘舵��', 'product_spu_status', 0, '鍟嗗搧 SPU 鐘舵��', '1', '2022-10-24 21:19:04', '1', '2022-10-24 21:19:08', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (150, '浼樻儬绫诲瀷', 'promotion_discount_type', 0, '浼樻儬绫诲瀷', '1', '2022-11-01 12:46:06', '1', '2022-11-01 12:46:06', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (151, '浼樻儬鍔垫ā鏉跨殑鏈夐檺鏈熺被鍨�', 'promotion_coupon_template_validity_type', 0, '浼樻儬鍔垫ā鏉跨殑鏈夐檺鏈熺被鍨�', '1', '2022-11-02 00:06:20', '1', '2022-11-04 00:08:26', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (152, '钀ラ攢鐨勫晢鍝佽寖鍥�', 'promotion_product_scope', 0, '钀ラ攢鐨勫晢鍝佽寖鍥�', '1', '2022-11-02 00:28:01', '1', '2022-11-02 00:28:01', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (153, '浼樻儬鍔电殑鐘舵��', 'promotion_coupon_status', 0, '浼樻儬鍔电殑鐘舵��', '1', '2022-11-04 00:14:49', '1', '2022-11-04 00:14:49', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (154, '浼樻儬鍔电殑棰嗗彇鏂瑰紡', 'promotion_coupon_take_type', 0, '浼樻儬鍔电殑棰嗗彇鏂瑰紡', '1', '2022-11-04 19:12:27', '1', '2022-11-04 19:12:27', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (155, '淇冮攢娲诲姩鐨勭姸鎬�', 'promotion_activity_status', 0, '淇冮攢娲诲姩鐨勭姸鎬�', '1', '2022-11-04 22:54:23', '1', '2022-11-04 22:54:23', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (156, '钀ラ攢鐨勬潯浠剁被鍨�', 'promotion_condition_type', 0, '钀ラ攢鐨勬潯浠剁被鍨�', '1', '2022-11-04 22:59:23', '1', '2022-11-04 22:59:23', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (157, '浜ゆ槗鍞悗鐘舵��', 'trade_after_sale_status', 0, '浜ゆ槗鍞悗鐘舵��', '1', '2022-11-19 20:52:56', '1', '2022-11-19 20:52:56', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (158, '浜ゆ槗鍞悗鐨勭被鍨�', 'trade_after_sale_type', 0, '浜ゆ槗鍞悗鐨勭被鍨�', '1', '2022-11-19 21:04:09', '1', '2022-11-19 21:04:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (159, '浜ゆ槗鍞悗鐨勬柟寮�', 'trade_after_sale_way', 0, '浜ゆ槗鍞悗鐨勬柟寮�', '1', '2022-11-19 21:39:04', '1', '2022-11-19 21:39:04', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (160, '缁堢', 'terminal', 0, '缁堢', '1', '2022-12-10 10:50:50', '1', '2022-12-10 10:53:11', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (161, '浜ゆ槗璁㈠崟鐨勭被鍨�', 'trade_order_type', 0, '浜ゆ槗璁㈠崟鐨勭被鍨�', '1', '2022-12-10 16:33:54', '1', '2022-12-10 16:33:54', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (162, '浜ゆ槗璁㈠崟鐨勭姸鎬�', 'trade_order_status', 0, '浜ゆ槗璁㈠崟鐨勭姸鎬�', '1', '2022-12-10 16:48:44', '1', '2022-12-10 16:48:44', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (163, '浜ゆ槗璁㈠崟椤圭殑鍞悗鐘舵��', 'trade_order_item_after_sale_status', 0, '浜ゆ槗璁㈠崟椤圭殑鍞悗鐘舵��', '1', '2022-12-10 20:58:08', '1', '2022-12-10 20:58:08', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (164, '鍏紬鍙疯嚜鍔ㄥ洖澶嶇殑璇锋眰鍏抽敭瀛楀尮閰嶆ā寮�', 'mp_auto_reply_request_match', 0, '鍏紬鍙疯嚜鍔ㄥ洖澶嶇殑璇锋眰鍏抽敭瀛楀尮閰嶆ā寮�', '1', '2023-01-16 23:29:56', '1', '2023-01-16 23:29:56', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (165, '鍏紬鍙风殑娑堟伅绫诲瀷', 'mp_message_type', 0, '鍏紬鍙风殑娑堟伅绫诲瀷', '1', '2023-01-17 22:17:09', '1', '2023-01-17 22:17:09', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (166, '閭欢鍙戦�佺姸鎬�', 'system_mail_send_status', 0, '閭欢鍙戦�佺姸鎬�', '1', '2023-01-26 09:53:13', '1', '2023-01-26 09:53:13', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (167, '绔欏唴淇℃ā鐗堢殑绫诲瀷', 'system_notify_template_type', 0, '绔欏唴淇℃ā鐗堢殑绫诲瀷', '1', '2023-01-28 10:35:10', '1', '2023-01-28 10:35:10', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (168, '浠g爜鐢熸垚鐨勫墠绔被鍨�', 'infra_codegen_front_type', 0, '', '1', '2023-04-12 23:57:52', '1', '2023-04-12 23:57:52', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (170, '蹇�掕璐规柟寮�', 'trade_delivery_express_charge_mode', 0, '鐢ㄤ簬鍟嗗煄浜ゆ槗妯″潡閰嶉�佺鐞�', '1', '2023-05-21 22:45:03', '1', '2023-05-21 22:45:03', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (171, '绉垎涓氬姟绫诲瀷', 'member_point_biz_type', 0, '', '1', '2023-06-10 12:15:00', '1', '2023-06-28 13:48:20', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (173, '鏀粯閫氱煡绫诲瀷', 'pay_notify_type', 0, NULL, '1', '2023-07-20 12:23:03', '1', '2023-07-20 12:23:03', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (174, '浼氬憳缁忛獙涓氬姟绫诲瀷', 'member_experience_biz_type', 0, NULL, '', '2023-08-22 12:41:01', '', '2023-08-22 12:41:01', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (175, '浜ゆ槗閰嶉�佺被鍨�', 'trade_delivery_type', 0, '', '1', '2023-08-23 00:03:14', '1', '2023-08-23 00:03:14', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (176, '鍒嗕剑妯″紡', 'brokerage_enabled_condition', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (177, '鍒嗛攢鍏崇郴缁戝畾妯″紡', 'brokerage_bind_mode', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (178, '浣i噾鎻愮幇绫诲瀷', 'brokerage_withdraw_type', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (179, '浣i噾璁板綍涓氬姟绫诲瀷', 'brokerage_record_biz_type', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (180, '浣i噾璁板綍鐘舵��', 'brokerage_record_status', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (181, '浣i噾鎻愮幇鐘舵��', 'brokerage_withdraw_status', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (182, '浣i噾鎻愮幇閾惰', 'brokerage_bank_name', 0, NULL, '', '2023-09-28 02:46:05', '', '2023-09-28 02:46:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (183, '鐮嶄环璁板綍鐨勭姸鎬�', 'promotion_bargain_record_status', 0, '', '1', '2023-10-05 10:41:08', '1', '2023-10-05 10:41:08', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (184, '鎷煎洟璁板綍鐨勭姸鎬�', 'promotion_combination_record_status', 0, '', '1', '2023-10-08 07:24:25', '1', '2023-10-08 07:24:25', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (185, '鍥炴-鍥炴鏂瑰紡', 'crm_receivable_return_type', 0, '鍥炴-鍥炴鏂瑰紡', '1', '2023-10-18 21:54:10', '1', '2023-10-18 21:54:10', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (186, 'CRM 瀹㈡埛琛屼笟', 'crm_customer_industry', 0, 'CRM 瀹㈡埛鎵�灞炶涓�', '1', '2023-10-28 22:57:07', '1', '2024-02-18 23:30:22', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (187, '瀹㈡埛绛夌骇', 'crm_customer_level', 0, 'CRM 瀹㈡埛绛夌骇', '1', '2023-10-28 22:59:12', '1', '2023-10-28 15:11:16', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (188, '瀹㈡埛鏉ユ簮', 'crm_customer_source', 0, 'CRM 瀹㈡埛鏉ユ簮', '1', '2023-10-28 23:00:34', '1', '2023-10-28 15:11:16', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (600, 'Banner 浣嶇疆', 'promotion_banner_position', 0, '', '1', '2023-10-08 07:24:25', '1', '2023-11-04 13:04:02', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (601, '绀句氦绫诲瀷', 'system_social_type', 0, '', '1', '2023-11-04 13:03:54', '1', '2023-11-04 13:03:54', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (604, '浜у搧鐘舵��', 'crm_product_status', 0, '', '1', '2023-10-30 21:47:59', '1', '2023-10-30 21:48:45', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (605, 'CRM 鏁版嵁鏉冮檺鐨勭骇鍒�', 'crm_permission_level', 0, '', '1', '2023-11-30 09:51:59', '1', '2023-11-30 09:51:59', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (606, 'CRM 瀹℃壒鐘舵��', 'crm_audit_status', 0, '', '1', '2023-11-30 18:56:23', '1', '2023-11-30 18:56:23', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (607, 'CRM 浜у搧鍗曚綅', 'crm_product_unit', 0, '', '1', '2023-12-05 23:01:51', '1', '2023-12-05 23:01:51', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (608, 'CRM 璺熻繘鏂瑰紡', 'crm_follow_up_type', 0, '', '1', '2024-01-15 20:48:05', '1', '2024-01-15 20:48:05', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (610, '杞处璁㈠崟鐘舵��', 'pay_transfer_status', 0, '', '1', '2023-10-28 16:18:32', '1', '2023-10-28 16:18:32', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (611, 'ERP 搴撳瓨鏄庣粏鐨勪笟鍔$被鍨�', 'erp_stock_record_biz_type', 0, 'ERP 搴撳瓨鏄庣粏鐨勪笟鍔$被鍨�', '1', '2024-02-05 18:07:02', '1', '2024-02-05 18:07:02', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (612, 'ERP 瀹℃壒鐘舵��', 'erp_audit_status', 0, '', '1', '2024-02-06 00:00:07', '1', '2024-02-06 00:00:07', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (613, 'BPM 鐩戝惉鍣ㄧ被鍨�', 'bpm_process_listener_type', 0, '', '1', '2024-03-23 12:52:24', '1', '2024-03-09 15:54:28', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (615, 'BPM 鐩戝惉鍣ㄥ�肩被鍨�', 'bpm_process_listener_value_type', 0, '', '1', '2024-03-23 13:00:31', '1', '2024-03-23 13:00:31', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (616, '鏃堕棿闂撮殧', 'date_interval', 0, '', '1', '2024-03-29 22:50:09', '1', '2024-03-29 22:50:09', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (619, 'CRM 鍟嗘満缁撴潫鐘舵�佺被鍨�', 'crm_business_end_status_type', 0, '', '1', '2024-04-13 23:23:00', '1', '2024-04-13 23:23:00', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (620, 'AI 妯″瀷骞冲彴', 'ai_platform', 0, '', '1', '2024-05-09 22:27:38', '1', '2024-05-09 22:27:38', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (621, 'AI 缁樼敾鐘舵��', 'ai_image_status', 0, '', '1', '2024-06-26 20:51:23', '1', '2024-06-26 20:51:23', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (622, 'AI 闊充箰鐘舵��', 'ai_music_status', 0, '', '1', '2024-06-27 22:45:07', '1', '2024-06-28 00:56:27', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (623, 'AI 闊充箰鐢熸垚妯″紡', 'ai_generate_mode', 0, '', '1', '2024-06-27 22:46:21', '1', '2024-06-28 01:22:29', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (624, '鍐欎綔璇皵', 'ai_write_tone', 0, '', '1', '2024-07-07 15:19:02', '1', '2024-07-07 15:19:02', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (625, '鍐欎綔璇█', 'ai_write_language', 0, '', '1', '2024-07-07 15:18:52', '1', '2024-07-07 15:18:52', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (626, '鍐欎綔闀垮害', 'ai_write_length', 0, '', '1', '2024-07-07 15:18:41', '1', '2024-07-07 15:18:41', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (627, '鍐欎綔鏍煎紡', 'ai_write_format', 0, '', '1', '2024-07-07 15:14:34', '1', '2024-07-07 15:14:34', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (628, 'AI 鍐欎綔绫诲瀷', 'ai_write_type', 0, '', '1', '2024-07-10 21:25:29', '1', '2024-07-10 21:25:29', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (629, 'BPM 娴佺▼妯″瀷绫诲瀷', 'bpm_model_type', 0, '', '1', '2024-08-26 15:21:43', '1', '2024-08-26 15:21:43', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (640, 'AI 妯″瀷绫诲瀷', 'ai_model_type', 0, '', '1', '2025-03-03 12:24:07', '1', '2025-03-03 12:24:07', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1001, 'IoT 浜у搧璁惧绫诲瀷', 'iot_product_device_type', 0, '', '1', '2024-08-10 11:54:30', '1', '2025-03-17 09:25:08', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1002, 'IoT 浜у搧鐘舵��', 'iot_product_status', 0, '', '1', '2024-08-10 12:06:09', '1', '2025-03-17 09:25:10', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1004, 'IoT 鑱旂綉鏂瑰紡', 'iot_net_type', 0, '', '1', '2024-09-06 22:04:13', '1', '2025-03-17 09:25:14', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1006, 'IoT 璁惧鐘舵��', 'iot_device_state', 0, '', '1', '2024-09-21 08:12:55', '1', '2025-03-17 09:25:19', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1007, 'IoT 鐗╂ā鍨嬪姛鑳界被鍨�', 'iot_thing_model_type', 0, '', '1', '2024-09-29 20:02:36', '1', '2025-03-17 09:25:24', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1011, 'IoT 鐗╂ā鍨嬪崟浣�', 'iot_thing_model_unit', 0, '', '1', '2024-12-25 17:36:46', '1', '2025-03-17 09:25:35', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1013, 'IoT 鏁版嵁娴佽浆鐩殑鐨勭被鍨嬫灇涓�', 'iot_data_sink_type_enum', 0, '', '1', '2025-03-09 12:39:36', '1', '2025-06-24 12:45:24', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1014, 'IoT 鍦烘櫙娴佽浆鐨勮Е鍙戠被鍨嬫灇涓�', 'iot_rule_scene_trigger_type_enum', 0, '', '1', '2025-03-20 14:59:44', '1', '2025-03-20 14:59:44', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1015, 'IoT 璁惧娑堟伅绫诲瀷鏋氫妇', 'iot_device_message_type_enum', 0, '', '1', '2025-03-20 15:01:15', '1', '2025-03-20 15:01:15', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1016, 'IoT 瑙勫垯鍦烘櫙鐨勮Е鍙戠被鍨嬫灇涓�', 'iot_rule_scene_action_type_enum', 0, '', '1', '2025-03-28 15:26:54', '1', '2025-03-28 15:29:13', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1017, 'MES 鐗╂枡娑堣�楄褰曠姸鎬�', 'mes_wm_item_consume_status', 0, 'MES 鐗╂枡娑堣�楄褰曠姸鎬�', '1', '2026-03-19 15:06:23', '1', '2026-03-19 15:06:23', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2001, 'IoT 鍛婅绾у埆', 'iot_alert_level', 0, '', '1', '2025-06-27 20:30:57', '1', '2025-06-27 20:30:57', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2002, 'IoT 鍛婅', 'iot_alert_receive_type', 0, '', '1', '2025-06-27 22:49:19', '1', '2025-06-27 22:49:19', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2003, 'IoT 鍥轰欢璁惧鑼冨洿', 'iot_ota_task_device_scope', 0, '', '1', '2025-07-02 09:42:49', '1', '2025-07-02 09:42:49', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2004, 'IoT 鍥轰欢鍗囩骇浠诲姟鐘舵��', 'iot_ota_task_status', 0, '', '1', '2025-07-02 09:43:43', '1', '2025-07-02 09:43:43', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2005, 'IoT 鍥轰欢鍗囩骇璁板綍鐘舵��', 'iot_ota_task_record_status', 0, '', '1', '2025-07-02 09:45:02', '1', '2025-07-02 09:45:02', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2007, 'AI MCP 瀹㈡埛绔悕瀛�', 'ai_mcp_client_name', 0, '', '1', '2025-08-28 13:57:40', '1', '2025-08-28 13:57:40', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2008, 'IoT 鍗忚绫诲瀷', 'iot_protocol_type', 0, 'IoT 璁惧鎺ュ叆鍗忚绫诲瀷', '1', '2026-02-04 00:31:33', '1', '2026-02-04 00:31:33', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2009, 'IoT 搴忓垪鍖栫被鍨�', 'iot_serialize_type', 0, 'IoT 璁惧娑堟伅搴忓垪鍖栫被鍨�', '1', '2026-02-04 00:33:16', '1', '2026-02-04 00:33:16', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2010, 'IoT Modbus 宸ヤ綔妯″紡', 'iot_modbus_mode', 0, 'Modbus 璁惧鏁版嵁閲囬泦妯″紡', '1', '2025-06-12 22:55:46', '1', '2025-06-12 22:55:46', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2011, 'IoT Modbus 甯ф牸寮�', 'iot_modbus_frame_format', 0, 'Modbus 鏁版嵁甯у崗璁牸寮�', '1', '2025-06-12 22:55:46', '1', '2025-06-12 22:55:46', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2012, 'MES 瀹㈡埛绫诲瀷', 'mes_client_type', 0, '', '1', '2026-02-15 14:38:25', '1', '2026-02-15 14:38:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2013, 'MES 渚涘簲鍟嗙骇鍒�', 'mes_vendor_level', 0, '', '1', '2026-02-15 15:59:15', '1', '2026-02-15 15:59:15', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2014, 'MES 鍋囨湡绫诲瀷', 'mes_cal_holiday_type', 0, 'MES 鏃ュ巻鎺掔彮 - 鍋囨湡绫诲瀷锛圚OLIDAY=鍋囨湡锛學ORKDAY=宸ヤ綔鏃ワ級', '1', '2026-02-16 07:35:58', '1', '2026-02-16 07:35:58', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2015, 'MES 宸ュ叿鐘舵��', 'mes_tm_tool_status', 0, 'MES 宸ュ叿绠$悊 - 宸ュ叿鐘舵�侊紙1=鍦ㄥ簱锛�2=棰嗙敤涓紝3=缁翠慨涓紝4=鎶ュ簾锛�', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2016, 'MES 淇濆吇缁存姢绫诲瀷', 'mes_tm_mainten_type', 0, 'MES 宸ュ叿绠$悊 - 淇濆吇缁存姢绫诲瀷锛�1=瀹氭湡缁存姢锛�2=鎸変娇鐢ㄦ鏁扮淮鎶わ級', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2017, 'MES 璁惧鐘舵��', 'mes_dv_machinery_status', 0, 'MES 璁惧绠$悊 - 璁惧鐘舵�侊紙1=杩愯涓紝2=鍋滄満锛�3=鏁呴殰锛�', '1', '2026-02-17 01:00:06', '1', '2026-02-17 01:00:06', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2018, 'MES 妫�娴嬮」绫诲瀷', 'mes_indicator_type', 0, '', '1', '2026-02-17 02:16:22', '1', '2026-02-21 15:25:04', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2019, 'MES 缂洪櫡绛夌骇', 'mes_defect_level', 0, '', '1', '2026-02-17 02:16:22', '1', '2026-02-17 02:16:22', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2020, 'MES 杞彮鏂瑰紡', 'mes_cal_shift_type', 0, 'MES 鏃ュ巻鎺掔彮 - 杞彮鏂瑰紡', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2021, 'MES 鍊掔彮鏂瑰紡', 'mes_cal_shift_method', 0, 'MES 鏃ュ巻鎺掔彮 - 鍊掔彮鏂瑰紡', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2022, 'MES 鐝粍绫诲瀷', 'mes_cal_calendar_type', 0, 'MES 鏃ュ巻鎺掔彮 - 鐝粍绫诲瀷', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2023, 'MES 鎺掔彮璁″垝鐘舵��', 'mes_cal_plan_status', 0, 'MES 鏃ュ巻鎺掔彮 - 鎺掔彮璁″垝鐘舵��', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2026, 'MES 妫�娴嬬绫�', 'mes_qc_type', 0, 'IQC/IPQC/OQC/RQC', '1', '2026-02-17 08:34:40', '1', '2026-02-17 08:34:40', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2027, 'MES 鐢熶骇宸ュ崟鐘舵��', 'mes_pro_work_order_status', 0, 'MES 鐢熶骇绠$悊 - 宸ュ崟鐘舵�侊紙0=鑽夌锛�1=宸茬‘璁わ紝2=宸插畬鎴愶紝3=宸插彇娑堬級', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2028, 'MES 宸ュ崟鏉ユ簮绫诲瀷', 'mes_pro_work_order_source_type', 0, 'MES 鐢熶骇绠$悊 - 宸ュ崟鏉ユ簮绫诲瀷锛�1=瀹㈡埛璁㈠崟锛�2=搴撳瓨澶囪揣锛�', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2029, 'MES 宸ュ崟绫诲瀷', 'mes_pro_work_order_type', 0, 'MES 鐢熶骇绠$悊 - 宸ュ崟绫诲瀷锛�1=鑷鐢熶骇锛�2=浠e伐锛�3=閲囪喘锛�', '1', '2026-02-17 11:43:47', '1', '2026-02-17 11:43:47', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2036, 'MES 宸ュ簭鍏崇郴绫诲瀷', 'mes_pro_link_type', 0, '宸ヨ壓璺嚎涓伐搴忎箣闂寸殑鍏崇郴绫诲瀷', '1', '2026-02-19 04:24:53', '1', '2026-04-05 15:05:07', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2037, 'MES 鏃堕棿鍗曚綅', 'mes_time_unit_type', 0, '鐢熶骇鏃堕棿鐨勮閲忓崟浣�', '1', '2026-02-19 04:24:53', '1', '2026-04-05 15:04:57', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2038, 'MES 鐢熶骇浠诲姟鐘舵��', 'mes_pro_task_status', 0, 'MES 鐢熶骇绠$悊 - 浠诲姟鐘舵�侊紙0=鑽夌锛�4=宸插畬鎴愶紝5=宸插彇娑堬級', '1', '2026-02-19 15:25:27', '1', '2026-06-13 10:32:58', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2039, 'MES 鐐规淇濆吇椤圭洰绫诲瀷', 'mes_dv_subject_type', 0, 'MES 璁惧绠$悊 - 鐐规淇濆吇椤圭洰绫诲瀷锛�1=璁惧鐐规锛�2=璁惧淇濆吇锛�', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2040, 'MES 淇濆吇璁板綍鐘舵��', 'mes_mainten_record_status', 0, NULL, 'admin', '2026-02-20 02:59:55', 'admin', '2026-02-20 02:59:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2041, 'MES 淇濆吇缁撴灉', 'mes_mainten_status', 0, NULL, 'admin', '2026-02-20 02:59:55', 'admin', '2026-02-20 02:59:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2042, 'MES 鐐规淇濆吇鍛ㄦ湡绫诲瀷', 'mes_dv_cycle_type', 0, 'MES 璁惧绠$悊 - 鐐规淇濆吇鍛ㄦ湡绫诲瀷锛�1=澶╋紝2=鍛紝3=鏈堬紝4=骞达級', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2043, 'MES 鐐规淇濆吇鏂规鐘舵��', 'mes_dv_check_plan_status', 0, 'MES 璁惧绠$悊 - 鐐规淇濆吇鏂规鐘舵�侊紙0=鑽夌锛�1=宸插惎鐢級', '1', '2026-02-20 07:11:43', '1', '2026-02-20 07:11:43', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2044, 'MES 鐐规璁板綍鐘舵��', 'mes_dv_check_record_status', 0, NULL, 'admin', '2026-02-20 09:46:19', 'admin', '2026-02-20 09:46:19', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2045, 'MES 鐐规缁撴灉', 'mes_dv_check_result', 0, NULL, 'admin', '2026-02-20 09:46:19', 'admin', '2026-02-20 09:46:19', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (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', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2047, 'MES 缁翠慨缁撴灉', 'mes_dv_repair_result', 0, 'MES 璁惧绠$悊 - 缁翠慨缁撴灉锛�1=淇鎴愬姛锛�2=鎶ュ簾锛�', '1', '2026-02-20 10:56:24', '1', '2026-02-20 10:56:24', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2049, 'MES 妫�娴嬬粨鏋�', 'mes_qc_check_result', 0, '鏉ユ枡妫�楠岀殑鏈�缁堢粨鏋滃垽瀹�', '1', '2026-02-20 11:23:35', '1', '2026-02-20 11:23:35', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2050, 'MES 鏉ユ簮鍗曟嵁绫诲瀷', 'mes_qc_source_doc_type', 0, 'IQC 鏉ユ枡妫�楠岀殑鏉ユ簮鍗曟嵁绫诲瀷', '1', '2026-02-20 11:23:35', '1', '2026-02-20 11:23:35', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2051, 'MES 瀹夌伅澶勭疆鐘舵��', 'mes_pro_andon_status', 0, 'MES 鐢熶骇绠$悊 - 瀹夌伅澶勭疆鐘舵�侊紙0=鏈缃紝1=宸插缃級', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (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', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2053, 'MES 鐢熶骇鎶ュ伐鐘舵��', 'mes_pro_feedback_status', 0, 'MES 鐢熶骇绠$悊 - 鎶ュ伐鐘舵�侊紙0=鑽夌锛�1=瀹℃壒涓紝2=寰呮楠岋紝3=宸插畬鎴愶紝4=宸插彇娑堬級', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2054, 'MES 鐢熶骇鎶ュ伐绫诲瀷', 'mes_pro_feedback_type', 0, 'MES 鐢熶骇绠$悊 - 鎶ュ伐绫诲瀷锛�1=鑷鎶ュ伐锛�2=缁熶竴鎶ュ伐锛�', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2055, 'MES 鐢熶骇鎶ュ伐閫斿緞', 'mes_pro_feedback_channel', 0, 'MES 鐢熶骇绠$悊 - 鎶ュ伐閫斿緞锛圥C/APP/PDA锛�', '1', '2026-02-21 00:50:32', '1', '2026-02-21 00:50:32', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2056, 'MES 璐ㄦ鍊肩被鍨�', 'mes_qc_result_type', 0, '妫�楠岀粨鏋滄槑缁嗙殑鍊肩被鍨嬶細娴偣/鏁存暟/鏂囨湰/瀛楀吀/鏂囦欢', '1', '2026-02-21 13:37:17', '1', '2026-02-21 13:37:17', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2057, 'MES 閫�璐ф楠岀被鍨�', 'mes_rqc_type', 0, 'MES 閫�璐ф楠岀被鍨�', '1', '2026-02-22 06:43:18', '1', '2026-02-22 06:43:18', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2062, 'MES IPQC 妫�楠岀被鍨�', 'mes_ipqc_type', 0, 'IPQC 杩囩▼妫�楠岀殑妫�楠岀被鍨�', '1', '2026-02-22 07:01:04', '1', '2026-02-22 07:01:04', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2066, 'MES 鍒拌揣閫氱煡鍗曠姸鎬�', 'mes_wm_arrival_notice_status', 0, 'MES 鍒拌揣閫氱煡鍗曠姸鎬�', '1', '2026-02-22 14:53:18', '1', '2026-02-22 14:53:18', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2067, 'MES 閲囪喘鍏ュ簱鍗曠姸鎬�', 'mes_wm_item_receipt_status', 0, 'MES 閲囪喘鍏ュ簱鍗曠姸鎬�', '1', '2026-02-22 14:54:05', '1', '2026-02-22 14:54:05', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2068, 'MES 鍗曟嵁鐘舵��', 'mes_order_status', 0, '', '1', '2026-02-23 21:16:03', '1', '2026-02-23 21:17:37', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2069, 'MES 棰嗘枡鍑哄簱鍗曠姸鎬�', 'mes_wm_product_issue_status', 0, 'MES 棰嗘枡鍑哄簱鍗曠姸鎬�', '1', '2026-02-26 16:39:44', '1', '2026-04-05 15:05:11', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2073, 'MES 鐢熶骇閫�鏂欏崟鐘舵��', 'mes_wm_return_issue_status', 0, 'MES 鐢熶骇閫�鏂欏崟鐘舵��', '1', '2026-02-28 14:11:09', '1', '2026-04-05 15:05:14', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2074, 'MES 鐢熶骇閫�鏂欑被鍨�', 'mes_wm_return_issue_type', 0, 'MES 鐢熶骇閫�鏂欑被鍨�', '1', '2026-02-28 14:11:09', '1', '2026-04-05 15:05:16', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2075, 'MES 璐ㄩ噺鐘舵��', 'mes_wm_quality_status', 0, 'MES 璐ㄩ噺鐘舵�侊紙寰呮/鍚堟牸/涓嶅悎鏍硷級', '1', '2026-02-28 15:00:53', '1', '2026-02-28 15:00:53', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2100, 'MES 浜у搧鍏ュ簱鍗曠姸鎬�', 'mes_wm_product_receipt_status', 0, 'MES 浜у搧鍏ュ簱鍗曠姸鎬�', '1', '2026-03-01 06:03:04', '1', '2026-04-05 15:05:49', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2102, 'MES 閿�鍞嚭搴撳崟鐘舵��', 'mes_wm_product_sales_status', 0, 'MES 閿�鍞嚭搴撳崟鐘舵��', '1', '2026-03-02 08:55:11', '1', '2026-04-05 15:05:18', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2105, 'MES 鏉傞」鍏ュ簱绫诲瀷', 'mes_wm_misc_receipt_type', 0, '鏉傞」鍏ュ簱绫诲瀷', '1', '2026-03-03 07:18:12', '1', '2026-04-05 15:05:23', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2106, 'MES 鏉傞」鍏ュ簱鐘舵��', 'mes_wm_misc_receipt_status', 0, '鏉傞」鍏ュ簱鐘舵��', '1', '2026-03-03 07:18:12', '1', '2026-04-05 15:05:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2109, 'MES 鏉傞」鍑哄簱绫诲瀷', 'mes_wm_misc_issue_type', 0, 'MES 鏉傞」鍑哄簱绫诲瀷', '1', '2026-03-03 07:34:33', '1', '2026-03-03 07:34:33', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2110, 'MES 澶栧崗鍏ュ簱鍗曠姸鎬�', 'mes_wm_outsource_receipt_status', 0, 'MES 澶栧崗鍏ュ簱鍗曠姸鎬�', '1', '2026-03-03 14:03:20', '1', '2026-03-03 14:03:20', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2112, 'MES 澶栧崗鍙戞枡鍗曠姸鎬�', 'mes_wm_outsource_issue_status', 0, 'MES 澶栧崗鍙戞枡鍗曠姸鎬�', '1', '2026-03-03 16:30:56', '1', '2026-04-05 15:05:47', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2113, 'MES 缂栫爜瑙勫垯鍒嗘绫诲瀷', 'mes_md_auto_code_part_type', 0, 'MES 缂栫爜瑙勫垯鍒嗘绫诲瀷', '1', '2026-03-04 14:45:46', '1', '2026-03-04 15:24:40', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2115, 'MES 缂栫爜瑙勫垯琛ラ綈鏂瑰紡', 'mes_md_auto_code_padded_method', 0, 'MES 缂栫爜瑙勫垯琛ラ綈鏂瑰紡', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2116, 'MES 缂栫爜瑙勫垯寰幆鏂瑰紡', 'mes_md_auto_code_cycle_method', 0, 'MES 缂栫爜瑙勫垯寰幆鏂瑰紡', '1', '2026-03-04 14:46:22', '1', '2026-03-04 15:24:40', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2117, 'MES 鏉$爜鏍煎紡', 'mes_wm_barcode_format', 0, 'MES 鏉$爜鏍煎紡', '1', '2026-03-05 14:37:20', '1', '2026-04-05 15:05:27', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2118, 'MES 鏉$爜涓氬姟绫诲瀷', 'mes_wm_barcode_biz_type', 0, 'MES 鏉$爜涓氬姟绫诲瀷', '1', '2026-03-05 14:37:20', '1', '2026-04-05 15:05:29', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2121, 'MES 瑁呯鍗曠姸鎬�', 'mes_wm_package_status', 0, 'MES 瑁呯鍗曠姸鎬�', '1', '2026-03-08 02:05:46', '1', '2026-04-05 15:05:35', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2122, 'MES 璋冩嫧鍗曠姸鎬�', 'mes_wm_transfer_status', 0, 'MES 璋冩嫧鍗曠姸鎬�', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2123, 'MES 璋冩嫧绫诲瀷', 'mes_wm_transfer_type', 0, 'MES 璋冩嫧绫诲瀷', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2124, 'MES 鐩樼偣绫诲瀷', 'mes_wm_stock_taking_type', 0, 'MES 鐩樼偣绫诲瀷', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2125, 'MES 鐩樼偣鏂规鍙傛暟绫诲瀷', 'mes_wm_stock_taking_plan_param_type', 0, 'MES 鐩樼偣鏂规鍙傛暟绫诲瀷', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2126, 'MES 鐩樼偣浠诲姟鐘舵��', 'mes_wm_stock_taking_task_status', 0, 'MES 鐩樼偣浠诲姟鐘舵��', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2127, 'MES 鐩樼偣浠诲姟琛岀姸鎬�', 'mes_wm_stock_taking_task_line_status', 0, 'MES 鐩樼偣浠诲姟琛岀姸鎬�', '1', '2026-03-09 00:00:00', '1', '2026-04-05 15:02:18', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2129, 'MES 鐗╂枡浜у搧鏍囪瘑', 'mes_md_item_or_product', 0, '鐗╂枡鍒嗙被锛氱墿鏂�(ITEM) / 浜у搧(PRODUCT)', '1', '2026-03-15 01:55:06', '1', '2026-03-15 01:55:06', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2130, 'MES 渚涘簲鍟嗛��璐у崟鐘舵��', 'mes_wm_return_vendor_status', 0, '閲囪喘閫�璐у崟鐘舵��', '', '2026-03-29 13:49:57', '', '2026-04-05 15:53:46', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2131, 'MES 鍙戣揣閫氱煡鍗曠姸鎬�', 'mes_wm_sales_notice_status', 0, 'MES 鍙戣揣閫氱煡鍗曠姸鎬�', '1', '2026-03-30 08:54:30', '1', '2026-04-05 15:53:46', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2132, 'MES 鏉傞」鍑哄簱鍗曠姸鎬�', 'mes_wm_misc_issue_status', 0, '鏉傞」鍑哄簱鍗曠姸鎬�', '1', '2026-03-30 15:00:18', '1', '2026-04-05 15:05:41', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2133, 'MES 閿�鍞��璐у崟鐘舵��', 'mes_wm_return_sales_status', 0, 'MES 閿�鍞��璐у崟鐘舵�佹灇涓�', '1', '2026-04-03 17:20:25', '1', '2026-04-05 15:05:39', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2135, 'MES 涓婁笅宸ョ姸鎬佺被鍨�', 'mes_pro_work_record_type', 0, 'MES 涓婁笅宸ョ姸鎬佺被鍨�', '1', '2026-04-05 14:07:27', '1', '2026-04-05 14:07:27', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2138, 'MES 鐢熶骇鍏ュ簱鍗曠姸鎬�', 'mes_wm_product_produce_status', 0, 'MES 鐢熶骇鍏ュ簱鍗曠姸鎬�', '1', '2026-04-05 15:53:46', '1', '2026-04-05 15:53:46', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (2200, 'IM 鍐呭绫诲瀷', 'im_content_type', 0, '瀵瑰簲 ImContentTypeEnum', 'admin', '2026-04-30 11:35:07', 'admin', '2026-06-16 03:41:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2202, 'IM 娑堟伅鍥炴墽鐘舵��', 'im_message_receipt_status', 0, '瀵瑰簲 ImMessageReceiptStatusEnum', 'admin', '2026-04-30 11:35:07', 'admin', '2026-06-16 03:41:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2203, 'IM 濂藉弸鐘舵��', 'im_friend_status', 0, '0=姝e父 / 1=宸插垹闄�', 'admin', '2026-04-30 11:35:07', 'admin', '2026-04-30 11:35:07', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2204, 'IM 缇ょ姸鎬�', 'im_group_status', 0, '0=姝e父 / 1=宸茶В鏁�', 'admin', '2026-04-30 11:35:07', 'admin', '2026-04-30 11:35:07', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2205, 'IM 娑堟伅鐘舵��', 'im_message_status', 0, '瀵瑰簲 ImMessageStatusEnum锛�0=姝e父 / 2=宸叉挙鍥烇紙绉佽亰 / 缇よ亰鍏辩敤锛�', 'admin', '2026-04-30 15:14:36', 'admin', '2026-06-16 03:41:55', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2206, 'IM 缇ゆ垚鍛樿鑹�', 'im_group_member_role', 0, NULL, '1', '2026-05-02 02:14:12', '1', '2026-05-02 02:14:12', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2207, 'IM 濂藉弸娣诲姞鏉ユ簮', 'im_friend_add_source', 0, NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-04 02:43:41', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2208, 'IM 濂藉弸鐢宠澶勭悊缁撴灉', 'im_friend_request_handle_result', 0, NULL, '1', '2026-05-04 02:43:41', '1', '2026-05-04 02:43:41', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2209, 'IM 鍔犵兢鏉ユ簮', 'im_group_add_source', 0, NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (2210, 'IM 鍔犵兢鐢宠澶勭悊缁撴灉', 'im_group_request_handle_result', 0, NULL, '', '2026-05-06 09:26:36', '', '2026-05-06 09:26:36', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061050, '寰�鏉ヤ紒涓氱被鍨�', 'merchant_type', 0, 'WMS 寰�鏉ヤ紒涓氱被鍨�', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061060, 'WMS 鍗曟嵁绫诲瀷', 'wms_order_type', 0, 'WMS 鍗曟嵁绫诲瀷', '1', '2026-05-10 17:51:46', '1', '2026-05-14 08:14:09', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061070, 'WMS 鍗曟嵁鐘舵��', 'wms_order_status', 0, 'WMS 鍗曟嵁鐘舵��', '1', '2026-05-12 13:40:29', '1', '2026-05-12 13:40:29', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061080, '鍏ュ簱鍗曠被鍨�', 'wms_receipt_order_type', 0, 'WMS 鍏ュ簱鍗曠被鍨�', '1', '2026-05-11 11:21:49', '1', '2026-05-12 13:40:29', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061090, '鍑哄簱鍗曠被鍨�', 'wms_shipment_order_type', 0, 'WMS 鍑哄簱鍗曠被鍨�', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061092, 'IM 閫氳瘽濯掍綋绫诲瀷', 'im_rtc_call_media_type', 0, NULL, 'admin', '2026-05-16 11:34:50', 'admin', '2026-05-16 11:34:50', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061093, 'IM 閫氳瘽浼氳瘽绫诲瀷', 'im_rtc_call_conversation_type', 0, '1=绉佽亰锛�2=缇よ亰', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061094, 'IM 閫氳瘽鐘舵��', 'im_rtc_call_status', 0, '10=鍒涘缓锛�20=杩涜涓紱30=宸茬粨鏉�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061095, 'IM 閫氳瘽缁撴潫鍘熷洜', 'im_rtc_call_end_reason', 0, '1=閫氳瘽缁撴潫锛�2=宸叉嫆缁濓紱3=宸插彇娑堬紱4=鏃犱汉鎺ュ惉锛�5=瀵规柟姝e繖锛�9=閫氳瘽寮傚父', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061096, 'IM 閫氳瘽鍙備笌瑙掕壊', 'im_rtc_participant_role', 0, '1=鍙戣捣浜猴紱2=琚個璇疯�咃紱3=涓诲姩鍔犲叆鑰�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061097, 'IM 閫氳瘽鍙備笌鐘舵��', 'im_rtc_participant_status', 0, '10=閭�璇蜂腑锛�20=宸插姞鍏ワ紱30=宸叉嫆缁濓紱40=鏈簲绛旓紱50=宸茬寮�', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061098, 'IM 棰戦亾绱犳潗鍐呭绫诲瀷', 'im_channel_material_type', 0, '1=绔欏唴瀵屾枃鏈� / 2=澶栭摼', '1', '2026-05-19 14:09:25', '1', '2026-05-19 14:09:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061099, 'WMS 搴撳瓨棰勭暀涓氬姟绫诲瀷', 'wms_reserve_biz_type', 0, '搴撳瓨棰勭暀鐨勪笟鍔℃潵婧愮被鍨�', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061100, 'WMS 搴撳瓨浜嬪姟绫诲瀷', 'wms_transaction_type', 0, '搴撳瓨浜嬪姟娴佹按绫诲瀷', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061101, 'WMS 搴撳瓨棰勭暀鐘舵��', 'wms_reserve_status', 0, '搴撳瓨棰勭暀鐘舵��', '1', '2026-06-26 08:15:54', '1', '2026-06-26 08:15:54', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061102, 'MES 鍙傛暟鏍煎紡', 'mes_pd_param_type', 0, NULL, '1', '2026-07-02 13:59:05', '1', '2026-07-02 13:59:05', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061103, 'MES 鍙傛暟妯℃澘', 'mes_pd_template_type', 0, NULL, '1', '2026-07-02 14:02:13', '1', '2026-07-02 14:02:13', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061104, '璁捐椤圭洰鐘舵��', 'mes_pd_project_status', 0, '璁捐椤圭洰鐘舵��', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061105, '璧勬枡绫诲瀷', 'mes_pd_document_type', 0, '璧勬枡绫诲瀷', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061106, '璧勬枡瀹℃牳鐘舵��', 'mes_pd_document_audit_status', 0, '璧勬枡瀹℃牳鐘舵��', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061107, '褰掓。鐘舵��', 'mes_pd_archive_status', 0, '褰掓。鐘舵��', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0', NULL);
+INSERT INTO `system_dict_type` VALUES (1061108, '鎬у埆', 'hrm_gender', 0, NULL, '1', '2026-07-06 11:00:21', '1', '2026-07-06 11:00:21', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061109, '鍛樺伐鐘舵��', 'hrm_employee_status', 0, NULL, '1', '2026-07-06 11:01:28', '1', '2026-07-06 11:01:28', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061110, '瀛﹀巻', 'hrm_degree', 0, NULL, '1', '2026-07-06 11:13:51', '1', '2026-07-06 11:13:51', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061111, '璇峰亣绫诲瀷', 'hrm_leave_type', 0, NULL, '1', '2026-07-06 11:15:50', '1', '2026-07-06 11:15:50', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061112, '璋冨矖绫诲瀷', 'hrm_transfer_type', 0, NULL, '1', '2026-07-06 11:18:02', '1', '2026-07-06 11:18:02', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061113, '绂昏亴绫诲瀷', 'hrm_resignation_type', 0, NULL, '1', '2026-07-06 11:18:32', '1', '2026-07-06 11:18:32', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061114, '鎵撳崱绫诲瀷', 'hrm_clock_type', 0, NULL, '1', '2026-07-06 11:20:57', '1', '2026-07-06 11:20:57', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061115, '钖祫鐘舵��', 'hrm_salary_status', 0, NULL, '1', '2026-07-06 11:21:41', '1', '2026-07-06 11:21:41', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061116, '浜ゆ帴鐘舵��', 'hrm_handover_status', 0, NULL, '1', '2026-07-06 11:22:47', '1', '2026-07-06 11:22:47', b'0', '1970-01-01 00:00:00');
+INSERT INTO `system_dict_type` VALUES (1061117, '鍙戞斁鏂瑰紡', 'hrm_payment_method', 0, NULL, '1', '2026-07-06 11:23:38', '1', '2026-07-06 11:23:38', b'0', '1970-01-01 00:00:00');
+
+-- ----------------------------
+-- Table structure for system_login_log
+-- ----------------------------
+DROP TABLE IF EXISTS `system_login_log`;
+CREATE TABLE `system_login_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '璁块棶ID',
+  `log_type` bigint NOT NULL COMMENT '鏃ュ織绫诲瀷',
+  `trace_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '閾捐矾杩借釜缂栧彿',
+  `user_id` bigint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛绫诲瀷',
+  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鐢ㄦ埛璐﹀彿',
+  `result` tinyint NOT NULL COMMENT '鐧婚檰缁撴灉',
+  `user_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛 IP',
+  `user_agent` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娴忚鍣� UA',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_username`(`username` ASC) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 5280 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绯荤粺璁块棶璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_login_log
+-- ----------------------------
+INSERT INTO `system_login_log` VALUES (5226, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:03:36', NULL, '2026-06-22 15:03:36', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5227, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:41:45', NULL, '2026-06-22 15:41:45', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5228, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:41:47', NULL, '2026-06-22 15:41:47', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5229, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:42:10', NULL, '2026-06-22 15:42:10', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5230, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:44:55', NULL, '2026-06-22 15:44:55', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5231, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:46:30', NULL, '2026-06-22 15:46:30', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5232, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:46:33', NULL, '2026-06-22 15:46:33', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5233, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:46:34', NULL, '2026-06-22 15:46:34', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5234, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 15:47:16', NULL, '2026-06-22 15:47:16', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5235, 100, '', 1, 2, 'admin', 0, '0:0:0:0:0:0:0:1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-22 17:01:39', NULL, '2026-06-22 17:01:39', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5236, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-23 14:51:19', NULL, '2026-06-23 14:51:19', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5237, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-23 14:52:03', NULL, '2026-06-23 14:52:03', b'0', 1);
+INSERT INTO `system_login_log` VALUES (5238, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-23 17:46:05', NULL, '2026-06-23 17:46:05', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5239, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-23 17:46:13', NULL, '2026-06-23 17:46:13', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5240, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-24 09:28:23', NULL, '2026-06-24 09:28:23', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5241, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-24 17:37:24', NULL, '2026-06-24 17:37:24', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5242, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-24 17:51:49', NULL, '2026-06-24 17:51:49', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5243, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 10:47:36', '1', '2026-06-26 10:47:36', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5244, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-26 10:47:55', NULL, '2026-06-26 10:47:55', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5245, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 10:48:35', '1', '2026-06-26 10:48:35', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5246, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 10:48:57', '1', '2026-06-26 10:48:57', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5247, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-26 10:49:00', NULL, '2026-06-26 10:49:00', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5248, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-26 10:53:10', NULL, '2026-06-26 10:53:10', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5249, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 10:53:17', '1', '2026-06-26 10:53:17', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5250, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-26 10:53:23', NULL, '2026-06-26 10:53:23', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5251, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 10:55:45', '1', '2026-06-26 10:55:45', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5252, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-26 10:55:48', NULL, '2026-06-26 10:55:48', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5253, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-29 15:15:35', NULL, '2026-06-29 15:15:35', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5254, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-30 09:14:01', NULL, '2026-06-30 09:14:01', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5255, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-30 09:17:02', '1', '2026-06-30 09:17:02', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5256, 100, '', 142, 2, 'test01', 10, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-30 09:17:04', NULL, '2026-06-30 09:17:04', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5257, 100, '', 142, 2, 'test01', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-30 09:17:07', NULL, '2026-06-30 09:17:07', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5258, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-06-30 14:25:50', NULL, '2026-06-30 14:25:50', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5259, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-07-01 10:09:55', NULL, '2026-07-01 10:09:55', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5260, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', NULL, '2026-07-01 10:39:25', NULL, '2026-07-01 10:39:25', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5261, 100, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', NULL, '2026-07-01 13:59:29', NULL, '2026-07-01 13:59:29', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5262, 100, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', NULL, '2026-07-01 14:34:00', NULL, '2026-07-01 14:34:00', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5263, 100, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', NULL, '2026-07-01 16:52:04', NULL, '2026-07-01 16:52:04', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5264, 100, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', NULL, '2026-07-02 13:55:18', NULL, '2026-07-02 13:55:18', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5265, 100, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', NULL, '2026-07-02 14:21:23', NULL, '2026-07-02 14:21:23', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5266, 100, '', 1, 2, 'admin', 0, '192.168.0.244', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', NULL, '2026-07-03 11:44:32', NULL, '2026-07-03 11:44:32', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5267, 200, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', '1', '2026-07-03 15:05:15', '1', '2026-07-03 15:05:15', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5268, 100, '', 1, 2, 'admin', 0, '192.168.1.38', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', NULL, '2026-07-03 15:05:35', NULL, '2026-07-03 15:05:35', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5269, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-06 10:33:59', NULL, '2026-07-06 10:33:59', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5270, 200, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '1', '2026-07-06 15:22:28', '1', '2026-07-06 15:22:28', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5271, 100, '', 227, 2, '15822054767', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-06 15:22:32', NULL, '2026-07-06 15:22:32', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5272, 200, '', 227, 2, '15822054767', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '227', '2026-07-06 15:22:38', '227', '2026-07-06 15:22:38', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5273, 100, '', 1, 2, 'admin', 10, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-06 15:22:44', NULL, '2026-07-06 15:22:44', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5274, 100, '', 1, 2, 'admin', 10, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-06 15:22:46', NULL, '2026-07-06 15:22:46', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5275, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-06 15:22:55', NULL, '2026-07-06 15:22:55', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5276, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-07 09:39:49', NULL, '2026-07-07 09:39:49', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5277, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-07 09:59:14', NULL, '2026-07-07 09:59:14', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5278, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', NULL, '2026-07-08 13:30:14', NULL, '2026-07-08 13:30:14', b'0', 0);
+INSERT INTO `system_login_log` VALUES (5279, 100, '', 1, 2, 'admin', 0, '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', NULL, '2026-07-09 17:08:24', NULL, '2026-07-09 17:08:24', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_mail_account
+-- ----------------------------
+DROP TABLE IF EXISTS `system_mail_account`;
+CREATE TABLE `system_mail_account`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `mail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閭',
+  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛鍚�',
+  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀵嗙爜',
+  `host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SMTP 鏈嶅姟鍣ㄥ煙鍚�',
+  `port` int NOT NULL COMMENT 'SMTP 鏈嶅姟鍣ㄧ鍙�',
+  `ssl_enable` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁寮�鍚� SSL',
+  `starttls_enable` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁寮�鍚� STARTTLS',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '閭璐﹀彿琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_mail_account
+-- ----------------------------
+INSERT INTO `system_mail_account` VALUES (1, '7684413@qq.com', '7684413@qq.com', '1234576', '127.0.0.1', 8080, b'0', b'0', '1', '2023-01-25 17:39:52', '1', '2025-04-04 16:34:40', b'0');
+INSERT INTO `system_mail_account` VALUES (2, 'ydym_test@163.com', 'ydym_test@163.com', 'WBZTEINMIFVRYSOE', 'smtp.163.com', 465, b'1', b'0', '1', '2023-01-26 01:26:03', '1', '2025-12-20 18:09:32', b'0');
+INSERT INTO `system_mail_account` VALUES (3, '76854114@qq.com', '3335', '11234', 'yunai1.cn', 466, b'0', b'0', '1', '2023-01-27 15:06:38', '1', '2023-01-27 07:08:36', b'1');
+INSERT INTO `system_mail_account` VALUES (4, '7685413x@qq.com', '2', '3', '4', 5, b'1', b'0', '1', '2023-04-12 23:05:06', '1', '2023-04-12 15:05:11', b'1');
+
+-- ----------------------------
+-- Table structure for system_mail_log
+-- ----------------------------
+DROP TABLE IF EXISTS `system_mail_log`;
+CREATE TABLE `system_mail_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NULL DEFAULT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `to_mails` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎺ユ敹閭鍦板潃',
+  `cc_mails` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎶勯�侀偖绠卞湴鍧�',
+  `bcc_mails` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瀵嗛�侀偖绠卞湴鍧�',
+  `account_id` bigint NOT NULL COMMENT '閭璐﹀彿缂栧彿',
+  `from_mail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍙戦�侀偖绠卞湴鍧�',
+  `template_id` bigint NOT NULL COMMENT '妯℃澘缂栧彿',
+  `template_code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘缂栫爜',
+  `template_nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '妯$増鍙戦�佷汉鍚嶇О',
+  `template_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閭欢鏍囬',
+  `template_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閭欢鍐呭',
+  `template_params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '閭欢鍙傛暟',
+  `send_status` tinyint NOT NULL DEFAULT 0 COMMENT '鍙戦�佺姸鎬�',
+  `send_time` datetime NULL DEFAULT NULL COMMENT '鍙戦�佹椂闂�',
+  `send_message_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙戦�佽繑鍥炵殑娑堟伅 ID',
+  `send_exception` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙戦�佸紓甯�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 368 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '閭欢鏃ュ織琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_mail_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_mail_template
+-- ----------------------------
+DROP TABLE IF EXISTS `system_mail_template`;
+CREATE TABLE `system_mail_template`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘鍚嶇О',
+  `code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘缂栫爜',
+  `account_id` bigint NOT NULL COMMENT '鍙戦�佺殑閭璐﹀彿缂栧彿',
+  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙戦�佷汉鍚嶇О',
+  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘鏍囬',
+  `content` varchar(10240) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘鍐呭',
+  `params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍙傛暟鏁扮粍',
+  `status` tinyint NOT NULL COMMENT '寮�鍚姸鎬�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '閭欢妯$増琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_mail_template
+-- ----------------------------
+INSERT INTO `system_mail_template` VALUES (13, '鍚庡彴鐢ㄦ埛鐭俊鐧诲綍', 'admin-sms-login', 1, '濂ョ壒鏇�', '浣犵寽鎴戠寽', '<p>鎮ㄧ殑楠岃瘉鐮佹槸{code}锛屽悕瀛楁槸{name}</p>', '[\"code\",\"name\"]', 0, '3', '1', '2021-10-11 08:10:00', '1', '2023-12-02 19:51:14', b'0');
+INSERT INTO `system_mail_template` VALUES (14, '娴嬭瘯妯$増', 'test_01', 2, '鑺嬭壙', '涓�涓爣棰�', '<p>浣犳槸 {key01} 鍚楋紵</p><p><br></p><p>鏄殑璇濓紝璧剁揣 {key02} 涓�涓嬶紒</p>', '[\"key01\",\"key02\"]', 0, NULL, '1', '2023-01-26 01:27:40', '1', '2025-07-26 21:48:45', b'0');
+INSERT INTO `system_mail_template` VALUES (15, '3', '2', 2, '7', '4', '<p>45</p>', '[]', 1, '80', '1', '2023-01-27 15:50:35', '1', '2025-07-26 21:47:49', b'1');
+
+-- ----------------------------
+-- Table structure for system_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `system_menu`;
+CREATE TABLE `system_menu`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鑿滃崟ID',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑿滃崟鍚嶇О',
+  `permission` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鏉冮檺鏍囪瘑',
+  `type` tinyint NOT NULL COMMENT '鑿滃崟绫诲瀷',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鏄剧ず椤哄簭',
+  `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '鐖惰彍鍗旾D',
+  `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '璺敱鍦板潃',
+  `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '#' COMMENT '鑿滃崟鍥炬爣',
+  `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁勪欢璺緞',
+  `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '缁勪欢鍚�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鑿滃崟鐘舵��',
+  `visible` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鍙',
+  `keep_alive` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁缂撳瓨',
+  `always_show` bit(1) NOT NULL DEFAULT b'1' COMMENT '鏄惁鎬绘槸鏄剧ず',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 602452 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鑿滃崟鏉冮檺琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_menu
+-- ----------------------------
+INSERT INTO `system_menu` VALUES (1, '绯荤粺绠$悊', '', 1, 10, 0, '/system', 'ep:tools', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2025-03-15 21:30:27', b'0');
+INSERT INTO `system_menu` VALUES (2, '鍩虹璁炬柦', '', 1, 99, 0, '/infra', 'ep:monitor', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2026-07-03 11:02:25', b'0');
+INSERT INTO `system_menu` VALUES (5, 'OA 绀轰緥', '', 1, 40, 1185, 'oa', 'fa:road', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2021-09-20 16:26:19', '1', '2024-02-29 12:38:13', b'0');
+INSERT INTO `system_menu` VALUES (100, '鐢ㄦ埛绠$悊', 'system:user:list', 2, 1, 1, 'user', 'ep:avatar', 'system/user/index', 'SystemUser', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2026-01-01 18:43:01', b'0');
+INSERT INTO `system_menu` VALUES (101, '瑙掕壊绠$悊', '', 2, 2, 1, 'role', 'ep:user', 'system/role/index', 'SystemRole', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2026-01-05 19:30:33', b'0');
+INSERT INTO `system_menu` VALUES (102, '鑿滃崟绠$悊', '', 2, 3, 1, 'menu', 'ep:menu', 'system/menu/index', 'SystemMenu', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:03:50', b'0');
+INSERT INTO `system_menu` VALUES (103, '閮ㄩ棬绠$悊', '', 2, 4, 1, 'dept', 'fa:address-card', 'system/dept/index', 'SystemDept', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:06:28', b'0');
+INSERT INTO `system_menu` VALUES (104, '宀椾綅绠$悊', '', 2, 5, 1, 'post', 'fa:address-book-o', 'system/post/index', 'SystemPost', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:06:39', b'0');
+INSERT INTO `system_menu` VALUES (105, '瀛楀吀绠$悊', '', 2, 6, 1, 'dict', 'ep:collection', 'system/dict/index', 'SystemDictType', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:07:12', b'0');
+INSERT INTO `system_menu` VALUES (106, '閰嶇疆绠$悊', '', 2, 8, 2, 'config', 'fa:connectdevelop', 'infra/config/index', 'InfraConfig', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-04-23 00:02:45', b'0');
+INSERT INTO `system_menu` VALUES (107, '閫氱煡鍏憡', '', 2, 4, 2739, 'notice', 'ep:takeaway-box', 'system/notice/index', 'SystemNotice', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-04-22 23:56:17', b'0');
+INSERT INTO `system_menu` VALUES (108, '瀹¤鏃ュ織', '', 1, 9, 1, 'log', 'ep:document-copy', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:08:30', b'0');
+INSERT INTO `system_menu` VALUES (109, '浠ょ墝绠$悊', '', 2, 2, 1261, 'token', 'fa:key', 'system/oauth2/token/index', 'SystemTokenClient', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:13:48', b'0');
+INSERT INTO `system_menu` VALUES (110, '瀹氭椂浠诲姟', '', 2, 7, 2, 'job', 'fa-solid:tasks', 'infra/job/index', 'InfraJob', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 08:57:36', b'0');
+INSERT INTO `system_menu` VALUES (111, 'MySQL 鐩戞帶', '', 2, 1, 2740, 'druid', 'fa-solid:box', 'infra/druid/index', 'InfraDruid', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-04-23 00:05:58', b'0');
+INSERT INTO `system_menu` VALUES (112, 'Java 鐩戞帶', '', 2, 3, 2740, 'admin-server', 'ep:coffee-cup', 'infra/server/index', 'InfraAdminServer', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-04-23 00:06:57', b'0');
+INSERT INTO `system_menu` VALUES (113, 'Redis 鐩戞帶', '', 2, 2, 2740, 'redis', 'fa:reddit-square', 'infra/redis/index', 'InfraRedis', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-04-23 00:06:09', b'0');
+INSERT INTO `system_menu` VALUES (114, '琛ㄥ崟鏋勫缓', 'infra:build:list', 2, 2, 2, 'build', 'fa:wpforms', 'infra/build/index', 'InfraBuild', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 08:51:35', b'0');
+INSERT INTO `system_menu` VALUES (115, '浠g爜鐢熸垚', 'infra:codegen:query', 2, 1, 2, 'codegen', 'ep:document-copy', 'infra/codegen/index', 'InfraCodegen', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 08:51:06', b'0');
+INSERT INTO `system_menu` VALUES (116, 'API 鎺ュ彛', 'infra:swagger:list', 2, 3, 2, 'swagger', 'fa:fighter-jet', 'infra/swagger/index', 'InfraSwagger', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-04-23 00:01:24', b'0');
+INSERT INTO `system_menu` VALUES (500, '鎿嶄綔鏃ュ織', '', 2, 1, 108, 'operate-log', 'ep:position', 'system/operatelog/index', 'SystemOperateLog', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:09:59', b'0');
+INSERT INTO `system_menu` VALUES (501, '鐧诲綍鏃ュ織', '', 2, 2, 108, 'login-log', 'ep:promotion', 'system/loginlog/index', 'SystemLoginLog', 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2024-02-29 01:10:29', b'0');
+INSERT INTO `system_menu` VALUES (1001, '鐢ㄦ埛鏌ヨ', 'system:user:query', 3, 1, 100, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1002, '鐢ㄦ埛鏂板', 'system:user:create', 3, 2, 100, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1003, '鐢ㄦ埛淇敼', 'system:user:update', 3, 3, 100, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1004, '鐢ㄦ埛鍒犻櫎', 'system:user:delete', 3, 4, 100, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1005, '鐢ㄦ埛瀵煎嚭', 'system:user:export', 3, 5, 100, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1006, '鐢ㄦ埛瀵煎叆', 'system:user:import', 3, 6, 100, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1007, '閲嶇疆瀵嗙爜', 'system:user:update-password', 3, 7, 100, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1008, '瑙掕壊鏌ヨ', 'system:role:query', 3, 1, 101, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1009, '瑙掕壊鏂板', 'system:role:create', 3, 2, 101, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1010, '瑙掕壊淇敼', 'system:role:update', 3, 3, 101, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1011, '瑙掕壊鍒犻櫎', 'system:role:delete', 3, 4, 101, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1012, '瑙掕壊瀵煎嚭', 'system:role:export', 3, 5, 101, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1013, '鑿滃崟鏌ヨ', 'system:menu:query', 3, 1, 102, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1014, '鑿滃崟鏂板', 'system:menu:create', 3, 2, 102, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1015, '鑿滃崟淇敼', 'system:menu:update', 3, 3, 102, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1016, '鑿滃崟鍒犻櫎', 'system:menu:delete', 3, 4, 102, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1017, '閮ㄩ棬鏌ヨ', 'system:dept:query', 3, 1, 103, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1018, '閮ㄩ棬鏂板', 'system:dept:create', 3, 2, 103, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1019, '閮ㄩ棬淇敼', 'system:dept:update', 3, 3, 103, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1020, '閮ㄩ棬鍒犻櫎', 'system:dept:delete', 3, 4, 103, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1021, '宀椾綅鏌ヨ', 'system:post:query', 3, 1, 104, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1022, '宀椾綅鏂板', 'system:post:create', 3, 2, 104, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1023, '宀椾綅淇敼', 'system:post:update', 3, 3, 104, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1024, '宀椾綅鍒犻櫎', 'system:post:delete', 3, 4, 104, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1025, '宀椾綅瀵煎嚭', 'system:post:export', 3, 5, 104, '', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1026, '瀛楀吀鏌ヨ', 'system:dict:query', 3, 1, 105, '#', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1027, '瀛楀吀鏂板', 'system:dict:create', 3, 2, 105, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1028, '瀛楀吀淇敼', 'system:dict:update', 3, 3, 105, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1029, '瀛楀吀鍒犻櫎', 'system:dict:delete', 3, 4, 105, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1030, '瀛楀吀瀵煎嚭', 'system:dict:export', 3, 5, 105, '#', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1031, '閰嶇疆鏌ヨ', 'infra:config:query', 3, 1, 106, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1032, '閰嶇疆鏂板', 'infra:config:create', 3, 2, 106, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1033, '閰嶇疆淇敼', 'infra:config:update', 3, 3, 106, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1034, '閰嶇疆鍒犻櫎', 'infra:config:delete', 3, 4, 106, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1035, '閰嶇疆瀵煎嚭', 'infra:config:export', 3, 5, 106, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1036, '鍏憡鏌ヨ', 'system:notice:query', 3, 1, 107, '#', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1037, '鍏憡鏂板', 'system:notice:create', 3, 2, 107, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1038, '鍏憡淇敼', 'system:notice:update', 3, 3, 107, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1039, '鍏憡鍒犻櫎', 'system:notice:delete', 3, 4, 107, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1040, '鎿嶄綔鏌ヨ', 'system:operate-log:query', 3, 1, 500, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1042, '鏃ュ織瀵煎嚭', 'system:operate-log:export', 3, 2, 500, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1043, '鐧诲綍鏌ヨ', 'system:login-log:query', 3, 1, 501, '#', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1045, '鏃ュ織瀵煎嚭', 'system:login-log:export', 3, 3, 501, '#', '#', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1046, '浠ょ墝鍒楄〃', 'system:oauth2-token:page', 3, 1, 109, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:42', b'0');
+INSERT INTO `system_menu` VALUES (1048, '浠ょ墝鍒犻櫎', 'system:oauth2-token:delete', 3, 2, 109, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:53', b'0');
+INSERT INTO `system_menu` VALUES (1050, '浠诲姟鏂板', 'infra:job:create', 3, 2, 110, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1051, '浠诲姟淇敼', 'infra:job:update', 3, 3, 110, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1052, '浠诲姟鍒犻櫎', 'infra:job:delete', 3, 4, 110, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1053, '鐘舵�佷慨鏀�', 'infra:job:update', 3, 5, 110, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1054, '浠诲姟瀵煎嚭', 'infra:job:export', 3, 7, 110, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1056, '鐢熸垚淇敼', 'infra:codegen:update', 3, 2, 115, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1057, '鐢熸垚鍒犻櫎', 'infra:codegen:delete', 3, 3, 115, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1058, '瀵煎叆浠g爜', 'infra:codegen:create', 3, 2, 115, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1059, '棰勮浠g爜', 'infra:codegen:preview', 3, 4, 115, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1060, '鐢熸垚浠g爜', 'infra:codegen:download', 3, 5, 115, '', '', '', NULL, 0, b'1', b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1063, '璁剧疆瑙掕壊鑿滃崟鏉冮檺', 'system:permission:assign-role-menu', 3, 6, 101, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-01-06 17:53:44', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1064, '璁剧疆瑙掕壊鏁版嵁鏉冮檺', 'system:permission:assign-role-data-scope', 3, 7, 101, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-01-06 17:56:31', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1065, '璁剧疆鐢ㄦ埛瑙掕壊', 'system:permission:assign-user-role', 3, 8, 101, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-01-07 10:23:28', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1066, '鑾峰緱 Redis 鐩戞帶淇℃伅', 'infra:redis:get-monitor-info', 3, 1, 113, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-01-26 01:02:31', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1067, '鑾峰緱 Redis Key 鍒楄〃', 'infra:redis:get-key-list', 3, 2, 113, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-01-26 01:02:52', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1070, '浠g爜鐢熸垚妗堜緥', '', 1, 1, 2, 'demo', 'ep:aim', 'infra/testDemo/index', NULL, 0, b'1', b'1', b'1', '', '2021-02-06 12:42:49', '1', '2023-11-15 23:45:53', b'0');
+INSERT INTO `system_menu` VALUES (1075, '浠诲姟瑙﹀彂', 'infra:job:trigger', 3, 8, 110, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-02-07 13:03:10', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1077, '閾捐矾杩借釜', '', 2, 4, 2740, 'skywalking', 'fa:eye', 'infra/skywalking/index', 'InfraSkyWalking', 0, b'1', b'1', b'1', '', '2021-02-08 20:41:31', '1', '2024-04-23 00:07:15', b'0');
+INSERT INTO `system_menu` VALUES (1078, '璁块棶鏃ュ織', '', 2, 1, 1083, 'api-access-log', 'ep:place', 'infra/apiAccessLog/index', 'InfraApiAccessLog', 0, b'1', b'1', b'1', '', '2021-02-26 01:32:59', '1', '2024-02-29 08:54:57', b'0');
+INSERT INTO `system_menu` VALUES (1082, '鏃ュ織瀵煎嚭', 'infra:api-access-log:export', 3, 2, 1078, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1083, 'API 鏃ュ織', '', 2, 4, 2, 'log', 'fa:tasks', NULL, NULL, 0, b'1', b'1', b'1', '', '2021-02-26 02:18:24', '1', '2024-04-22 23:58:36', b'0');
+INSERT INTO `system_menu` VALUES (1084, '閿欒鏃ュ織', 'infra:api-error-log:query', 2, 2, 1083, 'api-error-log', 'ep:warning-filled', 'infra/apiErrorLog/index', 'InfraApiErrorLog', 0, b'1', b'1', b'1', '', '2021-02-26 07:53:20', '1', '2024-02-29 08:55:17', b'0');
+INSERT INTO `system_menu` VALUES (1085, '鏃ュ織澶勭悊', 'infra:api-error-log:update-status', 3, 2, 1084, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1086, '鏃ュ織瀵煎嚭', 'infra:api-error-log:export', 3, 3, 1084, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1087, '浠诲姟鏌ヨ', 'infra:job:query', 3, 1, 110, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2021-03-10 01:26:19', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1088, '鏃ュ織鏌ヨ', 'infra:api-access-log:query', 3, 1, 1078, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2021-03-10 01:28:04', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1089, '鏃ュ織鏌ヨ', 'infra:api-error-log:query', 3, 1, 1084, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2021-03-10 01:29:09', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1090, '鏂囦欢鍒楄〃', '', 2, 5, 1243, 'file', 'ep:upload-filled', 'infra/file/index', 'InfraFile', 0, b'1', b'1', b'1', '', '2021-03-12 20:16:20', '1', '2024-02-29 08:53:02', b'0');
+INSERT INTO `system_menu` VALUES (1091, '鏂囦欢鏌ヨ', 'infra:file:query', 3, 1, 1090, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1092, '鏂囦欢鍒犻櫎', 'infra:file:delete', 3, 4, 1090, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1093, '鐭俊绠$悊', '', 1, 1, 2739, 'sms', 'ep:message', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-04-05 01:10:16', '1', '2024-04-22 23:56:03', b'0');
+INSERT INTO `system_menu` VALUES (1094, '鐭俊娓犻亾', '', 2, 0, 1093, 'sms-channel', 'fa:stack-exchange', 'system/sms/channel/index', 'SystemSmsChannel', 0, b'1', b'1', b'1', '', '2021-04-01 11:07:15', '1', '2024-02-29 01:15:54', b'0');
+INSERT INTO `system_menu` VALUES (1095, '鐭俊娓犻亾鏌ヨ', 'system:sms-channel:query', 3, 1, 1094, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1096, '鐭俊娓犻亾鍒涘缓', 'system:sms-channel:create', 3, 2, 1094, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1097, '鐭俊娓犻亾鏇存柊', 'system:sms-channel:update', 3, 3, 1094, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1098, '鐭俊娓犻亾鍒犻櫎', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1100, '鐭俊妯℃澘', '', 2, 1, 1093, 'sms-template', 'ep:connection', 'system/sms/template/index', 'SystemSmsTemplate', 0, b'1', b'1', b'1', '', '2021-04-01 17:35:17', '1', '2024-02-29 01:16:18', b'0');
+INSERT INTO `system_menu` VALUES (1101, '鐭俊妯℃澘鏌ヨ', 'system:sms-template:query', 3, 1, 1100, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1102, '鐭俊妯℃澘鍒涘缓', 'system:sms-template:create', 3, 2, 1100, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1103, '鐭俊妯℃澘鏇存柊', 'system:sms-template:update', 3, 3, 1100, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1104, '鐭俊妯℃澘鍒犻櫎', 'system:sms-template:delete', 3, 4, 1100, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1105, '鐭俊妯℃澘瀵煎嚭', 'system:sms-template:export', 3, 5, 1100, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1106, '鍙戦�佹祴璇曠煭淇�', 'system:sms-template:send-sms', 3, 6, 1100, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2021-04-11 00:26:40', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1107, '鐭俊鏃ュ織', '', 2, 2, 1093, 'sms-log', 'fa:edit', 'system/sms/log/index', 'SystemSmsLog', 0, b'1', b'1', b'1', '', '2021-04-11 08:37:05', '1', '2024-02-29 08:49:02', b'0');
+INSERT INTO `system_menu` VALUES (1108, '鐭俊鏃ュ織鏌ヨ', 'system:sms-log:query', 3, 1, 1107, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1109, '鐭俊鏃ュ織瀵煎嚭', 'system:sms-log:export', 3, 5, 1107, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1117, '鏀粯绠$悊', '', 1, 30, 0, '/pay', 'ep:money', NULL, NULL, 1, b'1', b'1', b'1', '1', '2021-12-25 16:43:41', '1', '2026-07-01 13:35:21', b'1');
+INSERT INTO `system_menu` VALUES (1118, '璇峰亣鏌ヨ', '', 2, 0, 5, 'leave', 'fa:leanpub', 'bpm/oa/leave/index', 'BpmOALeave', 0, b'1', b'1', b'1', '', '2021-09-20 08:51:03', '1', '2024-02-29 12:38:21', b'0');
+INSERT INTO `system_menu` VALUES (1119, '璇峰亣鐢宠鏌ヨ', 'bpm:oa-leave:query', 3, 1, 1118, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1120, '璇峰亣鐢宠鍒涘缓', 'bpm:oa-leave:create', 3, 2, 1118, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1126, '搴旂敤淇℃伅', '', 2, 1, 1117, 'app', 'fa:apple', 'pay/app/index', 'PayApp', 0, b'1', b'1', b'1', '', '2021-11-10 01:13:30', '1', '2026-07-01 13:34:32', b'1');
+INSERT INTO `system_menu` VALUES (1127, '鏀粯搴旂敤淇℃伅鏌ヨ', 'pay:app:query', 3, 1, 1126, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:31', '1', '2026-07-01 13:34:13', b'1');
+INSERT INTO `system_menu` VALUES (1128, '鏀粯搴旂敤淇℃伅鍒涘缓', 'pay:app:create', 3, 2, 1126, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:31', '1', '2026-07-01 13:34:10', b'1');
+INSERT INTO `system_menu` VALUES (1129, '鏀粯搴旂敤淇℃伅鏇存柊', 'pay:app:update', 3, 3, 1126, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:31', '1', '2026-07-01 13:34:30', b'1');
+INSERT INTO `system_menu` VALUES (1130, '鏀粯搴旂敤淇℃伅鍒犻櫎', 'pay:app:delete', 3, 4, 1126, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:31', '1', '2026-07-01 13:34:08', b'1');
+INSERT INTO `system_menu` VALUES (1132, '绉橀挜瑙f瀽', 'pay:channel:parsing', 3, 6, 1129, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2021-11-08 15:15:47', '1', '2026-07-01 13:34:28', b'1');
+INSERT INTO `system_menu` VALUES (1133, '鏀粯鍟嗘埛淇℃伅鏌ヨ', 'pay:merchant:query', 3, 1, 1132, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:41', '1', '2026-07-01 13:34:19', b'1');
+INSERT INTO `system_menu` VALUES (1134, '鏀粯鍟嗘埛淇℃伅鍒涘缓', 'pay:merchant:create', 3, 2, 1132, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:41', '1', '2026-07-01 13:34:21', b'1');
+INSERT INTO `system_menu` VALUES (1135, '鏀粯鍟嗘埛淇℃伅鏇存柊', 'pay:merchant:update', 3, 3, 1132, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:41', '1', '2026-07-01 13:34:22', b'1');
+INSERT INTO `system_menu` VALUES (1136, '鏀粯鍟嗘埛淇℃伅鍒犻櫎', 'pay:merchant:delete', 3, 4, 1132, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:41', '1', '2026-07-01 13:34:24', b'1');
+INSERT INTO `system_menu` VALUES (1137, '鏀粯鍟嗘埛淇℃伅瀵煎嚭', 'pay:merchant:export', 3, 5, 1132, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-11-10 01:13:41', '1', '2026-07-01 13:34:26', b'1');
+INSERT INTO `system_menu` VALUES (1138, '绉熸埛鍒楄〃', '', 2, 0, 1224, 'list', 'ep:house', 'system/tenant/index', 'SystemTenant', 0, b'1', b'1', b'1', '', '2021-12-14 12:31:43', '1', '2024-02-29 01:01:10', b'0');
+INSERT INTO `system_menu` VALUES (1139, '绉熸埛鏌ヨ', 'system:tenant:query', 3, 1, 1138, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1140, '绉熸埛鍒涘缓', 'system:tenant:create', 3, 2, 1138, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1141, '绉熸埛鏇存柊', 'system:tenant:update', 3, 3, 1138, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1142, '绉熸埛鍒犻櫎', 'system:tenant:delete', 3, 4, 1138, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1143, '绉熸埛瀵煎嚭', 'system:tenant:export', 3, 5, 1138, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1150, '绉橀挜瑙f瀽', '', 3, 6, 1129, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2021-11-08 15:15:47', '1', '2026-07-01 13:34:16', b'1');
+INSERT INTO `system_menu` VALUES (1161, '閫�娆捐鍗�', '', 2, 3, 1117, 'refund', 'fa:registered', 'pay/refund/index', 'PayRefund', 0, b'1', b'1', b'1', '', '2021-12-25 08:29:07', '1', '2026-07-01 13:35:12', b'1');
+INSERT INTO `system_menu` VALUES (1162, '閫�娆捐鍗曟煡璇�', 'pay:refund:query', 3, 1, 1161, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-25 08:29:07', '1', '2026-07-01 13:34:54', b'1');
+INSERT INTO `system_menu` VALUES (1166, '閫�娆捐鍗曞鍑�', 'pay:refund:export', 3, 5, 1161, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-25 08:29:07', '1', '2026-07-01 13:34:52', b'1');
+INSERT INTO `system_menu` VALUES (1173, '鏀粯璁㈠崟', '', 2, 2, 1117, 'order', 'fa:cc-paypal', 'pay/order/index', 'PayOrder', 0, b'1', b'1', b'1', '', '2021-12-25 08:49:43', '1', '2026-07-01 13:35:19', b'1');
+INSERT INTO `system_menu` VALUES (1174, '鏀粯璁㈠崟鏌ヨ', 'pay:order:query', 3, 1, 1173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-25 08:49:43', '1', '2026-07-01 13:35:16', b'1');
+INSERT INTO `system_menu` VALUES (1178, '鏀粯璁㈠崟瀵煎嚭', 'pay:order:export', 3, 5, 1173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-25 08:49:43', '1', '2026-07-01 13:35:18', b'1');
+INSERT INTO `system_menu` VALUES (1185, '鍗忓悓鍔炲叕', '', 1, 50, 0, '/bpm', 'fa:medium', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-12-30 20:26:36', '1', '2026-07-01 13:31:11', b'0');
+INSERT INTO `system_menu` VALUES (1186, '娴佺▼绠$悊', '', 1, 10, 1185, 'manager', 'fa:dedent', NULL, NULL, 0, b'1', b'1', b'1', '1', '2021-12-30 20:28:30', '1', '2024-02-29 12:36:02', b'0');
+INSERT INTO `system_menu` VALUES (1187, '娴佺▼琛ㄥ崟', '', 2, 2, 1186, 'form', 'fa:hdd-o', 'bpm/form/index', 'BpmForm', 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2024-03-19 12:25:25', b'0');
+INSERT INTO `system_menu` VALUES (1188, '琛ㄥ崟鏌ヨ', 'bpm:form:query', 3, 1, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1189, '琛ㄥ崟鍒涘缓', 'bpm:form:create', 3, 2, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1190, '琛ㄥ崟鏇存柊', 'bpm:form:update', 3, 3, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1191, '琛ㄥ崟鍒犻櫎', 'bpm:form:delete', 3, 4, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1192, '琛ㄥ崟瀵煎嚭', 'bpm:form:export', 3, 5, 1187, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1193, '娴佺▼妯″瀷', '', 2, 1, 1186, 'model', 'fa-solid:project-diagram', 'bpm/model/index', 'BpmModel', 0, b'1', b'1', b'1', '1', '2021-12-31 23:24:58', '1', '2024-03-19 12:25:19', b'0');
+INSERT INTO `system_menu` VALUES (1194, '妯″瀷鏌ヨ', 'bpm:model:query', 3, 1, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1195, '妯″瀷鍒涘缓', 'bpm:model:create', 3, 2, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1197, '妯″瀷鏇存柊', 'bpm:model:update', 3, 4, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1198, '妯″瀷鍒犻櫎', 'bpm:model:delete', 3, 5, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1199, '妯″瀷鍙戝竷', 'bpm:model:deploy', 3, 6, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1200, '瀹℃壒涓績', '', 2, 20, 1185, 'task', 'fa:tasks', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-01-07 23:51:48', '1', '2024-03-21 00:33:15', b'0');
+INSERT INTO `system_menu` VALUES (1201, '鎴戠殑娴佺▼', '', 2, 1, 1200, 'my', 'fa-solid:book', 'bpm/processInstance/index', 'BpmProcessInstanceMy', 0, b'1', b'1', b'1', '', '2022-01-07 15:53:44', '1', '2024-03-21 23:52:12', b'0');
+INSERT INTO `system_menu` VALUES (1202, '娴佺▼瀹炰緥鐨勬煡璇�', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1207, '寰呭姙浠诲姟', '', 2, 10, 1200, 'todo', 'fa:slack', 'bpm/task/todo/index', 'BpmTodoTask', 0, b'1', b'1', b'1', '1', '2022-01-08 10:33:37', '1', '2024-02-29 12:37:39', b'0');
+INSERT INTO `system_menu` VALUES (1208, '宸插姙浠诲姟', '', 2, 20, 1200, 'done', 'fa:delicious', 'bpm/task/done/index', 'BpmDoneTask', 0, b'1', b'1', b'1', '1', '2022-01-08 10:34:13', '1', '2024-02-29 12:37:54', b'0');
+INSERT INTO `system_menu` VALUES (1209, '鐢ㄦ埛鍒嗙粍', '', 2, 4, 1186, 'user-group', 'fa:user-secret', 'bpm/group/index', 'BpmUserGroup', 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '1', '2024-03-21 23:55:29', b'0');
+INSERT INTO `system_menu` VALUES (1210, '鐢ㄦ埛缁勬煡璇�', 'bpm:user-group:query', 3, 1, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1211, '鐢ㄦ埛缁勫垱寤�', 'bpm:user-group:create', 3, 2, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1212, '鐢ㄦ埛缁勬洿鏂�', 'bpm:user-group:update', 3, 3, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1213, '鐢ㄦ埛缁勫垹闄�', 'bpm:user-group:delete', 3, 4, 1209, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1215, '娴佺▼瀹氫箟鏌ヨ', 'bpm:process-definition:query', 3, 10, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:21:43', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1216, '娴佺▼浠诲姟鍒嗛厤瑙勫垯鏌ヨ', 'bpm:task-assign-rule:query', 3, 20, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:26:53', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1217, '娴佺▼浠诲姟鍒嗛厤瑙勫垯鍒涘缓', 'bpm:task-assign-rule:create', 3, 21, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:28:15', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1218, '娴佺▼浠诲姟鍒嗛厤瑙勫垯鏇存柊', 'bpm:task-assign-rule:update', 3, 22, 1193, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:28:41', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1219, '娴佺▼瀹炰緥鐨勫垱寤�', 'bpm:process-instance:create', 3, 2, 1201, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:36:15', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1220, '娴佺▼瀹炰緥鐨勫彇娑�', 'bpm:process-instance:cancel', 3, 3, 1201, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:36:33', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1221, '娴佺▼浠诲姟鐨勬煡璇�', 'bpm:task:query', 3, 1, 1207, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:38:52', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1222, '娴佺▼浠诲姟鐨勬洿鏂�', 'bpm:task:update', 3, 2, 1207, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-01-23 00:39:24', '1', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1224, '绉熸埛绠$悊', '', 2, 0, 1, 'tenant', 'fa-solid:house-user', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-02-20 01:41:13', '1', '2024-02-29 00:59:29', b'0');
+INSERT INTO `system_menu` VALUES (1225, '绉熸埛濂楅', '', 2, 0, 1224, 'package', 'fa:bars', 'system/tenantPackage/index', 'SystemTenantPackage', 0, b'1', b'1', b'1', '', '2022-02-19 17:44:06', '1', '2024-02-29 01:01:43', b'0');
+INSERT INTO `system_menu` VALUES (1226, '绉熸埛濂楅鏌ヨ', 'system:tenant-package:query', 3, 1, 1225, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1227, '绉熸埛濂楅鍒涘缓', 'system:tenant-package:create', 3, 2, 1225, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1228, '绉熸埛濂楅鏇存柊', 'system:tenant-package:update', 3, 3, 1225, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1229, '绉熸埛濂楅鍒犻櫎', 'system:tenant-package:delete', 3, 4, 1225, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1237, '鏂囦欢閰嶇疆', '', 2, 0, 1243, 'file-config', 'fa-solid:file-signature', 'infra/fileConfig/index', 'InfraFileConfig', 0, b'1', b'1', b'1', '', '2022-03-15 14:35:28', '1', '2024-02-29 08:52:54', b'0');
+INSERT INTO `system_menu` VALUES (1238, '鏂囦欢閰嶇疆鏌ヨ', 'infra:file-config:query', 3, 1, 1237, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1239, '鏂囦欢閰嶇疆鍒涘缓', 'infra:file-config:create', 3, 2, 1237, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1240, '鏂囦欢閰嶇疆鏇存柊', 'infra:file-config:update', 3, 3, 1237, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1241, '鏂囦欢閰嶇疆鍒犻櫎', 'infra:file-config:delete', 3, 4, 1237, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1242, '鏂囦欢閰嶇疆瀵煎嚭', 'infra:file-config:export', 3, 5, 1237, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0');
+INSERT INTO `system_menu` VALUES (1243, '鏂囦欢绠$悊', '', 2, 6, 2, 'file', 'ep:files', NULL, '', 0, b'1', b'1', b'1', '1', '2022-03-16 23:47:40', '1', '2024-04-23 00:02:11', b'0');
+INSERT INTO `system_menu` VALUES (1254, '浣滆�呭姩鎬�', '', 1, 0, 0, 'https://www.iocoder.cn', 'ep:avatar', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-04-23 01:03:15', '1', '2026-06-24 17:49:31', b'1');
+INSERT INTO `system_menu` VALUES (1255, '鏁版嵁婧愰厤缃�', '', 2, 1, 2, 'data-source-config', 'ep:data-analysis', 'infra/dataSourceConfig/index', 'InfraDataSourceConfig', 0, b'1', b'1', b'1', '', '2022-04-27 14:37:32', '1', '2024-02-29 08:51:25', b'0');
+INSERT INTO `system_menu` VALUES (1256, '鏁版嵁婧愰厤缃煡璇�', 'infra:data-source-config:query', 3, 1, 1255, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0');
+INSERT INTO `system_menu` VALUES (1257, '鏁版嵁婧愰厤缃垱寤�', 'infra:data-source-config:create', 3, 2, 1255, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0');
+INSERT INTO `system_menu` VALUES (1258, '鏁版嵁婧愰厤缃洿鏂�', 'infra:data-source-config:update', 3, 3, 1255, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0');
+INSERT INTO `system_menu` VALUES (1259, '鏁版嵁婧愰厤缃垹闄�', 'infra:data-source-config:delete', 3, 4, 1255, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0');
+INSERT INTO `system_menu` VALUES (1260, '鏁版嵁婧愰厤缃鍑�', 'infra:data-source-config:export', 3, 5, 1255, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0');
+INSERT INTO `system_menu` VALUES (1261, 'OAuth 2.0', '', 2, 10, 1, 'oauth2', 'fa:dashcube', NULL, NULL, 0, b'0', b'1', b'0', '1', '2022-05-09 23:38:17', '1', '2026-06-26 10:46:45', b'0');
+INSERT INTO `system_menu` VALUES (1263, '搴旂敤绠$悊', '', 2, 0, 1261, 'oauth2/application', 'fa:hdd-o', 'system/oauth2/client/index', 'SystemOAuth2Client', 0, b'1', b'1', b'1', '', '2022-05-10 16:26:33', '1', '2024-02-29 01:13:14', b'0');
+INSERT INTO `system_menu` VALUES (1264, '瀹㈡埛绔煡璇�', 'system:oauth2-client:query', 3, 1, 1263, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:06', b'0');
+INSERT INTO `system_menu` VALUES (1265, '瀹㈡埛绔垱寤�', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', b'0');
+INSERT INTO `system_menu` VALUES (1266, '瀹㈡埛绔洿鏂�', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', b'0');
+INSERT INTO `system_menu` VALUES (1267, '瀹㈡埛绔垹闄�', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', b'0');
+INSERT INTO `system_menu` VALUES (1281, '鎶ヨ〃绠$悊', '', 2, 40, 0, '/report', 'ep:pie-chart', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-07-10 20:22:15', '1', '2024-02-29 12:33:03', b'0');
+INSERT INTO `system_menu` VALUES (1282, '鎶ヨ〃璁捐鍣�', '', 2, 1, 1281, 'jimu-report', 'ep:trend-charts', 'report/jmreport/index', 'JimuReport', 0, b'1', b'1', b'1', '1', '2022-07-10 20:26:36', '1', '2025-05-03 09:57:07', b'0');
+INSERT INTO `system_menu` VALUES (2000, '鍟嗗搧涓績', '', 1, 60, 2362, 'product', 'fa:product-hunt', NULL, NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2026-06-30 10:06:50', b'1');
+INSERT INTO `system_menu` VALUES (2002, '鍟嗗搧鍒嗙被', '', 2, 2, 2000, 'category', 'ep:cellphone', 'mall/product/category/index', 'ProductCategory', 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2026-06-30 10:06:15', b'1');
+INSERT INTO `system_menu` VALUES (2003, '鍒嗙被鏌ヨ', 'product:category:query', 3, 1, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2026-06-30 10:06:07', b'1');
+INSERT INTO `system_menu` VALUES (2004, '鍒嗙被鍒涘缓', 'product:category:create', 3, 2, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2026-06-30 10:06:09', b'1');
+INSERT INTO `system_menu` VALUES (2005, '鍒嗙被鏇存柊', 'product:category:update', 3, 3, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2026-06-30 10:06:11', b'1');
+INSERT INTO `system_menu` VALUES (2006, '鍒嗙被鍒犻櫎', 'product:category:delete', 3, 4, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2026-06-30 10:06:13', b'1');
+INSERT INTO `system_menu` VALUES (2008, '鍟嗗搧鍝佺墝', '', 2, 3, 2000, 'brand', 'ep:chicken', 'mall/product/brand/index', 'ProductBrand', 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '1', '2026-06-30 10:06:26', b'1');
+INSERT INTO `system_menu` VALUES (2009, '鍝佺墝鏌ヨ', 'product:brand:query', 3, 1, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '1', '2026-06-30 10:06:18', b'1');
+INSERT INTO `system_menu` VALUES (2010, '鍝佺墝鍒涘缓', 'product:brand:create', 3, 2, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '1', '2026-06-30 10:06:21', b'1');
+INSERT INTO `system_menu` VALUES (2011, '鍝佺墝鏇存柊', 'product:brand:update', 3, 3, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '1', '2026-06-30 10:06:23', b'1');
+INSERT INTO `system_menu` VALUES (2012, '鍝佺墝鍒犻櫎', 'product:brand:delete', 3, 4, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '1', '2026-06-30 10:06:24', b'1');
+INSERT INTO `system_menu` VALUES (2014, '鍟嗗搧鍒楄〃', '', 2, 1, 2000, 'spu', 'ep:apple', 'mall/product/spu/index', 'ProductSpu', 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2026-06-30 10:06:04', b'1');
+INSERT INTO `system_menu` VALUES (2015, '鍟嗗搧鏌ヨ', 'product:spu:query', 3, 1, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2026-06-30 10:05:48', b'1');
+INSERT INTO `system_menu` VALUES (2016, '鍟嗗搧鍒涘缓', 'product:spu:create', 3, 2, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2026-06-30 10:05:50', b'1');
+INSERT INTO `system_menu` VALUES (2017, '鍟嗗搧鏇存柊', 'product:spu:update', 3, 3, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2026-06-30 10:05:53', b'1');
+INSERT INTO `system_menu` VALUES (2018, '鍟嗗搧鍒犻櫎', 'product:spu:delete', 3, 4, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2026-06-30 10:05:55', b'1');
+INSERT INTO `system_menu` VALUES (2019, '鍟嗗搧灞炴��', '', 2, 4, 2000, 'property', 'ep:cold-drink', 'mall/product/property/index', 'ProductProperty', 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '1', '2026-06-30 10:06:36', b'1');
+INSERT INTO `system_menu` VALUES (2020, '瑙勬牸鏌ヨ', 'product:property:query', 3, 1, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '1', '2026-06-30 10:06:29', b'1');
+INSERT INTO `system_menu` VALUES (2021, '瑙勬牸鍒涘缓', 'product:property:create', 3, 2, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '1', '2026-06-30 10:06:31', b'1');
+INSERT INTO `system_menu` VALUES (2022, '瑙勬牸鏇存柊', 'product:property:update', 3, 3, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '1', '2026-06-30 10:06:32', b'1');
+INSERT INTO `system_menu` VALUES (2023, '瑙勬牸鍒犻櫎', 'product:property:delete', 3, 4, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '1', '2026-06-30 10:06:34', b'1');
+INSERT INTO `system_menu` VALUES (2025, 'Banner', '', 2, 100, 2387, 'banner', 'fa:bandcamp', 'mall/promotion/banner/index', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:56:14', '1', '2026-07-01 11:10:03', b'1');
+INSERT INTO `system_menu` VALUES (2026, 'Banner鏌ヨ', 'promotion:banner:query', 3, 1, 2025, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-08-01 14:56:14', '1', '2026-07-01 11:10:00', b'1');
+INSERT INTO `system_menu` VALUES (2027, 'Banner鍒涘缓', 'promotion:banner:create', 3, 2, 2025, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-08-01 14:56:14', '1', '2026-07-01 11:09:58', b'1');
+INSERT INTO `system_menu` VALUES (2028, 'Banner鏇存柊', 'promotion:banner:update', 3, 3, 2025, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-08-01 14:56:14', '1', '2026-07-01 11:09:56', b'1');
+INSERT INTO `system_menu` VALUES (2029, 'Banner鍒犻櫎', 'promotion:banner:delete', 3, 4, 2025, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-08-01 14:56:14', '1', '2026-07-01 11:09:54', b'1');
+INSERT INTO `system_menu` VALUES (2030, '钀ラ攢涓績', '', 1, 70, 2362, 'promotion', 'ep:present', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-10-31 21:25:09', '1', '2026-07-01 11:10:27', b'1');
+INSERT INTO `system_menu` VALUES (2032, '浼樻儬鍔靛垪琛�', '', 2, 1, 2365, 'template', 'ep:discount', 'mall/promotion/coupon/template/index', 'PromotionCouponTemplate', 0, b'1', b'1', b'1', '', '2022-10-31 22:27:14', '1', '2026-07-01 11:09:46', b'1');
+INSERT INTO `system_menu` VALUES (2033, '浼樻儬鍔垫ā鏉挎煡璇�', 'promotion:coupon-template:query', 3, 1, 2032, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-10-31 22:27:14', '1', '2026-07-01 11:09:43', b'1');
+INSERT INTO `system_menu` VALUES (2034, '浼樻儬鍔垫ā鏉垮垱寤�', 'promotion:coupon-template:create', 3, 2, 2032, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-10-31 22:27:14', '1', '2026-07-01 11:09:41', b'1');
+INSERT INTO `system_menu` VALUES (2035, '浼樻儬鍔垫ā鏉挎洿鏂�', 'promotion:coupon-template:update', 3, 3, 2032, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-10-31 22:27:14', '1', '2026-07-01 11:09:39', b'1');
+INSERT INTO `system_menu` VALUES (2036, '浼樻儬鍔垫ā鏉垮垹闄�', 'promotion:coupon-template:delete', 3, 4, 2032, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-10-31 22:27:14', '1', '2026-07-01 11:09:37', b'1');
+INSERT INTO `system_menu` VALUES (2038, '棰嗗彇璁板綍', '', 2, 2, 2365, 'list', 'ep:collection-tag', 'mall/promotion/coupon/index', 'PromotionCoupon', 0, b'1', b'1', b'1', '', '2022-11-03 23:21:31', '1', '2026-07-01 11:09:35', b'1');
+INSERT INTO `system_menu` VALUES (2039, '浼樻儬鍔垫煡璇�', 'promotion:coupon:query', 3, 1, 2038, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-03 23:21:31', '1', '2026-07-01 11:09:33', b'1');
+INSERT INTO `system_menu` VALUES (2040, '浼樻儬鍔靛垹闄�', 'promotion:coupon:delete', 3, 4, 2038, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-03 23:21:31', '1', '2026-07-01 11:09:29', b'1');
+INSERT INTO `system_menu` VALUES (2041, '婊″噺閫�', '', 2, 10, 2390, 'reward-activity', 'ep:goblet-square-full', 'mall/promotion/rewardActivity/index', 'PromotionRewardActivity', 0, b'1', b'1', b'1', '', '2022-11-04 23:47:49', '1', '2026-07-01 11:05:11', b'1');
+INSERT INTO `system_menu` VALUES (2042, '婊″噺閫佹椿鍔ㄦ煡璇�', 'promotion:reward-activity:query', 3, 1, 2041, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-04 23:47:49', '1', '2026-07-01 11:05:09', b'1');
+INSERT INTO `system_menu` VALUES (2043, '婊″噺閫佹椿鍔ㄥ垱寤�', 'promotion:reward-activity:create', 3, 2, 2041, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-04 23:47:49', '1', '2026-07-01 11:05:06', b'1');
+INSERT INTO `system_menu` VALUES (2044, '婊″噺閫佹椿鍔ㄦ洿鏂�', 'promotion:reward-activity:update', 3, 3, 2041, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-04 23:47:50', '1', '2026-07-01 11:05:04', b'1');
+INSERT INTO `system_menu` VALUES (2045, '婊″噺閫佹椿鍔ㄥ垹闄�', 'promotion:reward-activity:delete', 3, 4, 2041, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-04 23:47:50', '1', '2026-07-01 11:05:02', b'1');
+INSERT INTO `system_menu` VALUES (2046, '婊″噺閫佹椿鍔ㄥ叧闂�', 'promotion:reward-activity:close', 3, 5, 2041, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-11-05 10:42:53', '1', '2026-07-01 11:05:00', b'1');
+INSERT INTO `system_menu` VALUES (2047, '闄愭椂鎶樻墸', '', 2, 7, 2390, 'discount-activity', 'ep:timer', 'mall/promotion/discountActivity/index', 'PromotionDiscountActivity', 0, b'1', b'1', b'1', '', '2022-11-05 17:12:15', '1', '2026-07-01 11:05:24', b'1');
+INSERT INTO `system_menu` VALUES (2048, '闄愭椂鎶樻墸娲诲姩鏌ヨ', 'promotion:discount-activity:query', 3, 1, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:15', '1', '2026-07-01 11:05:22', b'1');
+INSERT INTO `system_menu` VALUES (2049, '闄愭椂鎶樻墸娲诲姩鍒涘缓', 'promotion:discount-activity:create', 3, 2, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:15', '1', '2026-07-01 11:05:19', b'1');
+INSERT INTO `system_menu` VALUES (2050, '闄愭椂鎶樻墸娲诲姩鏇存柊', 'promotion:discount-activity:update', 3, 3, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:16', '1', '2026-07-01 11:05:17', b'1');
+INSERT INTO `system_menu` VALUES (2051, '闄愭椂鎶樻墸娲诲姩鍒犻櫎', 'promotion:discount-activity:delete', 3, 4, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:16', '1', '2026-07-01 11:05:15', b'1');
+INSERT INTO `system_menu` VALUES (2052, '闄愭椂鎶樻墸娲诲姩鍏抽棴', 'promotion:discount-activity:close', 3, 5, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:16', '1', '2026-07-01 11:05:13', b'1');
+INSERT INTO `system_menu` VALUES (2059, '绉掓潃鍟嗗搧', '', 2, 2, 2209, 'activity', 'ep:basketball', 'mall/promotion/seckill/activity/index', 'PromotionSeckillActivity', 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2026-07-01 11:09:20', b'1');
+INSERT INTO `system_menu` VALUES (2060, '绉掓潃娲诲姩鏌ヨ', 'promotion:seckill-activity:query', 3, 1, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2026-07-01 11:09:10', b'1');
+INSERT INTO `system_menu` VALUES (2061, '绉掓潃娲诲姩鍒涘缓', 'promotion:seckill-activity:create', 3, 2, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2026-07-01 11:09:13', b'1');
+INSERT INTO `system_menu` VALUES (2062, '绉掓潃娲诲姩鏇存柊', 'promotion:seckill-activity:update', 3, 3, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2026-07-01 11:09:15', b'1');
+INSERT INTO `system_menu` VALUES (2063, '绉掓潃娲诲姩鍒犻櫎', 'promotion:seckill-activity:delete', 3, 4, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2026-07-01 11:09:17', b'1');
+INSERT INTO `system_menu` VALUES (2066, '绉掓潃鏃舵', '', 2, 1, 2209, 'config', 'ep:baseball', 'mall/promotion/seckill/config/index', 'PromotionSeckillConfig', 0, b'1', b'1', b'1', '', '2022-11-15 19:46:50', '1', '2026-07-01 11:09:12', b'1');
+INSERT INTO `system_menu` VALUES (2067, '绉掓潃鏃舵鏌ヨ', 'promotion:seckill-config:query', 3, 1, 2066, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '1', '2026-07-01 11:09:02', b'1');
+INSERT INTO `system_menu` VALUES (2068, '绉掓潃鏃舵鍒涘缓', 'promotion:seckill-config:create', 3, 2, 2066, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '1', '2026-07-01 11:09:04', b'1');
+INSERT INTO `system_menu` VALUES (2069, '绉掓潃鏃舵鏇存柊', 'promotion:seckill-config:update', 3, 3, 2066, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '1', '2026-07-01 11:09:06', b'1');
+INSERT INTO `system_menu` VALUES (2070, '绉掓潃鏃舵鍒犻櫎', 'promotion:seckill-config:delete', 3, 4, 2066, '', '', '', '', 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '1', '2026-07-01 11:09:07', b'1');
+INSERT INTO `system_menu` VALUES (2072, '璁㈠崟涓績', '', 1, 65, 2362, 'trade', 'ep:eleme', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-11-19 18:57:19', '1', '2026-07-01 11:13:13', b'1');
+INSERT INTO `system_menu` VALUES (2073, '鍞悗閫�娆�', '', 2, 2, 2072, 'after-sale', 'ep:refrigerator', 'mall/trade/afterSale/index', 'TradeAfterSale', 0, b'1', b'1', b'1', '', '2022-11-19 20:15:32', '1', '2026-07-01 11:12:58', b'1');
+INSERT INTO `system_menu` VALUES (2074, '鍞悗鏌ヨ', 'trade:after-sale:query', 3, 1, 2073, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-19 20:15:33', '1', '2026-07-01 11:12:49', b'1');
+INSERT INTO `system_menu` VALUES (2075, '绉掓潃娲诲姩鍏抽棴', 'promotion:seckill-activity:close', 3, 5, 2059, '', '', '', '', 0, b'1', b'1', b'1', '1', '2022-11-28 20:20:15', '1', '2026-07-01 11:09:18', b'1');
+INSERT INTO `system_menu` VALUES (2076, '璁㈠崟鍒楄〃', '', 2, 1, 2072, 'order', 'ep:list', 'mall/trade/order/index', 'TradeOrder', 0, b'1', b'1', b'1', '1', '2022-12-10 21:05:44', '1', '2026-07-01 11:13:05', b'1');
+INSERT INTO `system_menu` VALUES (2083, '鍦板尯绠$悊', '', 2, 14, 1, 'area', 'fa:map-marker', 'system/area/index', 'SystemArea', 0, b'1', b'1', b'1', '1', '2022-12-23 17:35:05', '1', '2024-02-29 08:50:28', b'0');
+INSERT INTO `system_menu` VALUES (2084, '鍏紬鍙风鐞�', '', 1, 100, 0, '/mp', 'ep:compass', NULL, NULL, 0, b'0', b'1', b'1', '1', '2023-01-01 20:11:04', '1', '2026-07-01 11:17:23', b'1');
+INSERT INTO `system_menu` VALUES (2085, '璐﹀彿绠$悊', '', 2, 1, 2084, 'account', 'fa:user', 'mp/account/index', 'MpAccount', 0, b'1', b'1', b'1', '1', '2023-01-01 20:13:31', '1', '2026-07-01 11:17:21', b'1');
+INSERT INTO `system_menu` VALUES (2086, '鏂板璐﹀彿', 'mp:account:create', 3, 1, 2085, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-01 20:21:40', '1', '2026-07-01 11:17:12', b'1');
+INSERT INTO `system_menu` VALUES (2087, '淇敼璐﹀彿', 'mp:account:update', 3, 2, 2085, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-07 17:32:46', '1', '2026-07-01 11:17:14', b'1');
+INSERT INTO `system_menu` VALUES (2088, '鏌ヨ璐﹀彿', 'mp:account:query', 3, 0, 2085, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-07 17:33:07', '1', '2026-07-01 11:16:57', b'1');
+INSERT INTO `system_menu` VALUES (2089, '鍒犻櫎璐﹀彿', 'mp:account:delete', 3, 3, 2085, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-07 17:33:21', '1', '2026-07-01 11:17:16', b'1');
+INSERT INTO `system_menu` VALUES (2090, '鐢熸垚浜岀淮鐮�', 'mp:account:qr-code', 3, 4, 2085, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-07 17:33:58', '1', '2026-07-01 11:17:17', b'1');
+INSERT INTO `system_menu` VALUES (2091, '娓呯┖ API 閰嶉', 'mp:account:clear-quota', 3, 5, 2085, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-07 18:20:32', '1', '2026-07-01 11:17:19', b'1');
+INSERT INTO `system_menu` VALUES (2092, '鏁版嵁缁熻', 'mp:statistics:query', 2, 2, 2084, 'statistics', 'ep:trend-charts', 'mp/statistics/index', 'MpStatistics', 0, b'1', b'1', b'1', '1', '2023-01-07 20:17:36', '1', '2026-07-01 11:16:49', b'1');
+INSERT INTO `system_menu` VALUES (2093, '鏍囩绠$悊', '', 2, 3, 2084, 'tag', 'ep:collection-tag', 'mp/tag/index', 'MpTag', 0, b'1', b'1', b'1', '1', '2023-01-08 11:37:32', '1', '2026-07-01 11:16:47', b'1');
+INSERT INTO `system_menu` VALUES (2094, '鏌ヨ鏍囩', 'mp:tag:query', 3, 0, 2093, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 11:59:03', '1', '2026-07-01 11:16:39', b'1');
+INSERT INTO `system_menu` VALUES (2095, '鏂板鏍囩', 'mp:tag:create', 3, 1, 2093, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 11:59:23', '1', '2026-07-01 11:16:41', b'1');
+INSERT INTO `system_menu` VALUES (2096, '淇敼鏍囩', 'mp:tag:update', 3, 2, 2093, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 11:59:41', '1', '2026-07-01 11:16:42', b'1');
+INSERT INTO `system_menu` VALUES (2097, '鍒犻櫎鏍囩', 'mp:tag:delete', 3, 3, 2093, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 12:00:04', '1', '2026-07-01 11:16:44', b'1');
+INSERT INTO `system_menu` VALUES (2098, '鍚屾鏍囩', 'mp:tag:sync', 3, 4, 2093, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 12:00:29', '1', '2026-07-01 11:16:45', b'1');
+INSERT INTO `system_menu` VALUES (2099, '绮変笣绠$悊', '', 2, 4, 2084, 'user', 'fa:user-secret', 'mp/user/index', 'MpUser', 0, b'1', b'1', b'1', '1', '2023-01-08 16:51:20', '1', '2026-07-01 11:16:37', b'1');
+INSERT INTO `system_menu` VALUES (2100, '鏌ヨ绮変笣', 'mp:user:query', 3, 0, 2099, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 17:16:59', '1', '2026-07-01 11:16:31', b'1');
+INSERT INTO `system_menu` VALUES (2101, '淇敼绮変笣', 'mp:user:update', 3, 1, 2099, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 17:17:11', '1', '2026-07-01 11:16:33', b'1');
+INSERT INTO `system_menu` VALUES (2102, '鍚屾绮変笣', 'mp:user:sync', 3, 2, 2099, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-08 17:17:40', '1', '2026-07-01 11:16:34', b'1');
+INSERT INTO `system_menu` VALUES (2103, '娑堟伅绠$悊', '', 2, 5, 2084, 'message', 'ep:message', 'mp/message/index', 'MpMessage', 0, b'1', b'1', b'1', '1', '2023-01-08 18:44:19', '1', '2026-07-01 11:15:55', b'1');
+INSERT INTO `system_menu` VALUES (2104, '鍥炬枃鍙戣〃璁板綍', '', 2, 10, 2084, 'free-publish', 'ep:edit-pen', 'mp/freePublish/index', 'MpFreePublish', 0, b'1', b'1', b'1', '1', '2023-01-13 00:30:50', '1', '2026-07-01 11:13:35', b'1');
+INSERT INTO `system_menu` VALUES (2105, '鏌ヨ鍙戝竷鍒楄〃', 'mp:free-publish:query', 3, 1, 2104, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-13 07:19:17', '1', '2026-07-01 11:13:29', b'1');
+INSERT INTO `system_menu` VALUES (2106, '鍙戝竷鑽夌', 'mp:free-publish:submit', 3, 2, 2104, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-13 07:19:46', '1', '2026-07-01 11:13:31', b'1');
+INSERT INTO `system_menu` VALUES (2107, '鍒犻櫎鍙戝竷璁板綍', 'mp:free-publish:delete', 3, 3, 2104, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-13 07:20:01', '1', '2026-07-01 11:13:33', b'1');
+INSERT INTO `system_menu` VALUES (2108, '鍥炬枃鑽夌绠�', '', 2, 9, 2084, 'draft', 'ep:edit', 'mp/draft/index', 'MpDraft', 0, b'1', b'1', b'1', '1', '2023-01-13 07:40:21', '1', '2026-07-01 11:14:12', b'1');
+INSERT INTO `system_menu` VALUES (2109, '鏂板缓鑽夌', 'mp:draft:create', 3, 1, 2108, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-13 23:15:30', '1', '2026-07-01 11:14:06', b'1');
+INSERT INTO `system_menu` VALUES (2110, '淇敼鑽夌', 'mp:draft:update', 3, 2, 2108, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 10:08:47', '1', '2026-07-01 11:14:08', b'1');
+INSERT INTO `system_menu` VALUES (2111, '鏌ヨ鑽夌', 'mp:draft:query', 3, 0, 2108, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 10:09:01', '1', '2026-07-01 11:14:04', b'1');
+INSERT INTO `system_menu` VALUES (2112, '鍒犻櫎鑽夌', 'mp:draft:delete', 3, 3, 2108, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 10:09:19', '1', '2026-07-01 11:14:09', b'1');
+INSERT INTO `system_menu` VALUES (2113, '绱犳潗绠$悊', '', 2, 8, 2084, 'material', 'ep:basketball', 'mp/material/index', 'MpMaterial', 0, b'1', b'1', b'1', '1', '2023-01-14 14:12:07', '1', '2026-07-01 11:14:24', b'1');
+INSERT INTO `system_menu` VALUES (2114, '涓婁紶涓存椂绱犳潗', 'mp:material:upload-temporary', 3, 1, 2113, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 15:33:55', '1', '2026-07-01 11:14:14', b'1');
+INSERT INTO `system_menu` VALUES (2115, '涓婁紶姘镐箙绱犳潗', 'mp:material:upload-permanent', 3, 2, 2113, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 15:34:14', '1', '2026-07-01 11:14:16', b'1');
+INSERT INTO `system_menu` VALUES (2116, '鍒犻櫎绱犳潗', 'mp:material:delete', 3, 3, 2113, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 15:35:37', '1', '2026-07-01 11:14:18', b'1');
+INSERT INTO `system_menu` VALUES (2117, '涓婁紶鍥炬枃鍥剧墖', 'mp:material:upload-news-image', 3, 4, 2113, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 15:36:31', '1', '2026-07-01 11:14:20', b'1');
+INSERT INTO `system_menu` VALUES (2118, '鏌ヨ绱犳潗', 'mp:material:query', 3, 5, 2113, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-14 15:39:22', '1', '2026-07-01 11:14:22', b'1');
+INSERT INTO `system_menu` VALUES (2119, '鑿滃崟绠$悊', '', 2, 6, 2084, 'menu', 'ep:menu', 'mp/menu/index', 'MpMenu', 0, b'1', b'1', b'1', '1', '2023-01-14 17:43:54', '1', '2026-07-01 11:15:38', b'1');
+INSERT INTO `system_menu` VALUES (2120, '鑷姩鍥炲', '', 2, 7, 2084, 'auto-reply', 'fa-solid:republican', 'mp/autoReply/index', 'MpAutoReply', 0, b'1', b'1', b'1', '1', '2023-01-15 22:13:09', '1', '2026-07-01 11:15:21', b'1');
+INSERT INTO `system_menu` VALUES (2121, '鏌ヨ鍥炲', 'mp:auto-reply:query', 3, 0, 2120, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-16 22:28:41', '1', '2026-07-01 11:14:26', b'1');
+INSERT INTO `system_menu` VALUES (2122, '鏂板鍥炲', 'mp:auto-reply:create', 3, 1, 2120, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-16 22:28:54', '1', '2026-07-01 11:14:28', b'1');
+INSERT INTO `system_menu` VALUES (2123, '淇敼鍥炲', 'mp:auto-reply:update', 3, 2, 2120, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-16 22:29:05', '1', '2026-07-01 11:14:30', b'1');
+INSERT INTO `system_menu` VALUES (2124, '鍒犻櫎鍥炲', 'mp:auto-reply:delete', 3, 3, 2120, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-16 22:29:34', '1', '2026-07-01 11:14:32', b'1');
+INSERT INTO `system_menu` VALUES (2125, '鏌ヨ鑿滃崟', 'mp:menu:query', 3, 0, 2119, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-17 23:05:41', '1', '2026-07-01 11:15:29', b'1');
+INSERT INTO `system_menu` VALUES (2126, '淇濆瓨鑿滃崟', 'mp:menu:save', 3, 1, 2119, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-17 23:06:01', '1', '2026-07-01 11:15:32', b'1');
+INSERT INTO `system_menu` VALUES (2127, '鍒犻櫎鑿滃崟', 'mp:menu:delete', 3, 2, 2119, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-17 23:06:16', '1', '2026-07-01 11:15:35', b'1');
+INSERT INTO `system_menu` VALUES (2128, '鏌ヨ娑堟伅', 'mp:message:query', 3, 0, 2103, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-17 23:07:14', '1', '2026-07-01 11:15:52', b'1');
+INSERT INTO `system_menu` VALUES (2129, '鍙戦�佹秷鎭�', 'mp:message:send', 3, 1, 2103, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-17 23:07:26', '1', '2026-07-01 11:15:53', b'1');
+INSERT INTO `system_menu` VALUES (2130, '閭绠$悊', '', 2, 2, 2739, 'mail', 'fa-solid:mail-bulk', NULL, NULL, 0, b'1', b'1', b'1', '1', '2023-01-25 17:27:44', '1', '2024-04-22 23:56:08', b'0');
+INSERT INTO `system_menu` VALUES (2131, '閭璐﹀彿', '', 2, 0, 2130, 'mail-account', 'fa:universal-access', 'system/mail/account/index', 'SystemMailAccount', 0, b'1', b'1', b'1', '', '2023-01-25 09:33:48', '1', '2024-02-29 08:48:16', b'0');
+INSERT INTO `system_menu` VALUES (2132, '璐﹀彿鏌ヨ', 'system:mail-account:query', 3, 1, 2131, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 09:33:48', '', '2023-01-25 09:33:48', b'0');
+INSERT INTO `system_menu` VALUES (2133, '璐﹀彿鍒涘缓', 'system:mail-account:create', 3, 2, 2131, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 09:33:48', '', '2023-01-25 09:33:48', b'0');
+INSERT INTO `system_menu` VALUES (2134, '璐﹀彿鏇存柊', 'system:mail-account:update', 3, 3, 2131, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 09:33:48', '', '2023-01-25 09:33:48', b'0');
+INSERT INTO `system_menu` VALUES (2135, '璐﹀彿鍒犻櫎', 'system:mail-account:delete', 3, 4, 2131, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 09:33:48', '', '2023-01-25 09:33:48', b'0');
+INSERT INTO `system_menu` VALUES (2136, '閭欢妯$増', '', 2, 0, 2130, 'mail-template', 'fa:tag', 'system/mail/template/index', 'SystemMailTemplate', 0, b'1', b'1', b'1', '', '2023-01-25 12:05:31', '1', '2024-02-29 08:48:41', b'0');
+INSERT INTO `system_menu` VALUES (2137, '妯$増鏌ヨ', 'system:mail-template:query', 3, 1, 2136, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 12:05:31', '', '2023-01-25 12:05:31', b'0');
+INSERT INTO `system_menu` VALUES (2138, '妯$増鍒涘缓', 'system:mail-template:create', 3, 2, 2136, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 12:05:31', '', '2023-01-25 12:05:31', b'0');
+INSERT INTO `system_menu` VALUES (2139, '妯$増鏇存柊', 'system:mail-template:update', 3, 3, 2136, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 12:05:31', '', '2023-01-25 12:05:31', b'0');
+INSERT INTO `system_menu` VALUES (2140, '妯$増鍒犻櫎', 'system:mail-template:delete', 3, 4, 2136, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-25 12:05:31', '', '2023-01-25 12:05:31', b'0');
+INSERT INTO `system_menu` VALUES (2141, '閭欢璁板綍', '', 2, 0, 2130, 'mail-log', 'fa:edit', 'system/mail/log/index', 'SystemMailLog', 0, b'1', b'1', b'1', '', '2023-01-26 02:16:50', '1', '2024-02-29 08:48:51', b'0');
+INSERT INTO `system_menu` VALUES (2142, '鏃ュ織鏌ヨ', 'system:mail-log:query', 3, 1, 2141, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-26 02:16:50', '', '2023-01-26 02:16:50', b'0');
+INSERT INTO `system_menu` VALUES (2143, '鍙戦�佹祴璇曢偖浠�', 'system:mail-template:send-mail', 3, 5, 2136, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-26 23:29:15', '1', '2023-01-26 23:29:15', b'0');
+INSERT INTO `system_menu` VALUES (2144, '绔欏唴淇$鐞�', '', 1, 3, 2739, 'notify', 'ep:message-box', NULL, NULL, 0, b'1', b'1', b'1', '1', '2023-01-28 10:25:18', '1', '2024-04-22 23:56:12', b'0');
+INSERT INTO `system_menu` VALUES (2145, '妯℃澘绠$悊', '', 2, 0, 2144, 'notify-template', 'fa:archive', 'system/notify/template/index', 'SystemNotifyTemplate', 0, b'1', b'1', b'1', '', '2023-01-28 02:26:42', '1', '2024-02-29 08:49:14', b'0');
+INSERT INTO `system_menu` VALUES (2146, '绔欏唴淇℃ā鏉挎煡璇�', 'system:notify-template:query', 3, 1, 2145, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-28 02:26:42', '', '2023-01-28 02:26:42', b'0');
+INSERT INTO `system_menu` VALUES (2147, '绔欏唴淇℃ā鏉垮垱寤�', 'system:notify-template:create', 3, 2, 2145, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-28 02:26:42', '', '2023-01-28 02:26:42', b'0');
+INSERT INTO `system_menu` VALUES (2148, '绔欏唴淇℃ā鏉挎洿鏂�', 'system:notify-template:update', 3, 3, 2145, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-28 02:26:42', '', '2023-01-28 02:26:42', b'0');
+INSERT INTO `system_menu` VALUES (2149, '绔欏唴淇℃ā鏉垮垹闄�', 'system:notify-template:delete', 3, 4, 2145, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-28 02:26:42', '', '2023-01-28 02:26:42', b'0');
+INSERT INTO `system_menu` VALUES (2150, '鍙戦�佹祴璇曠珯鍐呬俊', 'system:notify-template:send-notify', 3, 5, 2145, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-01-28 10:54:43', '1', '2023-01-28 10:54:43', b'0');
+INSERT INTO `system_menu` VALUES (2151, '娑堟伅璁板綍', '', 2, 0, 2144, 'notify-message', 'fa:edit', 'system/notify/message/index', 'SystemNotifyMessage', 0, b'1', b'1', b'1', '', '2023-01-28 04:28:22', '1', '2024-02-29 08:49:22', b'0');
+INSERT INTO `system_menu` VALUES (2152, '绔欏唴淇℃秷鎭煡璇�', 'system:notify-message:query', 3, 1, 2151, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-01-28 04:28:22', '', '2023-01-28 04:28:22', b'0');
+INSERT INTO `system_menu` VALUES (2153, '澶у睆璁捐鍣�', '', 2, 2, 1281, 'go-view', 'fa:area-chart', 'report/goview/index', 'GoView', 0, b'1', b'1', b'1', '1', '2023-02-07 00:03:19', '1', '2025-05-03 09:57:03', b'0');
+INSERT INTO `system_menu` VALUES (2154, '鍒涘缓椤圭洰', 'report:go-view-project:create', 3, 1, 2153, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-02-07 19:25:14', '1', '2023-02-07 19:25:14', b'0');
+INSERT INTO `system_menu` VALUES (2155, '鏇存柊椤圭洰', 'report:go-view-project:update', 3, 2, 2153, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-02-07 19:25:34', '1', '2024-04-24 20:01:18', b'0');
+INSERT INTO `system_menu` VALUES (2156, '鏌ヨ椤圭洰', 'report:go-view-project:query', 3, 0, 2153, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-02-07 19:25:53', '1', '2023-02-07 19:25:53', b'0');
+INSERT INTO `system_menu` VALUES (2157, '浣跨敤 SQL 鏌ヨ鏁版嵁', 'report:go-view-data:get-by-sql', 3, 3, 2153, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-02-07 19:26:15', '1', '2023-02-07 19:26:15', b'0');
+INSERT INTO `system_menu` VALUES (2158, '浣跨敤 HTTP 鏌ヨ鏁版嵁', 'report:go-view-data:get-by-http', 3, 4, 2153, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2023-02-07 19:26:35', '1', '2023-02-07 19:26:35', b'0');
+INSERT INTO `system_menu` VALUES (2159, 'Boot 寮�鍙戞枃妗�', '', 1, 1, 0, 'https://doc.iocoder.cn/', 'ep:document', NULL, NULL, 0, b'0', b'1', b'1', '1', '2023-02-10 22:46:28', '1', '2026-06-29 14:37:07', b'1');
+INSERT INTO `system_menu` VALUES (2160, 'Cloud 寮�鍙戞枃妗�', '', 1, 2, 0, 'https://cloud.iocoder.cn', 'ep:document-copy', NULL, NULL, 0, b'0', b'1', b'1', '1', '2023-02-10 22:47:07', '1', '2026-06-29 14:37:04', b'1');
+INSERT INTO `system_menu` VALUES (2161, '鎺ュ叆绀轰緥', '', 1, 99, 1117, 'demo', 'fa-solid:dragon', 'pay/demo/index', NULL, 0, b'1', b'1', b'1', '', '2023-02-11 14:21:42', '1', '2026-07-01 13:32:32', b'1');
+INSERT INTO `system_menu` VALUES (2162, '鍟嗗搧瀵煎嚭', 'product:spu:export', 3, 5, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2026-06-30 10:05:57', b'1');
+INSERT INTO `system_menu` VALUES (2164, '閰嶉�佺鐞�', '', 1, 3, 2072, 'delivery', 'ep:shopping-cart', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:18:02', '1', '2026-07-01 11:12:45', b'1');
+INSERT INTO `system_menu` VALUES (2165, '蹇�掑彂璐�', '', 1, 0, 2164, 'express', 'ep:bicycle', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:22:06', '1', '2026-07-01 11:12:44', b'1');
+INSERT INTO `system_menu` VALUES (2166, '闂ㄥ簵鑷彁', '', 1, 1, 2164, 'pick-up-store', 'ep:add-location', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:23:14', '1', '2026-07-01 11:12:15', b'1');
+INSERT INTO `system_menu` VALUES (2167, '蹇�掑叕鍙�', '', 2, 0, 2165, 'express', 'ep:compass', 'mall/trade/delivery/express/index', 'Express', 0, b'1', b'1', b'1', '1', '2023-05-18 09:27:21', '1', '2026-07-01 11:12:32', b'1');
+INSERT INTO `system_menu` VALUES (2168, '蹇�掑叕鍙告煡璇�', 'trade:delivery:express:query', 3, 1, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '1', '2026-07-01 11:12:21', b'1');
+INSERT INTO `system_menu` VALUES (2169, '蹇�掑叕鍙稿垱寤�', 'trade:delivery:express:create', 3, 2, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '1', '2026-07-01 11:12:25', b'1');
+INSERT INTO `system_menu` VALUES (2170, '蹇�掑叕鍙告洿鏂�', 'trade:delivery:express:update', 3, 3, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '1', '2026-07-01 11:12:26', b'1');
+INSERT INTO `system_menu` VALUES (2171, '蹇�掑叕鍙稿垹闄�', 'trade:delivery:express:delete', 3, 4, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '1', '2026-07-01 11:12:28', b'1');
+INSERT INTO `system_menu` VALUES (2172, '蹇�掑叕鍙稿鍑�', 'trade:delivery:express:export', 3, 5, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '1', '2026-07-01 11:12:30', b'1');
+INSERT INTO `system_menu` VALUES (2173, '杩愯垂妯$増', 'trade:delivery:express-template:query', 2, 1, 2165, 'express-template', 'ep:coordinate', 'mall/trade/delivery/expressTemplate/index', 'ExpressTemplate', 0, b'1', b'1', b'1', '1', '2023-05-20 06:48:10', '1', '2026-07-01 11:12:42', b'1');
+INSERT INTO `system_menu` VALUES (2174, '蹇�掕繍璐规ā鏉挎煡璇�', 'trade:delivery:express-template:query', 3, 1, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '1', '2026-07-01 11:12:34', b'1');
+INSERT INTO `system_menu` VALUES (2175, '蹇�掕繍璐规ā鏉垮垱寤�', 'trade:delivery:express-template:create', 3, 2, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '1', '2026-07-01 11:12:35', b'1');
+INSERT INTO `system_menu` VALUES (2176, '蹇�掕繍璐规ā鏉挎洿鏂�', 'trade:delivery:express-template:update', 3, 3, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '1', '2026-07-01 11:12:37', b'1');
+INSERT INTO `system_menu` VALUES (2177, '蹇�掕繍璐规ā鏉垮垹闄�', 'trade:delivery:express-template:delete', 3, 4, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '1', '2026-07-01 11:12:38', b'1');
+INSERT INTO `system_menu` VALUES (2178, '蹇�掕繍璐规ā鏉垮鍑�', 'trade:delivery:express-template:export', 3, 5, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '1', '2026-07-01 11:12:40', b'1');
+INSERT INTO `system_menu` VALUES (2179, '闂ㄥ簵绠$悊', '', 2, 1, 2166, 'pick-up-store', 'ep:basketball', 'mall/trade/delivery/pickUpStore/index', 'PickUpStore', 0, b'1', b'1', b'1', '1', '2023-05-25 10:50:00', '1', '2026-07-01 11:12:13', b'1');
+INSERT INTO `system_menu` VALUES (2180, '鑷彁闂ㄥ簵鏌ヨ', 'trade:delivery:pick-up-store:query', 3, 1, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '1', '2026-07-01 11:12:04', b'1');
+INSERT INTO `system_menu` VALUES (2181, '鑷彁闂ㄥ簵鍒涘缓', 'trade:delivery:pick-up-store:create', 3, 2, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '1', '2026-07-01 11:12:06', b'1');
+INSERT INTO `system_menu` VALUES (2182, '鑷彁闂ㄥ簵鏇存柊', 'trade:delivery:pick-up-store:update', 3, 3, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '1', '2026-07-01 11:12:08', b'1');
+INSERT INTO `system_menu` VALUES (2183, '鑷彁闂ㄥ簵鍒犻櫎', 'trade:delivery:pick-up-store:delete', 3, 4, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '1', '2026-07-01 11:12:09', b'1');
+INSERT INTO `system_menu` VALUES (2184, '鑷彁闂ㄥ簵瀵煎嚭', 'trade:delivery:pick-up-store:export', 3, 5, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '1', '2026-07-01 11:12:11', b'1');
+INSERT INTO `system_menu` VALUES (2209, '绉掓潃娲诲姩', '', 2, 3, 2030, 'seckill', 'ep:place', '', '', 0, b'1', b'1', b'1', '1', '2023-06-24 17:39:13', '1', '2026-07-01 11:09:22', b'1');
+INSERT INTO `system_menu` VALUES (2262, '浼氬憳涓績', '', 1, 55, 0, '/member', 'ep:bicycle', NULL, NULL, 1, b'0', b'1', b'1', '1', '2023-06-10 00:42:03', '1', '2026-06-30 10:05:26', b'1');
+INSERT INTO `system_menu` VALUES (2275, '浼氬憳閰嶇疆', '', 2, 0, 2262, 'config', 'fa:archive', 'member/config/index', 'MemberConfig', 0, b'1', b'1', b'1', '', '2023-06-10 02:07:44', '1', '2026-06-30 10:04:45', b'1');
+INSERT INTO `system_menu` VALUES (2276, '浼氬憳閰嶇疆鏌ヨ', 'member:config:query', 3, 1, 2275, '', '', '', '', 0, b'1', b'1', b'1', '', '2023-06-10 02:07:44', '1', '2026-06-30 10:04:41', b'1');
+INSERT INTO `system_menu` VALUES (2277, '浼氬憳閰嶇疆淇濆瓨', 'member:config:save', 3, 2, 2275, '', '', '', '', 0, b'1', b'1', b'1', '', '2023-06-10 02:07:44', '1', '2026-06-30 10:04:43', b'1');
+INSERT INTO `system_menu` VALUES (2281, '绛惧埌閰嶇疆', '', 2, 2, 2300, 'config', 'ep:calendar', 'member/signin/config/index', 'SignInConfig', 0, b'1', b'1', b'1', '', '2023-06-10 03:26:12', '1', '2026-06-30 10:01:41', b'1');
+INSERT INTO `system_menu` VALUES (2282, '绉垎绛惧埌瑙勫垯鏌ヨ', 'point:sign-in-config:query', 3, 1, 2281, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 03:26:12', '1', '2026-06-30 10:01:39', b'1');
+INSERT INTO `system_menu` VALUES (2283, '绉垎绛惧埌瑙勫垯鍒涘缓', 'point:sign-in-config:create', 3, 2, 2281, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 03:26:12', '1', '2026-06-30 10:01:36', b'1');
+INSERT INTO `system_menu` VALUES (2284, '绉垎绛惧埌瑙勫垯鏇存柊', 'point:sign-in-config:update', 3, 3, 2281, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 03:26:12', '1', '2026-06-30 10:01:34', b'1');
+INSERT INTO `system_menu` VALUES (2285, '绉垎绛惧埌瑙勫垯鍒犻櫎', 'point:sign-in-config:delete', 3, 4, 2281, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 03:26:12', '1', '2026-06-30 10:01:32', b'1');
+INSERT INTO `system_menu` VALUES (2287, '浼氬憳绉垎', '', 2, 10, 2262, 'record', 'fa:asterisk', 'member/point/record/index', 'PointRecord', 0, b'1', b'1', b'1', '', '2023-06-10 04:18:50', '1', '2026-06-30 10:01:51', b'1');
+INSERT INTO `system_menu` VALUES (2288, '鐢ㄦ埛绉垎璁板綍鏌ヨ', 'point:record:query', 3, 1, 2287, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 04:18:50', '1', '2026-06-30 10:01:48', b'1');
+INSERT INTO `system_menu` VALUES (2293, '绛惧埌璁板綍', '', 2, 3, 2300, 'record', 'ep:chicken', 'member/signin/record/index', 'SignInRecord', 0, b'1', b'1', b'1', '', '2023-06-10 04:48:22', '1', '2026-06-30 10:01:29', b'1');
+INSERT INTO `system_menu` VALUES (2294, '鐢ㄦ埛绛惧埌绉垎鏌ヨ', 'point:sign-in-record:query', 3, 1, 2293, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 04:48:22', '1', '2026-06-30 10:01:26', b'1');
+INSERT INTO `system_menu` VALUES (2297, '鐢ㄦ埛绛惧埌绉垎鍒犻櫎', 'point:sign-in-record:delete', 3, 4, 2293, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-06-10 04:48:22', '1', '2026-06-30 10:01:24', b'1');
+INSERT INTO `system_menu` VALUES (2300, '浼氬憳绛惧埌', '', 1, 11, 2262, 'signin', 'ep:alarm-clock', '', '', 0, b'1', b'1', b'1', '1', '2023-06-27 22:49:53', '1', '2026-06-30 10:01:44', b'1');
+INSERT INTO `system_menu` VALUES (2301, '鍥炶皟閫氱煡', '', 2, 5, 1117, 'notify', 'ep:mute-notification', 'pay/notify/index', 'PayNotify', 0, b'1', b'1', b'1', '', '2023-07-20 04:41:32', '1', '2026-07-01 13:32:35', b'1');
+INSERT INTO `system_menu` VALUES (2302, '鏀粯閫氱煡鏌ヨ', 'pay:notify:query', 3, 1, 2301, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-07-20 04:41:32', '1', '2026-07-01 13:32:33', b'1');
+INSERT INTO `system_menu` VALUES (2303, '鎷煎洟娲诲姩', '', 2, 3, 2030, 'combination', 'fa:group', '', '', 0, b'1', b'1', b'1', '1', '2023-08-12 17:19:54', '1', '2026-07-01 11:08:56', b'1');
+INSERT INTO `system_menu` VALUES (2304, '鎷煎洟鍟嗗搧', '', 2, 1, 2303, 'acitivity', 'ep:apple', 'mall/promotion/combination/activity/index', 'PromotionCombinationActivity', 0, b'1', b'1', b'1', '1', '2023-08-12 17:22:03', '1', '2026-07-01 11:08:54', b'1');
+INSERT INTO `system_menu` VALUES (2305, '鎷煎洟娲诲姩鏌ヨ', 'promotion:combination-activity:query', 3, 1, 2304, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-12 17:54:32', '1', '2026-07-01 11:08:52', b'1');
+INSERT INTO `system_menu` VALUES (2306, '鎷煎洟娲诲姩鍒涘缓', 'promotion:combination-activity:create', 3, 2, 2304, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-12 17:54:49', '1', '2026-07-01 11:08:50', b'1');
+INSERT INTO `system_menu` VALUES (2307, '鎷煎洟娲诲姩鏇存柊', 'promotion:combination-activity:update', 3, 3, 2304, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-12 17:55:04', '1', '2026-07-01 11:08:48', b'1');
+INSERT INTO `system_menu` VALUES (2308, '鎷煎洟娲诲姩鍒犻櫎', 'promotion:combination-activity:delete', 3, 4, 2304, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-12 17:55:23', '1', '2026-07-01 11:08:46', b'1');
+INSERT INTO `system_menu` VALUES (2309, '鎷煎洟娲诲姩鍏抽棴', 'promotion:combination-activity:close', 3, 5, 2304, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-12 17:55:37', '1', '2026-07-01 11:08:45', b'1');
+INSERT INTO `system_menu` VALUES (2310, '鐮嶄环娲诲姩', '', 2, 4, 2030, 'bargain', 'ep:box', '', '', 0, b'1', b'1', b'1', '1', '2023-08-13 00:27:25', '1', '2026-07-01 11:08:37', b'1');
+INSERT INTO `system_menu` VALUES (2311, '鐮嶄环鍟嗗搧', '', 2, 1, 2310, 'activity', 'ep:burger', 'mall/promotion/bargain/activity/index', 'PromotionBargainActivity', 0, b'1', b'1', b'1', '1', '2023-08-13 00:28:49', '1', '2026-07-01 11:08:35', b'1');
+INSERT INTO `system_menu` VALUES (2312, '鐮嶄环娲诲姩鏌ヨ', 'promotion:bargain-activity:query', 3, 1, 2311, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-13 00:32:30', '1', '2026-07-01 11:08:33', b'1');
+INSERT INTO `system_menu` VALUES (2313, '鐮嶄环娲诲姩鍒涘缓', 'promotion:bargain-activity:create', 3, 2, 2311, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-13 00:32:44', '1', '2026-07-01 11:08:32', b'1');
+INSERT INTO `system_menu` VALUES (2314, '鐮嶄环娲诲姩鏇存柊', 'promotion:bargain-activity:update', 3, 3, 2311, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-13 00:32:55', '1', '2026-07-01 11:08:30', b'1');
+INSERT INTO `system_menu` VALUES (2315, '鐮嶄环娲诲姩鍒犻櫎', 'promotion:bargain-activity:delete', 3, 4, 2311, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-13 00:34:50', '1', '2026-07-01 11:08:28', b'1');
+INSERT INTO `system_menu` VALUES (2316, '鐮嶄环娲诲姩鍏抽棴', 'promotion:bargain-activity:close', 3, 5, 2311, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-13 00:35:02', '1', '2026-07-01 11:08:26', b'1');
+INSERT INTO `system_menu` VALUES (2317, '浼氬憳绠$悊', '', 2, 0, 2262, 'user', 'ep:avatar', 'member/user/index', 'MemberUser', 0, b'1', b'1', b'1', '', '2023-08-19 04:12:15', '1', '2026-06-30 10:04:58', b'1');
+INSERT INTO `system_menu` VALUES (2318, '浼氬憳鐢ㄦ埛鏌ヨ', 'member:user:query', 3, 1, 2317, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-19 04:12:15', '1', '2026-06-30 10:04:47', b'1');
+INSERT INTO `system_menu` VALUES (2319, '浼氬憳鐢ㄦ埛鏇存柊', 'member:user:update', 3, 3, 2317, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-19 04:12:15', '1', '2026-06-30 10:04:50', b'1');
+INSERT INTO `system_menu` VALUES (2320, '浼氬憳鏍囩', '', 2, 1, 2262, 'tag', 'ep:collection-tag', 'member/tag/index', 'MemberTag', 0, b'1', b'1', b'1', '', '2023-08-20 01:03:08', '1', '2026-06-30 10:05:08', b'1');
+INSERT INTO `system_menu` VALUES (2321, '浼氬憳鏍囩鏌ヨ', 'member:tag:query', 3, 1, 2320, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-20 01:03:08', '1', '2026-06-30 10:05:01', b'1');
+INSERT INTO `system_menu` VALUES (2322, '浼氬憳鏍囩鍒涘缓', 'member:tag:create', 3, 2, 2320, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-20 01:03:08', '1', '2026-06-30 10:05:03', b'1');
+INSERT INTO `system_menu` VALUES (2323, '浼氬憳鏍囩鏇存柊', 'member:tag:update', 3, 3, 2320, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-20 01:03:08', '1', '2026-06-30 10:05:05', b'1');
+INSERT INTO `system_menu` VALUES (2324, '浼氬憳鏍囩鍒犻櫎', 'member:tag:delete', 3, 4, 2320, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-20 01:03:08', '1', '2026-06-30 10:05:06', b'1');
+INSERT INTO `system_menu` VALUES (2325, '浼氬憳绛夌骇', '', 2, 2, 2262, 'level', 'fa:level-up', 'member/level/index', 'MemberLevel', 0, b'1', b'1', b'1', '', '2023-08-22 12:41:01', '1', '2026-06-30 10:05:24', b'1');
+INSERT INTO `system_menu` VALUES (2326, '浼氬憳绛夌骇鏌ヨ', 'member:level:query', 3, 1, 2325, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 12:41:02', '1', '2026-06-30 10:05:10', b'1');
+INSERT INTO `system_menu` VALUES (2327, '浼氬憳绛夌骇鍒涘缓', 'member:level:create', 3, 2, 2325, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 12:41:02', '1', '2026-06-30 10:05:12', b'1');
+INSERT INTO `system_menu` VALUES (2328, '浼氬憳绛夌骇鏇存柊', 'member:level:update', 3, 3, 2325, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 12:41:02', '1', '2026-06-30 10:05:14', b'1');
+INSERT INTO `system_menu` VALUES (2329, '浼氬憳绛夌骇鍒犻櫎', 'member:level:delete', 3, 4, 2325, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 12:41:02', '1', '2026-06-30 10:05:15', b'1');
+INSERT INTO `system_menu` VALUES (2330, '浼氬憳鍒嗙粍', '', 2, 3, 2262, 'group', 'fa:group', 'member/group/index', 'MemberGroup', 0, b'1', b'1', b'1', '', '2023-08-22 13:50:06', '1', '2026-06-30 10:04:35', b'1');
+INSERT INTO `system_menu` VALUES (2331, '鐢ㄦ埛鍒嗙粍鏌ヨ', 'member:group:query', 3, 1, 2330, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 13:50:06', '1', '2026-06-30 10:04:32', b'1');
+INSERT INTO `system_menu` VALUES (2332, '鐢ㄦ埛鍒嗙粍鍒涘缓', 'member:group:create', 3, 2, 2330, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 13:50:06', '1', '2026-06-30 10:04:29', b'1');
+INSERT INTO `system_menu` VALUES (2333, '鐢ㄦ埛鍒嗙粍鏇存柊', 'member:group:update', 3, 3, 2330, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 13:50:06', '1', '2026-06-30 10:04:26', b'1');
+INSERT INTO `system_menu` VALUES (2334, '鐢ㄦ埛鍒嗙粍鍒犻櫎', 'member:group:delete', 3, 4, 2330, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-22 13:50:06', '1', '2026-06-30 10:04:23', b'1');
+INSERT INTO `system_menu` VALUES (2335, '鐢ㄦ埛绛夌骇淇敼', 'member:user:update-level', 3, 5, 2317, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-08-23 16:49:05', '1', '2026-06-30 10:04:52', b'1');
+INSERT INTO `system_menu` VALUES (2336, '鍟嗗搧璇勮', '', 2, 5, 2000, 'comment', 'ep:comment', 'mall/product/comment/index', 'ProductComment', 0, b'1', b'1', b'1', '1', '2023-08-26 11:03:00', '1', '2026-06-30 10:06:48', b'1');
+INSERT INTO `system_menu` VALUES (2337, '璇勮鏌ヨ', 'product:comment:query', 3, 1, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:01', '1', '2026-06-30 10:06:41', b'1');
+INSERT INTO `system_menu` VALUES (2338, '娣诲姞鑷瘎', 'product:comment:create', 3, 2, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:23', '1', '2026-06-30 10:06:43', b'1');
+INSERT INTO `system_menu` VALUES (2339, '鍟嗗鍥炲', 'product:comment:update', 3, 3, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:37', '1', '2026-06-30 10:06:44', b'1');
+INSERT INTO `system_menu` VALUES (2340, '鏄鹃殣璇勮', 'product:comment:update', 3, 4, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:55', '1', '2026-06-30 10:06:46', b'1');
+INSERT INTO `system_menu` VALUES (2341, '浼樻儬鍔靛彂閫�', 'promotion:coupon:send', 3, 2, 2038, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-09-02 00:03:14', '1', '2026-07-01 11:09:31', b'1');
+INSERT INTO `system_menu` VALUES (2342, '浜ゆ槗閰嶇疆', '', 2, 0, 2072, 'config', 'ep:setting', 'mall/trade/config/index', 'TradeConfig', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:13:11', b'1');
+INSERT INTO `system_menu` VALUES (2343, '浜ゆ槗涓績閰嶇疆鏌ヨ', 'trade:config:query', 3, 1, 2342, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:13:08', b'1');
+INSERT INTO `system_menu` VALUES (2344, '浜ゆ槗涓績閰嶇疆淇濆瓨', 'trade:config:save', 3, 2, 2342, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:13:10', b'1');
+INSERT INTO `system_menu` VALUES (2345, '鍒嗛攢绠$悊', '', 1, 4, 2072, 'brokerage', 'fa-solid:project-diagram', '', '', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:53', b'1');
+INSERT INTO `system_menu` VALUES (2346, '鍒嗛攢鐢ㄦ埛', '', 2, 0, 2345, 'brokerage-user', 'fa-solid:user-tie', 'mall/trade/brokerage/user/index', 'TradeBrokerageUser', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:47', b'1');
+INSERT INTO `system_menu` VALUES (2347, '鍒嗛攢鐢ㄦ埛鏌ヨ', 'trade:brokerage-user:query', 3, 1, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:10:34', b'1');
+INSERT INTO `system_menu` VALUES (2348, '鍒嗛攢鐢ㄦ埛鎺ㄥ箍浜烘煡璇�', 'trade:brokerage-user:user-query', 3, 2, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:10:55', b'1');
+INSERT INTO `system_menu` VALUES (2349, '鍒嗛攢鐢ㄦ埛鎺ㄥ箍璁㈠崟鏌ヨ', 'trade:brokerage-user:order-query', 3, 3, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:10:57', b'1');
+INSERT INTO `system_menu` VALUES (2350, '鍒嗛攢鐢ㄦ埛淇敼鎺ㄥ箍璧勬牸', 'trade:brokerage-user:update-brokerage-enable', 3, 4, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:00', b'1');
+INSERT INTO `system_menu` VALUES (2351, '淇敼鎺ㄥ箍鍛�', 'trade:brokerage-user:update-bind-user', 3, 5, 2346, '', '', '', '', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:03', b'1');
+INSERT INTO `system_menu` VALUES (2352, '娓呴櫎鎺ㄥ箍鍛�', 'trade:brokerage-user:clear-bind-user', 3, 6, 2346, '', '', '', '', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:32', b'1');
+INSERT INTO `system_menu` VALUES (2353, '浣i噾璁板綍', '', 2, 1, 2345, 'brokerage-record', 'fa:money', 'mall/trade/brokerage/record/index', 'TradeBrokerageRecord', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:45', b'1');
+INSERT INTO `system_menu` VALUES (2354, '浣i噾璁板綍鏌ヨ', 'trade:brokerage-record:query', 3, 1, 2353, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:36', b'1');
+INSERT INTO `system_menu` VALUES (2355, '浣i噾鎻愮幇', '', 2, 2, 2345, 'brokerage-withdraw', 'fa:credit-card', 'mall/trade/brokerage/withdraw/index', 'TradeBrokerageWithdraw', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:43', b'1');
+INSERT INTO `system_menu` VALUES (2356, '浣i噾鎻愮幇鏌ヨ', 'trade:brokerage-withdraw:query', 3, 1, 2355, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:38', b'1');
+INSERT INTO `system_menu` VALUES (2357, '浣i噾鎻愮幇瀹℃牳', 'trade:brokerage-withdraw:audit', 3, 2, 2355, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2026-07-01 11:11:41', b'1');
+INSERT INTO `system_menu` VALUES (2358, '缁熻涓績', '', 1, 75, 2362, 'statistics', 'ep:data-line', '', '', 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '1', '2026-07-01 11:04:52', b'1');
+INSERT INTO `system_menu` VALUES (2359, '浜ゆ槗缁熻', '', 2, 4, 2358, 'trade', 'fa-solid:credit-card', 'mall/statistics/trade/index', 'TradeStatistics', 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '1', '2026-07-01 11:04:40', b'1');
+INSERT INTO `system_menu` VALUES (2360, '浜ゆ槗缁熻鏌ヨ', 'statistics:trade:query', 3, 1, 2359, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '1', '2026-07-01 11:04:38', b'1');
+INSERT INTO `system_menu` VALUES (2361, '浜ゆ槗缁熻瀵煎嚭', 'statistics:trade:export', 3, 2, 2359, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '1', '2026-07-01 11:04:36', b'1');
+INSERT INTO `system_menu` VALUES (2362, '鍟嗗煄绯荤粺', '', 1, 59, 0, '/mall', 'ep:shop', '', '', 0, b'0', b'1', b'1', '1', '2023-09-30 11:52:02', '1', '2026-07-01 11:13:15', b'1');
+INSERT INTO `system_menu` VALUES (2363, '鐢ㄦ埛绉垎淇敼', 'member:user:update-point', 3, 6, 2317, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-01 14:39:43', '1', '2026-06-30 10:04:54', b'1');
+INSERT INTO `system_menu` VALUES (2364, '鐢ㄦ埛浣欓淇敼', 'pay:wallet:update-balance', 3, 7, 2317, '', '', '', '', 0, b'1', b'1', b'1', '', '2023-10-01 14:39:43', '1', '2026-06-30 10:04:56', b'1');
+INSERT INTO `system_menu` VALUES (2365, '浼樻儬鍔�', '', 1, 2, 2030, 'coupon', 'fa-solid:disease', '', '', 0, b'1', b'1', b'1', '1', '2023-10-03 12:39:15', '1', '2026-07-01 11:09:48', b'1');
+INSERT INTO `system_menu` VALUES (2366, '鐮嶄环璁板綍', '', 2, 2, 2310, 'record', 'ep:list', 'mall/promotion/bargain/record/index', 'PromotionBargainRecord', 0, b'1', b'1', b'1', '', '2023-10-05 02:49:06', '1', '2026-07-01 11:08:23', b'1');
+INSERT INTO `system_menu` VALUES (2367, '鐮嶄环璁板綍鏌ヨ', 'promotion:bargain-record:query', 3, 1, 2366, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-05 02:49:06', '1', '2026-07-01 11:08:21', b'1');
+INSERT INTO `system_menu` VALUES (2368, '鍔╁姏璁板綍鏌ヨ', 'promotion:bargain-help:query', 3, 2, 2366, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-10-05 12:27:49', '1', '2026-07-01 11:08:19', b'1');
+INSERT INTO `system_menu` VALUES (2369, '鎷煎洟璁板綍', 'promotion:combination-record:query', 2, 2, 2303, 'record', 'ep:avatar', 'mall/promotion/combination/record/index.vue', 'PromotionCombinationRecord', 0, b'1', b'1', b'1', '1', '2023-10-08 07:10:22', '1', '2026-07-01 11:08:43', b'1');
+INSERT INTO `system_menu` VALUES (2374, '浼氬憳缁熻', '', 2, 2, 2358, 'member', 'ep:avatar', 'mall/statistics/member/index', 'MemberStatistics', 0, b'1', b'1', b'1', '', '2023-10-11 04:39:24', '1', '2026-07-01 11:04:50', b'1');
+INSERT INTO `system_menu` VALUES (2375, '浼氬憳缁熻鏌ヨ', 'statistics:member:query', 3, 1, 2374, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-11 04:39:24', '1', '2026-07-01 11:04:48', b'1');
+INSERT INTO `system_menu` VALUES (2376, '璁㈠崟鏍搁攢', 'trade:order:pick-up', 3, 10, 2076, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-10-14 17:11:58', '1', '2026-07-01 11:13:04', b'1');
+INSERT INTO `system_menu` VALUES (2377, '鏂囩珷鍒嗙被', '', 2, 0, 2387, 'article/category', 'fa:certificate', 'mall/promotion/article/category/index', 'ArticleCategory', 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:22', b'1');
+INSERT INTO `system_menu` VALUES (2378, '鍒嗙被鏌ヨ', 'promotion:article-category:query', 3, 1, 2377, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:15', b'1');
+INSERT INTO `system_menu` VALUES (2379, '鍒嗙被鍒涘缓', 'promotion:article-category:create', 3, 2, 2377, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:17', b'1');
+INSERT INTO `system_menu` VALUES (2380, '鍒嗙被鏇存柊', 'promotion:article-category:update', 3, 3, 2377, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:18', b'1');
+INSERT INTO `system_menu` VALUES (2381, '鍒嗙被鍒犻櫎', 'promotion:article-category:delete', 3, 4, 2377, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:20', b'1');
+INSERT INTO `system_menu` VALUES (2382, '鏂囩珷鍒楄〃', '', 2, 2, 2387, 'article', 'ep:connection', 'mall/promotion/article/index', 'Article', 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:12', b'1');
+INSERT INTO `system_menu` VALUES (2383, '鏂囩珷绠$悊鏌ヨ', 'promotion:article:query', 3, 1, 2382, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:10', b'1');
+INSERT INTO `system_menu` VALUES (2384, '鏂囩珷绠$悊鍒涘缓', 'promotion:article:create', 3, 2, 2382, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:08', b'1');
+INSERT INTO `system_menu` VALUES (2385, '鏂囩珷绠$悊鏇存柊', 'promotion:article:update', 3, 3, 2382, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:06', b'1');
+INSERT INTO `system_menu` VALUES (2386, '鏂囩珷绠$悊鍒犻櫎', 'promotion:article:delete', 3, 4, 2382, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-16 01:26:18', '1', '2026-07-01 11:10:04', b'1');
+INSERT INTO `system_menu` VALUES (2387, '鍐呭绠$悊', '', 1, 1, 2030, 'content', 'ep:collection', '', '', 0, b'1', b'1', b'1', '1', '2023-10-16 09:37:31', '1', '2026-07-01 11:10:24', b'1');
+INSERT INTO `system_menu` VALUES (2388, '鍟嗗煄棣栭〉', '', 2, 1, 2362, 'home', 'ep:home-filled', 'mall/home/index', 'MallHome', 0, b'1', b'1', b'1', '', '2023-10-16 12:10:33', '1', '2026-06-30 10:05:38', b'1');
+INSERT INTO `system_menu` VALUES (2389, '鏍搁攢璁㈠崟', '', 2, 2, 2166, 'pick-up-order', 'ep:list', 'mall/trade/delivery/pickUpOrder/index', 'PickUpOrder', 0, b'1', b'1', b'1', '', '2023-10-19 16:09:51', '1', '2026-07-01 11:11:59', b'1');
+INSERT INTO `system_menu` VALUES (2390, '浼樻儬娲诲姩', '', 1, 99, 2030, 'youhui', 'ep:aim', '', '', 0, b'1', b'1', b'1', '1', '2023-10-21 19:23:49', '1', '2026-07-01 11:05:27', b'1');
+INSERT INTO `system_menu` VALUES (2391, '瀹㈡埛绠$悊', '', 2, 10, 2617, 'customer', 'fa:address-book-o', 'crm/customer/index', 'CrmCustomer', 0, b'1', b'1', b'1', '', '2023-10-29 09:04:21', '1', '2026-07-01 15:31:09', b'0');
+INSERT INTO `system_menu` VALUES (2392, '瀹㈡埛鏌ヨ', 'crm:customer:query', 3, 1, 2391, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 09:04:21', '', '2023-10-29 09:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2393, '瀹㈡埛鍒涘缓', 'crm:customer:create', 3, 2, 2391, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 09:04:21', '', '2023-10-29 09:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2394, '瀹㈡埛鏇存柊', 'crm:customer:update', 3, 3, 2391, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 09:04:21', '', '2023-10-29 09:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2395, '瀹㈡埛鍒犻櫎', 'crm:customer:delete', 3, 4, 2391, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 09:04:21', '', '2023-10-29 09:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2396, '瀹㈡埛瀵煎嚭', 'crm:customer:export', 3, 5, 2391, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 09:04:21', '', '2023-10-29 09:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2397, 'CRM 绯荤粺', '', 1, 200, 0, '/crm', 'simple-icons:civicrm', '', '', 0, b'1', b'1', b'1', '1', '2023-10-29 17:08:30', '1', '2025-04-19 18:56:38', b'0');
+INSERT INTO `system_menu` VALUES (2398, '鍚堝悓绠$悊', '', 2, 4, 2617, 'contract', 'ep:notebook', 'crm/contract/index', 'CrmContract', 0, b'1', b'1', b'1', '', '2023-10-29 10:50:41', '1', '2026-07-02 16:28:22', b'0');
+INSERT INTO `system_menu` VALUES (2399, '鍚堝悓鏌ヨ', 'crm:contract:query', 3, 1, 2398, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 10:50:41', '', '2023-10-29 10:50:41', b'0');
+INSERT INTO `system_menu` VALUES (2400, '鍚堝悓鍒涘缓', 'crm:contract:create', 3, 2, 2398, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 10:50:41', '', '2023-10-29 10:50:41', b'0');
+INSERT INTO `system_menu` VALUES (2401, '鍚堝悓鏇存柊', 'crm:contract:update', 3, 3, 2398, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 10:50:41', '', '2023-10-29 10:50:41', b'0');
+INSERT INTO `system_menu` VALUES (2402, '鍚堝悓鍒犻櫎', 'crm:contract:delete', 3, 4, 2398, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 10:50:41', '', '2023-10-29 10:50:41', b'0');
+INSERT INTO `system_menu` VALUES (2403, '鍚堝悓瀵煎嚭', 'crm:contract:export', 3, 5, 2398, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 10:50:41', '', '2023-10-29 10:50:41', b'0');
+INSERT INTO `system_menu` VALUES (2404, '绾跨储绠$悊', '', 2, 1, 2617, 'clue', 'fa:pagelines', 'crm/clue/index', 'CrmClue', 0, b'1', b'1', b'1', '', '2023-10-29 11:06:29', '1', '2026-07-02 16:27:42', b'0');
+INSERT INTO `system_menu` VALUES (2405, '绾跨储鏌ヨ', 'crm:clue:query', 3, 1, 2404, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:06:29', '', '2023-10-29 11:06:29', b'0');
+INSERT INTO `system_menu` VALUES (2406, '绾跨储鍒涘缓', 'crm:clue:create', 3, 2, 2404, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:06:29', '', '2023-10-29 11:06:29', b'0');
+INSERT INTO `system_menu` VALUES (2407, '绾跨储鏇存柊', 'crm:clue:update', 3, 3, 2404, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:06:29', '', '2023-10-29 11:06:29', b'0');
+INSERT INTO `system_menu` VALUES (2408, '绾跨储鍒犻櫎', 'crm:clue:delete', 3, 4, 2404, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:06:29', '', '2023-10-29 11:06:29', b'0');
+INSERT INTO `system_menu` VALUES (2409, '绾跨储瀵煎嚭', 'crm:clue:export', 3, 5, 2404, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:06:29', '', '2023-10-29 11:06:29', b'0');
+INSERT INTO `system_menu` VALUES (2410, '鍟嗘満绠$悊', '', 2, 2, 2617, 'business', 'fa:bus', 'crm/business/index', 'CrmBusiness', 0, b'1', b'1', b'1', '', '2023-10-29 11:12:35', '1', '2026-07-02 16:28:08', b'0');
+INSERT INTO `system_menu` VALUES (2411, '鍟嗘満鏌ヨ', 'crm:business:query', 3, 1, 2410, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:12:35', '', '2023-10-29 11:12:35', b'0');
+INSERT INTO `system_menu` VALUES (2412, '鍟嗘満鍒涘缓', 'crm:business:create', 3, 2, 2410, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:12:35', '', '2023-10-29 11:12:35', b'0');
+INSERT INTO `system_menu` VALUES (2413, '鍟嗘満鏇存柊', 'crm:business:update', 3, 3, 2410, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:12:35', '', '2023-10-29 11:12:35', b'0');
+INSERT INTO `system_menu` VALUES (2414, '鍟嗘満鍒犻櫎', 'crm:business:delete', 3, 4, 2410, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:12:35', '', '2023-10-29 11:12:35', b'0');
+INSERT INTO `system_menu` VALUES (2415, '鍟嗘満瀵煎嚭', 'crm:business:export', 3, 5, 2410, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:12:35', '', '2023-10-29 11:12:35', b'0');
+INSERT INTO `system_menu` VALUES (2416, '鑱旂郴浜虹鐞�', '', 2, 20, 2617, 'contact', 'fa:address-book-o', 'crm/contact/index', 'CrmContact', 0, b'1', b'1', b'1', '', '2023-10-29 11:14:56', '1', '2026-07-01 17:13:44', b'0');
+INSERT INTO `system_menu` VALUES (2417, '鑱旂郴浜烘煡璇�', 'crm:contact:query', 3, 1, 2416, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:14:56', '', '2023-10-29 11:14:56', b'0');
+INSERT INTO `system_menu` VALUES (2418, '鑱旂郴浜哄垱寤�', 'crm:contact:create', 3, 2, 2416, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:14:56', '', '2023-10-29 11:14:56', b'0');
+INSERT INTO `system_menu` VALUES (2419, '鑱旂郴浜烘洿鏂�', 'crm:contact:update', 3, 3, 2416, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:14:56', '', '2023-10-29 11:14:56', b'0');
+INSERT INTO `system_menu` VALUES (2420, '鑱旂郴浜哄垹闄�', 'crm:contact:delete', 3, 4, 2416, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:14:56', '', '2023-10-29 11:14:56', b'0');
+INSERT INTO `system_menu` VALUES (2421, '鑱旂郴浜哄鍑�', 'crm:contact:export', 3, 5, 2416, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:14:56', '', '2023-10-29 11:14:56', b'0');
+INSERT INTO `system_menu` VALUES (2422, '鍥炴绠$悊', '', 2, 60, 2617, 'receivable', 'ep:money', 'crm/receivable/index', 'CrmReceivable', 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '1', '2026-07-01 17:13:49', b'0');
+INSERT INTO `system_menu` VALUES (2423, '鍥炴绠$悊鏌ヨ', 'crm:receivable:query', 3, 1, 2422, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2424, '鍥炴绠$悊鍒涘缓', 'crm:receivable:create', 3, 2, 2422, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2425, '鍥炴绠$悊鏇存柊', 'crm:receivable:update', 3, 3, 2422, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2426, '鍥炴绠$悊鍒犻櫎', 'crm:receivable:delete', 3, 4, 2422, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2427, '鍥炴绠$悊瀵煎嚭', 'crm:receivable:export', 3, 5, 2422, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2428, '鍥炴璁″垝', '', 2, 61, 2617, 'receivable-plan', 'fa:money', 'crm/receivable/plan/index', 'CrmReceivablePlan', 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '1', '2026-07-01 17:13:56', b'0');
+INSERT INTO `system_menu` VALUES (2429, '鍥炴璁″垝鏌ヨ', 'crm:receivable-plan:query', 3, 1, 2428, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2430, '鍥炴璁″垝鍒涘缓', 'crm:receivable-plan:create', 3, 2, 2428, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2431, '鍥炴璁″垝鏇存柊', 'crm:receivable-plan:update', 3, 3, 2428, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2432, '鍥炴璁″垝鍒犻櫎', 'crm:receivable-plan:delete', 3, 4, 2428, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2433, '鍥炴璁″垝瀵煎嚭', 'crm:receivable-plan:export', 3, 5, 2428, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 11:18:09', '', '2023-10-29 11:18:09', b'0');
+INSERT INTO `system_menu` VALUES (2435, '鍟嗗煄瑁呬慨', '', 2, 20, 2030, 'diy-template', 'fa6-solid:brush', 'mall/promotion/diy/template/index', '', 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:54', b'1');
+INSERT INTO `system_menu` VALUES (2436, '瑁呬慨妯℃澘', '', 2, 1, 2435, 'diy-template', 'fa6-solid:brush', 'mall/promotion/diy/template/index', 'DiyTemplate', 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:52', b'1');
+INSERT INTO `system_menu` VALUES (2437, '瑁呬慨妯℃澘鏌ヨ', 'promotion:diy-template:query', 3, 1, 2436, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:50', b'1');
+INSERT INTO `system_menu` VALUES (2438, '瑁呬慨妯℃澘鍒涘缓', 'promotion:diy-template:create', 3, 2, 2436, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:49', b'1');
+INSERT INTO `system_menu` VALUES (2439, '瑁呬慨妯℃澘鏇存柊', 'promotion:diy-template:update', 3, 3, 2436, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:47', b'1');
+INSERT INTO `system_menu` VALUES (2440, '瑁呬慨妯℃澘鍒犻櫎', 'promotion:diy-template:delete', 3, 4, 2436, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:45', b'1');
+INSERT INTO `system_menu` VALUES (2441, '瑁呬慨妯℃澘浣跨敤', 'promotion:diy-template:use', 3, 5, 2436, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:43', b'1');
+INSERT INTO `system_menu` VALUES (2442, '瑁呬慨椤甸潰', '', 2, 2, 2435, 'diy-page', 'foundation:page-edit', 'mall/promotion/diy/page/index', 'DiyPage', 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:41', b'1');
+INSERT INTO `system_menu` VALUES (2443, '瑁呬慨椤甸潰鏌ヨ', 'promotion:diy-page:query', 3, 1, 2442, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:25', '1', '2026-07-01 11:05:39', b'1');
+INSERT INTO `system_menu` VALUES (2444, '瑁呬慨椤甸潰鍒涘缓', 'promotion:diy-page:create', 3, 2, 2442, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:26', '1', '2026-07-01 11:05:37', b'1');
+INSERT INTO `system_menu` VALUES (2445, '瑁呬慨椤甸潰鏇存柊', 'promotion:diy-page:update', 3, 3, 2442, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:26', '1', '2026-07-01 11:05:35', b'1');
+INSERT INTO `system_menu` VALUES (2446, '瑁呬慨椤甸潰鍒犻櫎', 'promotion:diy-page:delete', 3, 4, 2442, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-10-29 14:19:26', '1', '2026-07-01 11:05:33', b'1');
+INSERT INTO `system_menu` VALUES (2447, '涓夋柟鐧诲綍', '', 1, 10, 1, 'social', 'fa:rocket', '', '', 0, b'0', b'1', b'1', '1', '2023-11-04 12:12:01', '1', '2026-06-26 10:46:37', b'0');
+INSERT INTO `system_menu` VALUES (2448, '涓夋柟搴旂敤', '', 2, 1, 2447, 'client', 'ep:set-up', 'system/social/client/index.vue', 'SocialClient', 0, b'1', b'1', b'1', '1', '2023-11-04 12:17:19', '1', '2024-05-04 19:09:54', b'0');
+INSERT INTO `system_menu` VALUES (2449, '涓夋柟搴旂敤鏌ヨ', 'system:social-client:query', 3, 1, 2448, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-11-04 12:43:12', '1', '2023-11-04 12:43:33', b'0');
+INSERT INTO `system_menu` VALUES (2450, '涓夋柟搴旂敤鍒涘缓', 'system:social-client:create', 3, 2, 2448, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-11-04 12:43:58', '1', '2023-11-04 12:43:58', b'0');
+INSERT INTO `system_menu` VALUES (2451, '涓夋柟搴旂敤鏇存柊', 'system:social-client:update', 3, 3, 2448, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-11-04 12:44:27', '1', '2023-11-04 12:44:27', b'0');
+INSERT INTO `system_menu` VALUES (2452, '涓夋柟搴旂敤鍒犻櫎', 'system:social-client:delete', 3, 4, 2448, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-11-04 12:44:43', '1', '2023-11-04 12:44:43', b'0');
+INSERT INTO `system_menu` VALUES (2453, '涓夋柟鐢ㄦ埛', 'system:social-user:query', 2, 2, 2447, 'user', 'ep:avatar', 'system/social/user/index.vue', 'SocialUser', 0, b'1', b'1', b'1', '1', '2023-11-04 14:01:05', '1', '2023-11-04 14:01:05', b'0');
+INSERT INTO `system_menu` VALUES (2472, '涓诲瓙琛紙鍐呭祵锛�', '', 2, 12, 1070, 'demo03-inner', 'fa:power-off', 'infra/demo/demo03/inner/index', 'Demo03StudentInner', 0, b'1', b'1', b'1', '', '2023-11-13 04:39:51', '1', '2023-11-16 23:53:46', b'0');
+INSERT INTO `system_menu` VALUES (2478, '鍗曡〃锛堝鍒犳敼鏌ワ級', '', 2, 1, 1070, 'demo01-contact', 'ep:bicycle', 'infra/demo/demo01/index', 'Demo01Contact', 0, b'1', b'1', b'1', '', '2023-11-15 14:42:30', '1', '2023-11-16 20:34:40', b'0');
+INSERT INTO `system_menu` VALUES (2479, '绀轰緥鑱旂郴浜烘煡璇�', 'infra:demo01-contact:query', 3, 1, 2478, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-15 14:42:30', '', '2023-11-15 14:42:30', b'0');
+INSERT INTO `system_menu` VALUES (2480, '绀轰緥鑱旂郴浜哄垱寤�', 'infra:demo01-contact:create', 3, 2, 2478, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-15 14:42:30', '', '2023-11-15 14:42:30', b'0');
+INSERT INTO `system_menu` VALUES (2481, '绀轰緥鑱旂郴浜烘洿鏂�', 'infra:demo01-contact:update', 3, 3, 2478, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-15 14:42:30', '', '2023-11-15 14:42:30', b'0');
+INSERT INTO `system_menu` VALUES (2482, '绀轰緥鑱旂郴浜哄垹闄�', 'infra:demo01-contact:delete', 3, 4, 2478, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-15 14:42:30', '', '2023-11-15 14:42:30', b'0');
+INSERT INTO `system_menu` VALUES (2483, '绀轰緥鑱旂郴浜哄鍑�', 'infra:demo01-contact:export', 3, 5, 2478, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-15 14:42:30', '', '2023-11-15 14:42:30', b'0');
+INSERT INTO `system_menu` VALUES (2484, '鏍戣〃锛堝鍒犳敼鏌ワ級', '', 2, 2, 1070, 'demo02-category', 'fa:tree', 'infra/demo/demo02/index', 'Demo02Category', 0, b'1', b'1', b'1', '', '2023-11-16 12:18:27', '1', '2023-11-16 20:35:01', b'0');
+INSERT INTO `system_menu` VALUES (2485, '绀轰緥鍒嗙被鏌ヨ', 'infra:demo02-category:query', 3, 1, 2484, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:18:27', '', '2023-11-16 12:18:27', b'0');
+INSERT INTO `system_menu` VALUES (2486, '绀轰緥鍒嗙被鍒涘缓', 'infra:demo02-category:create', 3, 2, 2484, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:18:27', '', '2023-11-16 12:18:27', b'0');
+INSERT INTO `system_menu` VALUES (2487, '绀轰緥鍒嗙被鏇存柊', 'infra:demo02-category:update', 3, 3, 2484, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:18:27', '', '2023-11-16 12:18:27', b'0');
+INSERT INTO `system_menu` VALUES (2488, '绀轰緥鍒嗙被鍒犻櫎', 'infra:demo02-category:delete', 3, 4, 2484, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:18:27', '', '2023-11-16 12:18:27', b'0');
+INSERT INTO `system_menu` VALUES (2489, '绀轰緥鍒嗙被瀵煎嚭', 'infra:demo02-category:export', 3, 5, 2484, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:18:27', '', '2023-11-16 12:18:27', b'0');
+INSERT INTO `system_menu` VALUES (2490, '涓诲瓙琛紙鏍囧噯锛�', '', 2, 10, 1070, 'demo03-normal', 'fa:battery-3', 'infra/demo/demo03/normal/index', 'Demo03StudentNormal', 0, b'1', b'1', b'1', '', '2023-11-16 12:53:37', '1', '2023-11-16 23:10:03', b'0');
+INSERT INTO `system_menu` VALUES (2491, '瀛︾敓鏌ヨ', 'infra:demo03-student:query', 3, 1, 2490, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:53:37', '', '2023-11-16 12:53:37', b'0');
+INSERT INTO `system_menu` VALUES (2492, '瀛︾敓鍒涘缓', 'infra:demo03-student:create', 3, 2, 2490, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:53:37', '', '2023-11-16 12:53:37', b'0');
+INSERT INTO `system_menu` VALUES (2493, '瀛︾敓鏇存柊', 'infra:demo03-student:update', 3, 3, 2490, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:53:37', '', '2023-11-16 12:53:37', b'0');
+INSERT INTO `system_menu` VALUES (2494, '瀛︾敓鍒犻櫎', 'infra:demo03-student:delete', 3, 4, 2490, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:53:37', '', '2023-11-16 12:53:37', b'0');
+INSERT INTO `system_menu` VALUES (2495, '瀛︾敓瀵煎嚭', 'infra:demo03-student:export', 3, 5, 2490, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-16 12:53:37', '', '2023-11-16 12:53:37', b'0');
+INSERT INTO `system_menu` VALUES (2497, '涓诲瓙琛紙ERP锛�', '', 2, 11, 1070, 'demo03-erp', 'ep:calendar', 'infra/demo/demo03/erp/index', 'Demo03StudentERP', 0, b'1', b'1', b'1', '', '2023-11-16 15:50:59', '1', '2023-11-17 13:19:56', b'0');
+INSERT INTO `system_menu` VALUES (2516, '瀹㈡埛鍏捣閰嶇疆', '', 2, 0, 2524, 'customer-pool-config', 'ep:data-analysis', 'crm/customer/poolConfig/index', 'CrmCustomerPoolConfig', 0, b'1', b'1', b'1', '', '2023-11-18 13:33:31', '1', '2024-01-03 19:52:06', b'0');
+INSERT INTO `system_menu` VALUES (2517, '瀹㈡埛鍏捣閰嶇疆淇濆瓨', 'crm:customer-pool-config:update', 3, 1, 2516, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-18 13:33:31', '', '2023-11-18 13:33:31', b'0');
+INSERT INTO `system_menu` VALUES (2518, '瀹㈡埛闄愬埗閰嶇疆', '', 2, 1, 2524, 'customer-limit-config', 'ep:avatar', 'crm/customer/limitConfig/index', 'CrmCustomerLimitConfig', 0, b'1', b'1', b'1', '', '2023-11-18 13:33:53', '1', '2024-02-24 16:43:33', b'0');
+INSERT INTO `system_menu` VALUES (2519, '瀹㈡埛闄愬埗閰嶇疆鏌ヨ', 'crm:customer-limit-config:query', 3, 1, 2518, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-18 13:33:53', '', '2023-11-18 13:33:53', b'0');
+INSERT INTO `system_menu` VALUES (2520, '瀹㈡埛闄愬埗閰嶇疆鍒涘缓', 'crm:customer-limit-config:create', 3, 2, 2518, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-18 13:33:53', '', '2023-11-18 13:33:53', b'0');
+INSERT INTO `system_menu` VALUES (2521, '瀹㈡埛闄愬埗閰嶇疆鏇存柊', 'crm:customer-limit-config:update', 3, 3, 2518, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-18 13:33:53', '', '2023-11-18 13:33:53', b'0');
+INSERT INTO `system_menu` VALUES (2522, '瀹㈡埛闄愬埗閰嶇疆鍒犻櫎', 'crm:customer-limit-config:delete', 3, 4, 2518, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-18 13:33:53', '', '2023-11-18 13:33:53', b'0');
+INSERT INTO `system_menu` VALUES (2523, '瀹㈡埛闄愬埗閰嶇疆瀵煎嚭', 'crm:customer-limit-config:export', 3, 5, 2518, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-11-18 13:33:53', '', '2023-11-18 13:33:53', b'0');
+INSERT INTO `system_menu` VALUES (2524, '绯荤粺閰嶇疆', '', 1, 999, 2617, 'config', 'ep:connection', '', '', 0, b'1', b'1', b'1', '1', '2023-11-18 21:58:00', '1', '2026-07-01 15:31:39', b'0');
+INSERT INTO `system_menu` VALUES (2525, 'WebSocket', '', 2, 5, 2, 'websocket', 'ep:connection', 'infra/webSocket/index', 'InfraWebSocket', 0, b'1', b'1', b'1', '1', '2023-11-23 19:41:55', '1', '2024-04-23 00:02:00', b'0');
+INSERT INTO `system_menu` VALUES (2526, '浜у搧绠$悊', '', 2, 80, 2397, 'product', 'fa:product-hunt', 'crm/product/index', 'CrmProduct', 0, b'1', b'1', b'1', '1', '2023-12-05 22:45:26', '1', '2024-02-20 20:36:20', b'0');
+INSERT INTO `system_menu` VALUES (2527, '浜у搧鏌ヨ', 'crm:product:query', 3, 1, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:47:16', '1', '2023-12-05 22:47:16', b'0');
+INSERT INTO `system_menu` VALUES (2528, '浜у搧鍒涘缓', 'crm:product:create', 3, 2, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:47:41', '1', '2023-12-05 22:47:48', b'0');
+INSERT INTO `system_menu` VALUES (2529, '浜у搧鏇存柊', 'crm:product:update', 3, 3, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:48:03', '1', '2023-12-05 22:48:03', b'0');
+INSERT INTO `system_menu` VALUES (2530, '浜у搧鍒犻櫎', 'crm:product:delete', 3, 4, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:48:17', '1', '2023-12-05 22:48:17', b'0');
+INSERT INTO `system_menu` VALUES (2531, '浜у搧瀵煎嚭', 'crm:product:export', 3, 5, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:48:29', '1', '2023-12-05 22:48:29', b'0');
+INSERT INTO `system_menu` VALUES (2532, '浜у搧鍒嗙被閰嶇疆', '', 2, 3, 2524, 'product/category', 'fa-solid:window-restore', 'crm/product/category/index', 'CrmProductCategory', 0, b'1', b'1', b'1', '1', '2023-12-06 12:52:36', '1', '2023-12-06 12:52:51', b'0');
+INSERT INTO `system_menu` VALUES (2533, '浜у搧鍒嗙被鏌ヨ', 'crm:product-category:query', 3, 1, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:53:23', '1', '2023-12-06 12:53:23', b'0');
+INSERT INTO `system_menu` VALUES (2534, '浜у搧鍒嗙被鍒涘缓', 'crm:product-category:create', 3, 2, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:53:41', '1', '2023-12-06 12:53:41', b'0');
+INSERT INTO `system_menu` VALUES (2535, '浜у搧鍒嗙被鏇存柊', 'crm:product-category:update', 3, 3, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:53:59', '1', '2023-12-06 12:53:59', b'0');
+INSERT INTO `system_menu` VALUES (2536, '浜у搧鍒嗙被鍒犻櫎', 'crm:product-category:delete', 3, 4, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:54:14', '1', '2023-12-06 12:54:14', b'0');
+INSERT INTO `system_menu` VALUES (2543, '鍏宠仈鍟嗘満', 'crm:contact:create-business', 3, 10, 2416, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-01-02 17:28:25', '1', '2024-01-02 17:28:25', b'0');
+INSERT INTO `system_menu` VALUES (2544, '鍙栧叧鍟嗘満', 'crm:contact:delete-business', 3, 11, 2416, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-01-02 17:28:43', '1', '2024-01-02 17:28:51', b'0');
+INSERT INTO `system_menu` VALUES (2545, '鍟嗗搧缁熻', '', 2, 3, 2358, 'product', 'fa:product-hunt', 'mall/statistics/product/index', 'ProductStatistics', 0, b'1', b'1', b'1', '', '2023-12-15 18:54:28', '1', '2026-07-01 11:04:46', b'1');
+INSERT INTO `system_menu` VALUES (2546, '瀹㈡埛鍏捣', '', 2, 30, 2617, 'customer/pool', 'fa-solid:swimming-pool', 'crm/customer/pool/index', 'CrmCustomerPool', 0, b'1', b'1', b'1', '1', '2024-01-15 21:29:34', '1', '2026-07-01 15:31:26', b'0');
+INSERT INTO `system_menu` VALUES (2547, '璁㈠崟鏌ヨ', 'trade:order:query', 3, 1, 2076, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-01-16 08:52:00', '1', '2026-07-01 11:13:01', b'1');
+INSERT INTO `system_menu` VALUES (2548, '璁㈠崟鏇存柊', 'trade:order:update', 3, 2, 2076, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-01-16 08:52:21', '1', '2026-07-01 11:13:02', b'1');
+INSERT INTO `system_menu` VALUES (2549, '鏀粯&閫�娆炬渚�', '', 2, 1, 2161, 'order', 'fa:paypal', 'pay/demo/order/index', '', 0, b'1', b'1', b'1', '1', '2024-01-18 23:45:00', '1', '2026-07-01 13:32:30', b'1');
+INSERT INTO `system_menu` VALUES (2550, '鎻愮幇杞处妗堜緥', '', 2, 2, 2161, 'transfer', 'fa:transgender-alt', 'pay/demo/withdraw/index', '', 0, b'1', b'1', b'1', '1', '2024-01-18 23:51:16', '1', '2026-07-01 13:32:28', b'1');
+INSERT INTO `system_menu` VALUES (2551, '閽卞寘绠$悊', '', 1, 4, 1117, 'wallet', 'ep:wallet', '', '', 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:34:37', b'1');
+INSERT INTO `system_menu` VALUES (2552, '鍏呭�煎椁�', '', 2, 2, 2551, 'wallet-recharge-package', 'fa:leaf', 'pay/wallet/rechargePackage/index', 'WalletRechargePackage', 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:34:35', b'1');
+INSERT INTO `system_menu` VALUES (2553, '閽卞寘鍏呭�煎椁愭煡璇�', 'pay:wallet-recharge-package:query', 3, 1, 2552, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:32:45', b'1');
+INSERT INTO `system_menu` VALUES (2554, '閽卞寘鍏呭�煎椁愬垱寤�', 'pay:wallet-recharge-package:create', 3, 2, 2552, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:32:47', b'1');
+INSERT INTO `system_menu` VALUES (2555, '閽卞寘鍏呭�煎椁愭洿鏂�', 'pay:wallet-recharge-package:update', 3, 3, 2552, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:32:49', b'1');
+INSERT INTO `system_menu` VALUES (2556, '閽卞寘鍏呭�煎椁愬垹闄�', 'pay:wallet-recharge-package:delete', 3, 4, 2552, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:32:50', b'1');
+INSERT INTO `system_menu` VALUES (2557, '閽卞寘浣欓', '', 2, 1, 2551, 'wallet-balance', 'fa:leaf', 'pay/wallet/balance/index', 'WalletBalance', 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:32:43', b'1');
+INSERT INTO `system_menu` VALUES (2558, '閽卞寘浣欓鏌ヨ', 'pay:wallet:query', 3, 1, 2557, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:32:41', b'1');
+INSERT INTO `system_menu` VALUES (2559, '杞处璁㈠崟', '', 2, 3, 1117, 'transfer', 'ep:credit-card', 'pay/transfer/index', 'PayTransfer', 0, b'1', b'1', b'1', '', '2023-12-29 02:32:54', '1', '2026-07-01 13:34:50', b'1');
+INSERT INTO `system_menu` VALUES (2560, '鏁版嵁缁熻', '', 1, 200, 2617, 'statistics', 'ep:data-line', '', '', 0, b'1', b'1', b'1', '1', '2024-01-26 22:50:35', '1', '2026-07-01 15:31:50', b'0');
+INSERT INTO `system_menu` VALUES (2561, '鎺掕姒�', 'crm:statistics-rank:query', 2, 1, 2560, 'ranking', 'fa:area-chart', 'crm/statistics/rank/index', 'CrmStatisticsRank', 0, b'1', b'1', b'1', '1', '2024-01-26 22:52:09', '1', '2024-04-24 19:39:11', b'0');
+INSERT INTO `system_menu` VALUES (2562, '瀹㈡埛瀵煎叆', 'crm:customer:import', 3, 6, 2391, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-01 13:09:00', '1', '2024-02-01 13:09:05', b'0');
+INSERT INTO `system_menu` VALUES (2563, 'ERP 绯荤粺', '', 1, 300, 0, '/erp', 'simple-icons:erpnext', '', '', 0, b'1', b'1', b'1', '1', '2024-02-04 15:37:25', '1', '2025-04-19 18:56:15', b'0');
+INSERT INTO `system_menu` VALUES (2564, '浜у搧绠$悊', '', 1, 40, 2563, 'product', 'fa:product-hunt', '', '', 0, b'1', b'1', b'1', '1', '2024-02-04 15:38:43', '1', '2024-02-04 15:38:43', b'0');
+INSERT INTO `system_menu` VALUES (2565, '浜у搧淇℃伅', '', 2, 0, 2564, 'product', 'fa-solid:apple-alt', 'erp/product/product/index', 'ErpProduct', 0, b'1', b'1', b'1', '', '2024-02-04 07:52:15', '1', '2024-02-05 14:42:11', b'0');
+INSERT INTO `system_menu` VALUES (2566, '浜у搧鏌ヨ', 'erp:product:query', 3, 1, 2565, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-02-04 07:52:15', '1', '2024-02-04 17:21:57', b'0');
+INSERT INTO `system_menu` VALUES (2567, '浜у搧鍒涘缓', 'erp:product:create', 3, 2, 2565, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-02-04 07:52:15', '1', '2024-02-04 17:22:12', b'0');
+INSERT INTO `system_menu` VALUES (2568, '浜у搧鏇存柊', 'erp:product:update', 3, 3, 2565, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-02-04 07:52:15', '1', '2024-02-04 17:22:16', b'0');
+INSERT INTO `system_menu` VALUES (2569, '浜у搧鍒犻櫎', 'erp:product:delete', 3, 4, 2565, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-02-04 07:52:15', '1', '2024-02-04 17:22:22', b'0');
+INSERT INTO `system_menu` VALUES (2570, '浜у搧瀵煎嚭', 'erp:product:export', 3, 5, 2565, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-02-04 07:52:15', '1', '2024-02-04 17:22:26', b'0');
+INSERT INTO `system_menu` VALUES (2571, '浜у搧鍒嗙被', '', 2, 1, 2564, 'product-category', 'fa:certificate', 'erp/product/category/index', 'ErpProductCategory', 0, b'1', b'1', b'1', '', '2024-02-04 09:21:04', '1', '2024-02-04 17:24:58', b'0');
+INSERT INTO `system_menu` VALUES (2572, '鍒嗙被鏌ヨ', 'erp:product-category:query', 3, 1, 2571, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 09:21:04', '', '2024-02-04 09:21:04', b'0');
+INSERT INTO `system_menu` VALUES (2573, '鍒嗙被鍒涘缓', 'erp:product-category:create', 3, 2, 2571, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 09:21:04', '', '2024-02-04 09:21:04', b'0');
+INSERT INTO `system_menu` VALUES (2574, '鍒嗙被鏇存柊', 'erp:product-category:update', 3, 3, 2571, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 09:21:04', '', '2024-02-04 09:21:04', b'0');
+INSERT INTO `system_menu` VALUES (2575, '鍒嗙被鍒犻櫎', 'erp:product-category:delete', 3, 4, 2571, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 09:21:04', '', '2024-02-04 09:21:04', b'0');
+INSERT INTO `system_menu` VALUES (2576, '鍒嗙被瀵煎嚭', 'erp:product-category:export', 3, 5, 2571, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 09:21:04', '', '2024-02-04 09:21:04', b'0');
+INSERT INTO `system_menu` VALUES (2577, '浜у搧鍗曚綅', '', 2, 2, 2564, 'unit', 'ep:opportunity', 'erp/product/unit/index', 'ErpProductUnit', 0, b'1', b'1', b'1', '', '2024-02-04 11:54:08', '1', '2024-02-04 19:54:37', b'0');
+INSERT INTO `system_menu` VALUES (2578, '鍗曚綅鏌ヨ', 'erp:product-unit:query', 3, 1, 2577, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 11:54:08', '', '2024-02-04 11:54:08', b'0');
+INSERT INTO `system_menu` VALUES (2579, '鍗曚綅鍒涘缓', 'erp:product-unit:create', 3, 2, 2577, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 11:54:08', '', '2024-02-04 11:54:08', b'0');
+INSERT INTO `system_menu` VALUES (2580, '鍗曚綅鏇存柊', 'erp:product-unit:update', 3, 3, 2577, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 11:54:08', '', '2024-02-04 11:54:08', b'0');
+INSERT INTO `system_menu` VALUES (2581, '鍗曚綅鍒犻櫎', 'erp:product-unit:delete', 3, 4, 2577, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 11:54:08', '', '2024-02-04 11:54:08', b'0');
+INSERT INTO `system_menu` VALUES (2582, '鍗曚綅瀵煎嚭', 'erp:product-unit:export', 3, 5, 2577, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 11:54:08', '', '2024-02-04 11:54:08', b'0');
+INSERT INTO `system_menu` VALUES (2583, '搴撳瓨绠$悊', '', 1, 30, 2563, 'stock', 'fa:window-restore', '', '', 0, b'1', b'1', b'1', '1', '2024-02-05 00:29:37', '1', '2024-02-05 00:29:37', b'0');
+INSERT INTO `system_menu` VALUES (2584, '浠撳簱淇℃伅', '', 2, 0, 2583, 'warehouse', 'ep:house', 'erp/stock/warehouse/index', 'ErpWarehouse', 0, b'1', b'1', b'1', '', '2024-02-04 17:12:09', '1', '2024-02-05 01:12:53', b'0');
+INSERT INTO `system_menu` VALUES (2585, '浠撳簱鏌ヨ', 'erp:warehouse:query', 3, 1, 2584, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 17:12:09', '', '2024-02-04 17:12:09', b'0');
+INSERT INTO `system_menu` VALUES (2586, '浠撳簱鍒涘缓', 'erp:warehouse:create', 3, 2, 2584, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 17:12:09', '', '2024-02-04 17:12:09', b'0');
+INSERT INTO `system_menu` VALUES (2587, '浠撳簱鏇存柊', 'erp:warehouse:update', 3, 3, 2584, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 17:12:09', '', '2024-02-04 17:12:09', b'0');
+INSERT INTO `system_menu` VALUES (2588, '浠撳簱鍒犻櫎', 'erp:warehouse:delete', 3, 4, 2584, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 17:12:09', '', '2024-02-04 17:12:09', b'0');
+INSERT INTO `system_menu` VALUES (2589, '浠撳簱瀵煎嚭', 'erp:warehouse:export', 3, 5, 2584, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-04 17:12:09', '', '2024-02-04 17:12:09', b'0');
+INSERT INTO `system_menu` VALUES (2590, '浜у搧搴撳瓨', '', 2, 1, 2583, 'stock', 'ep:coffee', 'erp/stock/stock/index', 'ErpStock', 0, b'1', b'1', b'1', '', '2024-02-05 06:40:50', '1', '2024-02-05 14:42:44', b'0');
+INSERT INTO `system_menu` VALUES (2591, '搴撳瓨鏌ヨ', 'erp:stock:query', 3, 1, 2590, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 06:40:50', '', '2024-02-05 06:40:50', b'0');
+INSERT INTO `system_menu` VALUES (2592, '搴撳瓨瀵煎嚭', 'erp:stock:export', 3, 5, 2590, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 06:40:50', '', '2024-02-05 06:40:50', b'0');
+INSERT INTO `system_menu` VALUES (2593, '鍑哄叆搴撴槑缁�', '', 2, 2, 2583, 'record', 'fa-solid:blog', 'erp/stock/record/index', 'ErpStockRecord', 0, b'1', b'1', b'1', '', '2024-02-05 10:27:21', '1', '2024-02-06 17:26:11', b'0');
+INSERT INTO `system_menu` VALUES (2594, '搴撳瓨鏄庣粏鏌ヨ', 'erp:stock-record:query', 3, 1, 2593, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 10:27:21', '', '2024-02-05 10:27:21', b'0');
+INSERT INTO `system_menu` VALUES (2595, '搴撳瓨鏄庣粏瀵煎嚭', 'erp:stock-record:export', 3, 5, 2593, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 10:27:21', '', '2024-02-05 10:27:21', b'0');
+INSERT INTO `system_menu` VALUES (2596, '鍏跺畠鍏ュ簱', '', 2, 3, 2583, 'in', 'ep:zoom-in', 'erp/stock/in/index', 'ErpStockIn', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2024-02-07 19:06:51', b'0');
+INSERT INTO `system_menu` VALUES (2597, '鍏跺畠鍏ュ簱鍗曟煡璇�', 'erp:stock-in:query', 3, 1, 2596, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-05 16:08:56', b'0');
+INSERT INTO `system_menu` VALUES (2598, '鍏跺畠鍏ュ簱鍗曞垱寤�', 'erp:stock-in:create', 3, 2, 2596, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-05 16:08:56', b'0');
+INSERT INTO `system_menu` VALUES (2599, '鍏跺畠鍏ュ簱鍗曟洿鏂�', 'erp:stock-in:update', 3, 3, 2596, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-05 16:08:56', b'0');
+INSERT INTO `system_menu` VALUES (2600, '鍏跺畠鍏ュ簱鍗曞垹闄�', 'erp:stock-in:delete', 3, 4, 2596, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-05 16:08:56', b'0');
+INSERT INTO `system_menu` VALUES (2601, '鍏跺畠鍏ュ簱鍗曞鍑�', 'erp:stock-in:export', 3, 5, 2596, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-05 16:08:56', b'0');
+INSERT INTO `system_menu` VALUES (2602, '閲囪喘绠$悊', '', 1, 2, 0, '/purchase', 'fa:buysellads', '', '', 0, b'1', b'1', b'1', '1', '2024-02-06 16:01:01', '1', '2026-07-01 14:43:41', b'1');
+INSERT INTO `system_menu` VALUES (2603, '渚涘簲鍟嗕俊鎭�', '', 2, 4, 2602, 'supplier', 'fa:superpowers', 'erp/purchase/supplier/index', 'ErpSupplier', 0, b'1', b'1', b'1', '', '2024-02-06 08:21:55', '1', '2026-07-01 14:42:38', b'1');
+INSERT INTO `system_menu` VALUES (2604, '渚涘簲鍟嗘煡璇�', 'erp:supplier:query', 3, 1, 2603, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-06 08:21:55', '1', '2026-07-01 14:42:26', b'1');
+INSERT INTO `system_menu` VALUES (2605, '渚涘簲鍟嗗垱寤�', 'erp:supplier:create', 3, 2, 2603, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-06 08:21:55', '1', '2026-07-01 14:42:28', b'1');
+INSERT INTO `system_menu` VALUES (2606, '渚涘簲鍟嗘洿鏂�', 'erp:supplier:update', 3, 3, 2603, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-06 08:21:55', '1', '2026-07-01 14:42:32', b'1');
+INSERT INTO `system_menu` VALUES (2607, '渚涘簲鍟嗗垹闄�', 'erp:supplier:delete', 3, 4, 2603, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-06 08:21:55', '1', '2026-07-01 14:42:34', b'1');
+INSERT INTO `system_menu` VALUES (2608, '渚涘簲鍟嗗鍑�', 'erp:supplier:export', 3, 5, 2603, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-06 08:21:55', '1', '2026-07-01 14:42:36', b'1');
+INSERT INTO `system_menu` VALUES (2609, '鍏跺畠鍏ュ簱鍗曞鎵�', 'erp:stock-in:update-status', 3, 6, 2596, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-05 16:08:56', b'0');
+INSERT INTO `system_menu` VALUES (2610, '鍏跺畠鍑哄簱', '', 2, 4, 2583, 'out', 'ep:zoom-out', 'erp/stock/out/index', 'ErpStockOut', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2024-02-07 19:06:55', b'0');
+INSERT INTO `system_menu` VALUES (2611, '鍏跺畠鍑哄簱鍗曟煡璇�', 'erp:stock-out:query', 3, 1, 2610, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 06:43:39', b'0');
+INSERT INTO `system_menu` VALUES (2612, '鍏跺畠鍑哄簱鍗曞垱寤�', 'erp:stock-out:create', 3, 2, 2610, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 06:43:42', b'0');
+INSERT INTO `system_menu` VALUES (2613, '鍏跺畠鍑哄簱鍗曟洿鏂�', 'erp:stock-out:update', 3, 3, 2610, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 06:43:44', b'0');
+INSERT INTO `system_menu` VALUES (2614, '鍏跺畠鍑哄簱鍗曞垹闄�', 'erp:stock-out:delete', 3, 4, 2610, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 06:43:56', b'0');
+INSERT INTO `system_menu` VALUES (2615, '鍏跺畠鍑哄簱鍗曞鍑�', 'erp:stock-out:export', 3, 5, 2610, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 06:43:57', b'0');
+INSERT INTO `system_menu` VALUES (2616, '鍏跺畠鍑哄簱鍗曞鎵�', 'erp:stock-out:update-status', 3, 6, 2610, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 06:43:58', b'0');
+INSERT INTO `system_menu` VALUES (2617, '钀ラ攢绠$悊', '', 1, 3, 0, '/sale', 'ep:data-analysis', '', '', 0, b'1', b'1', b'1', '1', '2024-02-07 15:12:32', '1', '2026-07-01 14:58:24', b'0');
+INSERT INTO `system_menu` VALUES (2618, '瀹㈡埛淇℃伅', '', 2, 1000, 2617, 'customer', 'ep:avatar', 'erp/sale/customer/index', 'ErpCustomer', 1, b'0', b'1', b'1', '', '2024-02-07 07:21:45', '1', '2026-07-01 17:07:48', b'0');
+INSERT INTO `system_menu` VALUES (2619, '瀹㈡埛鏌ヨ', 'erp:customer:query', 3, 1, 2618, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-07 07:21:45', '', '2024-02-07 07:21:45', b'0');
+INSERT INTO `system_menu` VALUES (2620, '瀹㈡埛鍒涘缓', 'erp:customer:create', 3, 2, 2618, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-07 07:21:45', '', '2024-02-07 07:21:45', b'0');
+INSERT INTO `system_menu` VALUES (2621, '瀹㈡埛鏇存柊', 'erp:customer:update', 3, 3, 2618, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-07 07:21:45', '', '2024-02-07 07:21:45', b'0');
+INSERT INTO `system_menu` VALUES (2622, '瀹㈡埛鍒犻櫎', 'erp:customer:delete', 3, 4, 2618, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-07 07:21:45', '', '2024-02-07 07:21:45', b'0');
+INSERT INTO `system_menu` VALUES (2623, '瀹㈡埛瀵煎嚭', 'erp:customer:export', 3, 5, 2618, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-07 07:21:45', '', '2024-02-07 07:21:45', b'0');
+INSERT INTO `system_menu` VALUES (2624, '搴撳瓨璋冩嫧', '', 2, 5, 2583, 'move', 'ep:folder-remove', 'erp/stock/move/index', 'ErpStockMove', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2024-02-16 18:53:55', b'0');
+INSERT INTO `system_menu` VALUES (2625, '搴撳瓨璋冨害鍗曟煡璇�', 'erp:stock-move:query', 3, 1, 2624, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:49', b'0');
+INSERT INTO `system_menu` VALUES (2626, '搴撳瓨璋冨害鍗曞垱寤�', 'erp:stock-move:create', 3, 2, 2624, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:52', b'0');
+INSERT INTO `system_menu` VALUES (2627, '搴撳瓨璋冨害鍗曟洿鏂�', 'erp:stock-move:update', 3, 3, 2624, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:55', b'0');
+INSERT INTO `system_menu` VALUES (2628, '搴撳瓨璋冨害鍗曞垹闄�', 'erp:stock-move:delete', 3, 4, 2624, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:57', b'0');
+INSERT INTO `system_menu` VALUES (2629, '搴撳瓨璋冨害鍗曞鍑�', 'erp:stock-move:export', 3, 5, 2624, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:59', b'0');
+INSERT INTO `system_menu` VALUES (2630, '搴撳瓨璋冨害鍗曞鎵�', 'erp:stock-move:update-status', 3, 6, 2624, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:13:03', b'0');
+INSERT INTO `system_menu` VALUES (2631, '搴撳瓨鐩樼偣', '', 2, 6, 2583, 'check', 'ep:circle-check-filled', 'erp/stock/check/index', 'ErpStockCheck', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2024-02-08 08:31:09', b'0');
+INSERT INTO `system_menu` VALUES (2632, '搴撳瓨鐩樼偣鍗曟煡璇�', 'erp:stock-check:query', 3, 1, 2631, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:49', b'0');
+INSERT INTO `system_menu` VALUES (2633, '搴撳瓨鐩樼偣鍗曞垱寤�', 'erp:stock-check:create', 3, 2, 2631, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:52', b'0');
+INSERT INTO `system_menu` VALUES (2634, '搴撳瓨鐩樼偣鍗曟洿鏂�', 'erp:stock-check:update', 3, 3, 2631, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:55', b'0');
+INSERT INTO `system_menu` VALUES (2635, '搴撳瓨鐩樼偣鍗曞垹闄�', 'erp:stock-check:delete', 3, 4, 2631, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:57', b'0');
+INSERT INTO `system_menu` VALUES (2636, '搴撳瓨鐩樼偣鍗曞鍑�', 'erp:stock-check:export', 3, 5, 2631, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:59', b'0');
+INSERT INTO `system_menu` VALUES (2637, '搴撳瓨鐩樼偣鍗曞鎵�', 'erp:stock-check:update-status', 3, 6, 2631, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:13:03', b'0');
+INSERT INTO `system_menu` VALUES (2638, '閿�鍞鍗�', '', 2, 5, 2617, 'order', 'fa:first-order', 'erp/sale/order/index', 'ErpSaleOrder', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-02 16:28:30', b'0');
+INSERT INTO `system_menu` VALUES (2639, '閿�鍞鍗曟煡璇�', 'erp:sale-order:query', 3, 1, 2638, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:49', b'0');
+INSERT INTO `system_menu` VALUES (2640, '閿�鍞鍗曞垱寤�', 'erp:sale-order:create', 3, 2, 2638, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:52', b'0');
+INSERT INTO `system_menu` VALUES (2641, '閿�鍞鍗曟洿鏂�', 'erp:sale-order:update', 3, 3, 2638, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:55', b'0');
+INSERT INTO `system_menu` VALUES (2642, '閿�鍞鍗曞垹闄�', 'erp:sale-order:delete', 3, 4, 2638, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:57', b'0');
+INSERT INTO `system_menu` VALUES (2643, '閿�鍞鍗曞鍑�', 'erp:sale-order:export', 3, 5, 2638, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:59', b'0');
+INSERT INTO `system_menu` VALUES (2644, '閿�鍞鍗曞鎵�', 'erp:sale-order:update-status', 3, 6, 2638, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:13:03', b'0');
+INSERT INTO `system_menu` VALUES (2645, '璐㈠姟绠$悊', '', 1, 50, 2563, 'finance', 'ep:money', '', '', 0, b'1', b'1', b'1', '1', '2024-02-10 08:05:58', '1', '2024-02-10 08:06:07', b'0');
+INSERT INTO `system_menu` VALUES (2646, '缁撶畻璐︽埛', '', 2, 10, 2645, 'account', 'fa:universal-access', 'erp/finance/account/index', 'ErpAccount', 0, b'1', b'1', b'1', '', '2024-02-10 00:15:07', '1', '2024-02-14 08:24:31', b'0');
+INSERT INTO `system_menu` VALUES (2647, '缁撶畻璐︽埛鏌ヨ', 'erp:account:query', 3, 1, 2646, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-10 00:15:07', '', '2024-02-10 00:15:07', b'0');
+INSERT INTO `system_menu` VALUES (2648, '缁撶畻璐︽埛鍒涘缓', 'erp:account:create', 3, 2, 2646, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-10 00:15:07', '', '2024-02-10 00:15:07', b'0');
+INSERT INTO `system_menu` VALUES (2649, '缁撶畻璐︽埛鏇存柊', 'erp:account:update', 3, 3, 2646, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-10 00:15:07', '', '2024-02-10 00:15:07', b'0');
+INSERT INTO `system_menu` VALUES (2650, '缁撶畻璐︽埛鍒犻櫎', 'erp:account:delete', 3, 4, 2646, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-10 00:15:07', '', '2024-02-10 00:15:07', b'0');
+INSERT INTO `system_menu` VALUES (2651, '缁撶畻璐︽埛瀵煎嚭', 'erp:account:export', 3, 5, 2646, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-10 00:15:07', '', '2024-02-10 00:15:07', b'0');
+INSERT INTO `system_menu` VALUES (2652, '閿�鍞嚭搴�', '', 2, 6, 2617, 'out', 'ep:sold-out', 'erp/sale/out/index', 'ErpSaleOut', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-02 16:28:41', b'0');
+INSERT INTO `system_menu` VALUES (2653, '閿�鍞嚭搴撴煡璇�', 'erp:sale-out:query', 3, 1, 2652, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:49', b'0');
+INSERT INTO `system_menu` VALUES (2654, '閿�鍞嚭搴撳垱寤�', 'erp:sale-out:create', 3, 2, 2652, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:52', b'0');
+INSERT INTO `system_menu` VALUES (2655, '閿�鍞嚭搴撴洿鏂�', 'erp:sale-out:update', 3, 3, 2652, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:55', b'0');
+INSERT INTO `system_menu` VALUES (2656, '閿�鍞嚭搴撳垹闄�', 'erp:sale-out:delete', 3, 4, 2652, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:57', b'0');
+INSERT INTO `system_menu` VALUES (2657, '閿�鍞嚭搴撳鍑�', 'erp:sale-out:export', 3, 5, 2652, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:59', b'0');
+INSERT INTO `system_menu` VALUES (2658, '閿�鍞嚭搴撳鎵�', 'erp:sale-out:update-status', 3, 6, 2652, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:13:03', b'0');
+INSERT INTO `system_menu` VALUES (2659, '閿�鍞��璐�', '', 2, 7, 2617, 'return', 'fa-solid:bone', 'erp/sale/return/index', 'ErpSaleReturn', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-02 16:28:49', b'0');
+INSERT INTO `system_menu` VALUES (2660, '閿�鍞��璐ф煡璇�', 'erp:sale-return:query', 3, 1, 2659, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:49', b'0');
+INSERT INTO `system_menu` VALUES (2661, '閿�鍞��璐у垱寤�', 'erp:sale-return:create', 3, 2, 2659, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:52', b'0');
+INSERT INTO `system_menu` VALUES (2662, '閿�鍞��璐ф洿鏂�', 'erp:sale-return:update', 3, 3, 2659, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:55', b'0');
+INSERT INTO `system_menu` VALUES (2663, '閿�鍞��璐у垹闄�', 'erp:sale-return:delete', 3, 4, 2659, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:57', b'0');
+INSERT INTO `system_menu` VALUES (2664, '閿�鍞��璐у鍑�', 'erp:sale-return:export', 3, 5, 2659, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:12:59', b'0');
+INSERT INTO `system_menu` VALUES (2665, '閿�鍞��璐у鎵�', 'erp:sale-return:update-status', 3, 6, 2659, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-07 11:13:03', b'0');
+INSERT INTO `system_menu` VALUES (2666, '閲囪喘璁㈠崟', '', 2, 1, 2602, 'order', 'fa-solid:border-all', 'erp/purchase/order/index', 'ErpPurchaseOrder', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:28', b'1');
+INSERT INTO `system_menu` VALUES (2667, '閲囪喘璁㈠崟鏌ヨ', 'erp:purchase-order:query', 3, 1, 2666, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:12', b'1');
+INSERT INTO `system_menu` VALUES (2668, '閲囪喘璁㈠崟鍒涘缓', 'erp:purchase-order:create', 3, 2, 2666, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:14', b'1');
+INSERT INTO `system_menu` VALUES (2669, '閲囪喘璁㈠崟鏇存柊', 'erp:purchase-order:update', 3, 3, 2666, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:16', b'1');
+INSERT INTO `system_menu` VALUES (2670, '閲囪喘璁㈠崟鍒犻櫎', 'erp:purchase-order:delete', 3, 4, 2666, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:19', b'1');
+INSERT INTO `system_menu` VALUES (2671, '閲囪喘璁㈠崟瀵煎嚭', 'erp:purchase-order:export', 3, 5, 2666, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:22', b'1');
+INSERT INTO `system_menu` VALUES (2672, '閲囪喘璁㈠崟瀹℃壒', 'erp:purchase-order:update-status', 3, 6, 2666, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:25', b'1');
+INSERT INTO `system_menu` VALUES (2673, '閲囪喘鍏ュ簱', '', 2, 2, 2602, 'in', 'fa-solid:gopuram', 'erp/purchase/in/index', 'ErpPurchaseIn', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:09', b'1');
+INSERT INTO `system_menu` VALUES (2674, '閲囪喘鍏ュ簱鏌ヨ', 'erp:purchase-in:query', 3, 1, 2673, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:56', b'1');
+INSERT INTO `system_menu` VALUES (2675, '閲囪喘鍏ュ簱鍒涘缓', 'erp:purchase-in:create', 3, 2, 2673, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:58', b'1');
+INSERT INTO `system_menu` VALUES (2676, '閲囪喘鍏ュ簱鏇存柊', 'erp:purchase-in:update', 3, 3, 2673, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:00', b'1');
+INSERT INTO `system_menu` VALUES (2677, '閲囪喘鍏ュ簱鍒犻櫎', 'erp:purchase-in:delete', 3, 4, 2673, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:02', b'1');
+INSERT INTO `system_menu` VALUES (2678, '閲囪喘鍏ュ簱瀵煎嚭', 'erp:purchase-in:export', 3, 5, 2673, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:04', b'1');
+INSERT INTO `system_menu` VALUES (2679, '閲囪喘鍏ュ簱瀹℃壒', 'erp:purchase-in:update-status', 3, 6, 2673, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:43:06', b'1');
+INSERT INTO `system_menu` VALUES (2680, '閲囪喘閫�璐�', '', 2, 3, 2602, 'return', 'ep:minus', 'erp/purchase/return/index', 'ErpPurchaseReturn', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:52', b'1');
+INSERT INTO `system_menu` VALUES (2681, '閲囪喘閫�璐ф煡璇�', 'erp:purchase-return:query', 3, 1, 2680, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:43', b'1');
+INSERT INTO `system_menu` VALUES (2682, '閲囪喘閫�璐у垱寤�', 'erp:purchase-return:create', 3, 2, 2680, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:45', b'1');
+INSERT INTO `system_menu` VALUES (2683, '閲囪喘閫�璐ф洿鏂�', 'erp:purchase-return:update', 3, 3, 2680, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:46', b'1');
+INSERT INTO `system_menu` VALUES (2684, '閲囪喘閫�璐у垹闄�', 'erp:purchase-return:delete', 3, 4, 2680, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:48', b'1');
+INSERT INTO `system_menu` VALUES (2685, '閲囪喘閫�璐у鍑�', 'erp:purchase-return:export', 3, 5, 2680, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:50', b'1');
+INSERT INTO `system_menu` VALUES (2686, '閲囪喘閫�璐у鎵�', 'erp:purchase-return:update-status', 3, 6, 2680, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2026-07-01 14:42:40', b'1');
+INSERT INTO `system_menu` VALUES (2687, '浠樻鍗�', '', 2, 1, 2645, 'payment', 'ep:caret-right', 'erp/finance/payment/index', 'ErpFinancePayment', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2024-02-14 08:24:23', b'0');
+INSERT INTO `system_menu` VALUES (2688, '浠樻鍗曟煡璇�', 'erp:finance-payment:query', 3, 1, 2687, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:17', b'0');
+INSERT INTO `system_menu` VALUES (2689, '浠樻鍗曞垱寤�', 'erp:finance-payment:create', 3, 2, 2687, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:44:54', b'0');
+INSERT INTO `system_menu` VALUES (2690, '浠樻鍗曟洿鏂�', 'erp:finance-payment:update', 3, 3, 2687, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:44:58', b'0');
+INSERT INTO `system_menu` VALUES (2691, '浠樻鍗曞垹闄�', 'erp:finance-payment:delete', 3, 4, 2687, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:00', b'0');
+INSERT INTO `system_menu` VALUES (2692, '浠樻鍗曞鍑�', 'erp:finance-payment:export', 3, 5, 2687, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:05', b'0');
+INSERT INTO `system_menu` VALUES (2693, '浠樻鍗曞鎵�', 'erp:finance-payment:update-status', 3, 6, 2687, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:08', b'0');
+INSERT INTO `system_menu` VALUES (2694, '鏀舵鍗�', '', 2, 2, 2645, 'receipt', 'ep:expand', 'erp/finance/receipt/index', 'ErpFinanceReceipt', 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '1', '2024-02-15 19:35:45', b'0');
+INSERT INTO `system_menu` VALUES (2695, '鏀舵鍗曟煡璇�', 'erp:finance-receipt:query', 3, 1, 2694, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:17', b'0');
+INSERT INTO `system_menu` VALUES (2696, '鏀舵鍗曞垱寤�', 'erp:finance-receipt:create', 3, 2, 2694, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:44:54', b'0');
+INSERT INTO `system_menu` VALUES (2697, '鏀舵鍗曟洿鏂�', 'erp:finance-receipt:update', 3, 3, 2694, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:44:58', b'0');
+INSERT INTO `system_menu` VALUES (2698, '鏀舵鍗曞垹闄�', 'erp:finance-receipt:delete', 3, 4, 2694, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:00', b'0');
+INSERT INTO `system_menu` VALUES (2699, '鏀舵鍗曞鍑�', 'erp:finance-receipt:export', 3, 5, 2694, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:05', b'0');
+INSERT INTO `system_menu` VALUES (2700, '鏀舵鍗曞鎵�', 'erp:finance-receipt:update-status', 3, 6, 2694, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-02-05 16:08:56', '', '2024-02-12 00:45:08', b'0');
+INSERT INTO `system_menu` VALUES (2701, '寰呭姙浜嬮」', '', 2, 0, 2617, 'backlog', 'fa-solid:tasks', 'crm/backlog/index', 'CrmBacklog', 0, b'1', b'1', b'1', '1', '2024-02-17 17:17:11', '1', '2026-07-01 17:13:30', b'0');
+INSERT INTO `system_menu` VALUES (2702, 'ERP 棣栭〉', 'erp:statistics:query', 2, 0, 2563, 'home', 'ep:home-filled', 'erp/home/index.vue', 'ErpHome', 0, b'1', b'1', b'1', '1', '2024-02-18 16:49:40', '1', '2024-02-26 21:12:18', b'0');
+INSERT INTO `system_menu` VALUES (2703, '鍟嗘満鐘舵�侀厤缃�', '', 2, 4, 2524, 'business-status', 'fa-solid:charging-station', 'crm/business/status/index', 'CrmBusinessStatus', 0, b'1', b'1', b'1', '1', '2024-02-21 20:15:17', '1', '2024-02-21 20:15:17', b'0');
+INSERT INTO `system_menu` VALUES (2704, '鍟嗘満鐘舵�佹煡璇�', 'crm:business-status:query', 3, 1, 2703, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-21 20:35:36', '1', '2024-02-21 20:36:06', b'0');
+INSERT INTO `system_menu` VALUES (2705, '鍟嗘満鐘舵�佸垱寤�', 'crm:business-status:create', 3, 2, 2703, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-21 20:35:57', '1', '2024-02-21 20:35:57', b'0');
+INSERT INTO `system_menu` VALUES (2706, '鍟嗘満鐘舵�佹洿鏂�', 'crm:business-status:update', 3, 3, 2703, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-21 20:36:21', '1', '2024-02-21 20:36:21', b'0');
+INSERT INTO `system_menu` VALUES (2707, '鍟嗘満鐘舵�佸垹闄�', 'crm:business-status:delete', 3, 4, 2703, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-21 20:36:36', '1', '2024-02-21 20:36:36', b'0');
+INSERT INTO `system_menu` VALUES (2708, '鍚堝悓閰嶇疆', '', 2, 5, 2524, 'contract-config', 'ep:connection', 'crm/contract/config/index', 'CrmContractConfig', 0, b'1', b'1', b'1', '1', '2024-02-24 16:44:40', '1', '2024-02-24 16:44:48', b'0');
+INSERT INTO `system_menu` VALUES (2709, '瀹㈡埛鍏捣閰嶇疆鏌ヨ', 'crm:customer-pool-config:query', 3, 2, 2516, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:45:19', '1', '2024-02-24 16:45:28', b'0');
+INSERT INTO `system_menu` VALUES (2710, '鍚堝悓閰嶇疆鏇存柊', 'crm:contract-config:update', 3, 1, 2708, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:45:56', '1', '2024-02-24 16:45:56', b'0');
+INSERT INTO `system_menu` VALUES (2711, '鍚堝悓閰嶇疆鏌ヨ', 'crm:contract-config:query', 3, 2, 2708, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-02-24 16:46:16', '1', '2024-02-24 16:46:16', b'0');
+INSERT INTO `system_menu` VALUES (2712, '瀹㈡埛鍒嗘瀽', 'crm:statistics-customer:query', 2, 0, 2560, 'customer', 'ep:avatar', 'crm/statistics/customer/index.vue', 'CrmStatisticsCustomer', 0, b'1', b'1', b'1', '1', '2024-03-09 16:43:56', '1', '2024-05-04 20:38:50', b'0');
+INSERT INTO `system_menu` VALUES (2713, '鎶勯�佹垜鐨�', 'bpm:process-instance-cc:query', 2, 30, 1200, 'copy', 'ep:copy-document', 'bpm/task/copy/index', 'BpmProcessInstanceCopy', 0, b'1', b'1', b'1', '1', '2024-03-17 21:50:23', '1', '2024-04-24 19:55:12', b'0');
+INSERT INTO `system_menu` VALUES (2714, '娴佺▼鍒嗙被', '', 2, 3, 1186, 'category', 'fa:object-ungroup', 'bpm/category/index', 'BpmCategory', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-21 23:51:18', b'0');
+INSERT INTO `system_menu` VALUES (2715, '鍒嗙被鏌ヨ', 'bpm:category:query', 3, 1, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:25', b'0');
+INSERT INTO `system_menu` VALUES (2716, '鍒嗙被鍒涘缓', 'bpm:category:create', 3, 2, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:31', b'0');
+INSERT INTO `system_menu` VALUES (2717, '鍒嗙被鏇存柊', 'bpm:category:update', 3, 3, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:35', b'0');
+INSERT INTO `system_menu` VALUES (2718, '鍒嗙被鍒犻櫎', 'bpm:category:delete', 3, 4, 2714, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-03-08 02:00:51', '1', '2024-03-19 14:36:41', b'0');
+INSERT INTO `system_menu` VALUES (2720, '鍙戣捣娴佺▼', '', 2, 0, 1200, 'create', 'fa-solid:grin-stars', 'bpm/processInstance/create/index', 'BpmProcessInstanceCreate', 0, b'1', b'0', b'1', '1', '2024-03-19 19:46:05', '1', '2024-03-23 19:03:42', b'0');
+INSERT INTO `system_menu` VALUES (2721, '娴佺▼瀹炰緥', '', 2, 10, 1186, 'process-instance/manager', 'fa:square', 'bpm/processInstance/manager/index', 'BpmProcessInstanceManager', 0, b'1', b'1', b'1', '1', '2024-03-21 23:57:30', '1', '2024-03-21 23:57:30', b'0');
+INSERT INTO `system_menu` VALUES (2722, '娴佺▼瀹炰緥鐨勬煡璇紙绠$悊鍛橈級', 'bpm:process-instance:manager-query', 3, 1, 2721, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-03-22 08:18:27', '1', '2024-03-22 08:19:05', b'0');
+INSERT INTO `system_menu` VALUES (2723, '娴佺▼瀹炰緥鐨勫彇娑堬紙绠$悊鍛橈級', 'bpm:process-instance:cancel-by-admin', 3, 2, 2721, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-03-22 08:19:25', '1', '2024-03-22 08:19:25', b'0');
+INSERT INTO `system_menu` VALUES (2724, '娴佺▼浠诲姟', '', 2, 11, 1186, 'process-tasnk', 'ep:collection-tag', 'bpm/task/manager/index', 'BpmManagerTask', 0, b'1', b'1', b'1', '1', '2024-03-22 08:43:22', '1', '2024-03-22 08:43:27', b'0');
+INSERT INTO `system_menu` VALUES (2725, '娴佺▼浠诲姟鐨勬煡璇紙绠$悊鍛橈級', 'bpm:task:manager-query', 3, 1, 2724, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-03-22 08:43:49', '1', '2025-12-23 23:04:44', b'0');
+INSERT INTO `system_menu` VALUES (2726, '娴佺▼鐩戝惉鍣�', '', 2, 5, 1186, 'process-listener', 'fa:assistive-listening-systems', 'bpm/processListener/index', 'BpmProcessListener', 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '1', '2024-03-23 13:13:38', b'0');
+INSERT INTO `system_menu` VALUES (2727, '娴佺▼鐩戝惉鍣ㄦ煡璇�', 'bpm:process-listener:query', 3, 1, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
+INSERT INTO `system_menu` VALUES (2728, '娴佺▼鐩戝惉鍣ㄥ垱寤�', 'bpm:process-listener:create', 3, 2, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
+INSERT INTO `system_menu` VALUES (2729, '娴佺▼鐩戝惉鍣ㄦ洿鏂�', 'bpm:process-listener:update', 3, 3, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
+INSERT INTO `system_menu` VALUES (2730, '娴佺▼鐩戝惉鍣ㄥ垹闄�', 'bpm:process-listener:delete', 3, 4, 2726, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 16:05:34', '', '2024-03-09 16:05:34', b'0');
+INSERT INTO `system_menu` VALUES (2731, '娴佺▼琛ㄨ揪寮�', '', 2, 6, 1186, 'process-expression', 'fa:wpexplorer', 'bpm/processExpression/index', 'BpmProcessExpression', 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '1', '2024-03-23 19:43:05', b'0');
+INSERT INTO `system_menu` VALUES (2732, '娴佺▼琛ㄨ揪寮忔煡璇�', 'bpm:process-expression:query', 3, 1, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
+INSERT INTO `system_menu` VALUES (2733, '娴佺▼琛ㄨ揪寮忓垱寤�', 'bpm:process-expression:create', 3, 2, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
+INSERT INTO `system_menu` VALUES (2734, '娴佺▼琛ㄨ揪寮忔洿鏂�', 'bpm:process-expression:update', 3, 3, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
+INSERT INTO `system_menu` VALUES (2735, '娴佺▼琛ㄨ揪寮忓垹闄�', 'bpm:process-expression:delete', 3, 4, 2731, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-03-09 22:35:08', '', '2024-03-09 22:35:08', b'0');
+INSERT INTO `system_menu` VALUES (2736, '鍛樺伐涓氱哗', 'crm:statistics-performance:query', 2, 3, 2560, 'performance', 'ep:dish-dot', 'crm/statistics/performance/index', 'CrmStatisticsPerformance', 0, b'1', b'1', b'1', '1', '2024-04-05 13:49:20', '1', '2024-04-24 19:42:43', b'0');
+INSERT INTO `system_menu` VALUES (2737, '瀹㈡埛鐢诲儚', 'crm:statistics-portrait:query', 2, 4, 2560, 'portrait', 'ep:picture', 'crm/statistics/portrait/index', 'CrmStatisticsPortrait', 0, b'1', b'1', b'1', '1', '2024-04-05 13:57:40', '1', '2024-04-24 19:42:24', b'0');
+INSERT INTO `system_menu` VALUES (2738, '閿�鍞紡鏂�', 'crm:statistics-funnel:query', 2, 5, 2560, 'funnel', 'ep:grape', 'crm/statistics/funnel/index', 'CrmStatisticsFunnel', 0, b'1', b'1', b'1', '1', '2024-04-13 10:53:26', '1', '2024-04-24 19:39:33', b'0');
+INSERT INTO `system_menu` VALUES (2739, '娑堟伅涓績', '', 1, 7, 1, 'messages', 'ep:chat-dot-round', '', '', 0, b'1', b'1', b'1', '1', '2024-04-22 23:54:30', '1', '2026-06-26 10:47:05', b'0');
+INSERT INTO `system_menu` VALUES (2740, '鐩戞帶涓績', '', 1, 10, 2, 'monitors', 'ep:monitor', '', '', 0, b'1', b'1', b'1', '1', '2024-04-23 00:04:44', '1', '2024-04-23 00:04:44', b'0');
+INSERT INTO `system_menu` VALUES (2741, '棰嗗彇鍏捣瀹㈡埛', 'crm:customer:receive', 3, 1, 2546, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:47:45', '1', '2024-04-24 19:47:45', b'0');
+INSERT INTO `system_menu` VALUES (2742, '鍒嗛厤鍏捣瀹㈡埛', 'crm:customer:distribute', 3, 2, 2546, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:48:05', '1', '2024-04-24 19:48:05', b'0');
+INSERT INTO `system_menu` VALUES (2743, '鍟嗗搧缁熻鏌ヨ', 'statistics:product:query', 3, 1, 2545, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:50:05', '1', '2026-07-01 11:04:44', b'1');
+INSERT INTO `system_menu` VALUES (2744, '鍟嗗搧缁熻瀵煎嚭', 'statistics:product:export', 3, 2, 2545, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:50:26', '1', '2026-07-01 11:04:42', b'1');
+INSERT INTO `system_menu` VALUES (2745, '鏀粯娓犻亾鏌ヨ', 'pay:channel:query', 3, 10, 1126, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:53:01', '1', '2026-07-01 13:34:06', b'1');
+INSERT INTO `system_menu` VALUES (2746, '鏀粯娓犻亾鍒涘缓', 'pay:channel:create', 3, 11, 1126, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:53:18', '1', '2026-07-01 13:34:04', b'1');
+INSERT INTO `system_menu` VALUES (2747, '鏀粯娓犻亾鏇存柊', 'pay:channel:update', 3, 12, 1126, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:53:32', '1', '2026-07-01 13:33:54', b'1');
+INSERT INTO `system_menu` VALUES (2748, '鏀粯娓犻亾鍒犻櫎', 'pay:channel:delete', 3, 13, 1126, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:54:34', '1', '2026-07-01 13:33:50', b'1');
+INSERT INTO `system_menu` VALUES (2749, '鍟嗗搧鏀惰棌鏌ヨ', 'product:favorite:query', 3, 10, 2014, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:55:47', '1', '2026-06-30 10:05:59', b'1');
+INSERT INTO `system_menu` VALUES (2750, '鍟嗗搧娴忚鏌ヨ', 'product:browse-history:query', 3, 20, 2014, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:57:43', '1', '2026-06-30 10:06:01', b'1');
+INSERT INTO `system_menu` VALUES (2751, '鍞悗鍚屾剰', 'trade:after-sale:agree', 3, 2, 2073, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:58:40', '1', '2026-07-01 11:12:51', b'1');
+INSERT INTO `system_menu` VALUES (2752, '鍞悗涓嶅悓鎰�', 'trade:after-sale:disagree', 3, 3, 2073, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 19:59:03', '1', '2026-07-01 11:12:53', b'1');
+INSERT INTO `system_menu` VALUES (2753, '鍞悗纭閫�璐�', 'trade:after-sale:receive', 3, 4, 2073, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 20:00:07', '1', '2026-07-01 11:12:55', b'1');
+INSERT INTO `system_menu` VALUES (2754, '鍞悗纭閫�娆�', 'trade:after-sale:refund', 3, 5, 2073, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 20:00:24', '1', '2026-07-01 11:12:56', b'1');
+INSERT INTO `system_menu` VALUES (2755, '鍒犻櫎椤圭洰', 'report:go-view-project:delete', 3, 2, 2153, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 20:01:37', '1', '2024-04-24 20:01:37', b'0');
+INSERT INTO `system_menu` VALUES (2756, '浼氬憳绛夌骇璁板綍鏌ヨ', 'member:level-record:query', 3, 10, 2325, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 20:02:32', '1', '2026-06-30 10:05:18', b'1');
+INSERT INTO `system_menu` VALUES (2757, '浼氬憳缁忛獙璁板綍鏌ヨ', 'member:experience-record:query', 3, 11, 2325, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-04-24 20:02:51', '1', '2026-06-30 10:05:21', b'1');
+INSERT INTO `system_menu` VALUES (2758, 'AI 澶фā鍨�', '', 1, 400, 0, '/ai', 'tabler:ai', '', '', 0, b'0', b'1', b'1', '1', '2024-05-07 15:07:56', '1', '2026-06-26 10:45:48', b'0');
+INSERT INTO `system_menu` VALUES (2759, 'AI 瀵硅瘽', '', 2, 1, 2758, 'chat', 'ep:message', 'ai/chat/index/index.vue', 'AiChat', 0, b'1', b'1', b'1', '1', '2024-05-07 15:09:14', '1', '2024-07-07 17:15:36', b'0');
+INSERT INTO `system_menu` VALUES (2760, '鎺у埗鍙�', '', 1, 100, 2758, 'console', 'ep:setting', '', '', 0, b'1', b'1', b'1', '1', '2024-05-09 22:39:09', '1', '2024-05-24 23:34:21', b'0');
+INSERT INTO `system_menu` VALUES (2761, 'API 瀵嗛挜', '', 2, 0, 2760, 'api-key', 'ep:key', 'ai/model/apiKey/index.vue', 'AiApiKey', 0, b'1', b'1', b'1', '', '2024-05-09 14:52:56', '1', '2024-05-10 22:44:08', b'0');
+INSERT INTO `system_menu` VALUES (2762, 'API 瀵嗛挜鏌ヨ', 'ai:api-key:query', 3, 1, 2761, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-09 14:52:56', '1', '2024-05-13 20:36:32', b'0');
+INSERT INTO `system_menu` VALUES (2763, 'API 瀵嗛挜鍒涘缓', 'ai:api-key:create', 3, 2, 2761, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-09 14:52:56', '1', '2024-05-13 20:36:26', b'0');
+INSERT INTO `system_menu` VALUES (2764, 'API 瀵嗛挜鏇存柊', 'ai:api-key:update', 3, 3, 2761, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-09 14:52:56', '1', '2024-05-13 20:36:42', b'0');
+INSERT INTO `system_menu` VALUES (2765, 'API 瀵嗛挜鍒犻櫎', 'ai:api-key:delete', 3, 4, 2761, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-09 14:52:56', '1', '2024-05-13 20:36:48', b'0');
+INSERT INTO `system_menu` VALUES (2767, '妯″瀷閰嶇疆', '', 2, 0, 2760, 'model', 'fa-solid:abacus', 'ai/model/model/index.vue', 'AiModel', 0, b'1', b'1', b'1', '', '2024-05-10 14:42:48', '1', '2025-03-03 09:57:41', b'0');
+INSERT INTO `system_menu` VALUES (2768, '鑱婂ぉ妯″瀷鏌ヨ', 'ai:model:query', 3, 1, 2767, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-10 14:42:48', '1', '2025-03-03 09:19:46', b'0');
+INSERT INTO `system_menu` VALUES (2769, '鑱婂ぉ妯″瀷鍒涘缓', 'ai:model:create', 3, 2, 2767, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-10 14:42:48', '1', '2025-03-03 09:20:10', b'0');
+INSERT INTO `system_menu` VALUES (2770, '鑱婂ぉ妯″瀷鏇存柊', 'ai:model:update', 3, 3, 2767, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-10 14:42:48', '1', '2025-03-03 09:20:14', b'0');
+INSERT INTO `system_menu` VALUES (2771, '鑱婂ぉ妯″瀷鍒犻櫎', 'ai:model:delete', 3, 4, 2767, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-10 14:42:48', '1', '2025-03-03 09:20:27', b'0');
+INSERT INTO `system_menu` VALUES (2773, '鑱婂ぉ瑙掕壊', '', 2, 0, 2760, 'chat-role', 'fa:user-secret', 'ai/model/chatRole/index.vue', 'AiChatRole', 0, b'1', b'1', b'1', '', '2024-05-13 12:39:28', '1', '2024-05-13 20:41:45', b'0');
+INSERT INTO `system_menu` VALUES (2774, '鑱婂ぉ瑙掕壊鏌ヨ', 'ai:chat-role:query', 3, 1, 2773, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-05-13 12:39:28', '', '2024-05-13 12:39:28', b'0');
+INSERT INTO `system_menu` VALUES (2775, '鑱婂ぉ瑙掕壊鍒涘缓', 'ai:chat-role:create', 3, 2, 2773, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-05-13 12:39:28', '', '2024-05-13 12:39:28', b'0');
+INSERT INTO `system_menu` VALUES (2776, '鑱婂ぉ瑙掕壊鏇存柊', 'ai:chat-role:update', 3, 3, 2773, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-05-13 12:39:28', '', '2024-05-13 12:39:28', b'0');
+INSERT INTO `system_menu` VALUES (2777, '鑱婂ぉ瑙掕壊鍒犻櫎', 'ai:chat-role:delete', 3, 4, 2773, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-05-13 21:43:38', '1', '2024-05-13 21:43:38', b'0');
+INSERT INTO `system_menu` VALUES (2778, '鑱婂ぉ绠$悊', '', 2, 10, 2760, 'chat-conversation', 'ep:chat-square', 'ai/chat/manager/index.vue', 'AiChatManager', 0, b'1', b'1', b'1', '', '2024-05-24 15:39:18', '1', '2024-06-26 21:36:56', b'0');
+INSERT INTO `system_menu` VALUES (2779, '浼氳瘽鏌ヨ', 'ai:chat-conversation:query', 3, 1, 2778, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-24 15:39:18', '1', '2024-05-25 08:38:30', b'0');
+INSERT INTO `system_menu` VALUES (2780, '浼氳瘽鍒犻櫎', 'ai:chat-conversation:delete', 3, 2, 2778, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-05-24 15:39:18', '1', '2024-05-25 08:38:40', b'0');
+INSERT INTO `system_menu` VALUES (2781, '娑堟伅鏌ヨ', 'ai:chat-message:query', 3, 11, 2778, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-05-25 08:38:56', '1', '2024-05-25 08:38:56', b'0');
+INSERT INTO `system_menu` VALUES (2782, '娑堟伅鍒犻櫎', 'ai:chat-message:delete', 3, 12, 2778, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-05-25 08:39:10', '1', '2024-05-25 08:39:10', b'0');
+INSERT INTO `system_menu` VALUES (2783, 'AI 缁樼敾', '', 2, 2, 2758, 'image', 'ep:picture-rounded', 'ai/image/index/index.vue', 'AiImage', 0, b'1', b'1', b'1', '1', '2024-05-26 11:45:17', '1', '2024-07-07 17:18:59', b'0');
+INSERT INTO `system_menu` VALUES (2784, '缁樼敾绠$悊', '', 2, 11, 2760, 'image', 'fa:file-image-o', 'ai/image/manager/index.vue', 'AiImageManager', 0, b'1', b'1', b'1', '', '2024-06-26 13:32:31', '1', '2024-06-26 21:37:13', b'0');
+INSERT INTO `system_menu` VALUES (2785, '缁樼敾鏌ヨ', 'ai:image:query', 3, 1, 2784, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-06-26 13:32:31', '1', '2024-06-26 22:21:57', b'0');
+INSERT INTO `system_menu` VALUES (2786, '缁樼敾鍒犻櫎', 'ai:image:delete', 3, 4, 2784, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-06-26 13:32:31', '1', '2024-06-26 22:22:08', b'0');
+INSERT INTO `system_menu` VALUES (2787, '缁樺浘鏇存柊', 'ai:image:update', 3, 2, 2784, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-06-26 22:47:56', '1', '2024-08-31 09:21:35', b'0');
+INSERT INTO `system_menu` VALUES (2788, '闊充箰绠$悊', '', 2, 12, 2760, 'music', 'fa:music', 'ai/music/manager/index.vue', 'AiMusicManager', 0, b'1', b'1', b'1', '', '2024-06-27 15:03:33', '1', '2024-06-27 23:04:19', b'0');
+INSERT INTO `system_menu` VALUES (2789, '闊充箰鏌ヨ', 'ai:music:query', 3, 1, 2788, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-06-27 15:03:33', '', '2024-06-27 15:03:33', b'0');
+INSERT INTO `system_menu` VALUES (2790, '闊充箰鏇存柊', 'ai:music:update', 3, 3, 2788, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-06-27 15:03:33', '', '2024-06-27 15:03:33', b'0');
+INSERT INTO `system_menu` VALUES (2791, '闊充箰鍒犻櫎', 'ai:music:delete', 3, 4, 2788, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-06-27 15:03:33', '', '2024-06-27 15:03:33', b'0');
+INSERT INTO `system_menu` VALUES (2792, 'AI 鍐欎綔', '', 2, 3, 2758, 'write', 'fa-solid:book-reader', 'ai/write/index/index.vue', 'AiWrite', 0, b'1', b'1', b'1', '1', '2024-07-08 09:26:44', '1', '2024-07-16 13:03:06', b'0');
+INSERT INTO `system_menu` VALUES (2793, '鍐欎綔绠$悊', '', 2, 13, 2760, 'write', 'fa:bookmark-o', 'ai/write/manager/index.vue', 'AiWriteManager', 0, b'1', b'1', b'1', '', '2024-07-10 13:24:34', '1', '2024-07-10 21:31:59', b'0');
+INSERT INTO `system_menu` VALUES (2794, 'AI 鍐欎綔鏌ヨ', 'ai:write:query', 3, 1, 2793, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-07-10 13:24:34', '', '2024-07-10 13:24:34', b'0');
+INSERT INTO `system_menu` VALUES (2795, 'AI 鍐欎綔鍒犻櫎', 'ai:write:delete', 3, 4, 2793, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-07-10 13:24:34', '', '2024-07-10 13:24:34', b'0');
+INSERT INTO `system_menu` VALUES (2796, 'AI 闊充箰', '', 2, 4, 2758, 'music', 'fa:music', 'ai/music/index/index.vue', 'AiMusic', 0, b'1', b'1', b'1', '1', '2024-07-17 09:21:12', '1', '2024-07-29 21:11:52', b'0');
+INSERT INTO `system_menu` VALUES (2797, '瀹㈡湇涓績', '', 2, 100, 2362, 'kefu', 'fa-solid:user-alt', 'mall/promotion/kefu/index', 'KeFu', 0, b'1', b'1', b'1', '1', '2024-07-17 23:49:05', '1', '2026-07-01 11:04:27', b'1');
+INSERT INTO `system_menu` VALUES (2798, 'AI 鎬濈淮瀵煎浘', '', 2, 6, 2758, 'mind-map', 'fa:sitemap', 'ai/mindmap/index/index.vue', 'AiMindMap', 0, b'1', b'1', b'1', '1', '2024-07-29 21:31:59', '1', '2025-03-02 18:57:31', b'0');
+INSERT INTO `system_menu` VALUES (2799, '瀵煎浘绠$悊', '', 2, 14, 2760, 'mind-map', 'fa:map', 'ai/mindmap/manager/index', 'AiMindMapManager', 0, b'1', b'1', b'1', '', '2024-08-10 09:15:09', '1', '2024-08-10 17:24:28', b'0');
+INSERT INTO `system_menu` VALUES (2800, '鎬濈淮瀵煎浘鏌ヨ', 'ai:mind-map:query', 3, 1, 2799, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 09:15:09', '', '2024-08-10 09:15:09', b'0');
+INSERT INTO `system_menu` VALUES (2801, '鎬濈淮瀵煎浘鍒犻櫎', 'ai:mind-map:delete', 3, 4, 2799, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 09:15:09', '', '2024-08-10 09:15:09', b'0');
+INSERT INTO `system_menu` VALUES (2802, '浼氳瘽鏌ヨ', 'promotion:kefu-conversation:query', 3, 1, 2797, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-08-31 09:17:52', '1', '2026-07-01 11:04:26', b'1');
+INSERT INTO `system_menu` VALUES (2803, '浼氳瘽鏇存柊', 'promotion:kefu-conversation:update', 3, 2, 2797, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-08-31 09:18:15', '1', '2026-07-01 11:04:24', b'1');
+INSERT INTO `system_menu` VALUES (2804, '娑堟伅鏌ヨ', 'promotion:kefu-message:query', 3, 10, 2797, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-08-31 09:18:42', '1', '2026-07-01 11:04:20', b'1');
+INSERT INTO `system_menu` VALUES (2805, '浼氳瘽鍒犻櫎', 'promotion:kefu-conversation:delete', 3, 3, 2797, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-08-31 09:19:51', '1', '2026-07-01 11:04:22', b'1');
+INSERT INTO `system_menu` VALUES (2806, '娑堟伅鍙戦��', 'promotion:kefu-message:send', 3, 12, 2797, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-08-31 09:20:06', '1', '2026-07-01 11:04:12', b'1');
+INSERT INTO `system_menu` VALUES (2807, '娑堟伅鏇存柊', 'promotion:kefu-message:update', 3, 11, 2797, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-08-31 09:20:22', '1', '2026-07-01 11:04:17', b'1');
+INSERT INTO `system_menu` VALUES (2808, '绉垎鍟嗗煄', '', 2, 5, 2030, 'point-activity', 'ep:bowl', 'mall/promotion/point/activity/index', 'PointActivity', 0, b'1', b'1', b'1', '', '2024-09-21 05:36:42', '1', '2026-07-01 11:06:13', b'1');
+INSERT INTO `system_menu` VALUES (2809, '绉垎鍟嗗煄娲诲姩鏌ヨ', 'promotion:point-activity:query', 3, 1, 2808, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-21 05:36:42', '1', '2026-07-01 11:05:58', b'1');
+INSERT INTO `system_menu` VALUES (2810, '绉垎鍟嗗煄娲诲姩鍒涘缓', 'promotion:point-activity:create', 3, 2, 2808, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-21 05:36:42', '1', '2026-07-01 11:06:00', b'1');
+INSERT INTO `system_menu` VALUES (2811, '绉垎鍟嗗煄娲诲姩鏇存柊', 'promotion:point-activity:update', 3, 3, 2808, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-21 05:36:42', '1', '2026-07-01 11:06:06', b'1');
+INSERT INTO `system_menu` VALUES (2812, '绉垎鍟嗗煄娲诲姩鍒犻櫎', 'promotion:point-activity:delete', 3, 4, 2808, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-21 05:36:42', '1', '2026-07-01 11:06:02', b'1');
+INSERT INTO `system_menu` VALUES (2813, '绉垎鍟嗗煄娲诲姩瀵煎嚭', 'promotion:point-activity:export', 3, 5, 2808, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-21 05:36:42', '1', '2026-07-01 11:06:05', b'1');
+INSERT INTO `system_menu` VALUES (2912, '鍒涘缓鎺ㄥ箍鍛�', 'trade:brokerage-user:create', 3, 7, 2346, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-12-01 14:32:39', '1', '2026-07-01 11:11:33', b'1');
+INSERT INTO `system_menu` VALUES (2913, '娴佺▼娓呯悊', 'bpm:model:clean', 3, 7, 1193, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-01-17 19:32:06', '1', '2025-01-17 19:32:06', b'0');
+INSERT INTO `system_menu` VALUES (2914, '绉垎鍟嗗煄娲诲姩鍏抽棴', 'promotion:point-activity:close', 3, 6, 2808, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-01-23 20:23:34', '1', '2026-07-01 11:06:08', b'1');
+INSERT INTO `system_menu` VALUES (2915, 'AI 鐭ヨ瘑搴�', '', 2, 5, 2758, 'knowledge', 'ep:notebook', 'ai/knowledge/knowledge/index', 'AiKnowledge', 0, b'1', b'1', b'1', '', '2025-02-28 07:04:21', '1', '2025-03-02 18:58:37', b'0');
+INSERT INTO `system_menu` VALUES (2916, 'AI 鐭ヨ瘑搴撴煡璇�', 'ai:knowledge:query', 3, 1, 2915, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-02-28 07:04:21', '', '2025-02-28 07:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2917, 'AI 鐭ヨ瘑搴撳垱寤�', 'ai:knowledge:create', 3, 2, 2915, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-02-28 07:04:21', '', '2025-02-28 07:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2918, 'AI 鐭ヨ瘑搴撴洿鏂�', 'ai:knowledge:update', 3, 3, 2915, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-02-28 07:04:21', '', '2025-02-28 07:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2919, 'AI 鐭ヨ瘑搴撳垹闄�', 'ai:knowledge:delete', 3, 4, 2915, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-02-28 07:04:21', '', '2025-02-28 07:04:21', b'0');
+INSERT INTO `system_menu` VALUES (2920, '宸ュ叿绠$悊', '', 2, 0, 2760, 'tool', 'fa-solid:tools', 'ai/model/tool/index.vue', 'AiTool', 0, b'1', b'1', b'1', '', '2025-03-14 11:19:29', '1', '2025-03-14 19:20:18', b'0');
+INSERT INTO `system_menu` VALUES (2921, '宸ュ叿鏌ヨ', 'ai:tool:query', 3, 1, 2920, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-03-14 11:19:29', '', '2025-03-14 11:19:29', b'0');
+INSERT INTO `system_menu` VALUES (2922, '宸ュ叿鍒涘缓', 'ai:tool:create', 3, 2, 2920, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-03-14 11:19:29', '', '2025-03-14 11:19:29', b'0');
+INSERT INTO `system_menu` VALUES (2923, '宸ュ叿鏇存柊', 'ai:tool:update', 3, 3, 2920, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-03-14 11:19:29', '', '2025-03-14 11:19:29', b'0');
+INSERT INTO `system_menu` VALUES (2924, '宸ュ叿鍒犻櫎', 'ai:tool:delete', 3, 4, 2920, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2025-03-14 11:19:29', '', '2025-03-14 11:19:29', b'0');
+INSERT INTO `system_menu` VALUES (4000, 'IoT 鐗╄仈缃�', '', 1, 500, 0, '/iot', 'fa-solid:hdd', '', '', 0, b'0', b'1', b'1', '1', '2024-08-10 09:55:28', '1', '2026-07-01 11:04:01', b'1');
+INSERT INTO `system_menu` VALUES (4001, '璁惧鎺ュ叆', '', 1, 2, 4000, 'device', 'ep:platform', '', '', 0, b'1', b'1', b'1', '1', '2024-08-10 09:57:56', '1', '2026-07-01 11:00:19', b'1');
+INSERT INTO `system_menu` VALUES (4002, '浜у搧绠$悊', '', 2, 1, 4001, 'product', 'fa-solid:tools', 'iot/product/product/index', 'IoTProduct', 0, b'1', b'1', b'1', '', '2024-08-10 02:38:02', '1', '2026-07-01 10:46:50', b'1');
+INSERT INTO `system_menu` VALUES (4003, '浜у搧鏌ヨ', 'iot:product:query', 3, 1, 4002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 02:38:02', '1', '2026-07-01 10:46:41', b'1');
+INSERT INTO `system_menu` VALUES (4004, '浜у搧鍒涘缓', 'iot:product:create', 3, 2, 4002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 02:38:02', '1', '2026-07-01 10:46:43', b'1');
+INSERT INTO `system_menu` VALUES (4005, '浜у搧鏇存柊', 'iot:product:update', 3, 3, 4002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 02:38:02', '1', '2026-07-01 10:46:45', b'1');
+INSERT INTO `system_menu` VALUES (4006, '浜у搧鍒犻櫎', 'iot:product:delete', 3, 4, 4002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 02:38:02', '1', '2026-07-01 10:46:46', b'1');
+INSERT INTO `system_menu` VALUES (4007, '浜у搧瀵煎嚭', 'iot:product:export', 3, 5, 4002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-08-10 02:38:02', '1', '2026-07-01 10:46:48', b'1');
+INSERT INTO `system_menu` VALUES (4008, '璁惧绠$悊', '', 2, 2, 4001, 'device', 'fa:mobile', 'iot/device/device/index', 'IoTDevice', 0, b'1', b'1', b'1', '', '2024-09-16 18:48:19', '1', '2026-07-01 11:00:18', b'1');
+INSERT INTO `system_menu` VALUES (4009, '璁惧鏌ヨ', 'iot:device:query', 3, 1, 4008, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-16 18:48:19', '1', '2026-07-01 10:49:12', b'1');
+INSERT INTO `system_menu` VALUES (4010, '璁惧鍒涘缓', 'iot:device:create', 3, 2, 4008, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-16 18:48:19', '1', '2026-07-01 10:51:58', b'1');
+INSERT INTO `system_menu` VALUES (4011, '璁惧鏇存柊', 'iot:device:update', 3, 3, 4008, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-16 18:48:19', '1', '2026-07-01 11:00:16', b'1');
+INSERT INTO `system_menu` VALUES (4012, '璁惧鍒犻櫎', 'iot:device:delete', 3, 4, 4008, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-16 18:48:19', '1', '2026-07-01 11:00:14', b'1');
+INSERT INTO `system_menu` VALUES (4013, '璁惧瀵煎嚭', 'iot:device:export', 3, 5, 4008, '', '', '', '', 0, b'1', b'1', b'1', '', '2024-09-16 18:48:19', '1', '2026-07-01 11:00:13', b'1');
+INSERT INTO `system_menu` VALUES (4014, '浜у搧鍒嗙被', '', 2, 3, 4001, 'product-category', 'ep:notebook', 'iot/product/category/index', 'IotProductCategory', 0, b'1', b'1', b'1', '', '2024-12-07 16:01:35', '1', '2026-07-01 11:00:04', b'1');
+INSERT INTO `system_menu` VALUES (4015, '浜у搧鍒嗙被鏌ヨ', 'iot:product-category:query', 3, 1, 4014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-07 16:01:35', '1', '2026-07-01 11:00:02', b'1');
+INSERT INTO `system_menu` VALUES (4016, '浜у搧鍒嗙被鍒涘缓', 'iot:product-category:create', 3, 2, 4014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-07 16:01:35', '1', '2026-07-01 10:59:59', b'1');
+INSERT INTO `system_menu` VALUES (4017, '浜у搧鍒嗙被鏇存柊', 'iot:product-category:update', 3, 3, 4014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-07 16:01:35', '1', '2026-07-01 10:59:58', b'1');
+INSERT INTO `system_menu` VALUES (4018, '浜у搧鍒嗙被鍒犻櫎', 'iot:product-category:delete', 3, 4, 4014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-07 16:01:35', '1', '2026-07-01 10:59:56', b'1');
+INSERT INTO `system_menu` VALUES (4031, '璁惧鍒嗙粍', '', 2, 3, 4001, 'device-group', 'fa-solid:layer-group', 'iot/device/group/index', 'IotDeviceGroup', 0, b'1', b'1', b'1', '', '2024-12-14 17:08:29', '1', '2026-07-01 10:59:50', b'1');
+INSERT INTO `system_menu` VALUES (4032, '璁惧鍒嗙粍鏌ヨ', 'iot:device-group:query', 3, 1, 4031, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-14 17:08:29', '1', '2026-07-01 10:59:48', b'1');
+INSERT INTO `system_menu` VALUES (4033, '璁惧鍒嗙粍鍒涘缓', 'iot:device-group:create', 3, 2, 4031, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-14 17:08:29', '1', '2026-07-01 10:59:47', b'1');
+INSERT INTO `system_menu` VALUES (4034, '璁惧鍒嗙粍鏇存柊', 'iot:device-group:update', 3, 3, 4031, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-14 17:08:29', '1', '2026-07-01 10:59:45', b'1');
+INSERT INTO `system_menu` VALUES (4035, '璁惧鍒嗙粍鍒犻櫎', 'iot:device-group:delete', 3, 4, 4031, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-14 17:08:29', '1', '2026-07-01 10:59:43', b'1');
+INSERT INTO `system_menu` VALUES (4036, '璁惧瀵煎叆', 'iot:device:import', 3, 6, 4008, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-12-15 10:35:47', '1', '2026-07-01 11:00:10', b'1');
+INSERT INTO `system_menu` VALUES (4037, '浜у搧鐗╂ā鍨�', '', 2, 99, 4001, 'thing-model', 'ep:mostly-cloudy', 'iot/thingmodel/index', 'IoTThingModel', 0, b'0', b'0', b'0', '', '2024-12-16 17:17:50', '1', '2026-07-01 10:59:42', b'1');
+INSERT INTO `system_menu` VALUES (4038, '浜у搧鐗╂ā鍨嬪姛鑳芥煡璇�', 'iot:thing-model:query', 3, 1, 4037, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-16 17:17:51', '1', '2026-07-01 10:59:39', b'1');
+INSERT INTO `system_menu` VALUES (4039, '浜у搧鐗╂ā鍨嬪姛鑳藉垱寤�', 'iot:thing-model:create', 3, 2, 4037, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-16 17:17:52', '1', '2026-07-01 10:59:35', b'1');
+INSERT INTO `system_menu` VALUES (4040, '浜у搧鐗╂ā鍨嬪姛鑳芥洿鏂�', 'iot:thing-model:update', 3, 3, 4037, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-16 17:17:52', '1', '2026-07-01 10:59:33', b'1');
+INSERT INTO `system_menu` VALUES (4041, '浜у搧鐗╂ā鍨嬪姛鑳藉垹闄�', 'iot:thing-model:delete', 3, 4, 4037, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-16 17:17:52', '1', '2026-07-01 10:59:32', b'1');
+INSERT INTO `system_menu` VALUES (4042, '浜у搧鐗╂ā鍨嬪姛鑳藉鍑�', 'iot:thing-model:export', 3, 5, 4037, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2024-12-16 17:17:53', '1', '2026-07-01 10:59:30', b'1');
+INSERT INTO `system_menu` VALUES (4043, '璁惧娑堟伅鍙戦��', 'iot:device:message-send', 3, 12, 4008, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-01-28 04:40:16', '1', '2026-07-01 11:00:06', b'1');
+INSERT INTO `system_menu` VALUES (4044, '璁惧灞炴�ф煡璇�', 'iot:device:property-query', 3, 10, 4008, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-01-28 11:52:54', '1', '2026-07-01 11:00:09', b'1');
+INSERT INTO `system_menu` VALUES (4045, '璁惧娑堟伅鏌ヨ', 'iot:device:message-query', 3, 11, 4008, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-01-28 11:53:22', '1', '2026-07-01 11:00:07', b'1');
+INSERT INTO `system_menu` VALUES (4047, '杩愮淮绠$悊', '', 1, 4, 4000, 'operation', 'fa:align-center', '', '', 0, b'1', b'1', b'1', '1', '2025-02-05 22:21:37', '1', '2026-07-01 10:58:23', b'1');
+INSERT INTO `system_menu` VALUES (4048, '瑙勫垯寮曟搸', '', 1, 3, 4000, 'rule', 'fa-solid:cogs', '', '', 0, b'1', b'1', b'1', '1', '2025-02-11 14:10:54', '1', '2026-07-01 10:59:23', b'1');
+INSERT INTO `system_menu` VALUES (4049, '鍦烘櫙鑱斿姩', '', 2, 1, 4048, 'scene', 'ep:link', 'iot/rule/scene/index', 'IoTSceneRule', 0, b'1', b'1', b'1', '1', '2025-02-11 14:12:44', '1', '2026-07-01 10:59:22', b'1');
+INSERT INTO `system_menu` VALUES (4050, 'IoT 棣栭〉', '', 2, 1, 4000, 'home', 'ep:home-filled', 'iot/home/index', 'IotHome', 0, b'1', b'1', b'1', '1', '2025-02-27 08:39:35', '1', '2026-07-01 10:46:37', b'1');
+INSERT INTO `system_menu` VALUES (4051, '鏁版嵁娴佽浆', '', 2, 2, 4048, 'data-rule', 'ep:guide', 'iot/rule/data/index', 'IoTDataRule', 0, b'1', b'1', b'1', '', '2025-03-09 13:47:11', '1', '2026-07-01 10:59:12', b'1');
+INSERT INTO `system_menu` VALUES (4052, '鏁版嵁娴佽浆瑙勫垯鏌ヨ', 'iot:data-rule:query', 3, 1, 4051, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-03-09 13:47:11', '1', '2026-07-01 10:59:10', b'1');
+INSERT INTO `system_menu` VALUES (4053, '鏁版嵁娴佽浆瑙勫垯鍒涘缓', 'iot:data-rule:create', 3, 2, 4051, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-03-09 13:47:11', '1', '2026-07-01 10:59:08', b'1');
+INSERT INTO `system_menu` VALUES (4054, '鏁版嵁娴佽浆瑙勫垯鏇存柊', 'iot:data-rule:update', 3, 3, 4051, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-03-09 13:47:11', '1', '2026-07-01 10:59:06', b'1');
+INSERT INTO `system_menu` VALUES (4055, '鏁版嵁娴佽浆瑙勫垯鍒犻櫎', 'iot:data-rule:delete', 3, 4, 4051, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-03-09 13:47:12', '1', '2026-07-01 10:59:05', b'1');
+INSERT INTO `system_menu` VALUES (5000, 'AI 宸ヤ綔娴�', '', 2, 5, 2758, 'workflow', 'fa:hand-grab-o', 'ai/workflow/index.vue', 'AiWorkflow', 0, b'1', b'1', b'1', '1', '2025-03-25 09:50:27', '1', '2025-05-03 18:55:12', b'0');
+INSERT INTO `system_menu` VALUES (5001, 'AI 宸ヤ綔娴佹煡璇�', 'ai:workflow:query', 3, 1, 5000, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-03-25 09:51:11', '1', '2025-03-25 09:51:11', b'0');
+INSERT INTO `system_menu` VALUES (5002, 'AI 宸ヤ綔娴佸垱寤�', 'ai:workflow:create', 3, 2, 5000, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-03-25 09:51:28', '1', '2025-03-25 09:51:28', b'0');
+INSERT INTO `system_menu` VALUES (5003, 'AI 宸ヤ綔娴佹洿鏂�', 'ai:workflow:update', 3, 3, 5000, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-03-25 09:51:42', '1', '2025-03-25 09:51:42', b'0');
+INSERT INTO `system_menu` VALUES (5004, 'AI 宸ヤ綔娴佸垹闄�', 'ai:workflow:delete', 3, 4, 5000, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-03-25 09:51:55', '1', '2025-03-25 09:52:03', b'0');
+INSERT INTO `system_menu` VALUES (5005, 'AI 宸ヤ綔娴佹祴璇�', 'ai:workflow:test', 3, 5, 5000, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-03-30 10:29:41', '1', '2025-03-30 10:29:41', b'0');
+INSERT INTO `system_menu` VALUES (5009, '浠〃鐩樿璁″櫒', '', 2, 1, 1281, 'jimu-bi', 'fa:y-combinator', 'report/jmreport/bi', 'JimuBI', 0, b'1', b'1', b'1', '1', '2025-05-03 09:57:15', '1', '2025-05-03 10:02:05', b'0');
+INSERT INTO `system_menu` VALUES (5010, '绉熸埛鍒囨崲', 'system:tenant:visit', 3, 999, 1138, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-05-05 15:25:32', '1', '2025-05-05 15:25:32', b'0');
+INSERT INTO `system_menu` VALUES (5011, '杞处璁㈠崟鏌ヨ', 'pay:transfer:query', 3, 1, 2559, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-05-08 12:46:53', '1', '2026-07-01 13:34:45', b'1');
+INSERT INTO `system_menu` VALUES (5012, '杞处璁㈠崟瀵煎嚭', 'pay:transfer:export', 3, 2, 2559, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-05-10 17:00:28', '1', '2026-07-01 13:34:48', b'1');
+INSERT INTO `system_menu` VALUES (5013, '鍦烘櫙鑱斿姩鏌ヨ', 'iot:rule-scene:query', 3, 1, 4049, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-20 16:53:01', '1', '2026-07-01 10:59:20', b'1');
+INSERT INTO `system_menu` VALUES (5014, '鍦烘櫙鑱斿姩鍒涘缓', 'iot:rule-scene:create', 3, 2, 4049, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-20 16:54:31', '1', '2026-07-01 10:59:18', b'1');
+INSERT INTO `system_menu` VALUES (5015, '鍦烘櫙鑱斿姩鏇存柊', 'iot:rule-scene:update', 3, 3, 4049, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-20 16:54:47', '1', '2026-07-01 10:59:17', b'1');
+INSERT INTO `system_menu` VALUES (5016, '鍦烘櫙鑱斿姩鍒犻櫎', 'iot:rule-scene:delete', 3, 4, 4049, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-20 16:55:04', '1', '2026-07-01 10:59:15', b'1');
+INSERT INTO `system_menu` VALUES (5017, '鍦烘櫙鑱斿姩瀵煎嚭', 'iot:rule-scene:export', 3, 5, 4049, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-20 16:57:56', '1', '2026-07-01 10:59:13', b'1');
+INSERT INTO `system_menu` VALUES (5018, '鏁版嵁娴佽浆鐩殑鏌ヨ', 'iot:data-sink:query', 3, 11, 4051, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-24 20:48:40', '1', '2026-07-01 10:59:03', b'1');
+INSERT INTO `system_menu` VALUES (5019, '鏁版嵁娴佽浆鐩殑鍒涘缓', 'iot:data-sink:create', 3, 12, 4051, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-24 20:48:57', '1', '2026-07-01 10:59:01', b'1');
+INSERT INTO `system_menu` VALUES (5020, '鏁版嵁娴佽浆鐩殑鏇存柊', 'iot:data-sink:update', 3, 13, 4051, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-24 20:49:10', '1', '2026-07-01 10:59:00', b'1');
+INSERT INTO `system_menu` VALUES (5021, '鏁版嵁娴佽浆鐩殑鍒犻櫎', 'iot:data-sink:delete', 3, 14, 4051, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-06-24 20:49:23', '1', '2026-07-01 10:58:57', b'1');
+INSERT INTO `system_menu` VALUES (5022, '鍛婅閰嶇疆', '', 2, 1, 5028, 'config', 'fa:connectdevelop', 'iot/alert/config/index', 'IotAlertConfig', 0, b'1', b'1', b'1', '', '2025-06-27 14:28:59', '1', '2026-07-01 10:58:44', b'1');
+INSERT INTO `system_menu` VALUES (5023, '鍛婅閰嶇疆鏌ヨ', 'iot:alert-config:query', 3, 1, 5022, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-27 14:28:59', '1', '2026-07-01 10:58:42', b'1');
+INSERT INTO `system_menu` VALUES (5024, '鍛婅閰嶇疆鍒涘缓', 'iot:alert-config:create', 3, 2, 5022, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-27 14:28:59', '1', '2026-07-01 10:58:40', b'1');
+INSERT INTO `system_menu` VALUES (5025, '鍛婅閰嶇疆鏇存柊', 'iot:alert-config:update', 3, 3, 5022, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-27 14:28:59', '1', '2026-07-01 10:58:38', b'1');
+INSERT INTO `system_menu` VALUES (5026, '鍛婅閰嶇疆鍒犻櫎', 'iot:alert-config:delete', 3, 4, 5022, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-27 14:29:00', '1', '2026-07-01 10:58:36', b'1');
+INSERT INTO `system_menu` VALUES (5028, '鍛婅涓績', '', 1, 3, 4000, 'alert', 'fa:soundcloud', '', '', 0, b'1', b'1', b'1', '1', '2025-06-27 22:30:04', '1', '2026-07-01 10:58:46', b'1');
+INSERT INTO `system_menu` VALUES (5029, '鍛婅璁板綍', '', 2, 2, 5028, 'record', 'fa-solid:record-vinyl', 'iot/alert/record/index', 'IotAlertRecord', 0, b'1', b'1', b'1', '', '2025-06-28 07:59:32', '1', '2026-07-01 10:58:34', b'1');
+INSERT INTO `system_menu` VALUES (5030, '鍛婅璁板綍鏌ヨ', 'iot:alert-record:query', 3, 1, 5029, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-28 07:59:32', '1', '2026-07-01 10:58:32', b'1');
+INSERT INTO `system_menu` VALUES (5031, '鍛婅璁板綍澶勭悊', 'iot:alert-record:process', 3, 2, 5029, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-28 07:59:32', '1', '2026-07-01 10:58:29', b'1');
+INSERT INTO `system_menu` VALUES (5032, 'OTA 鍥轰欢', '', 2, 1, 4047, 'ota/firmware', 'fa-solid:award', 'iot/ota/firmware/index', 'IoTOtaFirmware', 0, b'1', b'1', b'1', '', '2025-06-30 07:50:29', '1', '2026-07-01 10:58:18', b'1');
+INSERT INTO `system_menu` VALUES (5033, 'OTA 鍥轰欢鏌ヨ', 'iot:ota-firmware:query', 3, 1, 5032, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-30 07:50:29', '1', '2026-07-01 10:57:52', b'1');
+INSERT INTO `system_menu` VALUES (5034, 'OTA 鍥轰欢鍒涘缓', 'iot:ota-firmware:create', 3, 2, 5032, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-30 07:50:29', '1', '2026-07-01 10:57:56', b'1');
+INSERT INTO `system_menu` VALUES (5035, 'OTA 鍥轰欢鏇存柊', 'iot:ota-firmware:update', 3, 3, 5032, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-30 07:50:29', '1', '2026-07-01 10:58:00', b'1');
+INSERT INTO `system_menu` VALUES (5036, 'OTA 鍥轰欢鍒犻櫎', 'iot:ota-firmware:delete', 3, 4, 5032, '', '', '', '', 0, b'1', b'1', b'1', '', '2025-06-30 07:50:29', '1', '2026-07-01 10:58:03', b'1');
+INSERT INTO `system_menu` VALUES (5037, 'OTA 鍗囩骇浠诲姟鏌ヨ', 'iot:ota-task:query', 3, 11, 5032, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-07-02 23:56:56', '1', '2026-07-01 10:58:15', b'1');
+INSERT INTO `system_menu` VALUES (5038, 'OTA 鍗囩骇浠诲姟鍙栨秷', 'iot:ota-task:cancel', 3, 13, 5032, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-07-02 23:57:26', '1', '2026-07-01 10:58:12', b'1');
+INSERT INTO `system_menu` VALUES (5039, 'OTA 鍗囩骇浠诲姟鍒涘缓', 'iot:ota-task:create', 3, 12, 5032, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-07-02 23:57:52', '1', '2026-07-01 10:58:14', b'1');
+INSERT INTO `system_menu` VALUES (5040, 'OTA 鍗囩骇璁板綍鏌ヨ', 'iot:ota-task-record:query', 3, 21, 5032, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-07-02 23:58:30', '1', '2026-07-01 10:58:10', b'1');
+INSERT INTO `system_menu` VALUES (5041, 'OTA 鍗囩骇璁板綍鍙栨秷', 'iot:ota-task-record:cancel', 3, 23, 5032, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-07-02 23:59:18', '1', '2026-07-01 10:58:07', b'1');
+INSERT INTO `system_menu` VALUES (5042, '妯$増娑堟伅', '', 2, 5, 2084, 'message-template', 'ep:notebook', 'mp/messageTemplate/index', 'MpMessageTemplate', 0, b'1', b'1', b'1', '1', '2025-11-26 16:45:35', '1', '2026-07-01 11:15:47', b'1');
+INSERT INTO `system_menu` VALUES (5043, '鏌ヨ妯$増娑堟伅', 'mp:message-template:query', 3, 1, 5042, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-11-26 17:00:15', '1', '2026-07-01 11:15:45', b'1');
+INSERT INTO `system_menu` VALUES (5044, '鍒犻櫎妯$増娑堟伅', 'mp:message-template:delete', 3, 2, 5042, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-11-26 17:00:31', '1', '2026-07-01 11:15:43', b'1');
+INSERT INTO `system_menu` VALUES (5045, '鍚屾鍏紬鍙锋ā鏉�', 'mp:message-template:sync', 3, 3, 5042, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-11-26 17:00:55', '1', '2026-07-01 11:15:41', b'1');
+INSERT INTO `system_menu` VALUES (5046, '缁欑矇涓濆彂閫佹ā鐗堟秷鎭�', 'mp:message-template:send', 3, 4, 5042, '', '', '', '', 0, b'1', b'1', b'1', '1', '2025-11-26 17:01:11', '1', '2026-07-01 11:15:40', b'1');
+INSERT INTO `system_menu` VALUES (5100, 'MES 绯荤粺', '', 1, 320, 0, '/mes', 'ep:cpu', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:39:57', '1', '2026-05-09 16:19:51', b'0');
+INSERT INTO `system_menu` VALUES (5101, 'MES鍩虹鏁版嵁', '', 1, 10, 5100, 'md', 'ep:data-analysis', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 14:45:47', b'0');
+INSERT INTO `system_menu` VALUES (5110, '鐗╂枡浜у搧鍒嗙被', '', 2, 2, 5101, 'item-type', 'ep:files', 'mes/md/item/type/index', 'MesMdItemType', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:21:29', b'1');
+INSERT INTO `system_menu` VALUES (5111, '鍒嗙被鏌ヨ', 'mes:md-item-type:query', 3, 1, 5110, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:21:26', b'1');
+INSERT INTO `system_menu` VALUES (5112, '鍒嗙被鍒涘缓', 'mes:md-item-type:create', 3, 2, 5110, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:21:23', b'1');
+INSERT INTO `system_menu` VALUES (5113, '鍒嗙被鏇存柊', 'mes:md-item-type:update', 3, 3, 5110, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:21:19', b'1');
+INSERT INTO `system_menu` VALUES (5114, '鍒嗙被鍒犻櫎', 'mes:md-item-type:delete', 3, 4, 5110, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:21:16', b'1');
+INSERT INTO `system_menu` VALUES (5120, '鐗╂枡浜у搧绠$悊', '', 2, 1, 5101, 'item', 'ep:box', 'mes/md/item/index', 'MesMdItem', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:20:37', b'1');
+INSERT INTO `system_menu` VALUES (5121, '鐗╂枡鏌ヨ', 'mes:md-item:query', 3, 1, 5120, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:20:33', b'1');
+INSERT INTO `system_menu` VALUES (5122, '鐗╂枡鍒涘缓', 'mes:md-item:create', 3, 2, 5120, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:20:28', b'1');
+INSERT INTO `system_menu` VALUES (5123, '鐗╂枡鏇存柊', 'mes:md-item:update', 3, 3, 5120, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:20:25', b'1');
+INSERT INTO `system_menu` VALUES (5124, '鐗╂枡鍒犻櫎', 'mes:md-item:delete', 3, 4, 5120, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:20:21', b'1');
+INSERT INTO `system_menu` VALUES (5125, '鐗╂枡瀵煎嚭', 'mes:md-item:export', 3, 5, 5120, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 00:40:13', '1', '2026-07-01 16:20:17', b'1');
+INSERT INTO `system_menu` VALUES (5126, '鐗╂枡瀵煎叆', 'mes:md-item:import', 3, 6, 5120, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 14:13:01', '1', '2026-07-01 16:20:13', b'1');
+INSERT INTO `system_menu` VALUES (5130, '璁¢噺鍗曚綅', '', 2, 3, 5101, 'unit-measure', 'ep:scale-to-original', 'mes/md/unitmeasure/index', 'MesMdUnitMeasure', 0, b'1', b'1', b'1', '1', '2026-02-15 13:55:01', '1', '2026-07-01 16:21:54', b'1');
+INSERT INTO `system_menu` VALUES (5131, '鍗曚綅鏌ヨ', 'mes:md-unit-measure:query', 3, 1, 5130, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 13:55:16', '1', '2026-07-01 16:21:50', b'1');
+INSERT INTO `system_menu` VALUES (5132, '鍗曚綅鍒涘缓', 'mes:md-unit-measure:create', 3, 2, 5130, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 13:55:16', '1', '2026-07-01 16:21:46', b'1');
+INSERT INTO `system_menu` VALUES (5133, '鍗曚綅鏇存柊', 'mes:md-unit-measure:update', 3, 3, 5130, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 13:55:16', '1', '2026-07-01 16:21:43', b'1');
+INSERT INTO `system_menu` VALUES (5134, '鍗曚綅鍒犻櫎', 'mes:md-unit-measure:delete', 3, 4, 5130, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 13:55:16', '1', '2026-07-01 16:21:40', b'1');
+INSERT INTO `system_menu` VALUES (5135, '鍗曚綅瀵煎嚭', 'mes:md-unit-measure:export', 3, 5, 5130, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 13:55:16', '1', '2026-07-01 16:21:36', b'1');
+INSERT INTO `system_menu` VALUES (5140, '瀹㈡埛绠$悊', '', 2, 4, 5101, 'client', 'ep:user', 'mes/md/client/index', 'MesMdClient', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:20', b'1');
+INSERT INTO `system_menu` VALUES (5141, '瀹㈡埛鏌ヨ', 'mes:md-client:query', 3, 1, 5140, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:16', b'1');
+INSERT INTO `system_menu` VALUES (5142, '瀹㈡埛鍒涘缓', 'mes:md-client:create', 3, 2, 5140, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:13', b'1');
+INSERT INTO `system_menu` VALUES (5143, '瀹㈡埛鏇存柊', 'mes:md-client:update', 3, 3, 5140, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:11', b'1');
+INSERT INTO `system_menu` VALUES (5144, '瀹㈡埛鍒犻櫎', 'mes:md-client:delete', 3, 4, 5140, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:08', b'1');
+INSERT INTO `system_menu` VALUES (5145, '瀹㈡埛瀵煎嚭', 'mes:md-client:export', 3, 5, 5140, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:04', b'1');
+INSERT INTO `system_menu` VALUES (5146, '瀹㈡埛瀵煎叆', 'mes:md-client:import', 3, 6, 5140, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 15:06:41', '1', '2026-07-01 16:22:01', b'1');
+INSERT INTO `system_menu` VALUES (5150, '渚涘簲鍟嗙鐞�', '', 2, 5, 5101, 'vendor', 'ep:goods', 'mes/md/vendor/index', 'MesMdVendor', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:45', b'1');
+INSERT INTO `system_menu` VALUES (5151, '渚涘簲鍟嗘煡璇�', 'mes:md-vendor:query', 3, 1, 5150, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:42', b'1');
+INSERT INTO `system_menu` VALUES (5152, '渚涘簲鍟嗗垱寤�', 'mes:md-vendor:create', 3, 2, 5150, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:39', b'1');
+INSERT INTO `system_menu` VALUES (5153, '渚涘簲鍟嗘洿鏂�', 'mes:md-vendor:update', 3, 3, 5150, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:36', b'1');
+INSERT INTO `system_menu` VALUES (5154, '渚涘簲鍟嗗垹闄�', 'mes:md-vendor:delete', 3, 4, 5150, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:33', b'1');
+INSERT INTO `system_menu` VALUES (5155, '渚涘簲鍟嗗鍑�', 'mes:md-vendor:export', 3, 5, 5150, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:30', b'1');
+INSERT INTO `system_menu` VALUES (5156, '渚涘簲鍟嗗鍏�', 'mes:md-vendor:import', 3, 6, 5150, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:01:11', '1', '2026-07-01 16:22:27', b'1');
+INSERT INTO `system_menu` VALUES (5160, '杞﹂棿璁剧疆', '', 2, 6, 5101, 'workstation/workshop', 'ep:office-building', 'mes/md/workstation/workshop/index', 'MesMdWorkshop', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-16 11:17:35', b'0');
+INSERT INTO `system_menu` VALUES (5161, '杞﹂棿鏌ヨ', 'mes:md-workshop:query', 3, 1, 5160, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5162, '杞﹂棿鍒涘缓', 'mes:md-workshop:create', 3, 2, 5160, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5163, '杞﹂棿鏇存柊', 'mes:md-workshop:update', 3, 3, 5160, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5164, '杞﹂棿鍒犻櫎', 'mes:md-workshop:delete', 3, 4, 5160, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5170, '宸ヤ綔绔欒缃�', '', 2, 7, 5101, 'workstation', 'ep:place', 'mes/md/workstation/index', 'MesMdWorkstation', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-16 11:18:34', b'0');
+INSERT INTO `system_menu` VALUES (5171, '宸ヤ綅鏌ヨ', 'mes:md-workstation:query', 3, 1, 5170, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5172, '宸ヤ綅鍒涘缓', 'mes:md-workstation:create', 3, 2, 5170, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5173, '宸ヤ綅鏇存柊', 'mes:md-workstation:update', 3, 3, 5170, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5174, '宸ヤ綅鍒犻櫎', 'mes:md-workstation:delete', 3, 4, 5170, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5175, '宸ヤ綅瀵煎嚭', 'mes:md-workstation:export', 3, 5, 5170, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-15 16:47:47', '1', '2026-02-15 16:47:47', b'0');
+INSERT INTO `system_menu` VALUES (5190, '缂栫爜瑙勫垯', '', 2, 10, 5101, 'auto-code', 'ep:document', 'mes/md/autocode/index', 'MesAutoCode', 0, b'1', b'1', b'1', '1', '2026-03-04 05:26:04', '1', '2026-04-03 08:31:25', b'0');
+INSERT INTO `system_menu` VALUES (5191, '缂栫爜瑙勫垯鏌ヨ', 'mes:auto-code-rule:query', 3, 1, 5190, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-04 05:26:04', '1', '2026-03-04 05:26:04', b'0');
+INSERT INTO `system_menu` VALUES (5192, '缂栫爜瑙勫垯鍒涘缓', 'mes:auto-code-rule:create', 3, 2, 5190, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-04 05:26:04', '1', '2026-03-04 05:26:04', b'0');
+INSERT INTO `system_menu` VALUES (5193, '缂栫爜瑙勫垯鏇存柊', 'mes:auto-code-rule:update', 3, 3, 5190, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-04 05:26:04', '1', '2026-03-04 05:26:04', b'0');
+INSERT INTO `system_menu` VALUES (5194, '缂栫爜瑙勫垯鍒犻櫎', 'mes:auto-code-rule:delete', 3, 4, 5190, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-04 05:26:04', '1', '2026-03-04 05:26:04', b'0');
+INSERT INTO `system_menu` VALUES (5195, '缂栫爜瑙勫垯瀵煎嚭', 'mes:auto-code-rule:export', 3, 5, 5190, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-04 05:26:04', '1', '2026-03-04 05:26:04', b'0');
+INSERT INTO `system_menu` VALUES (5200, '鎺掔彮绠$悊', '', 1, 70, 5100, 'cal', 'ep:calendar', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 15:37:53', b'0');
+INSERT INTO `system_menu` VALUES (5220, '鐝粍璁剧疆', '', 2, 1, 5200, 'team', 'ep:user', 'mes/cal/team/index', 'MesCalTeam', 0, b'1', b'1', b'1', '1', '2026-02-18 01:16:03', '1', '2026-02-18 11:14:31', b'0');
+INSERT INTO `system_menu` VALUES (5221, '鐝粍鏌ヨ', 'mes:cal-team:query', 3, 1, 5220, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-18 01:16:03', '1', '2026-02-18 01:16:03', b'0');
+INSERT INTO `system_menu` VALUES (5222, '鐝粍鍒涘缓', 'mes:cal-team:create', 3, 2, 5220, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-18 01:16:03', '1', '2026-02-18 01:16:03', b'0');
+INSERT INTO `system_menu` VALUES (5223, '鐝粍鏇存柊', 'mes:cal-team:update', 3, 3, 5220, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-18 01:16:03', '1', '2026-02-18 01:16:03', b'0');
+INSERT INTO `system_menu` VALUES (5224, '鐝粍鍒犻櫎', 'mes:cal-team:delete', 3, 4, 5220, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-18 01:16:03', '1', '2026-02-18 01:16:03', b'0');
+INSERT INTO `system_menu` VALUES (5225, '鐝粍瀵煎嚭', 'mes:cal-team:export', 3, 5, 5220, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-18 01:16:03', '1', '2026-02-18 01:16:03', b'0');
+INSERT INTO `system_menu` VALUES (5230, '鎺掔彮璁″垝', '', 2, 3, 5200, 'plan', 'ep:memo', 'mes/cal/plan/index', 'MesCalPlan', 0, b'1', b'1', b'1', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_menu` VALUES (5231, '鎺掔彮璁″垝鏌ヨ', 'mes:cal-plan:query', 3, 1, 5230, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_menu` VALUES (5232, '鎺掔彮璁″垝鍒涘缓', 'mes:cal-plan:create', 3, 2, 5230, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_menu` VALUES (5233, '鎺掔彮璁″垝鏇存柊', 'mes:cal-plan:update', 3, 3, 5230, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_menu` VALUES (5234, '鎺掔彮璁″垝鍒犻櫎', 'mes:cal-plan:delete', 3, 4, 5230, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_menu` VALUES (5235, '鎺掔彮璁″垝瀵煎嚭', 'mes:cal-plan:export', 3, 5, 5230, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 03:40:09', '1', '2026-02-17 03:40:09', b'0');
+INSERT INTO `system_menu` VALUES (5250, '鑺傚亣鏃ヨ缃�', '', 2, 3, 5200, 'holiday', 'ep:sunny', 'mes/cal/holiday/index', 'MesCalHoliday', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 15:38:25', b'0');
+INSERT INTO `system_menu` VALUES (5251, '鍋囨湡鏌ヨ', 'mes:cal-holiday:query', 3, 1, 5250, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 07:35:50', b'0');
+INSERT INTO `system_menu` VALUES (5252, '鍋囨湡鍒涘缓', 'mes:cal-holiday:create', 3, 2, 5250, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 07:35:50', b'0');
+INSERT INTO `system_menu` VALUES (5253, '鍋囨湡鏇存柊', 'mes:cal-holiday:update', 3, 3, 5250, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 07:35:50', b'0');
+INSERT INTO `system_menu` VALUES (5254, '鍋囨湡鍒犻櫎', 'mes:cal-holiday:delete', 3, 4, 5250, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 07:35:50', b'0');
+INSERT INTO `system_menu` VALUES (5255, '鍋囨湡瀵煎嚭', 'mes:cal-holiday:export', 3, 5, 5250, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 07:35:50', '1', '2026-02-16 07:35:50', b'0');
+INSERT INTO `system_menu` VALUES (5260, '鎺掔彮鏃ュ巻', '', 2, 3, 5200, 'calendar', 'ep:calendar', 'mes/cal/calendar/index', 'MesCalCalendar', 0, b'1', b'1', b'1', '1', '2026-02-19 04:19:33', '1', '2026-02-19 04:19:33', b'0');
+INSERT INTO `system_menu` VALUES (5261, '鎺掔彮鏃ュ巻鏌ヨ', 'mes:cal-team-shift:query', 3, 1, 5260, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 04:19:33', '1', '2026-02-19 04:19:33', b'0');
+INSERT INTO `system_menu` VALUES (5300, '璁惧绠$悊', '', 1, 6, 0, '/dv', 'ep:cpu', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-07-03 10:48:24', b'0');
+INSERT INTO `system_menu` VALUES (5310, '璁惧绫诲瀷', '', 2, 1, 5300, 'machinery/type', 'ep:files', 'mes/dv/machinery/type/index', 'MesDvMachineryType', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 09:02:05', b'0');
+INSERT INTO `system_menu` VALUES (5311, '绫诲瀷鏌ヨ', 'mes:dv-machinery-type:query', 3, 1, 5310, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5312, '绫诲瀷鍒涘缓', 'mes:dv-machinery-type:create', 3, 2, 5310, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5313, '绫诲瀷鏇存柊', 'mes:dv-machinery-type:update', 3, 3, 5310, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5314, '绫诲瀷鍒犻櫎', 'mes:dv-machinery-type:delete', 3, 4, 5310, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5315, '绫诲瀷瀵煎嚭', 'mes:dv-machinery-type:export', 3, 5, 5310, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5320, '璁惧鍙拌处', '', 2, 2, 5300, 'machinery', 'ep:monitor', 'mes/dv/machinery/index', 'MesDvMachinery', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5321, '璁惧鏌ヨ', 'mes:dv-machinery:query', 3, 1, 5320, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5322, '璁惧鍒涘缓', 'mes:dv-machinery:create', 3, 2, 5320, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5323, '璁惧鏇存柊', 'mes:dv-machinery:update', 3, 3, 5320, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5324, '璁惧鍒犻櫎', 'mes:dv-machinery:delete', 3, 4, 5320, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5325, '璁惧瀵煎嚭', 'mes:dv-machinery:export', 3, 5, 5320, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 00:59:58', '1', '2026-02-17 00:59:58', b'0');
+INSERT INTO `system_menu` VALUES (5326, '璁惧瀵煎叆', 'mes:dv-machinery:import', 3, 6, 5320, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-04-02 15:40:42', '1', '2026-04-02 15:40:42', b'0');
+INSERT INTO `system_menu` VALUES (5330, '鐐规淇濆吇椤圭洰', '', 2, 3, 5300, 'subject', 'ep:document-checked', 'mes/dv/subject/index', 'MesDvSubject', 0, b'1', b'1', b'1', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_menu` VALUES (5331, '椤圭洰鏌ヨ', 'mes:dv-subject:query', 3, 1, 5330, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_menu` VALUES (5332, '椤圭洰鍒涘缓', 'mes:dv-subject:create', 3, 2, 5330, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_menu` VALUES (5333, '椤圭洰鏇存柊', 'mes:dv-subject:update', 3, 3, 5330, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_menu` VALUES (5334, '椤圭洰鍒犻櫎', 'mes:dv-subject:delete', 3, 4, 5330, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_menu` VALUES (5335, '椤圭洰瀵煎嚭', 'mes:dv-subject:export', 3, 5, 5330, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:42:58', '1', '2026-02-20 01:42:58', b'0');
+INSERT INTO `system_menu` VALUES (5340, '淇濆吇璁板綍', '', 2, 6, 5300, 'mainten-record', 'ep:setting', 'mes/dv/maintenrecord/index', 'MesDvMaintenRecord', 0, b'1', b'1', b'1', '', '2026-02-20 02:59:55', '1', '2026-03-02 11:45:39', b'0');
+INSERT INTO `system_menu` VALUES (5341, '淇濆吇璁板綍鏌ヨ', 'mes:dv-mainten-record:query', 3, 1, 5340, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 02:59:55', '', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_menu` VALUES (5342, '淇濆吇璁板綍鍒涘缓', 'mes:dv-mainten-record:create', 3, 2, 5340, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 02:59:55', '', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_menu` VALUES (5343, '淇濆吇璁板綍鏇存柊', 'mes:dv-mainten-record:update', 3, 3, 5340, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 02:59:55', '', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_menu` VALUES (5344, '淇濆吇璁板綍鍒犻櫎', 'mes:dv-mainten-record:delete', 3, 4, 5340, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 02:59:55', '', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_menu` VALUES (5345, '淇濆吇璁板綍瀵煎嚭', 'mes:dv-mainten-record:export', 3, 5, 5340, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 02:59:55', '', '2026-02-20 02:59:55', b'0');
+INSERT INTO `system_menu` VALUES (5350, '鐐规淇濆吇鏂规', '', 2, 4, 5300, 'checkplan', 'ep:calendar', 'mes/dv/checkplan/index', 'MesDvCheckPlan', 0, b'1', b'1', b'1', '1', '2026-02-20 07:13:08', '1', '2026-02-20 07:13:08', b'0');
+INSERT INTO `system_menu` VALUES (5351, '鏂规鏌ヨ', 'mes:dv-check-plan:query', 3, 1, 5350, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 07:13:08', '1', '2026-02-20 07:13:08', b'0');
+INSERT INTO `system_menu` VALUES (5352, '鏂规鍒涘缓', 'mes:dv-check-plan:create', 3, 2, 5350, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 07:13:08', '1', '2026-02-20 07:13:08', b'0');
+INSERT INTO `system_menu` VALUES (5353, '鏂规鏇存柊', 'mes:dv-check-plan:update', 3, 3, 5350, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 07:13:08', '1', '2026-02-20 07:13:08', b'0');
+INSERT INTO `system_menu` VALUES (5354, '鏂规鍒犻櫎', 'mes:dv-check-plan:delete', 3, 4, 5350, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 07:13:08', '1', '2026-02-20 07:13:08', b'0');
+INSERT INTO `system_menu` VALUES (5355, '鏂规瀵煎嚭', 'mes:dv-check-plan:export', 3, 5, 5350, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 07:13:08', '1', '2026-02-20 07:13:08', b'0');
+INSERT INTO `system_menu` VALUES (5360, '鐐规璁板綍', '', 2, 5, 5300, 'check-record', 'ep:document-checked', 'mes/dv/checkrecord/index', 'MesDvCheckRecord', 0, b'1', b'1', b'1', '', '2026-02-20 09:46:19', '', '2026-03-02 11:45:39', b'0');
+INSERT INTO `system_menu` VALUES (5361, '鐐规璁板綍鏌ヨ', 'mes:dv-check-record:query', 3, 1, 5360, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 09:46:19', '', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_menu` VALUES (5362, '鐐规璁板綍鍒涘缓', 'mes:dv-check-record:create', 3, 2, 5360, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 09:46:19', '', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_menu` VALUES (5363, '鐐规璁板綍鏇存柊', 'mes:dv-check-record:update', 3, 3, 5360, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 09:46:19', '', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_menu` VALUES (5364, '鐐规璁板綍鍒犻櫎', 'mes:dv-check-record:delete', 3, 4, 5360, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 09:46:19', '', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_menu` VALUES (5365, '鐐规璁板綍瀵煎嚭', 'mes:dv-check-record:export', 3, 5, 5360, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-02-20 09:46:19', '', '2026-02-20 09:46:19', b'0');
+INSERT INTO `system_menu` VALUES (5366, '宸ュ崟瀵煎嚭', 'mes:dv-repair:export', 3, 5, 5360, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:07:06', '1', '2026-02-20 11:07:06', b'0');
+INSERT INTO `system_menu` VALUES (5370, '缁翠慨鍗�', '', 2, 7, 5300, 'repair', 'ep:tools', 'mes/dv/repair/index', 'MesDvRepair', 0, b'1', b'1', b'1', '1', '2026-02-20 11:06:28', '1', '2026-02-20 19:10:18', b'0');
+INSERT INTO `system_menu` VALUES (5371, '宸ュ崟鏌ヨ', 'mes:dv-repair:query', 3, 1, 5370, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:06:28', '1', '2026-02-20 11:06:28', b'0');
+INSERT INTO `system_menu` VALUES (5372, '宸ュ崟鍒涘缓', 'mes:dv-repair:create', 3, 2, 5370, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:06:28', '1', '2026-02-20 11:06:28', b'0');
+INSERT INTO `system_menu` VALUES (5373, '宸ュ崟鏇存柊', 'mes:dv-repair:update', 3, 3, 5370, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:54:20', '1', '2026-02-20 11:54:20', b'0');
+INSERT INTO `system_menu` VALUES (5374, '宸ュ崟鍒犻櫎', 'mes:dv-repair:delete', 3, 4, 5370, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:54:15', '1', '2026-02-20 11:54:15', b'0');
+INSERT INTO `system_menu` VALUES (5375, '宸ュ崟瀵煎嚭', 'mes:dv-repair:export', 3, 5, 5370, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:54:04', '1', '2026-02-20 11:54:04', b'0');
+INSERT INTO `system_menu` VALUES (5400, '宸ュ叿绠$悊', '', 1, 40, 5100, 'tm', 'ep:scissor', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-03-21 14:20:41', b'0');
+INSERT INTO `system_menu` VALUES (5410, '宸ュ叿绫诲瀷璁剧疆', '', 2, 1, 5400, 'tool/type', 'ep:files', 'mes/tm/tool/type/index', 'MesTmToolType', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 21:28:41', b'0');
+INSERT INTO `system_menu` VALUES (5411, '绫诲瀷鏌ヨ', 'mes:tm-tool-type:query', 3, 1, 5410, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5412, '绫诲瀷鍒涘缓', 'mes:tm-tool-type:create', 3, 2, 5410, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5413, '绫诲瀷鏇存柊', 'mes:tm-tool-type:update', 3, 3, 5410, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5414, '绫诲瀷鍒犻櫎', 'mes:tm-tool-type:delete', 3, 4, 5410, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5415, '绫诲瀷瀵煎嚭', 'mes:tm-tool-type:export', 3, 5, 5410, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5420, '宸ヨ澶瑰叿鍙拌处', '', 2, 2, 5400, 'tool', 'ep:box', 'mes/tm/tool/index', 'MesTmTool', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 21:29:23', b'0');
+INSERT INTO `system_menu` VALUES (5421, '宸ュ叿鏌ヨ', 'mes:tm-tool:query', 3, 1, 5420, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5422, '宸ュ叿鍒涘缓', 'mes:tm-tool:create', 3, 2, 5420, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5423, '宸ュ叿鏇存柊', 'mes:tm-tool:update', 3, 3, 5420, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5424, '宸ュ叿鍒犻櫎', 'mes:tm-tool:delete', 3, 4, 5420, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5425, '宸ュ叿瀵煎嚭', 'mes:tm-tool:export', 3, 5, 5420, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-16 11:10:55', '1', '2026-02-16 11:10:55', b'0');
+INSERT INTO `system_menu` VALUES (5500, '璐ㄩ噺绠$悊', '', 1, 60, 5100, 'qc', 'ep:check', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-02-17 14:36:15', b'0');
+INSERT INTO `system_menu` VALUES (5510, '甯歌缂洪櫡', '', 2, 1, 5500, 'defect', 'ep:warning', 'mes/qc/defect/index', 'MesQcDefect', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-03-04 04:29:46', b'0');
+INSERT INTO `system_menu` VALUES (5511, '缂洪櫡绫诲瀷鏌ヨ', 'mes:qc-defect:query', 3, 1, 5510, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-02-17 02:18:18', b'0');
+INSERT INTO `system_menu` VALUES (5512, '缂洪櫡绫诲瀷鍒涘缓', 'mes:qc-defect:create', 3, 2, 5510, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-02-17 02:18:18', b'0');
+INSERT INTO `system_menu` VALUES (5513, '缂洪櫡绫诲瀷鏇存柊', 'mes:qc-defect:update', 3, 3, 5510, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-02-17 02:18:18', b'0');
+INSERT INTO `system_menu` VALUES (5514, '缂洪櫡绫诲瀷鍒犻櫎', 'mes:qc-defect:delete', 3, 4, 5510, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-02-17 02:18:18', b'0');
+INSERT INTO `system_menu` VALUES (5515, '缂洪櫡绫诲瀷瀵煎嚭', 'mes:qc-defect:export', 3, 5, 5510, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 02:18:18', '1', '2026-02-17 02:18:18', b'0');
+INSERT INTO `system_menu` VALUES (5530, '鐢熶骇璁㈠崟', '', 2, 1, 5700, 'work-order', 'ep:document-copy', 'mes/pro/workorder/index', 'MesProWorkOrder', 0, b'1', b'1', b'1', '1', '2026-02-17 11:51:44', '1', '2026-07-03 16:40:37', b'0');
+INSERT INTO `system_menu` VALUES (5531, '宸ュ崟鏌ヨ', 'mes:pro-work-order:query', 3, 1, 5530, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:51:44', '1', '2026-02-17 11:51:44', b'0');
+INSERT INTO `system_menu` VALUES (5532, '宸ュ崟鍒涘缓', 'mes:pro-work-order:create', 3, 2, 5530, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:51:44', '1', '2026-02-17 11:51:44', b'0');
+INSERT INTO `system_menu` VALUES (5533, '宸ュ崟鏇存柊', 'mes:pro-work-order:update', 3, 3, 5530, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:51:44', '1', '2026-02-17 11:51:44', b'0');
+INSERT INTO `system_menu` VALUES (5534, '宸ュ崟鍒犻櫎', 'mes:pro-work-order:delete', 3, 4, 5530, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:51:44', '1', '2026-02-17 11:51:44', b'0');
+INSERT INTO `system_menu` VALUES (5535, '宸ュ崟瀵煎嚭', 'mes:pro-work-order:export', 3, 5, 5530, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:51:44', '1', '2026-02-17 11:51:44', b'0');
+INSERT INTO `system_menu` VALUES (5540, '鐢熶骇鎺掍骇', '', 2, 4, 5700, 'task', 'ep:calendar', 'mes/pro/task/index', 'MesProTask', 0, b'1', b'1', b'1', '1', '2026-02-19 15:25:27', '1', '2026-02-20 08:30:27', b'0');
+INSERT INTO `system_menu` VALUES (5541, '鎺掍骇鏌ヨ', 'mes:pro-task:query', 3, 1, 5540, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 15:25:27', '1', '2026-02-19 15:25:27', b'0');
+INSERT INTO `system_menu` VALUES (5542, '鎺掍骇鍒涘缓', 'mes:pro-task:create', 3, 2, 5540, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 15:25:27', '1', '2026-02-19 15:25:27', b'0');
+INSERT INTO `system_menu` VALUES (5543, '鎺掍骇鏇存柊', 'mes:pro-task:update', 3, 3, 5540, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 15:25:27', '1', '2026-02-19 15:25:27', b'0');
+INSERT INTO `system_menu` VALUES (5544, '鎺掍骇鍒犻櫎', 'mes:pro-task:delete', 3, 4, 5540, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 15:25:27', '1', '2026-02-19 15:25:27', b'0');
+INSERT INTO `system_menu` VALUES (5545, '鎺掍骇瀵煎嚭', 'mes:pro-task:export', 3, 5, 5540, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 15:25:27', '1', '2026-02-19 15:25:27', b'0');
+INSERT INTO `system_menu` VALUES (5550, '鐢熶骇鎶ュ伐', '', 2, 5, 5700, 'feedback', 'ep:finished', 'mes/pro/feedback/index', 'MesProFeedback', 0, b'1', b'1', b'1', '1', '2026-02-21 00:50:22', '1', '2026-02-21 08:55:14', b'0');
+INSERT INTO `system_menu` VALUES (5551, '鎶ュ伐鏌ヨ', 'mes:pro-feedback:query', 3, 1, 5550, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:50:22', '1', '2026-02-21 00:50:22', b'0');
+INSERT INTO `system_menu` VALUES (5552, '鎶ュ伐鍒涘缓', 'mes:pro-feedback:create', 3, 2, 5550, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:50:22', '1', '2026-02-21 00:50:22', b'0');
+INSERT INTO `system_menu` VALUES (5553, '鎶ュ伐鏇存柊', 'mes:pro-feedback:update', 3, 3, 5550, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:50:22', '1', '2026-02-21 00:50:22', b'0');
+INSERT INTO `system_menu` VALUES (5554, '鎶ュ伐鍒犻櫎', 'mes:pro-feedback:delete', 3, 4, 5550, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:50:22', '1', '2026-02-21 00:50:22', b'0');
+INSERT INTO `system_menu` VALUES (5555, '鎶ュ伐瀵煎嚭', 'mes:pro-feedback:export', 3, 5, 5550, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:50:22', '1', '2026-02-21 00:50:22', b'0');
+INSERT INTO `system_menu` VALUES (5560, '宸ュ簭娴佽浆', '', 2, 6, 5700, 'card', 'ep:postcard', 'mes/pro/card/index', 'MesProCard', 0, b'1', b'1', b'1', '1', '2026-02-21 03:16:35', '1', '2026-02-21 11:18:42', b'0');
+INSERT INTO `system_menu` VALUES (5561, '娴佽浆鍗℃煡璇�', 'mes:pro-card:query', 3, 1, 5560, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 03:16:35', '1', '2026-02-21 03:16:35', b'0');
+INSERT INTO `system_menu` VALUES (5562, '娴佽浆鍗″垱寤�', 'mes:pro-card:create', 3, 2, 5560, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 03:16:35', '1', '2026-02-21 03:16:35', b'0');
+INSERT INTO `system_menu` VALUES (5563, '娴佽浆鍗℃洿鏂�', 'mes:pro-card:update', 3, 3, 5560, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 03:16:35', '1', '2026-02-21 03:16:35', b'0');
+INSERT INTO `system_menu` VALUES (5564, '娴佽浆鍗″垹闄�', 'mes:pro-card:delete', 3, 4, 5560, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 03:16:35', '1', '2026-02-21 03:16:35', b'0');
+INSERT INTO `system_menu` VALUES (5565, '娴佽浆鍗″鍑�', 'mes:pro-card:export', 3, 5, 5560, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 03:16:35', '1', '2026-02-21 03:16:35', b'0');
+INSERT INTO `system_menu` VALUES (5566, '娴佽浆鍗″畬鎴�', 'mes:pro-card:finish', 3, 6, 5560, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-04-04 12:18:15', '1', '2026-04-04 12:18:15', b'0');
+INSERT INTO `system_menu` VALUES (5610, '妫�娴嬮」璁剧疆', '', 2, 2, 5500, 'indicator', 'ep:data-analysis', 'mes/qc/indicator/index', 'MesQcIndicator', 0, b'1', b'1', b'1', '1', '2026-02-17 08:11:31', '1', '2026-02-17 16:16:07', b'0');
+INSERT INTO `system_menu` VALUES (5611, '璐ㄦ鎸囨爣鏌ヨ', 'mes:qc-indicator:query', 3, 1, 5610, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:11:31', '1', '2026-02-17 08:11:31', b'0');
+INSERT INTO `system_menu` VALUES (5612, '璐ㄦ鎸囨爣鍒涘缓', 'mes:qc-indicator:create', 3, 2, 5610, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:11:31', '1', '2026-02-17 08:11:31', b'0');
+INSERT INTO `system_menu` VALUES (5613, '璐ㄦ鎸囨爣鏇存柊', 'mes:qc-indicator:update', 3, 3, 5610, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:11:31', '1', '2026-02-17 08:11:31', b'0');
+INSERT INTO `system_menu` VALUES (5614, '璐ㄦ鎸囨爣鍒犻櫎', 'mes:qc-indicator:delete', 3, 4, 5610, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:11:31', '1', '2026-02-17 08:11:31', b'0');
+INSERT INTO `system_menu` VALUES (5615, '璐ㄦ鎸囨爣瀵煎嚭', 'mes:qc-indicator:export', 3, 5, 5610, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:11:31', '1', '2026-02-17 08:11:31', b'0');
+INSERT INTO `system_menu` VALUES (5630, '璐ㄦ鏂规', '', 2, 3, 5500, 'template', 'ep:document-copy', 'mes/qc/template/index', 'MesQcTemplate', 0, b'1', b'1', b'1', '1', '2026-02-17 08:34:40', '1', '2026-03-04 04:29:46', b'0');
+INSERT INTO `system_menu` VALUES (5631, '璐ㄦ鏂规鏌ヨ', 'mes:qc-template:query', 3, 1, 5630, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:34:40', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_menu` VALUES (5632, '璐ㄦ鏂规鍒涘缓', 'mes:qc-template:create', 3, 2, 5630, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:34:40', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_menu` VALUES (5633, '璐ㄦ鏂规鏇存柊', 'mes:qc-template:update', 3, 3, 5630, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:34:40', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_menu` VALUES (5634, '璐ㄦ鏂规鍒犻櫎', 'mes:qc-template:delete', 3, 4, 5630, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:34:40', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_menu` VALUES (5635, '璐ㄦ鏂规瀵煎嚭', 'mes:qc-template:export', 3, 5, 5630, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 08:34:40', '1', '2026-02-18 14:12:05', b'0');
+INSERT INTO `system_menu` VALUES (5640, '鏉ユ枡妫�楠�', '', 2, 5, 5500, 'iqc', 'ep:finished', 'mes/qc/iqc/index', 'MesQcIqc', 0, b'1', b'1', b'1', '1', '2026-02-20 11:23:45', '1', '2026-02-24 05:24:01', b'0');
+INSERT INTO `system_menu` VALUES (5641, '鏉ユ枡妫�楠屾煡璇�', 'mes:qc-iqc:query', 3, 1, 5640, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:23:45', '1', '2026-02-20 11:23:45', b'0');
+INSERT INTO `system_menu` VALUES (5642, '鏉ユ枡妫�楠屽垱寤�', 'mes:qc-iqc:create', 3, 2, 5640, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:23:45', '1', '2026-02-20 11:23:45', b'0');
+INSERT INTO `system_menu` VALUES (5643, '鏉ユ枡妫�楠屾洿鏂�', 'mes:qc-iqc:update', 3, 3, 5640, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:23:45', '1', '2026-02-20 11:23:45', b'0');
+INSERT INTO `system_menu` VALUES (5644, '鏉ユ枡妫�楠屽垹闄�', 'mes:qc-iqc:delete', 3, 4, 5640, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:23:45', '1', '2026-02-20 11:23:45', b'0');
+INSERT INTO `system_menu` VALUES (5645, '鏉ユ枡妫�楠屽鍑�', 'mes:qc-iqc:export', 3, 5, 5640, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 11:23:45', '1', '2026-02-20 11:23:45', b'0');
+INSERT INTO `system_menu` VALUES (5650, '杩囩▼妫�楠�', '', 2, 6, 5500, 'ipqc', 'ep:checked', 'mes/qc/ipqc/index', 'MesQcIpqc', 0, b'1', b'1', b'1', '1', '2026-02-22 07:01:08', '1', '2026-02-22 15:02:42', b'0');
+INSERT INTO `system_menu` VALUES (5651, '杩囩▼妫�楠屾煡璇�', 'mes:qc-ipqc:query', 3, 1, 5650, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 07:01:08', '1', '2026-02-22 07:01:08', b'0');
+INSERT INTO `system_menu` VALUES (5652, '杩囩▼妫�楠屽垱寤�', 'mes:qc-ipqc:create', 3, 2, 5650, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 07:01:08', '1', '2026-02-22 07:01:08', b'0');
+INSERT INTO `system_menu` VALUES (5653, '杩囩▼妫�楠屾洿鏂�', 'mes:qc-ipqc:update', 3, 3, 5650, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 07:01:08', '1', '2026-02-22 07:01:08', b'0');
+INSERT INTO `system_menu` VALUES (5654, '杩囩▼妫�楠屽垹闄�', 'mes:qc-ipqc:delete', 3, 4, 5650, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 07:01:08', '1', '2026-02-22 07:01:08', b'0');
+INSERT INTO `system_menu` VALUES (5655, '杩囩▼妫�楠屽鍑�', 'mes:qc-ipqc:export', 3, 5, 5650, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 07:01:08', '1', '2026-02-22 07:01:08', b'0');
+INSERT INTO `system_menu` VALUES (5660, '鍑鸿揣妫�楠�', '', 2, 8, 5500, 'oqc', 'ep:sell', 'mes/qc/oqc/index', 'MesQcOqc', 0, b'1', b'1', b'1', '1', '2026-02-22 06:55:53', '1', '2026-02-22 14:58:31', b'0');
+INSERT INTO `system_menu` VALUES (5661, '鍑鸿揣妫�楠屾煡璇�', 'mes:qc-oqc:query', 3, 1, 5660, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:55:53', '1', '2026-02-22 06:55:53', b'0');
+INSERT INTO `system_menu` VALUES (5662, '鍑鸿揣妫�楠屽垱寤�', 'mes:qc-oqc:create', 3, 2, 5660, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:55:53', '1', '2026-02-22 06:55:53', b'0');
+INSERT INTO `system_menu` VALUES (5663, '鍑鸿揣妫�楠屾洿鏂�', 'mes:qc-oqc:update', 3, 3, 5660, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:55:53', '1', '2026-02-22 06:55:53', b'0');
+INSERT INTO `system_menu` VALUES (5664, '鍑鸿揣妫�楠屽垹闄�', 'mes:qc-oqc:delete', 3, 4, 5660, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:55:53', '1', '2026-02-22 06:55:53', b'0');
+INSERT INTO `system_menu` VALUES (5665, '鍑鸿揣妫�楠屽鍑�', 'mes:qc-oqc:export', 3, 5, 5660, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:55:53', '1', '2026-02-22 06:55:53', b'0');
+INSERT INTO `system_menu` VALUES (5670, '閫�鏂欐楠�', '', 2, 7, 5500, 'rqc', 'ep:warning-filled', 'mes/qc/rqc/index', 'MesQcRqc', 0, b'1', b'1', b'1', '1', '2026-02-22 06:43:25', '1', '2026-02-22 14:46:41', b'0');
+INSERT INTO `system_menu` VALUES (5671, '閫�璐ф楠屾煡璇�', 'mes:qc-rqc:query', 3, 1, 5670, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:43:25', '1', '2026-02-22 06:43:25', b'0');
+INSERT INTO `system_menu` VALUES (5672, '閫�璐ф楠屽垱寤�', 'mes:qc-rqc:create', 3, 2, 5670, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:43:25', '1', '2026-02-22 06:43:25', b'0');
+INSERT INTO `system_menu` VALUES (5673, '閫�璐ф楠屾洿鏂�', 'mes:qc-rqc:update', 3, 3, 5670, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:43:25', '1', '2026-02-22 06:43:25', b'0');
+INSERT INTO `system_menu` VALUES (5674, '閫�璐ф楠屽垹闄�', 'mes:qc-rqc:delete', 3, 4, 5670, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:43:25', '1', '2026-02-22 06:43:25', b'0');
+INSERT INTO `system_menu` VALUES (5675, '閫�璐ф楠屽鍑�', 'mes:qc-rqc:export', 3, 5, 5670, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 06:43:25', '1', '2026-02-22 06:43:25', b'0');
+INSERT INTO `system_menu` VALUES (5680, '寰呮浠诲姟', '', 2, 4, 5500, 'pending-inspect', 'ep:clock', 'mes/qc/pendinginspect/index', 'MesQcPendingInspect', 0, b'1', b'1', b'1', '1', '2026-02-23 07:15:41', '1', '2026-02-24 05:24:04', b'0');
+INSERT INTO `system_menu` VALUES (5681, '寰呮浠诲姟鏌ヨ', 'mes:qc-pending-inspect:query', 3, 1, 5680, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-23 07:15:41', '1', '2026-02-23 07:15:41', b'0');
+INSERT INTO `system_menu` VALUES (5700, '鐢熶骇绠$悊', '', 1, 50, 5100, 'pro', 'ep:management', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-02-17 19:53:35', b'0');
+INSERT INTO `system_menu` VALUES (5710, '宸ュ簭璁剧疆', '', 2, 3, 6809, 'process', 'ep:operation', 'mes/process-design/process/index', 'MesProcessDesignProcess', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-07-02 14:21:25', b'0');
+INSERT INTO `system_menu` VALUES (5711, '宸ュ簭鏌ヨ', 'mes:pro-process:query', 3, 1, 5710, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-02-17 11:39:58', b'0');
+INSERT INTO `system_menu` VALUES (5712, '宸ュ簭鍒涘缓', 'mes:pro-process:create', 3, 2, 5710, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-02-17 11:39:58', b'0');
+INSERT INTO `system_menu` VALUES (5713, '宸ュ簭鏇存柊', 'mes:pro-process:update', 3, 3, 5710, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-02-17 11:39:58', b'0');
+INSERT INTO `system_menu` VALUES (5714, '宸ュ簭鍒犻櫎', 'mes:pro-process:delete', 3, 4, 5710, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-02-17 11:39:58', b'0');
+INSERT INTO `system_menu` VALUES (5715, '宸ュ簭瀵煎嚭', 'mes:pro-process:export', 3, 5, 5710, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 11:39:58', '1', '2026-02-17 11:39:58', b'0');
+INSERT INTO `system_menu` VALUES (5720, '宸ヨ壓娴佺▼', '', 2, 4, 6809, 'route', 'ep:guide', 'mes/process-design/route/index', 'MesProcessDesignRoute', 0, b'1', b'1', b'1', '1', '2026-02-19 04:24:53', '1', '2026-07-02 14:21:17', b'0');
+INSERT INTO `system_menu` VALUES (5721, '宸ヨ壓璺嚎鏌ヨ', 'mes:pro-route:query', 3, 1, 5720, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_menu` VALUES (5722, '宸ヨ壓璺嚎鍒涘缓', 'mes:pro-route:create', 3, 2, 5720, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_menu` VALUES (5723, '宸ヨ壓璺嚎鏇存柊', 'mes:pro-route:update', 3, 3, 5720, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_menu` VALUES (5724, '宸ヨ壓璺嚎鍒犻櫎', 'mes:pro-route:delete', 3, 4, 5720, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_menu` VALUES (5725, '宸ヨ壓璺嚎瀵煎嚭', 'mes:pro-route:export', 3, 5, 5720, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0');
+INSERT INTO `system_menu` VALUES (5750, '瀹夌伅鍛煎彨', '', 2, 7, 5700, 'andon', 'ep:bell', 'mes/pro/andon/record/index', 'MesProAndonRecord', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 11:35:45', b'0');
+INSERT INTO `system_menu` VALUES (5751, '瀹夌伅璁板綍鏌ヨ', 'mes:pro-andon-record:query', 3, 1, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5752, '瀹夌伅璁板綍鍒涘缓', 'mes:pro-andon-record:create', 3, 2, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5753, '瀹夌伅璁板綍鏇存柊', 'mes:pro-andon-record:update', 3, 3, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5754, '瀹夌伅璁板綍鍒犻櫎', 'mes:pro-andon-record:delete', 3, 4, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5755, '瀹夌伅璁板綍瀵煎嚭', 'mes:pro-andon-record:export', 3, 5, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5756, '瀹夌伅閰嶇疆鏌ヨ', 'mes:pro-andon-config:query', 3, 6, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5757, '瀹夌伅閰嶇疆鍒涘缓', 'mes:pro-andon-config:create', 3, 7, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5758, '瀹夌伅閰嶇疆鏇存柊', 'mes:pro-andon-config:update', 3, 8, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5759, '瀹夌伅閰嶇疆鍒犻櫎', 'mes:pro-andon-config:delete', 3, 9, 5750, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-21 00:24:18', '1', '2026-02-21 00:24:18', b'0');
+INSERT INTO `system_menu` VALUES (5780, '浠撳偍鐗╂祦', '', 1, 280, 0, '/wls', 'ep:box', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 15:37:58', '1', '2026-07-09 10:57:36', b'0');
+INSERT INTO `system_menu` VALUES (5781, '浠撳簱璁剧疆', '', 2, 1, 5780, 'warehouse', 'ep:office-building', 'wls/warehouse/index', 'MesWmWarehouse', 0, b'1', b'1', b'1', '1', '2026-02-17 15:37:58', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5782, '浠撳簱鏌ヨ', 'mes:wm-warehouse:query', 3, 1, 5781, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 15:37:58', '1', '2026-02-17 15:37:58', b'0');
+INSERT INTO `system_menu` VALUES (5783, '浠撳簱鍒涘缓', 'mes:wm-warehouse:create', 3, 2, 5781, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 15:37:58', '1', '2026-02-17 15:37:58', b'0');
+INSERT INTO `system_menu` VALUES (5784, '浠撳簱鏇存柊', 'mes:wm-warehouse:update', 3, 3, 5781, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 15:37:58', '1', '2026-02-17 15:37:58', b'0');
+INSERT INTO `system_menu` VALUES (5785, '浠撳簱鍒犻櫎', 'mes:wm-warehouse:delete', 3, 4, 5781, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-17 15:37:58', '1', '2026-02-17 15:37:58', b'0');
+INSERT INTO `system_menu` VALUES (5786, '搴撳瓨鐜版湁閲�', '', 2, 2, 5780, 'material-stock', 'ep:document', 'wls/materialstock/index', 'MesWmMaterialStock', 0, b'1', b'1', b'1', '1', '2026-02-20 01:02:36', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5787, '搴撳瓨鍙拌处鏌ヨ', 'mes:wm-material-stock:query', 3, 1, 5786, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:02:36', '1', '2026-02-20 01:02:36', b'0');
+INSERT INTO `system_menu` VALUES (5788, '搴撳瓨鍙拌处鍒涘缓', 'mes:wm-material-stock:create', 3, 2, 5786, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:02:37', '1', '2026-02-20 01:02:37', b'0');
+INSERT INTO `system_menu` VALUES (5789, '搴撳瓨鍙拌处鏇存柊', 'mes:wm-material-stock:update', 3, 3, 5786, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:02:37', '1', '2026-02-20 01:02:37', b'0');
+INSERT INTO `system_menu` VALUES (5790, '搴撳瓨鍙拌处鍒犻櫎', 'mes:wm-material-stock:delete', 3, 4, 5786, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:02:37', '1', '2026-02-20 01:02:37', b'0');
+INSERT INTO `system_menu` VALUES (5791, '搴撳瓨鍙拌处瀵煎嚭', 'mes:wm-material-stock:export', 3, 5, 5786, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-20 01:02:37', '1', '2026-02-20 01:02:37', b'0');
+INSERT INTO `system_menu` VALUES (5792, '鍒拌揣閫氱煡', '', 2, 4, 5780, 'arrival-notice', 'ep:document-checked', 'wls/arrivalnotice/index', 'MesWmArrivalNotice', 0, b'1', b'1', b'1', '1', '2026-02-22 09:11:05', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5793, '鍒拌揣閫氱煡鍗曟煡璇�', 'mes:wm-arrival-notice:query', 3, 1, 5792, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 09:11:05', '1', '2026-02-22 09:11:05', b'0');
+INSERT INTO `system_menu` VALUES (5794, '鍒拌揣閫氱煡鍗曞垱寤�', 'mes:wm-arrival-notice:create', 3, 2, 5792, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 09:11:05', '1', '2026-02-22 09:11:05', b'0');
+INSERT INTO `system_menu` VALUES (5795, '鍒拌揣閫氱煡鍗曟洿鏂�', 'mes:wm-arrival-notice:update', 3, 3, 5792, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 09:11:05', '1', '2026-02-22 09:11:05', b'0');
+INSERT INTO `system_menu` VALUES (5796, '鍒拌揣閫氱煡鍗曞垹闄�', 'mes:wm-arrival-notice:delete', 3, 4, 5792, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 09:11:05', '1', '2026-02-22 09:11:05', b'0');
+INSERT INTO `system_menu` VALUES (5797, '鍒拌揣閫氱煡鍗曞鍑�', 'mes:wm-arrival-notice:export', 3, 5, 5792, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 09:11:05', '1', '2026-02-22 09:11:05', b'0');
+INSERT INTO `system_menu` VALUES (5798, '閲囪喘鍏ュ簱', '', 2, 3, 5780, 'item-receipt', 'ep:goods', 'wls/itemreceipt/index', 'MesWmItemReceipt', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5799, '閲囪喘鍏ュ簱鍗曟煡璇�', 'mes:wm-item-receipt:query', 3, 1, 5798, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-02-22 10:23:22', b'0');
+INSERT INTO `system_menu` VALUES (5800, '閲囪喘鍏ュ簱鍗曞垱寤�', 'mes:wm-item-receipt:create', 3, 2, 5798, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-02-22 10:23:22', b'0');
+INSERT INTO `system_menu` VALUES (5801, '閲囪喘鍏ュ簱鍗曟洿鏂�', 'mes:wm-item-receipt:update', 3, 3, 5798, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-02-22 10:23:22', b'0');
+INSERT INTO `system_menu` VALUES (5802, '閲囪喘鍏ュ簱鍗曞垹闄�', 'mes:wm-item-receipt:delete', 3, 4, 5798, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-02-22 10:23:22', b'0');
+INSERT INTO `system_menu` VALUES (5803, '閲囪喘鍏ュ簱鍗曞鍑�', 'mes:wm-item-receipt:export', 3, 5, 5798, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-02-22 10:23:22', b'0');
+INSERT INTO `system_menu` VALUES (5804, '閲囪喘鍏ュ簱鍗曞畬鎴�', 'mes:wm-item-receipt:finish', 3, 6, 5798, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-22 10:23:22', '1', '2026-03-02 11:24:29', b'0');
+INSERT INTO `system_menu` VALUES (5805, '鐢熶骇棰嗘枡', '', 2, 6, 5780, 'product-issue', 'ep:sell', 'wls/productissue/index', 'MesWmProductIssue', 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5806, '棰嗘枡鍑哄簱鍗曟煡璇�', 'mes:wm-product-issue:query', 3, 1, 5805, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-03-23 12:21:59', b'0');
+INSERT INTO `system_menu` VALUES (5807, '棰嗘枡鍑哄簱鍗曟柊澧�', 'mes:wm-product-issue:create', 3, 2, 5805, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-03-23 12:21:59', b'0');
+INSERT INTO `system_menu` VALUES (5808, '棰嗘枡鍑哄簱鍗曚慨鏀�', 'mes:wm-product-issue:update', 3, 3, 5805, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-03-23 12:21:59', b'0');
+INSERT INTO `system_menu` VALUES (5809, '棰嗘枡鍑哄簱鍗曞垹闄�', 'mes:wm-product-issue:delete', 3, 4, 5805, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-03-23 12:21:59', b'0');
+INSERT INTO `system_menu` VALUES (5810, '棰嗘枡鍑哄簱鍗曞鍑�', 'mes:wm-product-issue:export', 3, 5, 5805, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-03-23 12:21:59', b'0');
+INSERT INTO `system_menu` VALUES (5811, '棰嗘枡鍑哄簱鍗曞畬鎴�', 'mes:wm-product-issue:finish', 3, 6, 5805, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-26 15:53:24', '1', '2026-03-30 03:06:32', b'0');
+INSERT INTO `system_menu` VALUES (5819, '浜у搧鍏ュ簱', '', 2, 8, 5780, 'product-receipt', 'ep:box', 'wls/productreceipt/index', 'MesWmProductReceipt', 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5820, '浜у搧鍏ュ簱鍗曟煡璇�', 'mes:wm-product-receipt:query', 3, 1, 5819, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-03-01 06:03:44', b'0');
+INSERT INTO `system_menu` VALUES (5821, '浜у搧鍏ュ簱鍗曟柊澧�', 'mes:wm-product-receipt:create', 3, 2, 5819, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-03-01 06:03:44', b'0');
+INSERT INTO `system_menu` VALUES (5822, '浜у搧鍏ュ簱鍗曚慨鏀�', 'mes:wm-product-receipt:update', 3, 3, 5819, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-03-01 06:03:44', b'0');
+INSERT INTO `system_menu` VALUES (5823, '浜у搧鍏ュ簱鍗曞垹闄�', 'mes:wm-product-receipt:delete', 3, 4, 5819, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-03-01 06:03:44', b'0');
+INSERT INTO `system_menu` VALUES (5824, '浜у搧鍏ュ簱鍗曞鍑�', 'mes:wm-product-receipt:export', 3, 5, 5819, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-03-01 06:03:44', b'0');
+INSERT INTO `system_menu` VALUES (5825, '浜у搧鍏ュ簱鍗曞畬鎴�', 'mes:wm-product-receipt:finish', 3, 6, 5819, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 04:03:25', '1', '2026-03-02 11:24:29', b'0');
+INSERT INTO `system_menu` VALUES (5830, '閲囪喘閫�璐�', '', 2, 5, 5780, 'return-vendor', 'ep:box', 'wls/returnvendor/index', 'MesWmReturnVendor', 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5831, '渚涘簲鍟嗛��璐у崟鏌ヨ', 'mes:wm-return-vendor:query', 3, 1, 5830, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-02-28 09:47:48', b'0');
+INSERT INTO `system_menu` VALUES (5832, '渚涘簲鍟嗛��璐у崟鏂板', 'mes:wm-return-vendor:create', 3, 2, 5830, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-02-28 09:47:48', b'0');
+INSERT INTO `system_menu` VALUES (5833, '渚涘簲鍟嗛��璐у崟淇敼', 'mes:wm-return-vendor:update', 3, 3, 5830, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-02-28 09:47:48', b'0');
+INSERT INTO `system_menu` VALUES (5834, '渚涘簲鍟嗛��璐у崟鍒犻櫎', 'mes:wm-return-vendor:delete', 3, 4, 5830, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-02-28 09:47:48', b'0');
+INSERT INTO `system_menu` VALUES (5835, '渚涘簲鍟嗛��璐у崟瀵煎嚭', 'mes:wm-return-vendor:export', 3, 5, 5830, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-02-28 09:47:48', b'0');
+INSERT INTO `system_menu` VALUES (5836, '渚涘簲鍟嗛��璐у崟鐘舵�佸彉鏇�', 'mes:wm-return-vendor:update-status', 3, 6, 5830, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 09:47:48', '1', '2026-02-28 09:47:48', b'0');
+INSERT INTO `system_menu` VALUES (5840, '鐢熶骇閫�鏂�', '', 2, 7, 5780, 'return-issue', 'ep:refresh-left', 'wls/returnissue/index', 'MesWmReturnIssue', 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5841, '鐢熶骇閫�鏂欏崟鏌ヨ', 'mes:wm-return-issue:query', 3, 1, 5840, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-02-28 14:11:04', b'0');
+INSERT INTO `system_menu` VALUES (5842, '鐢熶骇閫�鏂欏崟鏂板', 'mes:wm-return-issue:create', 3, 2, 5840, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-02-28 14:11:04', b'0');
+INSERT INTO `system_menu` VALUES (5843, '鐢熶骇閫�鏂欏崟淇敼', 'mes:wm-return-issue:update', 3, 3, 5840, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-02-28 14:11:04', b'0');
+INSERT INTO `system_menu` VALUES (5844, '鐢熶骇閫�鏂欏崟鍒犻櫎', 'mes:wm-return-issue:delete', 3, 4, 5840, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-02-28 14:11:04', b'0');
+INSERT INTO `system_menu` VALUES (5845, '鐢熶骇閫�鏂欏崟瀵煎嚭', 'mes:wm-return-issue:export', 3, 5, 5840, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-02-28 14:11:04', b'0');
+INSERT INTO `system_menu` VALUES (5846, '鐢熶骇閫�鏂欏崟鎵ц', 'mes:wm-return-issue:finish', 3, 6, 5840, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-02-28 14:11:04', '1', '2026-03-02 11:24:30', b'0');
+INSERT INTO `system_menu` VALUES (5847, '閿�鍞��璐�', '', 2, 11, 5780, 'return-sales', 'ep:refresh-left', 'wls/returnsales/index', 'MesWmReturnSales', 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5848, '閿�鍞��璐у崟鏌ヨ', 'mes:wm-return-sales:query', 3, 1, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5849, '閿�鍞��璐у崟鏂板', 'mes:wm-return-sales:create', 3, 2, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5850, '閿�鍞��璐у崟淇敼', 'mes:wm-return-sales:update', 3, 3, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5851, '閿�鍞��璐у崟鍒犻櫎', 'mes:wm-return-sales:delete', 3, 4, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5852, '閿�鍞��璐у崟瀵煎嚭', 'mes:wm-return-sales:export', 3, 5, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5853, '閿�鍞��璐у崟鎻愪氦', 'mes:wm-return-sales:submit', 3, 6, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5854, '閿�鍞��璐у崟瀹屾垚閫�璐�', 'mes:wm-return-sales:finish', 3, 7, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-02 11:24:29', b'0');
+INSERT INTO `system_menu` VALUES (5855, '閿�鍞��璐у崟鎵ц涓婃灦', 'mes:wm-return-sales:stock', 3, 8, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5856, '閿�鍞��璐у崟鍙栨秷', 'mes:wm-return-sales:cancel', 3, 9, 5847, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-01 10:31:35', '1', '2026-03-01 10:31:35', b'0');
+INSERT INTO `system_menu` VALUES (5857, '鏉傞」鍑哄簱', '', 2, 20, 5780, 'misc-issue', 'ep:sell', 'wls/miscissue/index', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5858, '鏉傞」鍑哄簱鏌ヨ', 'mes:wm-misc-issue:query', 3, 1, 5857, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-03-02 14:33:34', b'0');
+INSERT INTO `system_menu` VALUES (5859, '鏉傞」鍑哄簱鏂板', 'mes:wm-misc-issue:create', 3, 2, 5857, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-03-02 14:33:34', b'0');
+INSERT INTO `system_menu` VALUES (5860, '鏉傞」鍑哄簱淇敼', 'mes:wm-misc-issue:update', 3, 3, 5857, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-03-02 14:33:34', b'0');
+INSERT INTO `system_menu` VALUES (5861, '鏉傞」鍑哄簱鍒犻櫎', 'mes:wm-misc-issue:delete', 3, 4, 5857, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-03-02 14:33:34', b'0');
+INSERT INTO `system_menu` VALUES (5862, '鏉傞」鍑哄簱瀵煎嚭', 'mes:wm-misc-issue:export', 3, 5, 5857, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-03-02 14:33:34', b'0');
+INSERT INTO `system_menu` VALUES (5863, '鏉傞」鍑哄簱鎵ц', 'mes:wm-misc-issue:finish', 3, 6, 5857, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:33:34', '1', '2026-03-02 14:33:34', b'0');
+INSERT INTO `system_menu` VALUES (5867, '鍙戣揣閫氱煡', '', 2, 9, 5780, 'sales-notice', 'fa-solid:notes-medical', 'wls/salesnotice/index', 'MesWmSalesNotice', 0, b'1', b'1', b'1', '1', '2026-03-30 08:54:30', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5868, '鏌ヨ鍙戣揣閫氱煡', 'mes:wm-sales-notice:query', 3, 1, 5867, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-30 08:54:30', '1', '2026-03-30 16:57:31', b'0');
+INSERT INTO `system_menu` VALUES (5869, '鍒涘缓鍙戣揣閫氱煡', 'mes:wm-sales-notice:create', 3, 2, 5867, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-30 08:54:30', '1', '2026-03-30 16:57:37', b'0');
+INSERT INTO `system_menu` VALUES (5870, '鏇存柊鍙戣揣閫氱煡', 'mes:wm-sales-notice:update', 3, 3, 5867, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-30 08:54:30', '1', '2026-03-30 16:57:49', b'0');
+INSERT INTO `system_menu` VALUES (5871, '鍒犻櫎鍙戣揣閫氱煡', 'mes:wm-sales-notice:delete', 3, 4, 5867, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-30 08:54:30', '1', '2026-03-30 16:57:57', b'0');
+INSERT INTO `system_menu` VALUES (5872, '瀵煎嚭鍙戣揣閫氱煡', 'mes:wm-sales-notice:export', 3, 5, 5867, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-30 08:54:30', '1', '2026-03-30 16:58:03', b'0');
+INSERT INTO `system_menu` VALUES (5873, '澶栧崗鍏ュ簱', '', 2, 18, 5780, 'outsource-receipt', 'fa-solid:truck', 'wls/outsourcereceipt/index', 'MesWmOutsourceReceipt', 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5874, '澶栧崗鍏ュ簱鍗曟煡璇�', 'mes:wm-outsource-receipt:query', 3, 1, 5873, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-03-31 15:36:37', b'0');
+INSERT INTO `system_menu` VALUES (5875, '澶栧崗鍏ュ簱鍗曟柊澧�', 'mes:wm-outsource-receipt:create', 3, 2, 5873, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-03-31 15:36:37', b'0');
+INSERT INTO `system_menu` VALUES (5876, '澶栧崗鍏ュ簱鍗曚慨鏀�', 'mes:wm-outsource-receipt:update', 3, 3, 5873, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-03-31 15:36:37', b'0');
+INSERT INTO `system_menu` VALUES (5877, '澶栧崗鍏ュ簱鍗曞垹闄�', 'mes:wm-outsource-receipt:delete', 3, 4, 5873, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-03-31 15:36:37', b'0');
+INSERT INTO `system_menu` VALUES (5878, '澶栧崗鍏ュ簱鍗曞鍑�', 'mes:wm-outsource-receipt:export', 3, 5, 5873, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-03-31 15:36:37', b'0');
+INSERT INTO `system_menu` VALUES (5879, '澶栧崗鍏ュ簱鍗曞畬鎴�', 'mes:wm-outsource-receipt:finish', 3, 6, 5873, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-31 15:36:37', '1', '2026-03-31 15:36:37', b'0');
+INSERT INTO `system_menu` VALUES (5881, '澶栧崗鍙戞枡', '', 2, 17, 5780, 'outsource-issue', 'ep:sell', 'wls/outsourceissue/index', 'MesWmOutsourceIssue', 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5882, '澶栧崗鍙戞枡鍗曟煡璇�', 'mes:wm-outsource-issue:query', 3, 1, 5881, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-03-02 14:36:04', b'0');
+INSERT INTO `system_menu` VALUES (5883, '澶栧崗鍙戞枡鍗曟柊澧�', 'mes:wm-outsource-issue:create', 3, 2, 5881, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-03-02 14:36:04', b'0');
+INSERT INTO `system_menu` VALUES (5884, '澶栧崗鍙戞枡鍗曚慨鏀�', 'mes:wm-outsource-issue:update', 3, 3, 5881, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-03-02 14:36:04', b'0');
+INSERT INTO `system_menu` VALUES (5885, '澶栧崗鍙戞枡鍗曞垹闄�', 'mes:wm-outsource-issue:delete', 3, 4, 5881, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-03-02 14:36:04', b'0');
+INSERT INTO `system_menu` VALUES (5886, '澶栧崗鍙戞枡鍗曞鍑�', 'mes:wm-outsource-issue:export', 3, 5, 5881, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-03-02 14:36:04', b'0');
+INSERT INTO `system_menu` VALUES (5887, '澶栧崗鍙戞枡鍗曟墽琛屽嚭搴�', 'mes:wm-outsource-issue:execute', 3, 6, 5881, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-02 14:36:04', '1', '2026-03-02 14:36:04', b'0');
+INSERT INTO `system_menu` VALUES (5888, '鏉傞」鍏ュ簱', '', 2, 19, 5780, 'misc-receipt', 'ep:bottom', 'wls/miscreceipt/index', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5889, '鏉傞」鍏ュ簱鏌ヨ', 'mes:wm:misc-receipt:query', 3, 1, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5890, '鏉傞」鍏ュ簱鍒涘缓', 'mes:wm:misc-receipt:create', 3, 2, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5891, '鏉傞」鍏ュ簱鏇存柊', 'mes:wm:misc-receipt:update', 3, 3, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5892, '鏉傞」鍏ュ簱鍒犻櫎', 'mes:wm:misc-receipt:delete', 3, 4, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5893, '鏉傞」鍏ュ簱鎻愪氦', 'mes:wm:misc-receipt:submit', 3, 5, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5894, '鏉傞」鍏ュ簱鎵ц', 'mes:wm:misc-receipt:finish', 3, 6, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5895, '鏉傞」鍏ュ簱鍙栨秷', 'mes:wm:misc-receipt:cancel', 3, 7, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5896, '鏉傞」鍏ュ簱瀵煎嚭', 'mes:wm:misc-receipt:export', 3, 8, 5888, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-03 07:17:50', '1', '2026-03-03 07:17:50', b'0');
+INSERT INTO `system_menu` VALUES (5897, 'SN 鐮�', '', 2, 16, 5780, 'sn', 'ep:document', 'wls/sn/index', 'MesWmSn', 0, b'1', b'1', b'1', '1', '2026-03-05 01:30:21', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5898, 'SN 鐮佹煡璇�', 'mes:wm-sn:query', 3, 1, 5897, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-05 01:30:21', '1', '2026-03-05 01:30:21', b'0');
+INSERT INTO `system_menu` VALUES (5899, 'SN 鐮佺敓鎴�', 'mes:wm-sn:create', 3, 2, 5897, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-05 01:30:21', '1', '2026-03-05 01:30:21', b'0');
+INSERT INTO `system_menu` VALUES (5900, 'SN 鐮佸垹闄�', 'mes:wm-sn:delete', 3, 4, 5897, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-05 01:30:21', '1', '2026-03-05 01:30:21', b'0');
+INSERT INTO `system_menu` VALUES (5901, 'SN 鐮佸鍑�', 'mes:wm-sn:export', 3, 5, 5897, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-05 01:30:21', '1', '2026-03-05 01:30:21', b'0');
+INSERT INTO `system_menu` VALUES (5906, '鏉$爜閰嶇疆', '', 2, 15, 5780, 'barcode/config', 'fa:barcode', 'wls/barcode/config/index', 'MesWmBarcodeConfig', 0, b'0', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5907, '鏉$爜閰嶇疆鏌ヨ', 'mes:wm-barcode-config:query', 3, 1, 5906, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 21:09:11', b'0');
+INSERT INTO `system_menu` VALUES (5908, '鏉$爜閰嶇疆鍒涘缓', 'mes:wm-barcode-config:create', 3, 2, 5906, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 21:09:16', b'0');
+INSERT INTO `system_menu` VALUES (5909, '鏉$爜閰嶇疆鏇存柊', 'mes:wm-barcode-config:update', 3, 3, 5906, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 21:09:21', b'0');
+INSERT INTO `system_menu` VALUES (5910, '鏉$爜閰嶇疆鍒犻櫎', 'mes:wm-barcode-config:delete', 3, 4, 5906, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 21:09:26', b'0');
+INSERT INTO `system_menu` VALUES (5911, '璧嬭兘绠$悊', '', 2, 15, 5780, 'barcode', 'fa:qrcode', 'wls/barcode/index', 'MesWmBarcode', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5912, '鏉$爜娓呭崟鏌ヨ', 'mes:wm-barcode:query', 3, 1, 5911, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 09:58:59', b'0');
+INSERT INTO `system_menu` VALUES (5913, '鏉$爜娓呭崟鍒涘缓', 'mes:wm-barcode:create', 3, 2, 5911, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 09:59:03', b'0');
+INSERT INTO `system_menu` VALUES (5914, '鏉$爜娓呭崟鏇存柊', 'mes:wm-barcode:update', 3, 3, 5911, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 09:59:08', b'0');
+INSERT INTO `system_menu` VALUES (5915, '鏉$爜娓呭崟鍒犻櫎', 'mes:wm-barcode:delete', 3, 4, 5911, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-05 14:37:20', '1', '2026-03-06 09:59:12', b'0');
+INSERT INTO `system_menu` VALUES (5916, '鏉$爜娓呭崟瀵煎嚭', 'mes:wm-barcode:export', 3, 5, 5911, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-07 02:08:17', '1', '2026-03-07 02:08:17', b'0');
+INSERT INTO `system_menu` VALUES (5917, '瑁呯绠$悊', '', 2, 14, 5780, 'packages', 'ep:box', 'wls/packages/index', 'MesWmPackages', 0, b'1', b'1', b'1', '1', '2026-03-08 02:05:46', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5918, '瑁呯绠$悊鏌ヨ', 'mes:wm-package:query', 3, 1, 5917, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-08 02:05:46', '1', '2026-03-08 02:05:46', b'0');
+INSERT INTO `system_menu` VALUES (5919, '瑁呯绠$悊鏂板', 'mes:wm-package:create', 3, 2, 5917, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-08 02:05:46', '1', '2026-03-08 02:05:46', b'0');
+INSERT INTO `system_menu` VALUES (5920, '瑁呯绠$悊淇敼', 'mes:wm-package:update', 3, 3, 5917, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-08 02:05:46', '1', '2026-03-08 02:05:46', b'0');
+INSERT INTO `system_menu` VALUES (5921, '瑁呯绠$悊鍒犻櫎', 'mes:wm-package:delete', 3, 4, 5917, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-08 02:05:46', '1', '2026-03-08 02:05:46', b'0');
+INSERT INTO `system_menu` VALUES (5922, '杞Щ璋冩嫧', '', 2, 12, 5780, 'transfer', 'ep:sort', 'wls/transfer/index', 'MesWmTransfer', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5923, '璋冩嫧鍗曟煡璇�', 'mes:wm-transfer:query', 3, 1, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5924, '璋冩嫧鍗曟柊澧�', 'mes:wm-transfer:create', 3, 2, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5925, '璋冩嫧鍗曚慨鏀�', 'mes:wm-transfer:update', 3, 3, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5926, '璋冩嫧鍗曞垹闄�', 'mes:wm-transfer:delete', 3, 4, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5927, '璋冩嫧鍗曞鍑�', 'mes:wm-transfer:export', 3, 5, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5928, '璋冩嫧鍗曟彁浜�', 'mes:wm-transfer:submit', 3, 6, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5929, '璋冩嫧鍗曠‘璁�', 'mes:wm-transfer:confirm', 3, 7, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5930, '璋冩嫧鍗曞畬鎴�', 'mes:wm-transfer:finish', 3, 8, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5931, '璋冩嫧鍗曞彇娑�', 'mes:wm-transfer:cancel', 3, 9, 5922, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-08 11:55:25', '1', '2026-03-08 11:55:25', b'0');
+INSERT INTO `system_menu` VALUES (5950, '搴撳瓨鐩樼偣', '', 1, 13, 5780, 'stock-taking', 'ep:circle-check-filled', '', '', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 21:19:09', b'0');
+INSERT INTO `system_menu` VALUES (5951, '鐩樼偣鏂规', '', 2, 1, 5950, 'plan', 'ep:document', 'wls/stocktaking/plan/index', 'MesWmStockTakingPlan', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-07-09 02:24:19', b'0');
+INSERT INTO `system_menu` VALUES (5952, '鐩樼偣鏂规鏌ヨ', 'mes:wm-stock-taking-plan:query', 3, 1, 5951, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 13:35:06', b'0');
+INSERT INTO `system_menu` VALUES (5953, '鐩樼偣鏂规鍒涘缓', 'mes:wm-stock-taking-plan:create', 3, 2, 5951, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 13:35:07', b'0');
+INSERT INTO `system_menu` VALUES (5954, '鐩樼偣鏂规鏇存柊', 'mes:wm-stock-taking-plan:update', 3, 3, 5951, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 13:35:09', b'0');
+INSERT INTO `system_menu` VALUES (5955, '鐩樼偣鏂规鍒犻櫎', 'mes:wm-stock-taking-plan:delete', 3, 4, 5951, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 13:35:11', b'0');
+INSERT INTO `system_menu` VALUES (5956, '鐩樼偣鏂规瀵煎嚭', 'mes:wm-stock-taking-plan:export', 3, 5, 5951, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 13:35:13', b'0');
+INSERT INTO `system_menu` VALUES (5957, '鐩樼偣浠诲姟', '', 2, 2, 5950, 'task', 'ep:list', 'wls/stocktaking/task/index', 'MesWmStockTakingTask', 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-07-09 02:24:19', b'0');
+INSERT INTO `system_menu` VALUES (5958, '鐩樼偣浠诲姟鏌ヨ', 'mes:wm-stock-taking-task:query', 3, 1, 5957, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_menu` VALUES (5959, '鐩樼偣浠诲姟鍒涘缓', 'mes:wm-stock-taking-task:create', 3, 2, 5957, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_menu` VALUES (5960, '鐩樼偣浠诲姟鏇存柊', 'mes:wm-stock-taking-task:update', 3, 3, 5957, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_menu` VALUES (5961, '鐩樼偣浠诲姟鍒犻櫎', 'mes:wm-stock-taking-task:delete', 3, 4, 5957, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_menu` VALUES (5962, '鐩樼偣浠诲姟瀵煎嚭', 'mes:wm-stock-taking-task:export', 3, 5, 5957, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-09 00:00:00', '1', '2026-03-09 00:00:00', b'0');
+INSERT INTO `system_menu` VALUES (5966, '鎵规杩芥函', '', 2, 9, 5500, 'batch-trace', 'ep:aim', 'mes/qc/batchtrace/index', 'BatchTrace', 0, b'1', b'1', b'1', '1', '2026-03-14 06:59:25', '1', '2026-04-05 09:39:54', b'0');
+INSERT INTO `system_menu` VALUES (5967, '鎵规杩芥函鏌ヨ', 'mes:wm-batch:query', 3, 1, 5966, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-03-14 06:59:25', '1', '2026-03-14 06:59:25', b'0');
+INSERT INTO `system_menu` VALUES (5969, '鎶ュ憡瀹℃壒', 'mes:pro-feedback:approve', 3, 6, 5550, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-03-19 08:51:16', '1', '2026-03-19 08:51:16', b'0');
+INSERT INTO `system_menu` VALUES (5970, '閿�鍞嚭搴�', '', 2, 10, 5780, 'product-sales', 'ep:sell', 'wls/productsales/index', 'MesWmProductSales', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-07-09 02:22:49', b'0');
+INSERT INTO `system_menu` VALUES (5971, '鏌ヨ閿�鍞嚭搴�', 'mes:wm-product-sales:query', 3, 1, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5972, '鍒涘缓閿�鍞嚭搴�', 'mes:wm-product-sales:create', 3, 2, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5973, '鏇存柊閿�鍞嚭搴�', 'mes:wm-product-sales:update', 3, 3, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5974, '鍒犻櫎閿�鍞嚭搴�', 'mes:wm-product-sales:delete', 3, 4, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5975, '瀵煎嚭閿�鍞嚭搴�', 'mes:wm-product-sales:export', 3, 5, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5976, '鎻愪氦閿�鍞嚭搴�', 'mes:wm-product-sales:submit', 3, 6, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5977, '鎵ц鎷h揣', 'mes:wm-product-sales:stock', 3, 7, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5978, '濉啓杩愬崟', 'mes:wm-product-sales:shipping', 3, 8, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5979, '鎵ц鍑哄簱', 'mes:wm-product-sales:finish', 3, 9, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5980, '鍙栨秷閿�鍞嚭搴�', 'mes:wm-product-sales:cancel', 3, 10, 5970, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-03-30 10:37:08', '', '2026-03-30 10:37:08', b'0');
+INSERT INTO `system_menu` VALUES (5981, '宸ヤ綔璁板綍', '', 2, 99, 5700, 'workrecord', 'ep:timer', 'mes/pro/workrecord/index', 'MesProWorkRecordLog', 0, b'1', b'1', b'1', '1', '2026-04-05 14:08:44', '1', '2026-04-05 14:08:44', b'0');
+INSERT INTO `system_menu` VALUES (5982, '宸ヤ綔璁板綍鏌ヨ', 'mes:pro-workrecord:query', 3, 1, 5981, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-04-05 14:08:44', '1', '2026-04-05 14:08:44', b'0');
+INSERT INTO `system_menu` VALUES (5983, '宸ヤ綔璁板綍瀵煎嚭', 'mes:pro-workrecord:export', 3, 2, 5981, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-04-05 14:08:44', '1', '2026-04-05 14:08:44', b'0');
+INSERT INTO `system_menu` VALUES (5984, '涓婂伐涓嬪伐', 'mes:pro-workrecord:clock', 3, 3, 5981, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-04-05 14:08:44', '1', '2026-04-05 14:08:44', b'0');
+INSERT INTO `system_menu` VALUES (5985, 'MES 棣栭〉', 'mes:home:query', 2, 0, 5100, 'mes/home/index', 'ep:home-filled', 'mes/home/index', 'MesHome', 0, b'1', b'1', b'1', '1', '2026-04-05 23:24:03', '1', '2026-04-06 01:20:52', b'0');
+INSERT INTO `system_menu` VALUES (6001, '浜哄姏璧勬簮', '', 1, 50, 0, '/hrm', 'ep:user', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:42:38', b'0');
+INSERT INTO `system_menu` VALUES (6002, '浜轰簨瀹℃壒', '', 1, 1, 6001, 'approval', 'ep:document-checked', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (6003, '璇峰亣鐢宠', '', 2, 1, 6002, 'leave', 'ep:calendar', 'hrm/leave/index', 'HrmLeaveApplication', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:43:42', b'0');
+INSERT INTO `system_menu` VALUES (6004, '璋冨矖鐢宠', '', 2, 2, 6002, 'transfer', 'ep:sort', 'hrm/transfer/index', 'HrmTransferApplication', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:44:46', b'0');
+INSERT INTO `system_menu` VALUES (6005, '绂昏亴鐢宠', '', 2, 3, 6002, 'resignation', 'ep:switch-button', 'hrm/resignation/index', 'HrmResignationApplication', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:45:19', b'0');
+INSERT INTO `system_menu` VALUES (6006, '鍛樺伐绠$悊', '', 2, 0, 6001, 'employee', 'ep:avatar', 'hrm/employee/index', 'HrmEmployee', 0, b'1', b'1', b'1', '1', '2026-07-03 07:20:09', '1', '2026-07-03 07:20:09', b'0');
+INSERT INTO `system_menu` VALUES (6010, '鑰冨嫟绠$悊', '', 1, 2, 6001, 'attendance', 'ep:clock', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (6011, '鑰冨嫟璁板綍', '', 2, 1, 6010, 'record', 'ep:document', 'hrm/attendance/record/index', 'HrmAttendanceRecord', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (6012, '鑰冨嫟寮傚父', '', 2, 2, 6010, 'exception', 'ep:warning', 'hrm/attendance/exception/index', 'HrmAttendanceException', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (6013, '鑰冨嫟瑙勫垯', '', 2, 0, 6010, 'rule', 'ep:setting', 'hrm/attendance/rule/index', 'HrmAttendanceRule', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0');
+INSERT INTO `system_menu` VALUES (6014, '鑺傚亣鏃ラ厤缃�', '', 2, 3, 6010, 'holiday', 'ep:calendar', 'hrm/attendance/holiday/index', 'HrmAttendanceHoliday', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0');
+INSERT INTO `system_menu` VALUES (6015, '鑰冨嫟缁熻', '', 2, 4, 6010, 'summary', 'ep:data-analysis', 'hrm/attendance/summary/index', 'HrmAttendanceSummary', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0');
+INSERT INTO `system_menu` VALUES (6020, '钖叕绠$悊', '', 1, 3, 6001, 'salary', 'ep:money', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (6021, '钖叕鏍哥畻', '', 2, 1, 6020, 'calculation', 'ep:coin', 'hrm/salary/calculation/index', 'HrmSalaryCalculation', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 17:33:00', b'0');
+INSERT INTO `system_menu` VALUES (6022, '钖祫鍙戞斁', '', 2, 2, 6020, 'payment', 'ep:wallet', 'hrm/salary/payment/index', 'HrmSalaryPayment', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (6023, '鍛樺伐绀句繚鍏Н閲戞。妗�', '', 2, 3, 6020, 'social-security', 'ep:setting', 'hrm/salary/employee-social-security/index', 'HrmSocialSecurityConfig', 0, b'1', b'1', b'1', '1', '2026-07-06 07:28:36', '1', '2026-07-07 09:23:17', b'0');
+INSERT INTO `system_menu` VALUES (6024, '涓◣绋庣巼閰嶇疆', '', 2, 6, 6020, 'tax-rate', 'ep:document', 'hrm/salary/tax-rate-config/index', 'HrmTaxRateConfig', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-07 13:25:55', b'0');
+INSERT INTO `system_menu` VALUES (6400, 'WMS 绯荤粺', '', 1, 310, 0, '/wms', 'ep:box', '', '', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0');
+INSERT INTO `system_menu` VALUES (6401, 'WMS鍩虹鏁版嵁', '', 1, 6, 6400, 'md', 'ep:files', '', '', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-07-01 14:45:17', b'0');
+INSERT INTO `system_menu` VALUES (6402, '浠撳簱绠$悊', '', 2, 1, 6401, 'warehouse', 'ep:office-building', 'wms/md/warehouse/index', 'WmsWarehouse', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-05-10 00:54:16', b'0');
+INSERT INTO `system_menu` VALUES (6403, '浠撳簱鏌ヨ', 'wms:warehouse:query', 3, 1, 6402, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0');
+INSERT INTO `system_menu` VALUES (6404, '浠撳簱鍒涘缓', 'wms:warehouse:create', 3, 2, 6402, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0');
+INSERT INTO `system_menu` VALUES (6405, '浠撳簱鏇存柊', 'wms:warehouse:update', 3, 3, 6402, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0');
+INSERT INTO `system_menu` VALUES (6406, '浠撳簱鍒犻櫎', 'wms:warehouse:delete', 3, 4, 6402, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0');
+INSERT INTO `system_menu` VALUES (6411, '鍟嗗搧鍝佺墝', '', 2, 3, 6401, 'item/brand', 'ep:price-tag', 'wms/md/item/brand/index', 'WmsItemBrand', 0, b'1', b'1', b'1', '1', '2026-05-10 01:43:12', '1', '2026-05-10 02:12:51', b'0');
+INSERT INTO `system_menu` VALUES (6412, '鍝佺墝鏌ヨ', 'wms:item-brand:query', 3, 1, 6411, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 01:43:12', '1', '2026-05-10 01:43:12', b'0');
+INSERT INTO `system_menu` VALUES (6413, '鍝佺墝鍒涘缓', 'wms:item-brand:create', 3, 2, 6411, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 01:43:12', '1', '2026-05-10 01:43:12', b'0');
+INSERT INTO `system_menu` VALUES (6414, '鍝佺墝鏇存柊', 'wms:item-brand:update', 3, 3, 6411, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 01:43:12', '1', '2026-05-10 01:43:12', b'0');
+INSERT INTO `system_menu` VALUES (6415, '鍝佺墝鍒犻櫎', 'wms:item-brand:delete', 3, 4, 6411, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 01:43:12', '1', '2026-05-10 01:43:12', b'0');
+INSERT INTO `system_menu` VALUES (6416, '鍝佺墝瀵煎嚭', 'wms:item-brand:export', 3, 5, 6411, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 01:43:12', '1', '2026-05-10 01:43:12', b'0');
+INSERT INTO `system_menu` VALUES (6417, '浠撳簱瀵煎嚭', 'wms:warehouse:export', 3, 5, 6402, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 02:42:47', '1', '2026-05-10 02:42:47', b'0');
+INSERT INTO `system_menu` VALUES (6419, '鍟嗗搧鍒嗙被', '', 2, 2, 6401, 'item/category', 'ep:folder', 'wms/md/item/category/index', 'WmsItemCategory', 0, b'1', b'1', b'1', '1', '2026-05-10 07:14:18', '1', '2026-05-10 07:14:18', b'0');
+INSERT INTO `system_menu` VALUES (6420, '鍒嗙被鏌ヨ', 'wms:item-category:query', 3, 1, 6419, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 07:14:18', '1', '2026-05-10 07:14:18', b'0');
+INSERT INTO `system_menu` VALUES (6421, '鍒嗙被鍒涘缓', 'wms:item-category:create', 3, 2, 6419, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 07:14:18', '1', '2026-05-10 07:14:18', b'0');
+INSERT INTO `system_menu` VALUES (6422, '鍒嗙被鏇存柊', 'wms:item-category:update', 3, 3, 6419, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 07:14:18', '1', '2026-05-10 07:14:18', b'0');
+INSERT INTO `system_menu` VALUES (6423, '鍒嗙被鍒犻櫎', 'wms:item-category:delete', 3, 4, 6419, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 07:14:18', '1', '2026-05-10 07:14:18', b'0');
+INSERT INTO `system_menu` VALUES (6424, '鍟嗗搧绠$悊', '', 2, 4, 6401, 'item', 'ep:goods', 'wms/md/item/index', 'WmsItem', 0, b'1', b'1', b'1', '1', '2026-05-10 09:15:34', '1', '2026-05-10 09:15:34', b'0');
+INSERT INTO `system_menu` VALUES (6425, '鍟嗗搧鏌ヨ', 'wms:item:query', 3, 1, 6424, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 09:15:34', '1', '2026-05-10 09:15:34', b'0');
+INSERT INTO `system_menu` VALUES (6426, '鍟嗗搧鍒涘缓', 'wms:item:create', 3, 2, 6424, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 09:15:34', '1', '2026-05-10 09:15:34', b'0');
+INSERT INTO `system_menu` VALUES (6427, '鍟嗗搧鏇存柊', 'wms:item:update', 3, 3, 6424, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 09:15:34', '1', '2026-05-10 09:15:34', b'0');
+INSERT INTO `system_menu` VALUES (6428, '鍟嗗搧鍒犻櫎', 'wms:item:delete', 3, 4, 6424, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 09:15:34', '1', '2026-05-10 09:15:34', b'0');
+INSERT INTO `system_menu` VALUES (6429, '鍟嗗搧瀵煎嚭', 'wms:item:export', 3, 5, 6424, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 09:15:34', '1', '2026-05-10 09:15:34', b'0');
+INSERT INTO `system_menu` VALUES (6430, '寰�鏉ヤ紒涓�', '', 2, 5, 6401, 'merchant', 'ep:office-building', 'wms/md/merchant/index', 'WmsMerchant', 0, b'1', b'1', b'1', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:48:07', b'0');
+INSERT INTO `system_menu` VALUES (6431, '寰�鏉ヤ紒涓氭煡璇�', 'wms:merchant:query', 3, 1, 6430, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_menu` VALUES (6432, '寰�鏉ヤ紒涓氬垱寤�', 'wms:merchant:create', 3, 2, 6430, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_menu` VALUES (6433, '寰�鏉ヤ紒涓氭洿鏂�', 'wms:merchant:update', 3, 3, 6430, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_menu` VALUES (6434, '寰�鏉ヤ紒涓氬垹闄�', 'wms:merchant:delete', 3, 4, 6430, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_menu` VALUES (6435, '寰�鏉ヤ紒涓氬鍑�', 'wms:merchant:export', 3, 5, 6430, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 15:26:09', '1', '2026-05-10 15:26:09', b'0');
+INSERT INTO `system_menu` VALUES (6440, 'WMS搴撳瓨绠$悊', '', 1, 5, 6400, 'inventory', 'ep:box', '', '', 0, b'1', b'1', b'1', '1', '2026-05-10 17:51:46', '1', '2026-07-01 14:46:00', b'0');
+INSERT INTO `system_menu` VALUES (6441, '搴撳瓨缁熻', '', 2, 1, 6440, 'index', 'ep:data-board', 'wms/inventory/index/index', 'WmsInventory', 0, b'1', b'1', b'1', '1', '2026-05-10 17:51:46', '1', '2026-05-11 02:08:28', b'0');
+INSERT INTO `system_menu` VALUES (6442, '搴撳瓨缁熻鏌ヨ', 'wms:inventory:query', 3, 1, 6441, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 17:51:46', '1', '2026-05-11 00:30:41', b'0');
+INSERT INTO `system_menu` VALUES (6445, '搴撳瓨娴佹按', '', 2, 2, 6440, 'history', 'ep:document', 'wms/inventory/history/index', 'WmsInventoryHistory', 0, b'1', b'1', b'1', '1', '2026-05-10 17:51:46', '1', '2026-05-14 07:59:15', b'0');
+INSERT INTO `system_menu` VALUES (6446, '搴撳瓨娴佹按鏌ヨ', 'wms:inventory-history:query', 3, 1, 6445, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-10 17:51:46', '1', '2026-05-11 00:29:15', b'0');
+INSERT INTO `system_menu` VALUES (6451, '鍏ュ簱绠$悊', '', 2, 1, 6400, 'receipt', 'ep:download', 'wms/order/receipt/index', 'WmsReceiptOrder', 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-11 16:58:02', b'0');
+INSERT INTO `system_menu` VALUES (6452, '鍏ュ簱鍗曟煡璇�', 'wms:receipt-order:query', 3, 1, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-11 16:58:02', b'0');
+INSERT INTO `system_menu` VALUES (6453, '鍏ュ簱鍗曞垱寤�', 'wms:receipt-order:create', 3, 2, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-11 16:58:02', b'0');
+INSERT INTO `system_menu` VALUES (6454, '鍏ュ簱鍗曟洿鏂�', 'wms:receipt-order:update', 3, 3, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-11 16:58:02', b'0');
+INSERT INTO `system_menu` VALUES (6455, '鍏ュ簱鍗曞垹闄�', 'wms:receipt-order:delete', 3, 4, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-11 16:58:02', b'0');
+INSERT INTO `system_menu` VALUES (6456, '鍏ュ簱鍗曞畬鎴愬叆搴�', 'wms:receipt-order:complete', 3, 5, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-11 16:58:02', b'0');
+INSERT INTO `system_menu` VALUES (6457, '鍏ュ簱鍗曚綔搴�', 'wms:receipt-order:cancel', 3, 6, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 11:58:58', '1', '2026-05-12 16:27:16', b'0');
+INSERT INTO `system_menu` VALUES (6458, '鍏ュ簱鍗曞鍑�', 'wms:receipt-order:export', 3, 7, 6451, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-11 16:58:02', '1', '2026-05-12 16:27:16', b'0');
+INSERT INTO `system_menu` VALUES (6461, '鍑哄簱绠$悊', '', 2, 2, 6400, 'shipment', 'ep:upload', 'wms/order/shipment/index', 'WmsShipmentOrder', 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6462, '鍑哄簱鍗曟煡璇�', 'wms:shipment-order:query', 3, 1, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6463, '鍑哄簱鍗曞垱寤�', 'wms:shipment-order:create', 3, 2, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6464, '鍑哄簱鍗曟洿鏂�', 'wms:shipment-order:update', 3, 3, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6465, '鍑哄簱鍗曞垹闄�', 'wms:shipment-order:delete', 3, 4, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6466, '鍑哄簱鍗曞畬鎴愬嚭搴�', 'wms:shipment-order:complete', 3, 5, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6467, '鍑哄簱鍗曚綔搴�', 'wms:shipment-order:cancel', 3, 6, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6468, '鍑哄簱鍗曞鍑�', 'wms:shipment-order:export', 3, 7, 6461, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-12 17:48:35', '1', '2026-05-12 17:48:35', b'0');
+INSERT INTO `system_menu` VALUES (6470, '绉诲簱绠$悊', '', 2, 3, 6400, 'movement', 'ep:sort', 'wms/order/movement/index', 'WmsMovementOrder', 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6471, '绉诲簱鍗曟煡璇�', 'wms:movement-order:query', 3, 1, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6472, '绉诲簱鍗曞垱寤�', 'wms:movement-order:create', 3, 2, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6473, '绉诲簱鍗曟洿鏂�', 'wms:movement-order:update', 3, 3, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6474, '绉诲簱鍗曞垹闄�', 'wms:movement-order:delete', 3, 4, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6475, '绉诲簱鍗曞畬鎴愮Щ搴�', 'wms:movement-order:complete', 3, 5, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6476, '绉诲簱鍗曚綔搴�', 'wms:movement-order:cancel', 3, 6, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6477, '绉诲簱鍗曞鍑�', 'wms:movement-order:export', 3, 7, 6470, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6480, '鐩樺簱绠$悊', '', 2, 4, 6400, 'check', 'ep:circle-check-filled', 'wms/order/check/index', 'WmsCheckOrder', 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6481, '鐩樺簱鍗曟煡璇�', 'wms:check-order:query', 3, 1, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6482, '鐩樺簱鍗曞垱寤�', 'wms:check-order:create', 3, 2, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6483, '鐩樺簱鍗曟洿鏂�', 'wms:check-order:update', 3, 3, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6484, '鐩樺簱鍗曞垹闄�', 'wms:check-order:delete', 3, 4, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6485, '鐩樺簱鍗曞畬鎴愮洏搴�', 'wms:check-order:complete', 3, 5, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6486, '鐩樺簱鍗曚綔搴�', 'wms:check-order:cancel', 3, 6, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6487, '鐩樺簱鍗曞鍑�', 'wms:check-order:export', 3, 7, 6480, '', '#', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-13 01:23:11', '1', '2026-05-14 02:21:20', b'0');
+INSERT INTO `system_menu` VALUES (6490, 'WMS 棣栭〉', 'wms:home:query', 2, 0, 6400, 'home', 'ep:home-filled', 'wms/home/index', 'WmsHome', 0, b'1', b'1', b'1', '1', '2026-05-14 09:34:27', '1', '2026-05-14 10:05:06', b'0');
+INSERT INTO `system_menu` VALUES (6500, 'IM 鍗虫椂閫氳', '', 1, 501, 0, '/im', 'ep:chat-dot-round', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-06-29 14:44:00', b'0');
+INSERT INTO `system_menu` VALUES (6510, '鏁版嵁缁熻', 'im:manager:statistics:query', 2, 10, 6500, 'statistics', 'ep:trend-charts', 'im/manager/statistics/index', 'ImStatistics', 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-04-30 19:35:54', b'0');
+INSERT INTO `system_menu` VALUES (6515, '濂藉弸鐢宠', 'im:manager:friend-request:query', 2, 20, 6600, 'friend-request', 'ep:document', 'im/manager/friend/request/index', 'ImFriendRequest', 0, b'1', b'1', b'1', '1', '2026-05-05 11:15:48', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6520, '濂藉弸鍒楄〃', 'im:manager:friend:list', 2, 10, 6600, 'friend', 'ep:user', 'im/manager/friend/index', 'ImFriend', 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6521, '濂藉弸鏌ヨ', 'im:manager:friend:query', 3, 10, 6520, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6530, '濂藉弸娑堟伅', 'im:manager:message:private:list', 2, 30, 6600, 'message', 'ep:chat-dot-square', 'im/manager/message/private/index', 'ImPrivateMessage', 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6531, '绉佽亰娑堟伅鏌ヨ', 'im:manager:message:query', 3, 10, 6530, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6540, '缇よ亰鍒楄〃', 'im:manager:group:list', 2, 10, 6610, 'list', 'ep:user-filled', 'im/manager/group/index', 'ImGroup', 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6541, '缇ょ粍鏌ヨ', 'im:manager:group:query', 3, 10, 6540, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6542, '缇ょ粍灏佺/瑙e皝', 'im:manager:group:ban', 3, 20, 6540, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6545, '缇よ亰鐢宠', 'im:manager:group-request:query', 2, 20, 6610, 'request', 'ep:document', 'im/manager/group/request/index', 'ImGroupRequest', 0, b'1', b'1', b'1', '1', '2026-05-07 00:31:35', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6550, '缇よ亰娑堟伅', 'im:manager:message:group:list', 2, 30, 6610, 'message', 'ep:chat-line-round', 'im/manager/message/group/index', 'ImGroupMessage', 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6551, '缇よ亰娑堟伅鏌ヨ', 'im:manager:message:query', 3, 10, 6550, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6560, '鏁忔劅璇嶇鐞�', 'im:manager:sensitive-word:list', 2, 60, 6500, 'sensitive-word', 'ep:warning', 'im/manager/sensitiveword/index', 'ImSensitiveWord', 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', '1', '2026-04-30 22:25:48', b'0');
+INSERT INTO `system_menu` VALUES (6561, '鏁忔劅璇嶆煡璇�', 'im:manager:sensitive-word:query', 3, 10, 6560, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6562, '鏁忔劅璇嶆柊澧�', 'im:manager:sensitive-word:create', 3, 20, 6560, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6563, '鏁忔劅璇嶄慨鏀�', 'im:manager:sensitive-word:update', 3, 30, 6560, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6564, '鏁忔劅璇嶅垹闄�', 'im:manager:sensitive-word:delete', 3, 40, 6560, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-04-30 09:11:20', 'admin', '2026-04-30 09:11:20', b'0');
+INSERT INTO `system_menu` VALUES (6570, '琛ㄦ儏绠$悊', '', 1, 70, 6500, 'face', 'ep:magic-stick', NULL, NULL, 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6571, '绯荤粺琛ㄦ儏', 'im:manager:face-pack:list', 2, 10, 6570, 'pack', 'ep:picture', 'im/manager/face/pack/index', 'ImManagerFacePack', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6572, '琛ㄦ儏鍖呮煡璇�', 'im:manager:face-pack:query', 3, 10, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6573, '琛ㄦ儏鍖呭垱寤�', 'im:manager:face-pack:create', 3, 20, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6574, '琛ㄦ儏鍖呬慨鏀�', 'im:manager:face-pack:update', 3, 30, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6575, '琛ㄦ儏鍖呭垹闄�', 'im:manager:face-pack:delete', 3, 40, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6576, '琛ㄦ儏鍥炬煡璇�', 'im:manager:face-pack-item:query', 3, 50, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6577, '琛ㄦ儏鍥惧垱寤�', 'im:manager:face-pack-item:create', 3, 60, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6578, '琛ㄦ儏鍥句慨鏀�', 'im:manager:face-pack-item:update', 3, 70, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6579, '琛ㄦ儏鍥惧垹闄�', 'im:manager:face-pack-item:delete', 3, 80, 6571, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6580, '鐢ㄦ埛琛ㄦ儏', 'im:manager:face-user-item:list', 2, 20, 6570, 'user-item', 'ep:user', 'im/manager/face/userItem/index', 'ImManagerFaceUserItem', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 14:24:20', b'0');
+INSERT INTO `system_menu` VALUES (6581, '鐢ㄦ埛琛ㄦ儏鏌ヨ', 'im:manager:face-user-item:query', 3, 10, 6580, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6582, '鐢ㄦ埛琛ㄦ儏鍒犻櫎', 'im:manager:face-user-item:delete', 3, 20, 6580, '', '', '', '', 0, b'1', b'1', b'1', '', '2026-05-06 13:56:08', '', '2026-05-06 13:56:08', b'0');
+INSERT INTO `system_menu` VALUES (6600, '绉佽亰绠$悊', '', 1, 20, 6500, 'private', 'ep:chat-round', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-07 00:40:35', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6610, '缇よ亰绠$悊', '', 1, 30, 6500, 'group', 'ep:chat-line-round', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-07 00:40:35', '1', '2026-05-07 00:40:35', b'0');
+INSERT INTO `system_menu` VALUES (6611, '閫氳瘽璁板綍', '', 2, 40, 6500, 'rtc', 'ep:phone', 'im/manager/rtc/index', 'ImRtcCall', 0, b'1', b'1', b'1', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_menu` VALUES (6612, '閫氳瘽璁板綍鏌ヨ', 'im:manager:rtc:query', 3, 1, 6611, '', '', NULL, NULL, 0, b'1', b'1', b'1', 'admin', '2026-05-18 03:36:12', 'admin', '2026-05-18 03:36:12', b'0');
+INSERT INTO `system_menu` VALUES (6700, '棰戦亾绠$悊', '', 1, 90, 6500, 'channel', 'ep:promotion', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6710, '棰戦亾鍒楄〃', '', 2, 1, 6700, 'list', 'ep:promotion', 'im/manager/channel/list/index', 'ImChannel', 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-19 09:44:34', b'0');
+INSERT INTO `system_menu` VALUES (6711, '棰戦亾鏌ヨ', 'im:manager:channel:query', 3, 1, 6710, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6712, '棰戦亾鍒涘缓', 'im:manager:channel:create', 3, 2, 6710, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6713, '棰戦亾淇敼', 'im:manager:channel:update', 3, 3, 6710, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6714, '棰戦亾鍒犻櫎', 'im:manager:channel:delete', 3, 4, 6710, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6720, '棰戦亾绱犳潗', '', 2, 2, 6700, 'material', 'ep:document', 'im/manager/channel/material/index', 'ImChannelMaterial', 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-19 09:44:34', b'0');
+INSERT INTO `system_menu` VALUES (6721, '绱犳潗鏌ヨ', 'im:manager:channel-material:query', 3, 1, 6720, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6722, '绱犳潗鍒涘缓', 'im:manager:channel-material:create', 3, 2, 6720, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6723, '绱犳潗淇敼', 'im:manager:channel-material:update', 3, 3, 6720, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6724, '绱犳潗鍒犻櫎', 'im:manager:channel-material:delete', 3, 4, 6720, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6730, '棰戦亾娑堟伅', '', 2, 3, 6700, 'message', 'ep:message', 'im/manager/channel/message/index', 'ImChannelMessage', 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-19 09:44:34', b'0');
+INSERT INTO `system_menu` VALUES (6731, '娑堟伅鏌ヨ', 'im:manager:channel-message:query', 3, 1, 6730, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6732, '绔嬪嵆鎺ㄩ��', 'im:manager:channel-message:send', 3, 2, 6730, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6733, '娑堟伅鍒犻櫎', 'im:manager:channel-message:delete', 3, 3, 6730, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-18 13:14:34', '1', '2026-05-18 13:14:34', b'0');
+INSERT INTO `system_menu` VALUES (6734, '瑙f暎缇�', 'im:manager:group:dissolve', 3, 21, 6540, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-05-24 12:02:38', '1', '2026-05-24 12:02:38', b'0');
+INSERT INTO `system_menu` VALUES (6735, '搴撳瓨棰勭暀', '', 2, 30, 6440, 'reserve', 'ep:lock', 'wms/inventory/reserve/index', 'WmsInventoryReserve', 0, b'1', b'1', b'1', '1', '2026-06-26 08:34:57', '1', '2026-06-26 08:34:57', b'0');
+INSERT INTO `system_menu` VALUES (6736, '搴撳瓨棰勭暀鏌ヨ', 'wms:inventory-reserve:query', 3, 1, 6735, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 08:34:57', '1', '2026-06-26 08:34:57', b'0');
+INSERT INTO `system_menu` VALUES (6737, '搴撳瓨棰勭暀閲婃斁', 'wms:inventory-reserve:release', 3, 2, 6735, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 08:34:57', '1', '2026-06-26 08:34:57', b'0');
+INSERT INTO `system_menu` VALUES (6738, '閲囪喘璁㈠崟鎻愪氦瀹℃壒', 'erp:purchase-order:submit', 3, 10, 2666, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 08:46:48', '1', '2026-07-01 14:43:26', b'1');
+INSERT INTO `system_menu` VALUES (6739, '閿�鍞鍗曟彁浜ゅ鎵�', 'erp:sale-order:submit', 3, 10, 2638, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 09:11:43', '1', '2026-06-26 09:11:43', b'0');
+INSERT INTO `system_menu` VALUES (6740, '閲囪喘鍏ュ簱鎻愪氦瀹℃壒', 'erp:purchase-in:submit', 3, 10, 2673, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 09:21:13', '1', '2026-07-01 14:43:07', b'1');
+INSERT INTO `system_menu` VALUES (6741, '閿�鍞嚭搴撴彁浜ゅ鎵�', 'erp:sale-out:submit', 3, 10, 2652, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 09:31:26', '1', '2026-06-26 09:31:26', b'0');
+INSERT INTO `system_menu` VALUES (6742, '鐢熶骇宸ュ崟鎻愪氦瀹℃壒', 'mes:pro-work-order:update', 3, 6, 5530, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-26 09:46:00', '1', '2026-06-26 09:46:00', b'0');
+INSERT INTO `system_menu` VALUES (6743, '鍩虹鏁版嵁', '', 1, 1, 0, '/basicData', 'carbon:branch', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-06-29 14:39:11', '1', '2026-06-29 14:39:22', b'0');
+INSERT INTO `system_menu` VALUES (6744, '浜у搧缁存姢', 'basicData:mdm:list', 2, 1, 6743, 'mdm', 'ep:box', 'basicData/mdm/index', 'BasicDataMdm', 0, b'1', b'1', b'1', '1', '2026-06-29 14:43:17', '1', '2026-07-01 14:30:44', b'0');
+INSERT INTO `system_menu` VALUES (6745, '浜у搧鏂板', 'mdm:item:create', 3, 1, 6744, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-29 15:30:22', '1', '2026-06-29 15:30:22', b'0');
+INSERT INTO `system_menu` VALUES (6746, '浜у搧缂栬緫', 'mdm:item:update', 3, 2, 6744, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-29 15:31:13', '1', '2026-06-29 15:31:13', b'0');
+INSERT INTO `system_menu` VALUES (6747, '浜у搧鍒犻櫎', 'mdm:item:delete', 3, 3, 6744, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-29 15:31:26', '1', '2026-06-29 15:31:26', b'0');
+INSERT INTO `system_menu` VALUES (6748, '浜у搧瀵煎嚭', 'mdm:item:export', 3, 4, 6744, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-29 15:31:40', '1', '2026-06-29 15:31:40', b'0');
+INSERT INTO `system_menu` VALUES (6749, '浜у搧鍒嗙被閰嶇疆', 'basicData:category:list', 2, 2, 6743, 'mdm/category', 'carbon:bookmark-add', 'basicData/mdm/category/index', NULL, 0, b'1', b'1', b'1', '1', '2026-06-30 15:15:38', '1', '2026-06-30 15:31:39', b'1');
+INSERT INTO `system_menu` VALUES (6750, '鍒嗙被鏂板', 'mdm:category:create', 3, 1, 6749, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 15:16:29', '1', '2026-06-30 15:31:31', b'1');
+INSERT INTO `system_menu` VALUES (6751, '鍒嗙被缂栬緫', ' mdm:category:update', 3, 2, 6749, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 15:19:57', '1', '2026-06-30 15:31:33', b'1');
+INSERT INTO `system_menu` VALUES (6752, '鍒嗙被鍒犻櫎', ' mdm:category:delete', 3, 3, 6749, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 15:20:16', '1', '2026-06-30 15:31:35', b'1');
+INSERT INTO `system_menu` VALUES (6753, '鍒嗙被瀵煎嚭', 'mdm:category:export', 3, 4, 6749, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 15:20:34', '1', '2026-06-30 15:31:37', b'1');
+INSERT INTO `system_menu` VALUES (6754, '璁¢噺鍗曚綅閰嶇疆', 'mdm:unit:list', 2, 2, 6743, 'mdm/unit', 'ep:crop', 'basicData/mdm/unit/index', 'MdmUnit', 0, b'1', b'1', b'1', '1', '2026-06-30 16:00:55', '1', '2026-07-01 14:33:27', b'0');
+INSERT INTO `system_menu` VALUES (6755, '鍗曚綅鏂板', 'mdm:unit:create', 3, 1, 6754, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 16:02:51', '1', '2026-06-30 16:02:51', b'0');
+INSERT INTO `system_menu` VALUES (6756, '鍗曚綅缂栬緫', 'mdm:unit:update', 3, 2, 6754, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 16:03:02', '1', '2026-06-30 16:03:02', b'0');
+INSERT INTO `system_menu` VALUES (6757, '鍗曚綅鍒犻櫎', 'mdm:unit:delete', 3, 3, 6754, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 16:03:18', '1', '2026-06-30 16:03:18', b'0');
+INSERT INTO `system_menu` VALUES (6758, '鍗曚綅瀵煎嚭', 'mdm:unit:export', 3, 4, 6754, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 16:04:38', '1', '2026-06-30 16:04:38', b'0');
+INSERT INTO `system_menu` VALUES (6759, '閲囪喘绠$悊', '', 1, 2, 0, '/erp/purchase', 'ep:goods', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-07-01 14:43:48', b'0');
+INSERT INTO `system_menu` VALUES (6760, '閲囪喘鐢宠', '', 2, 1, 6759, 'request', 'ep:document', 'erp/purchase/request/index', 'ErpPurchaseRequest', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6761, '閲囪喘鐢宠鏌ヨ', 'erp:purchase-request:query', 3, 1, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6762, '閲囪喘鐢宠鏂板', 'erp:purchase-request:create', 3, 2, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6763, '閲囪喘鐢宠淇敼', 'erp:purchase-request:update', 3, 3, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6764, '閲囪喘鐢宠鍒犻櫎', 'erp:purchase-request:delete', 3, 4, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6765, '閲囪喘鐢宠瀹℃壒', 'erp:purchase-request:approve', 3, 5, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6766, '閲囪喘鐢宠杞鍗�', 'erp:purchase-request:convert', 3, 6, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6767, '閲囪喘鐢宠瀵煎嚭', 'erp:purchase-request:export', 3, 7, 6760, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6768, '渚涘簲鍟嗙鐞�', '', 2, 2, 6759, 'supplier', 'ep:office-building', 'erp/purchase/supplier/index', 'ErpSupplier', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6769, '渚涘簲鍟嗘煡璇�', 'erp:supplier:query', 3, 1, 6768, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6770, '渚涘簲鍟嗘柊澧�', 'erp:supplier:create', 3, 2, 6768, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6771, '渚涘簲鍟嗕慨鏀�', 'erp:supplier:update', 3, 3, 6768, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6772, '渚涘簲鍟嗗垹闄�', 'erp:supplier:delete', 3, 4, 6768, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6773, '渚涘簲鍟嗗鍑�', 'erp:supplier:export', 3, 5, 6768, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6774, '閲囪喘璁㈠崟', '', 2, 3, 6759, 'order', 'ep:document-checked', 'erp/purchase/order/index', 'ErpPurchaseOrder', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6775, '閲囪喘璁㈠崟鏌ヨ', 'erp:purchase-order:query', 3, 1, 6774, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6776, '閲囪喘璁㈠崟鏂板', 'erp:purchase-order:create', 3, 2, 6774, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6777, '閲囪喘璁㈠崟淇敼', 'erp:purchase-order:update', 3, 3, 6774, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6778, '閲囪喘璁㈠崟鍒犻櫎', 'erp:purchase-order:delete', 3, 4, 6774, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6779, '閲囪喘璁㈠崟瀹℃壒', 'erp:purchase-order:update-status', 3, 5, 6774, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6780, '閲囪喘璁㈠崟瀵煎嚭', 'erp:purchase-order:export', 3, 6, 6774, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6781, '閲囪喘鍏ュ簱', '', 2, 4, 6759, 'in', 'ep:box', 'erp/purchase/in/index', 'ErpPurchaseIn', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6782, '閲囪喘閫�璐�', '', 2, 5, 6759, 'return', 'ep:back', 'erp/purchase/return/index', 'ErpPurchaseReturn', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6783, '閲囪喘缁熻', '', 2, 6, 6759, 'statistics', 'ep:data-analysis', 'erp/purchase/statistics/index', 'ErpPurchaseStatistics', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6784, '閲囪喘缁熻鏌ヨ', 'erp:purchase-statistics:query', 3, 1, 6783, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6785, '渚涘簲鍟嗕緵璐х粺璁�', 'erp:purchase-statistics:supplier', 3, 2, 6783, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6786, '閲囪喘浠锋牸鍒嗘瀽', 'erp:purchase-statistics:price', 3, 3, 6783, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6787, '鏈畬鎴愯鍗曡窡韪�', 'erp:purchase-statistics:uncompleted', 3, 4, 6783, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-06-30 09:20:03', '1', '2026-06-30 09:20:03', b'0');
+INSERT INTO `system_menu` VALUES (6788, '閲囪喘鐢宠', '', 2, 0, 2602, 'request', 'carbon:add-comment', 'erp/purchase/request/index.vue', NULL, 0, b'1', b'1', b'1', '1', '2026-07-01 09:45:54', '1', '2026-07-01 14:43:38', b'1');
+INSERT INTO `system_menu` VALUES (6789, '閲囪喘鐢宠鏂板', 'erp:purchase-request:create', 3, 1, 6788, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 09:55:48', '1', '2026-07-01 14:41:44', b'1');
+INSERT INTO `system_menu` VALUES (6790, '閲囪喘鐢宠缂栬緫', 'erp:purchase-request:update', 3, 2, 6788, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 09:56:03', '1', '2026-07-01 14:43:32', b'1');
+INSERT INTO `system_menu` VALUES (6791, '閲囪喘鐢宠鍒犻櫎', 'erp:purchase-request:delete', 3, 3, 6788, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 09:56:15', '1', '2026-07-01 14:43:33', b'1');
+INSERT INTO `system_menu` VALUES (6792, '閲囪喘鐢宠瀵煎嚭', 'erp:purchase-request:export', 3, 4, 6788, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 09:56:34', '1', '2026-07-01 14:43:36', b'1');
+INSERT INTO `system_menu` VALUES (6793, 'MES浜у搧璁捐', '', 1, 11, 5100, 'pd', 'carbon:align-horizontal-right', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-01 17:00:09', '1', '2026-07-08 13:17:42', b'0');
+INSERT INTO `system_menu` VALUES (6794, '褰掓。鍙拌处', '', 2, 2, 6793, 'archive', 'carbon:align-horizontal-left', 'mes/pd/archive/index', 'Archive', 0, b'1', b'1', b'1', '1', '2026-07-01 17:01:53', '1', '2026-07-01 17:13:38', b'0');
+INSERT INTO `system_menu` VALUES (6795, '璁捐椤圭洰', '', 2, 1, 6793, 'project', 'carbon:align-horizontal-left', 'mes/pd/project/index', 'Project', 0, b'1', b'1', b'1', '1', '2026-07-01 17:02:49', '1', '2026-07-01 17:13:29', b'0');
+INSERT INTO `system_menu` VALUES (6796, '缂栬緫', 'es:pd-project:update', 3, 1, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:22:55', '1', '2026-07-01 17:22:55', b'0');
+INSERT INTO `system_menu` VALUES (6797, '鎻愪氦瀹℃牳', 'mes:pd-project:submit-review', 3, 2, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:23:19', '1', '2026-07-01 17:23:19', b'0');
+INSERT INTO `system_menu` VALUES (6798, '褰掓。', 'mes:pd-project:archive', 3, 3, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:23:43', '1', '2026-07-01 17:23:43', b'0');
+INSERT INTO `system_menu` VALUES (6799, '鍒犻櫎', 'mes:pd-project:delete', 3, 4, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:24:05', '1', '2026-07-01 17:24:05', b'0');
+INSERT INTO `system_menu` VALUES (6800, '鍙戣捣璁捐浠诲姟', 'mes:pd-project:create', 3, 5, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:46:32', '1', '2026-07-01 17:46:32', b'0');
+INSERT INTO `system_menu` VALUES (6801, '浠诲姟瀵煎嚭', 'mes:pd-project:export', 3, 6, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:47:34', '1', '2026-07-01 17:47:34', b'0');
+INSERT INTO `system_menu` VALUES (6802, '鍙戝竷浠诲姟', 'mes:pd-project:update', 3, 7, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:47:52', '1', '2026-07-01 17:47:52', b'0');
+INSERT INTO `system_menu` VALUES (6803, '瀹℃牳閫氳繃', 'mes:pd-drawing-review:review', 3, 8, 6795, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-01 17:48:50', '1', '2026-07-01 17:48:50', b'0');
+INSERT INTO `system_menu` VALUES (6804, '閿�鍞姤浠�', '', 2, 3, 2617, 'saleQuotation', 'ep:set-up', 'crm/saleQuotation/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-02 11:31:12', '1', '2026-07-02 16:28:17', b'0');
+INSERT INTO `system_menu` VALUES (6805, '鏂板鎶ヤ环', 'crm:sale-quotation:create', 3, 1, 6804, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 11:35:55', '1', '2026-07-02 11:35:55', b'0');
+INSERT INTO `system_menu` VALUES (6806, '缂栬緫鎶ヤ环鍜岃浆鍚堝悓', 'crm:sale-quotation:update', 3, 2, 6804, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 11:36:07', '1', '2026-07-02 13:39:46', b'0');
+INSERT INTO `system_menu` VALUES (6807, '鍒犻櫎鎶ヤ环', 'crm:sale-quotation:delete', 3, 3, 6804, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 11:36:19', '1', '2026-07-02 11:36:19', b'0');
+INSERT INTO `system_menu` VALUES (6808, '杞悎鍚�', 'crm:sale-quotation:update', 3, 4, 6804, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 13:39:20', '1', '2026-07-02 13:39:35', b'1');
+INSERT INTO `system_menu` VALUES (6809, '宸ヨ壓璁捐', '', 1, 12, 5100, 'process-design', 'carbon:apps', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-02 11:44:09', '1', '2026-07-02 11:44:09', b'0');
+INSERT INTO `system_menu` VALUES (6810, '鍩虹鍙傛暟', 'mes:pd:parameter', 2, 1, 6809, 'parameter', 'carbon:arrange-horizontal', 'mes/process-design/parameter/index', 'MesProcessDesignParameter', 0, b'1', b'1', b'1', '1', '2026-07-02 14:19:34', '1', '2026-07-02 14:21:09', b'0');
+INSERT INTO `system_menu` VALUES (6811, '鍙傛暟妯℃澘', 'mes:pd:template', 2, 2, 6809, 'template', 'carbon:arrange-horizontal', 'mes/process-design/template/index', 'MesProcessDesignTemplate', 0, b'1', b'1', b'1', '1', '2026-07-02 14:20:54', '1', '2026-07-02 14:46:19', b'0');
+INSERT INTO `system_menu` VALUES (6812, '鏂板', 'mes:pd:parameter:create', 3, 1, 6810, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:42:13', '1', '2026-07-02 14:42:13', b'0');
+INSERT INTO `system_menu` VALUES (6813, '缂栬緫', 'mes:pd:parameter:update', 3, 2, 6810, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:42:35', '1', '2026-07-02 14:42:35', b'0');
+INSERT INTO `system_menu` VALUES (6814, '鍒犻櫎', 'mes:pd:parameter:delete', 3, 3, 6810, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:42:51', '1', '2026-07-02 14:42:51', b'0');
+INSERT INTO `system_menu` VALUES (6815, '鏂板', 'mes:pd:template:create', 3, 1, 6811, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:43:20', '1', '2026-07-02 14:43:20', b'0');
+INSERT INTO `system_menu` VALUES (6816, '缂栬緫', 'mes:pd:template:update', 3, 2, 6811, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:43:34', '1', '2026-07-02 14:43:34', b'0');
+INSERT INTO `system_menu` VALUES (6817, '鍒犻櫎', 'mes:pd:template:delete', 3, 3, 6811, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:43:48', '1', '2026-07-02 14:43:48', b'0');
+INSERT INTO `system_menu` VALUES (6818, '鐗╂枡', '', 2, 1, 5101, 'item', 'carbon:apps', 'mes/md/item/index', 'MesMdItem', 0, b'1', b'1', b'1', '1', '2026-07-02 14:59:14', '1', '2026-07-02 14:59:14', b'0');
+INSERT INTO `system_menu` VALUES (6819, '鏂板', 'mes:md-item:create', 3, 1, 6818, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 14:59:51', '1', '2026-07-02 14:59:51', b'0');
+INSERT INTO `system_menu` VALUES (6820, '瀵煎叆', 'mes:md-item:import', 3, 2, 6818, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 15:00:06', '1', '2026-07-02 15:00:06', b'0');
+INSERT INTO `system_menu` VALUES (6821, '瀵煎嚭', 'mes:md-item:export', 3, 1, 6818, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 15:00:22', '1', '2026-07-02 15:00:22', b'0');
+INSERT INTO `system_menu` VALUES (6822, '缂栬緫', 'mes:md-item:update', 3, 3, 6818, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 15:00:39', '1', '2026-07-02 15:00:39', b'0');
+INSERT INTO `system_menu` VALUES (6823, '鍒犻櫎', 'mes:md-item:delete', 3, 4, 6818, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 15:00:55', '1', '2026-07-02 15:00:55', b'0');
+INSERT INTO `system_menu` VALUES (6824, '閿�鍞鍗曚綔搴�', 'erp:sale-order:cancel', 3, 7, 2638, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 15:30:23', '1', '2026-07-02 15:30:23', b'0');
+INSERT INTO `system_menu` VALUES (6825, '閿�鍞鍗曞惎鐢�', 'erp:sale-order:enable', 3, 8, 2638, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-02 16:55:46', '1', '2026-07-02 16:55:46', b'0');
+INSERT INTO `system_menu` VALUES (6826, '浜у搧璁捐', '', 2, 20, 0, '/pd', 'ep:box', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-07 10:03:10', b'0');
+INSERT INTO `system_menu` VALUES (6827, '璁捐椤圭洰', '', 2, 1, 6826, 'project', 'ep:magic-stick', 'mes/pd/project/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-08 13:43:35', b'0');
+INSERT INTO `system_menu` VALUES (6828, '璁捐椤圭洰鏌ヨ', 'mes:pd-project:query', 3, 1, 6827, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6829, '璁捐椤圭洰鍒涘缓', 'mes:pd-project:create', 3, 2, 6827, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6830, '璁捐椤圭洰鏇存柊', 'mes:pd-project:update', 3, 3, 6827, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6831, '璁捐椤圭洰鍒犻櫎', 'mes:pd-project:delete', 3, 4, 6827, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6832, '璁捐椤圭洰瀵煎嚭', 'mes:pd-project:export', 3, 5, 6827, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6833, '褰掓。鍙拌处', '', 2, 2, 6826, 'archive', 'ep:files', 'mes/pd/archive/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-08 13:43:18', b'0');
+INSERT INTO `system_menu` VALUES (6834, '褰掓。鍙拌处鏌ヨ', 'mes:pd-archive:query', 3, 1, 6833, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6835, '褰掓。鍙拌处鍒涘缓', 'mes:pd-archive:create', 3, 2, 6833, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6836, '褰掓。鍙拌处鏇存柊', 'mes:pd-archive:update', 3, 3, 6833, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6837, '褰掓。鍙拌处鍒犻櫎', 'mes:pd-archive:delete', 3, 4, 6833, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (6838, '褰掓。鍙拌处瀵煎嚭', 'mes:pd-archive:export', 3, 5, 6833, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 02:17:25', '1', '2026-07-03 02:17:25', b'0');
+INSERT INTO `system_menu` VALUES (60031, '璇峰亣鐢宠鏌ヨ', 'hrm:leave:query', 3, 1, 6003, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:43:51', b'1');
+INSERT INTO `system_menu` VALUES (60032, '璇峰亣鐢宠鏂板', 'hrm:leave:create', 3, 2, 6003, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60033, '璇峰亣鐢宠淇敼', 'hrm:leave:update', 3, 3, 6003, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60034, '璇峰亣鐢宠鍒犻櫎', 'hrm:leave:delete', 3, 4, 6003, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60035, '璇峰亣鐢宠鎻愪氦', 'hrm:leave:submit', 3, 5, 6003, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60041, '璋冨矖鐢宠鎾ら攢', 'hrm:transfer:cancel', 3, 1, 6004, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:45:04', b'0');
+INSERT INTO `system_menu` VALUES (60042, '璋冨矖鐢宠鏂板', 'hrm:transfer:create', 3, 2, 6004, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60043, '璋冨矖鐢宠淇敼', 'hrm:transfer:update', 3, 3, 6004, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60044, '璋冨矖鐢宠鍒犻櫎', 'hrm:transfer:delete', 3, 4, 6004, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60045, '璋冨矖鐢宠鎻愪氦', 'hrm:transfer:submit', 3, 5, 6004, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60051, '绂昏亴鐢宠鎾ら攢', 'hrm:resignation:cancel', 3, 1, 6005, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:45:26', b'0');
+INSERT INTO `system_menu` VALUES (60052, '绂昏亴鐢宠鏂板', 'hrm:resignation:create', 3, 2, 6005, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60053, '绂昏亴鐢宠淇敼', 'hrm:resignation:update', 3, 3, 6005, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60054, '绂昏亴鐢宠鍒犻櫎', 'hrm:resignation:delete', 3, 4, 6005, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60055, '绂昏亴鐢宠鎻愪氦', 'hrm:resignation:submit', 3, 5, 6005, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0');
+INSERT INTO `system_menu` VALUES (60061, '鍛樺伐鏌ヨ', 'hrm:employee:query', 3, 1, 6006, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 07:20:09', '1', '2026-07-06 10:43:10', b'1');
+INSERT INTO `system_menu` VALUES (60062, '鍛樺伐鏂板', 'hrm:employee:create', 3, 2, 6006, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 07:20:09', '1', '2026-07-03 07:20:09', b'0');
+INSERT INTO `system_menu` VALUES (60063, '鍛樺伐淇敼', 'hrm:employee:update', 3, 3, 6006, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 07:20:09', '1', '2026-07-03 07:20:09', b'0');
+INSERT INTO `system_menu` VALUES (60064, '鍛樺伐鍒犻櫎', 'hrm:employee:delete', 3, 4, 6006, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 07:20:09', '1', '2026-07-03 07:20:09', b'0');
+INSERT INTO `system_menu` VALUES (60065, '鍛樺伐瀵煎嚭', 'hrm:employee:export', 3, 5, 6006, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 07:20:09', '1', '2026-07-03 07:20:09', b'0');
+INSERT INTO `system_menu` VALUES (60111, '鑰冨嫟璁板綍鏌ヨ', 'hrm:attendance:query', 3, 1, 6011, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:45:36', b'1');
+INSERT INTO `system_menu` VALUES (60112, '鑰冨嫟璁板綍瀵煎叆', 'hrm:attendance-record:import', 3, 2, 6011, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:45:53', b'0');
+INSERT INTO `system_menu` VALUES (60113, '鑰冨嫟璁板綍瀵煎嚭', 'hrm:attendance-record:export', 3, 3, 6011, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:45:58', b'0');
+INSERT INTO `system_menu` VALUES (60114, '鎵撳崱', 'hrm:attendance-record:clock', 3, 4, 6011, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:44:30', b'0');
+INSERT INTO `system_menu` VALUES (60131, '鑰冨嫟瑙勫垯鏌ヨ', 'hrm:attendance:query', 3, 1, 6013, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:00', b'1');
+INSERT INTO `system_menu` VALUES (60132, '鑰冨嫟瑙勫垯鏂板', 'hrm:attendance-rule:create', 3, 2, 6013, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:07', b'0');
+INSERT INTO `system_menu` VALUES (60133, '鑰冨嫟瑙勫垯淇敼', 'hrm:attendance-rule:update', 3, 3, 6013, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:13', b'0');
+INSERT INTO `system_menu` VALUES (60134, '鑰冨嫟瑙勫垯鍒犻櫎', 'hrm:attendance-rule:delete', 3, 4, 6013, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:19', b'0');
+INSERT INTO `system_menu` VALUES (60135, '鑰冨嫟瑙勫垯瀵煎嚭', 'hrm:attendance-rule:export', 3, 5, 6013, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:23', b'0');
+INSERT INTO `system_menu` VALUES (60141, '鑺傚亣鏃ラ厤缃煡璇�', 'hrm:attendance:query', 3, 1, 6014, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:29', b'1');
+INSERT INTO `system_menu` VALUES (60142, '鑺傚亣鏃ラ厤缃柊澧�', 'hrm:attendance-holiday:create', 3, 2, 6014, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:34', b'0');
+INSERT INTO `system_menu` VALUES (60143, '鑺傚亣鏃ラ厤缃慨鏀�', 'hrm:attendance-holiday:update', 3, 3, 6014, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:39', b'0');
+INSERT INTO `system_menu` VALUES (60144, '鑺傚亣鏃ラ厤缃垹闄�', 'hrm:attendance-holiday:delete', 3, 4, 6014, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:44', b'0');
+INSERT INTO `system_menu` VALUES (60145, '鑺傚亣鏃ラ厤缃鍑�', 'hrm:attendance-holiday:export', 3, 5, 6014, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:43:53', b'0');
+INSERT INTO `system_menu` VALUES (60151, '鑰冨嫟缁熻鏌ヨ', 'hrm:attendance:query', 3, 1, 6015, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:44:15', b'1');
+INSERT INTO `system_menu` VALUES (60152, '鑰冨嫟缁熻鐢熸垚', 'hrm:attendance-summary:generate', 3, 2, 6015, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:44:04', b'0');
+INSERT INTO `system_menu` VALUES (60153, '鑰冨嫟缁熻瀵煎嚭', 'hrm:attendance-summary:export', 3, 3, 6015, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 02:05:39', '1', '2026-07-08 10:44:09', b'0');
+INSERT INTO `system_menu` VALUES (60211, '钖叕鏍哥畻鏌ヨ', 'hrm:salary:query', 3, 1, 6021, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:46:39', b'1');
+INSERT INTO `system_menu` VALUES (60212, '钖叕鏍哥畻鎵ц', 'hrm:salary-calculation:calculate', 3, 2, 6021, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:46:49', b'0');
+INSERT INTO `system_menu` VALUES (60213, '钖叕鏍哥畻纭', 'hrm:salary-calculation:confirm', 3, 3, 6021, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:46:55', b'0');
+INSERT INTO `system_menu` VALUES (60214, '钖叕鏍哥畻瀵煎嚭', 'hrm:salary-calculation:export', 3, 4, 6021, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 06:48:27', '1', '2026-07-06 10:47:01', b'0');
+INSERT INTO `system_menu` VALUES (60215, '瀹℃壒', 'mes:pd-project:audit', 3, 6, 6827, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 15:18:54', '1', '2026-07-03 15:19:39', b'0');
+INSERT INTO `system_menu` VALUES (60216, '鏂囦欢瀹℃壒', 'mes:pd-document-audit:update', 3, 7, 6827, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-03 16:21:28', '1', '2026-07-03 16:21:28', b'0');
+INSERT INTO `system_menu` VALUES (60217, '浜哄姏璧勬簮', '', 1, 8, 0, '/hrm', 'ep:user-filled', NULL, NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 09:25:57', '1', '2026-07-06 10:42:27', b'1');
+INSERT INTO `system_menu` VALUES (60218, '鍛樺伐绠$悊', '', 2, 1, 60217, 'employee', 'ep:files', 'hrm/employee/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 09:46:55', '1', '2026-07-06 10:42:25', b'1');
+INSERT INTO `system_menu` VALUES (60219, '鏂板鍛樺伐', 'hrm:employee:create', 3, 1, 60218, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:47:19', '1', '2026-07-06 10:42:18', b'1');
+INSERT INTO `system_menu` VALUES (60220, '鍛樺伐瀵煎嚭', 'hrm:employee:export', 3, 2, 60218, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:47:32', '1', '2026-07-06 10:42:20', b'1');
+INSERT INTO `system_menu` VALUES (60221, '璇峰亣鐢宠', '', 2, 2, 60217, 'leave', 'ep:alarm-clock', 'hrm/leave/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 09:55:21', '1', '2026-07-06 10:42:15', b'1');
+INSERT INTO `system_menu` VALUES (60222, '鏂板鐢宠', 'hrm:leave:create', 3, 1, 60221, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:55:38', '1', '2026-07-06 10:42:13', b'1');
+INSERT INTO `system_menu` VALUES (60223, '缂栬緫鍛樺伐', 'hrm:employee:update', 3, 3, 60218, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:56:43', '1', '2026-07-06 10:42:22', b'1');
+INSERT INTO `system_menu` VALUES (60224, '鍒犻櫎鍛樺伐', 'hrm:employee:delete', 3, 4, 60218, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:56:55', '1', '2026-07-06 10:42:23', b'1');
+INSERT INTO `system_menu` VALUES (60225, '缂栬緫鐢宠', 'hrm:leave:update', 3, 2, 60221, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:57:19', '1', '2026-07-06 10:42:11', b'1');
+INSERT INTO `system_menu` VALUES (60226, '鎻愪氦鐢宠', 'hrm:leave:submit', 3, 3, 60221, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:57:38', '1', '2026-07-06 10:42:09', b'1');
+INSERT INTO `system_menu` VALUES (60227, '鎾ら攢鐢宠', 'hrm:leave:cancel', 3, 4, 60221, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:57:51', '1', '2026-07-06 10:42:07', b'1');
+INSERT INTO `system_menu` VALUES (60228, '鍒犻櫎鐢宠', 'hrm:leave:delete', 3, 4, 60221, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 09:58:04', '1', '2026-07-06 10:42:04', b'1');
+INSERT INTO `system_menu` VALUES (60229, '璋冨矖鐢宠', '', 2, 3, 60217, 'transfer', 'carbon:repeat', 'hrm/transfer/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 10:05:18', '1', '2026-07-06 10:41:48', b'1');
+INSERT INTO `system_menu` VALUES (60230, '鏂板', 'hrm:transfer:create', 3, 1, 60229, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:34:32', '1', '2026-07-06 10:41:38', b'1');
+INSERT INTO `system_menu` VALUES (60231, '缂栬緫', 'hrm:transfer:update', 3, 2, 60229, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:34:45', '1', '2026-07-06 10:41:40', b'1');
+INSERT INTO `system_menu` VALUES (60232, '鎻愪氦', 'hrm:transfer:submit', 3, 3, 60229, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:34:55', '1', '2026-07-06 10:41:42', b'1');
+INSERT INTO `system_menu` VALUES (60233, '鎾ら攢', 'hrm:transfer:cancel', 3, 4, 60229, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:35:08', '1', '2026-07-06 10:41:44', b'1');
+INSERT INTO `system_menu` VALUES (60234, '鍒犻櫎', 'hrm:transfer:delete', 3, 5, 60229, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:35:21', '1', '2026-07-06 10:41:46', b'1');
+INSERT INTO `system_menu` VALUES (60235, '绂昏亴鐢宠', '', 2, 4, 60217, 'resignation', 'carbon:retry-failed', 'hrm/resignation/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 10:37:27', '1', '2026-07-06 10:41:35', b'1');
+INSERT INTO `system_menu` VALUES (60236, '鏂板', 'hrm:resignation:create', 3, 1, 60235, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:37:41', '1', '2026-07-06 10:41:25', b'1');
+INSERT INTO `system_menu` VALUES (60237, '缂栬緫', 'hrm:resignation:update', 3, 2, 60235, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:37:55', '1', '2026-07-06 10:41:27', b'1');
+INSERT INTO `system_menu` VALUES (60238, '鎻愪氦', 'hrm:resignation:submit', 3, 3, 60235, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:38:07', '1', '2026-07-06 10:41:30', b'1');
+INSERT INTO `system_menu` VALUES (60239, '鎾ら攢', 'hrm:resignation:cancel', 3, 4, 60235, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:38:19', '1', '2026-07-06 10:41:32', b'1');
+INSERT INTO `system_menu` VALUES (60240, '鍒犻櫎', 'hrm:resignation:delete', 3, 5, 60235, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:38:33', '1', '2026-07-06 10:41:33', b'1');
+INSERT INTO `system_menu` VALUES (60241, '鑰冨嫟璁板綍', '', 2, 5, 60217, 'attendance', 'carbon:bpmn-conditional-outline', 'hrm/attendance/record/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 10:39:12', '1', '2026-07-06 10:41:22', b'1');
+INSERT INTO `system_menu` VALUES (60242, '鎾ら攢', 'hrm:leave:cancel', 3, 1, 6003, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:44:25', '1', '2026-07-06 10:44:25', b'0');
+INSERT INTO `system_menu` VALUES (60243, '鏂板', 'hrm:attendance-exception:create', 3, 1, 6012, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:46:18', '1', '2026-07-06 10:46:18', b'0');
+INSERT INTO `system_menu` VALUES (60244, '鍙戞斁', 'hrm:salary-payment:pay', 3, 1, 6022, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:56:33', '1', '2026-07-06 10:56:33', b'0');
+INSERT INTO `system_menu` VALUES (60245, '瀵煎嚭', 'hrm:salary-payment:export', 3, 2, 6022, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 10:56:44', '1', '2026-07-06 10:56:44', b'0');
+INSERT INTO `system_menu` VALUES (602311, '绀句繚閰嶇疆鏌ヨ', 'hrm:social-security:query', 3, 1, 6023, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 16:03:48', b'1');
+INSERT INTO `system_menu` VALUES (602322, '绀句繚閰嶇疆鏂板', 'hrm:employee-social-security:create', 3, 2, 6023, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 17:38:24', b'0');
+INSERT INTO `system_menu` VALUES (602333, '绀句繚閰嶇疆淇敼', 'hrm:employee-social-security:update', 3, 3, 6023, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 17:38:32', b'0');
+INSERT INTO `system_menu` VALUES (602344, '绀句繚閰嶇疆鍒犻櫎', 'hrm:employee-social-security:delete', 3, 4, 6023, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 17:38:37', b'0');
+INSERT INTO `system_menu` VALUES (602411, '涓◣閰嶇疆鏌ヨ', 'hrm:tax-rate:query', 3, 1, 6024, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 16:04:31', b'1');
+INSERT INTO `system_menu` VALUES (602422, '涓◣閰嶇疆鏂板', 'hrm:tax-rate-config:create', 3, 2, 6024, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 16:06:54', b'0');
+INSERT INTO `system_menu` VALUES (602433, '涓◣閰嶇疆淇敼', 'hrm:tax-rate-config:update', 3, 3, 6024, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 16:04:25', b'0');
+INSERT INTO `system_menu` VALUES (602444, '涓◣閰嶇疆鍒犻櫎', 'hrm:tax-rate-config:delete', 3, 4, 6024, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-06 07:29:58', '1', '2026-07-06 16:07:00', b'0');
+INSERT INTO `system_menu` VALUES (602445, '绀句繚鍏Н閲戞柟妗�', '', 2, 4, 6020, 'social-security-scheme', 'carbon:copy-to-clipboard', 'hrm/salary/social-security-scheme/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-07 09:21:21', '1', '2026-07-07 13:25:50', b'0');
+INSERT INTO `system_menu` VALUES (602446, '鏂板', 'hrm:social-security-scheme:create', 3, 1, 602445, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-07 09:22:09', '1', '2026-07-07 09:22:09', b'0');
+INSERT INTO `system_menu` VALUES (602447, '缂栬緫', 'hrm:social-security-scheme:update', 3, 2, 602445, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-07 09:22:17', '1', '2026-07-07 09:22:17', b'0');
+INSERT INTO `system_menu` VALUES (602448, '鍒犻櫎', 'hrm:social-security-scheme:delete', 3, 3, 602445, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-07 09:22:28', '1', '2026-07-07 09:22:28', b'0');
+INSERT INTO `system_menu` VALUES (602449, '璇峰亣鎵f閰嶇疆', '', 2, 5, 6020, 'leave-type-config', 'ep:alarm-clock', 'hrm/salary/leave-type-config/index', NULL, 0, b'1', b'1', b'1', '1', '2026-07-07 13:26:24', '1', '2026-07-07 13:26:24', b'0');
+INSERT INTO `system_menu` VALUES (602450, '缂栬緫', 'hrm:leave-type-config:update', 3, 1, 602449, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-07 13:27:20', '1', '2026-07-07 13:27:20', b'0');
+INSERT INTO `system_menu` VALUES (602451, '鎻愪氦', 'hrm:attendance-exception:submit', 3, 2, 6012, '', '', '', '', 0, b'1', b'1', b'1', '1', '2026-07-08 10:44:52', '1', '2026-07-08 10:44:52', b'0');
+
+-- ----------------------------
+-- Table structure for system_notice
+-- ----------------------------
+DROP TABLE IF EXISTS `system_notice`;
+CREATE TABLE `system_notice`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鍏憡ID',
+  `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍏憡鏍囬',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍏憡鍐呭',
+  `type` tinyint NOT NULL COMMENT '鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '閫氱煡鍏憡琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_notice
+-- ----------------------------
+INSERT INTO `system_notice` VALUES (1, '鑺嬮亾鐨勫叕浼�', '<p>鏂扮増鏈唴瀹�133222</p>', 1, 0, 'admin', '2021-01-05 17:03:48', '\"1\"', '2025-08-31 09:38:22', b'0', 1);
+INSERT INTO `system_notice` VALUES (2, '缁存姢閫氱煡锛�2018-07-01 绯荤粺鍑屾櫒缁存姢', '<p><img src=\"http://test.yudao.iocoder.cn/b7cb3cf49b4b3258bf7309a09dd2f4e5.jpg\" alt=\"\" data-href=\"\">11112222<img src=\"http://test.yudao.iocoder.cn/fe44fc7bdb82ca421184b2eebbaee9e2148d4a1827479a4eb4521e11d2a062ba.png\" alt=\"image\" data-href=\"http://test.yudao.iocoder.cn/fe44fc7bdb82ca421184b2eebbaee9e2148d4a1827479a4eb4521e11d2a062ba.png\">3333</p>\n<p><img src=\"http://test.yudao.iocoder.cn/20260503/澶囦唤.jpg\" alt=\"\" width=\"258\" height=\"258\"><img src=\"http://test.yudao.iocoder.cn/20260503/钀岃悓鐨勭毊鍗′笜.png\"></p>', 2, 1, 'admin', '2021-01-05 17:03:48', '1', '2026-05-03 23:07:48', b'0', 1);
+INSERT INTO `system_notice` VALUES (4, '鎴戞槸娴嬭瘯鏍囬', '<p>鍝堝搱鍝堝搱123</p>', 1, 0, '110', '2022-02-22 01:01:25', '110', '2022-02-22 01:01:46', b'0', 121);
+
+-- ----------------------------
+-- Table structure for system_notify_message
+-- ----------------------------
+DROP TABLE IF EXISTS `system_notify_message`;
+CREATE TABLE `system_notify_message`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐢ㄦ埛ID',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛id',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `template_id` bigint NOT NULL COMMENT '妯$増缂栧彿',
+  `template_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘缂栫爜',
+  `template_nickname` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯$増鍙戦�佷汉鍚嶇О',
+  `template_content` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯$増鍐呭',
+  `template_type` int NOT NULL COMMENT '妯$増绫诲瀷',
+  `template_params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯$増鍙傛暟',
+  `read_status` bit(1) NOT NULL COMMENT '鏄惁宸茶',
+  `read_time` datetime NULL DEFAULT NULL COMMENT '闃呰鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_user_id_user_type_read_status`(`user_id` ASC, `user_type` ASC, `read_status` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绔欏唴淇℃秷鎭〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_notify_message
+-- ----------------------------
+INSERT INTO `system_notify_message` VALUES (2, 1, 2, 1, 'test', '123', '鎴戞槸 1锛屾垜寮�濮� 2 浜�', 1, '{\"name\":\"1\",\"what\":\"2\"}', b'1', '2025-12-15 21:24:36', '1', '2023-01-28 11:44:08', '1', '2025-12-15 21:24:36', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (3, 1, 2, 1, 'test', '123', '鎴戞槸 1锛屾垜寮�濮� 2 浜�', 1, '{\"name\":\"1\",\"what\":\"2\"}', b'1', '2025-12-15 21:24:36', '1', '2023-01-28 11:45:04', '1', '2025-12-15 21:24:36', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (4, 103, 2, 2, 'register', '绯荤粺娑堟伅', '浣犲ソ锛屾杩� 鍝堝搱 鍔犲叆澶у搴紒', 2, '{\"name\":\"鍝堝搱\"}', b'0', NULL, '1', '2023-01-28 21:02:20', '1', '2023-01-28 21:02:20', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (5, 1, 2, 1, 'test', '123', '鎴戞槸 鑺嬭壙锛屾垜寮�濮� 鍐欎唬鐮� 浜�', 1, '{\"name\":\"鑺嬭壙\",\"what\":\"鍐欎唬鐮乗"}', b'1', '2025-12-08 17:25:28', '1', '2023-01-28 22:21:42', '1', '2025-12-08 17:25:28', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (6, 1, 2, 1, 'test', '123', '鎴戞槸 鑺嬭壙锛屾垜寮�濮� 鍐欎唬鐮� 浜�', 1, '{\"name\":\"鑺嬭壙\",\"what\":\"鍐欎唬鐮乗"}', b'1', '2025-12-08 17:25:30', '1', '2023-01-28 22:22:07', '1', '2025-12-08 17:25:30', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (7, 1, 2, 1, 'test', '123', '鎴戞槸 2锛屾垜寮�濮� 3 浜�', 1, '{\"name\":\"2\",\"what\":\"3\"}', b'1', '2025-12-08 17:25:22', '1', '2023-01-28 23:45:21', '1', '2025-12-08 17:25:22', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (8, 1, 2, 2, 'register', '绯荤粺娑堟伅', '浣犲ソ锛屾杩� 123 鍔犲叆澶у搴紒', 2, '{\"name\":\"123\"}', b'1', '2025-12-08 16:46:01', '1', '2023-01-28 23:50:21', '1', '2025-12-08 16:46:01', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (9, 247, 1, 4, 'brokerage_withdraw_audit_approve', 'system', '鎮ㄥ湪2023-09-28 08:35:46鎻愮幇锟�0.09鍏冪殑鐢宠宸查�氳繃瀹℃牳', 2, '{\"reason\":null,\"createTime\":\"2023-09-28 08:35:46\",\"price\":\"0.09\"}', b'0', NULL, '1', '2023-09-28 16:36:22', '1', '2023-09-28 16:36:22', b'0', 1);
+INSERT INTO `system_notify_message` VALUES (10, 247, 1, 4, 'brokerage_withdraw_audit_approve', 'system', '鎮ㄥ湪2023-09-30 20:59:40鎻愮幇锟�1.00鍏冪殑鐢宠宸查�氳繃瀹℃牳', 2, '{\"reason\":null,\"createTime\":\"2023-09-30 20:59:40\",\"price\":\"1.00\"}', b'0', NULL, '1', '2023-10-03 12:11:34', '1', '2023-10-03 12:11:34', b'0', 1);
+
+-- ----------------------------
+-- Table structure for system_notify_template
+-- ----------------------------
+DROP TABLE IF EXISTS `system_notify_template`;
+CREATE TABLE `system_notify_template`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘鍚嶇О',
+  `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯$増缂栫爜',
+  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍙戦�佷汉鍚嶇О',
+  `content` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯$増鍐呭',
+  `type` tinyint NOT NULL COMMENT '绫诲瀷',
+  `params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙傛暟鏁扮粍',
+  `status` tinyint NOT NULL COMMENT '鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绔欏唴淇℃ā鏉胯〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_notify_template
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_oauth2_access_token
+-- ----------------------------
+DROP TABLE IF EXISTS `system_oauth2_access_token`;
+CREATE TABLE `system_oauth2_access_token`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `user_info` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛淇℃伅',
+  `access_token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '璁块棶浠ょ墝',
+  `refresh_token` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒锋柊浠ょ墝',
+  `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔紪鍙�',
+  `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎺堟潈鑼冨洿',
+  `expires_time` datetime NOT NULL COMMENT '杩囨湡鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_access_token`(`access_token` ASC) USING BTREE,
+  INDEX `idx_refresh_token`(`refresh_token` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 107670 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 璁块棶浠ょ墝' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_oauth2_access_token
+-- ----------------------------
+INSERT INTO `system_oauth2_access_token` VALUES (107056, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '202ee04e28584d67b32577e0ea87845d', '35a51aa055ee4ea18486a012390aa5f0', 'default', NULL, '2026-06-22 15:33:36', NULL, '2026-06-22 15:03:36', NULL, '2026-06-22 15:03:36', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107057, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4c872311c2cd4ce282df91e2993ef11c', 'e4cc045580ea425188f1d36016b8c188', 'default', NULL, '2026-06-22 16:16:31', NULL, '2026-06-22 15:46:31', NULL, '2026-06-22 15:46:31', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107058, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '23d20ebebec54429ac16ddaff3b99a0c', '1b88a71719824081862742b6150c0f78', 'default', NULL, '2026-06-22 16:16:33', NULL, '2026-06-22 15:46:33', NULL, '2026-06-22 15:46:33', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107059, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '71967b77f51e42dba8905895ef66566f', '02a9064a80db49c09792aa8d2daa42d1', 'default', NULL, '2026-06-22 16:16:34', NULL, '2026-06-22 15:46:34', NULL, '2026-06-22 15:46:34', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107060, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '08613f2228b04d3995107bc25a0704f0', '5530fe9b0f8a4e8281e85133e99c249b', 'default', NULL, '2026-06-22 16:17:16', NULL, '2026-06-22 15:47:16', NULL, '2026-06-22 16:29:01', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107061, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '96b6d329b41e4045bbd7fa7ffbd5a7d5', '5530fe9b0f8a4e8281e85133e99c249b', 'default', NULL, '2026-06-22 16:59:01', NULL, '2026-06-22 16:29:01', NULL, '2026-06-23 17:41:16', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107062, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3edad0a7d55e4e45acdd44ebd6d30961', '0863e985ae97429caccb8278b5ba693c', 'default', NULL, '2026-06-22 17:31:39', NULL, '2026-06-22 17:01:39', NULL, '2026-06-22 17:01:39', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107063, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dc3eb73f10c943f0842cfcfe33c26862', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-23 15:21:19', NULL, '2026-06-23 14:51:19', NULL, '2026-06-23 15:21:31', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107064, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '197b9a1168684e66949d8fa7222332df', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-23 15:22:03', NULL, '2026-06-23 14:52:03', NULL, '2026-06-23 15:22:05', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107065, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '96c084069f3445b583335671f7bc2a57', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-23 15:51:31', NULL, '2026-06-23 15:21:31', NULL, '2026-06-23 15:53:29', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107066, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '64f9a58d5e384a52885427bd35df01b2', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-23 15:52:05', NULL, '2026-06-23 15:22:05', NULL, '2026-06-23 15:58:38', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107067, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '378bf347d34e4d53b204e729bf7f94d9', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-23 16:23:29', NULL, '2026-06-23 15:53:29', NULL, '2026-06-23 16:23:33', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107068, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e6a308e3972f4c6d84dda2f402490bcb', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-23 16:28:38', NULL, '2026-06-23 15:58:38', NULL, '2026-06-23 16:28:56', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107069, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd2fc5e3f1ef44adcbae01eff81e2df16', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-23 16:53:33', NULL, '2026-06-23 16:23:33', NULL, '2026-06-23 16:55:25', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107070, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3cef87e6322c4c1f9e7d22fdfcb23c15', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-23 16:58:56', NULL, '2026-06-23 16:28:56', NULL, '2026-06-23 17:00:19', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107071, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '24782cea176d4afbaded1659a82da075', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-23 17:25:25', NULL, '2026-06-23 16:55:25', NULL, '2026-06-23 17:26:31', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107072, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd31fbe5d47744a7ab367f7ebed8022ff', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-23 17:30:19', NULL, '2026-06-23 17:00:19', NULL, '2026-06-23 17:30:27', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107073, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4a766d995fdb4aff919b685d06786b4f', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-23 17:56:31', NULL, '2026-06-23 17:26:31', NULL, '2026-06-24 09:24:42', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107074, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1727b9ea020241fc89e8bb5bf4095f10', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-23 18:00:27', NULL, '2026-06-23 17:30:27', NULL, '2026-06-24 09:45:52', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107075, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e62afa06772a4766814f5a8855161383', '5530fe9b0f8a4e8281e85133e99c249b', 'default', NULL, '2026-06-23 18:11:16', NULL, '2026-06-23 17:41:16', NULL, '2026-06-29 14:57:56', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107076, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8c3828fcbb404b3f899847616cd9b7ce', '08ad276cfc6e4b7696f8cbddd66ff54c', 'default', NULL, '2026-06-23 18:16:05', NULL, '2026-06-23 17:46:05', NULL, '2026-06-23 17:46:05', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107077, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f731bfbe39e44e398b6da2b24c8e1f3b', '2d40e2b738c34cbdbf68bfe6e9c1dd0c', 'default', NULL, '2026-06-23 18:16:13', NULL, '2026-06-23 17:46:13', NULL, '2026-06-24 09:24:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107078, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'beb370ed2f914877824044b969bcde29', '2d40e2b738c34cbdbf68bfe6e9c1dd0c', 'default', NULL, '2026-06-24 09:54:42', NULL, '2026-06-24 09:24:42', NULL, '2026-06-24 09:24:42', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107079, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '189a38848a6f416f8844572e8e97d4ae', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-24 09:54:42', NULL, '2026-06-24 09:24:42', NULL, '2026-06-24 09:24:43', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107080, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f6a1629b571c4e7ab60ec8895949b4b5', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-24 09:54:43', NULL, '2026-06-24 09:24:43', NULL, '2026-06-24 09:55:16', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107081, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dfaff96ee6c84c0fa9e3a2e0762265a7', '70141f76e4a24ee48d9ba75e8d7d555e', 'default', NULL, '2026-06-24 09:58:23', NULL, '2026-06-24 09:28:23', NULL, '2026-06-24 09:28:23', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107082, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ab5c6ce3e53743dfaa324f006773e77f', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-24 10:15:52', NULL, '2026-06-24 09:45:52', NULL, '2026-06-24 17:37:46', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107083, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8709b168c1bc4a0d9b99c27ca9d8c89a', '19a88549d11546ce8deb3c85e95d4770', 'default', NULL, '2026-06-24 10:25:16', NULL, '2026-06-24 09:55:16', NULL, '2026-06-24 09:55:16', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107084, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ede457a6dde34bc390b116437ba73b99', '84260dbd700442a3a40e3f5c6f9e48d1', 'default', NULL, '2026-06-24 18:07:24', NULL, '2026-06-24 17:37:24', NULL, '2026-06-24 17:37:24', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107085, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a330756e48c441d79156b10cb04478db', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-24 18:07:46', NULL, '2026-06-24 17:37:46', NULL, '2026-06-25 10:35:44', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107086, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '74e6e846ca574660bdbf08ad9d2d3df8', '550878be52fe46248ba26334ca330464', 'default', NULL, '2026-06-24 18:21:49', NULL, '2026-06-24 17:51:49', NULL, '2026-06-25 10:33:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107087, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ac9e406e386e4ee5a2ab80586a17345d', '550878be52fe46248ba26334ca330464', 'default', NULL, '2026-06-25 11:03:17', NULL, '2026-06-25 10:33:17', NULL, '2026-06-25 11:03:19', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107088, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '21ec4b747707454380899a3824650446', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-25 11:05:44', NULL, '2026-06-25 10:35:44', NULL, '2026-06-25 11:07:05', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107089, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9afc861d6af74c0e86d5f9c82db64382', '550878be52fe46248ba26334ca330464', 'default', NULL, '2026-06-25 11:33:19', NULL, '2026-06-25 11:03:19', NULL, '2026-06-26 10:44:10', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107090, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '174988148f784aac879a272b31d7533a', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-25 11:37:05', NULL, '2026-06-25 11:07:05', NULL, '2026-06-25 16:23:46', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107091, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '285890aba3ee41d8a08c3417b0d88e7b', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-25 16:53:46', NULL, '2026-06-25 16:23:46', NULL, '2026-06-26 10:43:12', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107092, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3021172fae414887b73f8d85f86cc0a7', 'd7cbbb362f29418980a38644ab24c709', 'default', NULL, '2026-06-26 11:13:12', NULL, '2026-06-26 10:43:12', '1', '2026-06-26 10:47:36', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107093, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'be114230369c42979331376e591ddde3', '550878be52fe46248ba26334ca330464', 'default', NULL, '2026-06-26 11:14:10', NULL, '2026-06-26 10:44:10', '1', '2026-06-26 10:48:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107094, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c40f2163354a4dfd966abe2990917035', '45232c54596c4108b62fbecb1ba6e8ea', 'default', NULL, '2026-06-26 11:17:55', NULL, '2026-06-26 10:47:55', '1', '2026-06-26 10:48:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107095, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd50da852ff374d17bc2cef7bdcd514b8', 'd257ad536960450c85edfe62f2d879b1', 'default', NULL, '2026-06-26 11:19:00', NULL, '2026-06-26 10:49:00', '1', '2026-06-26 10:55:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107096, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ba0d544f546a4fab9de5a8963b7d34f3', 'f533a8741ac34e9199e146d3aae3edb1', 'default', NULL, '2026-06-26 11:23:10', NULL, '2026-06-26 10:53:10', '1', '2026-06-26 10:53:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107097, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd2e3c4f998284cd4ba905bfe646e2fa8', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 11:23:23', NULL, '2026-06-26 10:53:23', NULL, '2026-06-26 11:25:20', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107098, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd68c4f461b2449cbb6ac1111e9384f46', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 11:25:48', NULL, '2026-06-26 10:55:48', NULL, '2026-06-26 11:27:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107099, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '190f1c4c8882498a80f2bf882640eaaa', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 11:55:20', NULL, '2026-06-26 11:25:20', NULL, '2026-06-26 11:56:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107100, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0e85f21362664bc7bc36cbf01f381c77', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 11:57:25', NULL, '2026-06-26 11:27:25', NULL, '2026-06-26 11:57:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107101, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fd79a982dd44469281cf3789c604a254', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 12:26:36', NULL, '2026-06-26 11:56:36', NULL, '2026-06-26 12:28:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107102, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '483e2fc1fe7d4635b106a40c8c09b8b6', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 12:27:25', NULL, '2026-06-26 11:57:25', NULL, '2026-06-26 12:27:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107103, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '08a3661c06644ba68ce7c660e3d1a6c8', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 12:57:25', NULL, '2026-06-26 12:27:25', NULL, '2026-06-26 15:16:29', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107104, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cfaa65e3a3034099ab0b29a17acbe0d4', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 12:58:02', NULL, '2026-06-26 12:28:02', NULL, '2026-06-26 13:08:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107105, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e172a503f4804ef78c5940a93c9a5610', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 13:38:14', NULL, '2026-06-26 13:08:14', NULL, '2026-06-26 13:40:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107106, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4b0c5f711bed4a64b4bef40f24a9d013', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 14:10:02', NULL, '2026-06-26 13:40:02', NULL, '2026-06-26 14:12:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107107, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '105aaf21e3cb4c35a54140f1ea21ca5d', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 14:42:02', NULL, '2026-06-26 14:12:02', NULL, '2026-06-26 14:42:34', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107108, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5c5d105f5e9b4be4817632a9f65be0fd', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 15:12:34', NULL, '2026-06-26 14:42:34', NULL, '2026-06-26 15:13:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107109, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3d4b912e738649bd851172ba5eaa2a3a', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 15:43:33', NULL, '2026-06-26 15:13:33', NULL, '2026-06-26 15:44:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107110, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '70ed75ce5de14235913d103bba21b0bd', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 15:46:29', NULL, '2026-06-26 15:16:29', NULL, '2026-06-26 15:47:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107111, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0dd729fadb9e47368676ba55cff4cbaa', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 16:14:33', NULL, '2026-06-26 15:44:33', NULL, '2026-06-26 16:14:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107112, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '532e758d019c48c6b4616e71381442a5', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 16:17:24', NULL, '2026-06-26 15:47:24', NULL, '2026-06-26 16:27:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107113, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9725aed768b24ee190620eadf28e14ae', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 16:44:33', NULL, '2026-06-26 16:14:33', NULL, '2026-06-26 16:44:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107114, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '53ccffcd5eb84824ace54202666338a3', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 16:57:24', NULL, '2026-06-26 16:27:24', NULL, '2026-06-26 17:49:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107115, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f31fe90987b44f96b5aa50ca1fe5d873', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 17:14:33', NULL, '2026-06-26 16:44:33', NULL, '2026-06-26 17:15:20', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107116, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9d2e1ff8981d471880afd17c75b18de5', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 17:45:20', NULL, '2026-06-26 17:15:20', NULL, '2026-06-26 17:45:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107117, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7f256d5500374b96ab085bac9c792b44', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-26 18:15:28', NULL, '2026-06-26 17:45:28', NULL, '2026-06-29 11:16:49', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107118, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7e2f8370ced6489d9ce3968fd8fd30c9', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 18:19:45', NULL, '2026-06-26 17:49:45', NULL, '2026-06-26 17:49:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107119, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ab856a889c8e4d81bf72ce82adeadc87', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-26 18:19:46', NULL, '2026-06-26 17:49:46', NULL, '2026-06-29 11:17:40', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107120, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1f6ea7db806f41059f6964f44eabf2ee', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-29 11:46:49', NULL, '2026-06-29 11:16:49', NULL, '2026-06-29 14:21:01', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107121, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3623b3f4dbae4b83939d928b2384b25f', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-29 11:47:40', NULL, '2026-06-29 11:17:40', NULL, '2026-06-29 11:48:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107122, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'eebacc6fc59246b2b8628dd4b92b0d8d', 'daeea35820634ab1b213653140930534', 'default', NULL, '2026-06-29 12:18:23', NULL, '2026-06-29 11:48:23', NULL, '2026-06-29 11:48:23', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107123, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '93843633d56d4fc09639f16f3536174a', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-29 14:51:02', NULL, '2026-06-29 14:21:02', NULL, '2026-06-29 14:51:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107124, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd6c49b91c8c24b89af1cc425ba633660', 'b44b770020f74f588806a837692f5475', 'default', NULL, '2026-06-29 15:21:42', NULL, '2026-06-29 14:51:42', NULL, '2026-06-29 14:51:42', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107125, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd8cf470eb6d046df9536263e9d26d717', '5530fe9b0f8a4e8281e85133e99c249b', 'default', NULL, '2026-06-29 15:27:56', NULL, '2026-06-29 14:57:56', NULL, '2026-06-29 15:28:23', b'1', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107126, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0d961d609a534ac1a1f82e2cbfad207b', '8919d3af4b7b4d8e8ac24ba5da061300', 'default', NULL, '2026-06-29 15:45:35', NULL, '2026-06-29 15:15:35', NULL, '2026-06-30 09:17:00', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107127, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f1107dd651e64fb187d98cc51aaf5391', '5530fe9b0f8a4e8281e85133e99c249b', 'default', NULL, '2026-06-29 15:58:23', NULL, '2026-06-29 15:28:23', NULL, '2026-06-29 15:28:23', b'0', 1);
+INSERT INTO `system_oauth2_access_token` VALUES (107128, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '459721a5ac594617931c03afd4935d51', 'a7443d4aea46436687837a5b3d49bb91', 'default', NULL, '2026-06-30 09:44:02', NULL, '2026-06-30 09:14:02', '1', '2026-06-30 09:17:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107129, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c82705e898384656b467e661d4ba72e1', '8919d3af4b7b4d8e8ac24ba5da061300', 'default', NULL, '2026-06-30 09:47:00', NULL, '2026-06-30 09:17:00', NULL, '2026-06-30 09:59:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107130, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '18ffba8ff6f44b188a19693587e2c443', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 09:47:07', NULL, '2026-06-30 09:17:07', NULL, '2026-06-30 09:59:01', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107131, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'e82d62949edc449a9294b8d5a810423c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 10:29:01', NULL, '2026-06-30 09:59:01', NULL, '2026-06-30 10:42:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107132, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd0bb7246092448919f8489341f9ee973', '8919d3af4b7b4d8e8ac24ba5da061300', 'default', NULL, '2026-06-30 10:29:02', NULL, '2026-06-30 09:59:02', NULL, '2026-06-30 10:42:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107133, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7b733dd4daf94e7cb86212f30bb6c2f0', '8919d3af4b7b4d8e8ac24ba5da061300', 'default', NULL, '2026-06-30 11:12:27', NULL, '2026-06-30 10:42:27', NULL, '2026-06-30 10:42:27', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107134, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'daf188611d9e460ea5b26c23b34f33d6', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 11:12:28', NULL, '2026-06-30 10:42:28', NULL, '2026-06-30 11:13:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107135, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'b98a811291db429fad8142668e8811b3', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 11:43:22', NULL, '2026-06-30 11:13:22', NULL, '2026-06-30 14:00:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107136, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '79ddea2af6df4a1f851972f4db986ae4', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 14:30:33', NULL, '2026-06-30 14:00:33', NULL, '2026-06-30 14:46:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107137, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c625ac19d8e044e0a7206951344f5627', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 14:55:50', NULL, '2026-06-30 14:25:50', NULL, '2026-06-30 14:56:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107138, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '93820292cd3e4999894e3fba60335d51', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 15:16:14', NULL, '2026-06-30 14:46:14', NULL, '2026-06-30 14:46:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107139, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '713bc956e46c4de7ad32daa275afcd0e', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 15:16:16', NULL, '2026-06-30 14:46:16', NULL, '2026-06-30 15:17:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107140, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3e88e79c8f384a52a417c707508d9733', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 15:26:04', NULL, '2026-06-30 14:56:04', NULL, '2026-06-30 15:26:18', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107141, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '1cc4fea0b000434f8dbb5be02713b23c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 15:47:56', NULL, '2026-06-30 15:17:56', NULL, '2026-06-30 15:47:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107142, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4b1c61da304c410089b974be079327f7', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 15:56:18', NULL, '2026-06-30 15:26:18', NULL, '2026-06-30 15:57:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107143, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '151316f432c14af1acdf5580e4741a13', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 16:17:57', NULL, '2026-06-30 15:47:57', NULL, '2026-06-30 16:17:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107144, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'aa160bde587a41129738bf56e698ec14', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 16:27:22', NULL, '2026-06-30 15:57:22', NULL, '2026-06-30 16:27:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107145, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '6448d31b29824e54a5ffcd570b4fece7', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 16:47:57', NULL, '2026-06-30 16:17:57', NULL, '2026-06-30 17:01:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107146, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '005812a1cabb4b0b84bd95b43aed1500', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 16:57:28', NULL, '2026-06-30 16:27:28', NULL, '2026-06-30 17:02:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107147, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '9dfa6c346655445a87fa44c700f59138', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 17:31:09', NULL, '2026-06-30 17:01:09', NULL, '2026-06-30 17:35:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107148, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '66c93a93d10e4cedb161fb41d386aca5', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 17:32:27', NULL, '2026-06-30 17:02:27', NULL, '2026-06-30 17:02:34', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107149, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '01cf7c1b04744db38c4fda813db3c456', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 17:32:34', NULL, '2026-06-30 17:02:34', NULL, '2026-06-30 17:33:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107150, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '36a2d886f2574fc9b11dfc44f7456392', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-06-30 18:03:36', NULL, '2026-06-30 17:33:36', NULL, '2026-07-01 09:29:41', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107151, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '861ba2600e0a489991b34ce7c3407dab', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-06-30 18:05:28', NULL, '2026-06-30 17:35:28', NULL, '2026-07-01 09:45:52', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107152, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f09582b2c2f64cb0a0a32d247b2c5c03', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-07-01 09:59:41', NULL, '2026-07-01 09:29:41', NULL, '2026-07-01 09:29:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107153, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '83283f8587df4e8caf3ca374e3ba21a7', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-07-01 09:59:42', NULL, '2026-07-01 09:29:42', NULL, '2026-07-01 10:00:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107154, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '82c35e683605429388e8129a5a934179', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 10:15:52', NULL, '2026-07-01 09:45:52', NULL, '2026-07-01 10:16:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107155, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6b8da84515ab4be2baf95aacc60185f0', 'dcb537b1961345899bed3f6a30ecaca3', 'default', NULL, '2026-07-01 10:30:14', NULL, '2026-07-01 10:00:14', NULL, '2026-07-01 10:00:14', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107156, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c6a5f2f761164a6294b51f19310e1770', '29a752a6cdd648d6a8b098c47994c10d', 'default', NULL, '2026-07-01 10:39:55', NULL, '2026-07-01 10:09:55', NULL, '2026-07-01 10:09:55', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107157, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '41a7094f4e4b4e1aab984b735c8d3d1e', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 10:46:21', NULL, '2026-07-01 10:16:21', NULL, '2026-07-01 10:47:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107158, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2f432ecc92864e668242965e06c25831', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 11:09:25', NULL, '2026-07-01 10:39:25', NULL, '2026-07-01 11:09:29', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107159, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5b1de89adb8f4a808e509ee435536f51', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 11:17:33', NULL, '2026-07-01 10:47:33', NULL, '2026-07-01 11:23:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107160, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '46e36936a2e54b7c83960816d6c5a2b5', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 11:39:29', NULL, '2026-07-01 11:09:29', NULL, '2026-07-01 11:40:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107161, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'b06ae2236cae45a09daf0b86e0ad5a4c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 11:53:04', NULL, '2026-07-01 11:23:04', NULL, '2026-07-01 11:53:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107162, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '16db5623e3bc4a2a9f76366ec4fc1494', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 12:10:03', NULL, '2026-07-01 11:40:03', NULL, '2026-07-01 12:12:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107163, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '390eeba93ee340feaa5bbe1ae05ca5db', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 12:23:09', NULL, '2026-07-01 11:53:09', NULL, '2026-07-01 12:24:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107164, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '150226ccb57a4dfabede7bd4f386ee9f', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 12:42:12', NULL, '2026-07-01 12:12:12', NULL, '2026-07-01 13:02:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107165, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'eb9779f8ba27413a9184122d07544136', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 12:54:45', NULL, '2026-07-01 12:24:45', NULL, '2026-07-01 13:02:01', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107166, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '7dd9273cf9484b9c83e55aa9101ff216', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 13:32:01', NULL, '2026-07-01 13:02:01', NULL, '2026-07-01 13:32:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107167, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b523df8816fd4b5094fe9ff090b620ed', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 13:32:45', NULL, '2026-07-01 13:02:45', NULL, '2026-07-01 13:32:47', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107168, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'f785947f7570470ea661ccf6a8f1591e', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 14:02:33', NULL, '2026-07-01 13:32:33', NULL, '2026-07-01 14:03:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107169, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8e1019140cff4569b50e74ffda8d3812', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 14:02:47', NULL, '2026-07-01 13:32:47', NULL, '2026-07-01 14:03:34', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107170, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '77ab0abeee3d43519e992835095590a9', '6b824e2cb5c143318a6d45e861a5d704', 'default', NULL, '2026-07-01 14:29:29', NULL, '2026-07-01 13:59:29', NULL, '2026-07-01 14:29:31', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107171, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '984d06ba361d4f1486ac374c1f1707e9', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 14:33:23', NULL, '2026-07-01 14:03:23', NULL, '2026-07-01 14:34:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107172, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7210e8862c9243e5853c3614865ee05b', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 14:33:34', NULL, '2026-07-01 14:03:34', NULL, '2026-07-01 14:33:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107173, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1d5d25b199694c37a23c8b3b8ae4f9f2', '6b824e2cb5c143318a6d45e861a5d704', 'default', NULL, '2026-07-01 14:59:31', NULL, '2026-07-01 14:29:31', NULL, '2026-07-01 14:29:31', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107174, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e71bcd0dfdd54ef9b37cac2da12e8ab4', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 15:03:42', NULL, '2026-07-01 14:33:42', NULL, '2026-07-01 15:04:40', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107175, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e632ad2b24d34312b6ed42a8455ccd1b', '6a5f95b66d6b4bcb8cd8004609d7a0ac', 'default', NULL, '2026-07-01 15:04:00', NULL, '2026-07-01 14:34:00', NULL, '2026-07-01 15:04:38', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107176, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'd0e69d49ae63407381ba6399d7086dd5', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 15:04:25', NULL, '2026-07-01 14:34:25', NULL, '2026-07-01 15:05:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107177, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1c2d40e902fa477098822732b3176fe6', '6a5f95b66d6b4bcb8cd8004609d7a0ac', 'default', NULL, '2026-07-01 15:34:38', NULL, '2026-07-01 15:04:38', NULL, '2026-07-01 15:55:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107178, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5fb09d318d2b4232bea3324c483396be', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 15:34:40', NULL, '2026-07-01 15:04:40', NULL, '2026-07-01 15:49:13', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107179, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '21f1672cbb83489ea7d3172c1e2edcd2', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 15:35:25', NULL, '2026-07-01 15:05:25', NULL, '2026-07-01 15:49:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107180, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '853b996d107341909db56fbb82d003ae', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 16:19:13', NULL, '2026-07-01 15:49:13', NULL, '2026-07-01 16:21:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107181, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '892c92f2a7184025a5d01a7b803be00c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 16:19:23', NULL, '2026-07-01 15:49:23', NULL, '2026-07-01 16:19:48', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107182, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cbf8e6d8e3d34e33963419299fe32f10', '6a5f95b66d6b4bcb8cd8004609d7a0ac', 'default', NULL, '2026-07-01 16:25:45', NULL, '2026-07-01 15:55:45', NULL, '2026-07-01 16:25:47', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107183, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5a68dad116ee46e095cf1bea7cd242eb', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 16:49:48', NULL, '2026-07-01 16:19:48', NULL, '2026-07-01 17:02:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107184, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '368cd4548d304e2fb6525c1d58eda940', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 16:51:12', NULL, '2026-07-01 16:21:12', NULL, '2026-07-01 17:02:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107185, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '41baa4ea4d4d4780b8f9e21cbeaaa75c', '6a5f95b66d6b4bcb8cd8004609d7a0ac', 'default', NULL, '2026-07-01 16:55:47', NULL, '2026-07-01 16:25:47', NULL, '2026-07-01 16:25:47', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107186, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '21bacc07ea234eac99445319b2e15ef5', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-01 17:22:04', NULL, '2026-07-01 16:52:04', NULL, '2026-07-01 17:22:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107187, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8b7230e7e8b040188a80a026de59e3c0', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 17:32:12', NULL, '2026-07-01 17:02:12', NULL, '2026-07-01 17:32:13', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107188, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '1df4c0dabce04f46903b6ec20d37161f', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 17:32:12', NULL, '2026-07-01 17:02:12', NULL, '2026-07-01 17:32:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107189, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '879cbc8f42f94b0d838832d43e1daff0', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-01 17:52:24', NULL, '2026-07-01 17:22:24', NULL, '2026-07-01 17:52:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107190, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dd6367c48272446eb8e260363ee3ef5d', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-01 18:02:13', NULL, '2026-07-01 17:32:13', NULL, '2026-07-02 09:13:43', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107191, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'e420783893fb410fb37ebd7b0d8be64c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-01 18:02:23', NULL, '2026-07-01 17:32:23', NULL, '2026-07-02 09:05:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107192, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e1de78f73e8d46bcb88f41cb30b75cae', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-01 18:22:57', NULL, '2026-07-01 17:52:57', NULL, '2026-07-02 09:12:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107193, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5613bb6a69f54937ac7e83e444d582dd', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 09:35:55', NULL, '2026-07-02 09:05:55', NULL, '2026-07-02 09:37:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107194, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '078382845548487a9558e86f1ff577aa', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-02 09:42:26', NULL, '2026-07-02 09:12:26', NULL, '2026-07-02 09:12:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107195, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '29004116b20b4d1ca884b4087e09dd21', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-02 09:42:27', NULL, '2026-07-02 09:12:27', NULL, '2026-07-02 09:43:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107196, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3610ede3576a489d82a8cba6fcda50b1', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 09:43:43', NULL, '2026-07-02 09:13:43', NULL, '2026-07-02 09:43:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107197, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '61b3ae95b15c426dbff43dfabf0da26b', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 10:07:12', NULL, '2026-07-02 09:37:12', NULL, '2026-07-02 10:19:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107198, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4bd58fdbd565492cb085da2a84ca1581', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-02 10:13:12', NULL, '2026-07-02 09:43:12', NULL, '2026-07-02 10:13:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107199, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a58dd6f97e664f3dbbc5ce34889ee37c', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 10:13:50', NULL, '2026-07-02 09:43:50', NULL, '2026-07-02 10:19:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107200, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7eb2b45874714bd9a6001a8105caf55d', '5cfdca4a5db84b1b81463fb836bc6a20', 'default', NULL, '2026-07-02 10:43:14', NULL, '2026-07-02 10:13:14', NULL, '2026-07-02 10:13:14', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107201, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4d286d033a6f4ebfbff054bad2f336d0', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 10:49:16', NULL, '2026-07-02 10:19:16', NULL, '2026-07-02 10:56:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107202, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd355cdb7983c47069fbc1d63fa998a34', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 10:49:16', NULL, '2026-07-02 10:19:16', NULL, '2026-07-02 10:56:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107203, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '7ccc7862ff274e37a4c193b70a569b6d', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 11:26:27', NULL, '2026-07-02 10:56:27', NULL, '2026-07-02 11:28:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107204, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a273b8a6c9c84c119febe008ce8d7bc2', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 11:26:28', NULL, '2026-07-02 10:56:28', NULL, '2026-07-02 11:28:07', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107205, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4f7a0140584a4f17b1d40aac90f28216', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 11:58:04', NULL, '2026-07-02 11:28:04', NULL, '2026-07-02 11:58:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107206, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8d489547db514e31aed73d9fc5dcd748', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 11:58:07', NULL, '2026-07-02 11:28:07', NULL, '2026-07-02 11:58:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107207, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '43f6d8b56b3b41cb8212b38de0f33333', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 12:28:14', NULL, '2026-07-02 11:58:14', NULL, '2026-07-02 12:30:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107208, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'fbb2ddb77b794f51a03c8abb42b8a691', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 12:28:14', NULL, '2026-07-02 11:58:14', NULL, '2026-07-02 12:28:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107209, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '48c565578e1c4c849f7661fb5d834d1b', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 12:58:17', NULL, '2026-07-02 12:28:17', NULL, '2026-07-02 13:01:53', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107210, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '421ab21cfe7f46f98a1896488b32b836', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 13:00:14', NULL, '2026-07-02 12:30:14', NULL, '2026-07-02 13:01:53', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107211, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6db8cff3ba4b43669d7d87285ff01d4f', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 13:31:53', NULL, '2026-07-02 13:01:53', NULL, '2026-07-02 13:32:53', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107212, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '1d25a2cb82e04890bd0bc5a5c7c20c51', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 13:31:53', NULL, '2026-07-02 13:01:53', NULL, '2026-07-02 13:32:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107213, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'd4448fa0bc8449ef9402dacdfff6865f', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 14:02:46', NULL, '2026-07-02 13:32:46', NULL, '2026-07-02 14:04:31', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107214, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '00fef63a22684b35b5b01fdd193c35a2', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 14:02:53', NULL, '2026-07-02 13:32:53', NULL, '2026-07-02 14:03:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107215, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '63f4a8a89758498fb5f956e3b5564999', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 14:25:18', NULL, '2026-07-02 13:55:18', NULL, '2026-07-02 14:25:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107216, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a2de638a94da4870b7ca0cf6f8d03366', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 14:33:26', NULL, '2026-07-02 14:03:26', NULL, '2026-07-02 14:38:10', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107217, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'a226c3612de442309221502ff7c04c62', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 14:34:31', NULL, '2026-07-02 14:04:31', NULL, '2026-07-02 14:38:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107218, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '057177e3e60847418ee224d26938b830', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 14:51:23', NULL, '2026-07-02 14:21:23', NULL, '2026-07-02 14:52:53', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107219, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '790909f01b2745b6b77c4d5bda67d41e', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 14:55:36', NULL, '2026-07-02 14:25:36', NULL, '2026-07-02 14:55:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107220, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3bee52e12a8349ed9f24334a65d236fd', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 15:08:10', NULL, '2026-07-02 14:38:10', NULL, '2026-07-02 15:09:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107221, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '479e60f83c8546329ea89d2194a90c0c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 15:08:22', NULL, '2026-07-02 14:38:22', NULL, '2026-07-02 15:09:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107222, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e2ce3e92bd764f0d99df175dc8929499', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 15:22:53', NULL, '2026-07-02 14:52:53', NULL, '2026-07-02 15:24:43', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107223, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'aed85ecabac34f77ba9113bd42f78ad1', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 15:25:37', NULL, '2026-07-02 14:55:37', NULL, '2026-07-02 15:26:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107224, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '04374903329e45aead2564f74e655d81', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 15:39:35', NULL, '2026-07-02 15:09:35', NULL, '2026-07-02 15:40:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107225, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'f79589fff97a4e6aa9e98384a95785fc', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 15:39:36', NULL, '2026-07-02 15:09:36', NULL, '2026-07-02 15:41:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107226, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c8fcbb42c3d942c99c13e64a3b6cc50c', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 15:54:43', NULL, '2026-07-02 15:24:43', NULL, '2026-07-02 15:55:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107227, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a5a55956de944af2ac16463a2588fbfb', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 15:56:04', NULL, '2026-07-02 15:26:04', NULL, '2026-07-02 15:56:37', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107228, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fe43b6dff8774c3783187f19e8eff660', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 16:10:25', NULL, '2026-07-02 15:40:25', NULL, '2026-07-02 16:25:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107229, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '609cd391ee6646278588687a8c9eed22', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 16:11:16', NULL, '2026-07-02 15:41:16', NULL, '2026-07-02 16:26:30', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107230, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '48c0be2f0a0640e3a5dc70ca2b82dddc', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:25:03', NULL, '2026-07-02 15:55:03', NULL, '2026-07-02 15:55:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107231, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ecd824b92f0f4696889636fcf474eb85', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:25:22', NULL, '2026-07-02 15:55:22', NULL, '2026-07-02 15:56:43', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107232, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '17bae19cf8624f33a2977cc2caab45ea', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 16:26:37', NULL, '2026-07-02 15:56:37', NULL, '2026-07-02 16:28:37', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107233, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1c276fe3d63e4f0092d87b4a8b7a1fea', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:26:43', NULL, '2026-07-02 15:56:43', NULL, '2026-07-02 15:58:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107234, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b7ca524fd5a34419944247349e37cfe1', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:28:03', NULL, '2026-07-02 15:58:03', NULL, '2026-07-02 15:59:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107235, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd97f263175304391a96ccffa39eccfbf', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:29:03', NULL, '2026-07-02 15:59:03', NULL, '2026-07-02 16:00:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107236, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '57d9dbafe9554fc2bd878c33991d9953', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:30:03', NULL, '2026-07-02 16:00:03', NULL, '2026-07-02 16:01:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107237, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd5b360858fec40b9965b9bbbb4df7827', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:31:03', NULL, '2026-07-02 16:01:03', NULL, '2026-07-02 16:02:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107238, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6298d178c8c84a11865da214bdfc5cb5', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:32:03', NULL, '2026-07-02 16:02:03', NULL, '2026-07-02 16:03:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107239, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '207ec4933139499f9aef3e6696cab01f', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:33:03', NULL, '2026-07-02 16:03:03', NULL, '2026-07-02 16:04:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107240, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dbc67623e0cc4da986d1aa383b324b44', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:34:03', NULL, '2026-07-02 16:04:03', NULL, '2026-07-02 16:05:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107241, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7ea5ae9b70794ad690b8ec4abbfc3808', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:35:03', NULL, '2026-07-02 16:05:03', NULL, '2026-07-02 16:06:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107242, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0655cb6b924c457a8eeaa5cfccdc6911', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:36:03', NULL, '2026-07-02 16:06:03', NULL, '2026-07-02 16:07:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107243, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4ecff036af924cbe8979d4025f5c5c1f', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:37:03', NULL, '2026-07-02 16:07:03', NULL, '2026-07-02 16:08:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107244, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a01bf47e9ef14b8bbc342575d2c0f6d3', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:38:03', NULL, '2026-07-02 16:08:03', NULL, '2026-07-02 16:09:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107245, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fc7af5e0c9d94fa48c18ad1a2a7b878d', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:39:03', NULL, '2026-07-02 16:09:03', NULL, '2026-07-02 16:10:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107246, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '919a8af0664646a78a21bf09d5213cef', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:40:03', NULL, '2026-07-02 16:10:03', NULL, '2026-07-02 16:11:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107247, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '790306876eb6414682cefd8511f5e0c1', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:41:03', NULL, '2026-07-02 16:11:03', NULL, '2026-07-02 16:12:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107248, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '036afafb38564c59bba426435b2927d0', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:42:03', NULL, '2026-07-02 16:12:03', NULL, '2026-07-02 16:13:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107249, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '31c5054c8974401ca5e157fb8036f834', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:43:03', NULL, '2026-07-02 16:13:03', NULL, '2026-07-02 16:14:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107250, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '545e4df9c9194f72a75f90d22b8ba384', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:44:03', NULL, '2026-07-02 16:14:03', NULL, '2026-07-02 16:15:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107251, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5989a86d38f3490ea4f9296da52c859e', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:45:03', NULL, '2026-07-02 16:15:03', NULL, '2026-07-02 16:16:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107252, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6e79ca7e907a43a9959d15fc97aebbbf', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:46:03', NULL, '2026-07-02 16:16:03', NULL, '2026-07-02 16:17:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107253, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0561c62ea5e5436c8d9f6b5122a217fb', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:47:03', NULL, '2026-07-02 16:17:03', NULL, '2026-07-02 16:18:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107254, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ed2548cbc44849e1b3277f63a98f8205', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:48:03', NULL, '2026-07-02 16:18:03', NULL, '2026-07-02 16:19:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107255, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '75b6ba10e81e4414a687d86c77d2a07c', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:49:03', NULL, '2026-07-02 16:19:03', NULL, '2026-07-02 16:20:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107256, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7662b0d97e474a20acfd2406b36c7eee', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:50:03', NULL, '2026-07-02 16:20:03', NULL, '2026-07-02 16:21:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107257, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '43b58ebb81d7485a91718fbe4e6c54c0', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:51:03', NULL, '2026-07-02 16:21:03', NULL, '2026-07-02 16:22:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107258, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0fb5ff9b587b4f38bd11302edc75285f', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:52:04', NULL, '2026-07-02 16:22:04', NULL, '2026-07-02 16:23:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107259, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8e749fa730e54774b945bb448148fbbd', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:53:03', NULL, '2026-07-02 16:23:03', NULL, '2026-07-02 16:24:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107260, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e5b971cdf8fe4caabc213791d91c26ff', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:54:03', NULL, '2026-07-02 16:24:03', NULL, '2026-07-02 16:25:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107261, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '61ebf02514be4bfebc089912c531bb6a', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:55:03', NULL, '2026-07-02 16:25:03', NULL, '2026-07-02 16:26:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107262, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f50e919a9bcb49208511045c8e3c198c', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 16:55:28', NULL, '2026-07-02 16:25:28', NULL, '2026-07-02 16:55:30', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107263, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '069b5a2c757343c19591ace8ec8ad05e', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:56:03', NULL, '2026-07-02 16:26:03', NULL, '2026-07-02 16:27:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107264, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'e5c6cff80b76479ba4a5508c82bedbbc', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 16:56:30', NULL, '2026-07-02 16:26:30', NULL, '2026-07-02 16:57:39', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107265, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c42166d009db4fd8b7cc29e0f5ff4a46', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:57:03', NULL, '2026-07-02 16:27:03', NULL, '2026-07-02 16:28:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107266, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '45e5536e911d4f6188edbe8c3ca44bbe', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:58:03', NULL, '2026-07-02 16:28:03', NULL, '2026-07-02 16:29:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107267, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'aa9eb9dd77244279a0b65e98f33e4421', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 16:58:37', NULL, '2026-07-02 16:28:37', NULL, '2026-07-02 16:58:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107268, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '253137c8ab374f0ab6e9552f4e0d3087', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 16:59:03', NULL, '2026-07-02 16:29:03', NULL, '2026-07-02 16:30:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107269, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f97075af47534e549cb6ed4acf1cb043', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:00:03', NULL, '2026-07-02 16:30:03', NULL, '2026-07-02 16:31:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107270, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fa99b94b9ee84e3d9914d99ad793af6f', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:01:04', NULL, '2026-07-02 16:31:04', NULL, '2026-07-02 16:32:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107271, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2f9da3e5bdf847e0b56dd414702347e1', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:02:03', NULL, '2026-07-02 16:32:03', NULL, '2026-07-02 16:33:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107272, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8183780e114a41daad9baa4a7d5fcb4d', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:03:03', NULL, '2026-07-02 16:33:03', NULL, '2026-07-02 16:34:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107273, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b4127d7a4547432ea832c8280b2fb0e7', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:04:03', NULL, '2026-07-02 16:34:03', NULL, '2026-07-02 16:35:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107274, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5bb346f39a9f4a5180bc3d9808221bcc', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:05:03', NULL, '2026-07-02 16:35:03', NULL, '2026-07-02 16:36:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107275, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '85a9e299c2a64933a254018cf0e67b8a', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:06:03', NULL, '2026-07-02 16:36:03', NULL, '2026-07-02 16:37:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107276, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '87bc447e083f461b87910558c93808d3', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:07:04', NULL, '2026-07-02 16:37:04', NULL, '2026-07-02 16:38:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107277, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '792e7a21cc5240e587f6a7bd456aafa0', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:08:03', NULL, '2026-07-02 16:38:03', NULL, '2026-07-02 16:39:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107278, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4445865e4d524970808143c0979066d3', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:09:03', NULL, '2026-07-02 16:39:03', NULL, '2026-07-02 16:40:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107279, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f88d9f68e1354fba8ac7e45dc2942247', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:10:03', NULL, '2026-07-02 16:40:03', NULL, '2026-07-02 16:41:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107280, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4b2444973f2e490b8933b43d28c3f7db', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:11:03', NULL, '2026-07-02 16:41:03', NULL, '2026-07-02 16:42:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107281, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '83c7fb14a95d42719beadc8874171c91', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:12:03', NULL, '2026-07-02 16:42:03', NULL, '2026-07-02 16:42:34', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107282, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '29df6672dd8b422789fd98d1fc8523f1', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:12:34', NULL, '2026-07-02 16:42:34', NULL, '2026-07-02 16:44:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107283, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c06847af41fe42489c3dad8365bbbde3', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:14:03', NULL, '2026-07-02 16:44:03', NULL, '2026-07-02 16:45:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107284, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '60f29306c704490babe4102aafe4dc71', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:15:03', NULL, '2026-07-02 16:45:03', NULL, '2026-07-02 16:46:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107285, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4c449693853443bb95e99d4541f0e429', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:16:03', NULL, '2026-07-02 16:46:03', NULL, '2026-07-02 16:47:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107286, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c7f2c7324a404ad8a0ca68184d77b6e1', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:17:03', NULL, '2026-07-02 16:47:03', NULL, '2026-07-02 16:48:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107287, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'bafd55ec030545b0b7dcadc5818e5549', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:18:03', NULL, '2026-07-02 16:48:03', NULL, '2026-07-02 16:53:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107288, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b142b6db4a174275a0c9be6311bae250', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:23:03', NULL, '2026-07-02 16:53:03', NULL, '2026-07-02 16:54:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107289, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'db32425660734118b383f70a3f474cc0', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:24:03', NULL, '2026-07-02 16:54:03', NULL, '2026-07-02 16:55:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107290, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7fc451bc564c405194477eace603d401', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:25:03', NULL, '2026-07-02 16:55:03', NULL, '2026-07-02 16:56:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107291, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3bf5d32fb5754093b5f20a4ed6bdea09', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 17:25:30', NULL, '2026-07-02 16:55:30', NULL, '2026-07-02 17:26:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107292, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a07254f5cc0e48c7a117fe7b6577a0bb', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:26:03', NULL, '2026-07-02 16:56:03', NULL, '2026-07-02 16:57:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107293, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '513cf24cdfd14af4a7d76d2e04557f0c', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-02 17:27:04', NULL, '2026-07-02 16:57:04', NULL, '2026-07-03 09:55:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107294, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '156777cd7d0f4affb3c1fba44f07c86c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 17:27:39', NULL, '2026-07-02 16:57:39', NULL, '2026-07-02 17:28:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107295, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd5d096232142490da2fa6641a83a11b1', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 17:28:50', NULL, '2026-07-02 16:58:50', NULL, '2026-07-02 17:28:58', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107296, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c333142308d946ce99811443bb990593', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 17:56:15', NULL, '2026-07-02 17:26:15', NULL, '2026-07-02 17:57:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107297, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '28d8c216bfa349798ce2b0571cf7b552', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 17:58:15', NULL, '2026-07-02 17:28:15', NULL, '2026-07-02 17:59:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107298, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '95e48d3263c34d08877eddc72f8ee463', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 17:58:58', NULL, '2026-07-02 17:28:58', NULL, '2026-07-02 17:59:32', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107299, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '78b89500afe141f4a3f931a3690095fd', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-02 18:27:22', NULL, '2026-07-02 17:57:22', NULL, '2026-07-03 10:38:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107300, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5a7ef6b3c6e94a0186818e40d6106fce', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-02 18:29:22', NULL, '2026-07-02 17:59:22', NULL, '2026-07-03 10:33:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107301, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3348ebcfe5784157b6a35b5cbd493199', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-02 18:29:32', NULL, '2026-07-02 17:59:32', NULL, '2026-07-03 09:40:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107302, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '316d82bfd46c42408eab74daf8bfb661', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-03 10:10:23', NULL, '2026-07-03 09:40:23', NULL, '2026-07-03 13:57:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107303, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '91e98fb3732d4bc5aa93cade32cdaaf8', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 10:25:54', NULL, '2026-07-03 09:55:54', NULL, '2026-07-03 13:13:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107304, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '12cf99917e04420ab34f96a4f9872cbf', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 11:03:02', NULL, '2026-07-03 10:33:02', NULL, '2026-07-03 11:03:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107305, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0f6e2e442bcd44fab418810e14ec2114', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 11:08:55', NULL, '2026-07-03 10:38:55', NULL, '2026-07-03 11:10:29', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107306, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4c86b0d9f34548dba94ccc4f886ec9c8', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 11:33:21', NULL, '2026-07-03 11:03:21', NULL, '2026-07-03 11:35:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107307, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2261b4dccc944b45880d3f46b802fb34', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 11:40:29', NULL, '2026-07-03 11:10:29', NULL, '2026-07-03 13:35:34', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107308, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '75d14a2d206a4121b9b13d2ba7cc1050', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 12:05:09', NULL, '2026-07-03 11:35:09', NULL, '2026-07-03 12:07:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107309, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8e729f838fe7414bb0169b1f70c2a4c4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:14:32', NULL, '2026-07-03 11:44:32', NULL, '2026-07-03 12:15:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107310, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '774a657905cd419a82cce76283c7df76', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 12:37:09', NULL, '2026-07-03 12:07:09', NULL, '2026-07-03 13:10:19', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107311, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '477449aa353a4fe1bde289ed753daaa8', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:45:56', NULL, '2026-07-03 12:15:56', NULL, '2026-07-03 12:15:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107312, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '375100a3d065460ea72db31ef6355350', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:45:59', NULL, '2026-07-03 12:15:59', NULL, '2026-07-03 12:17:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107313, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd1773ba441394039b93852ca29e42925', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:47:56', NULL, '2026-07-03 12:17:56', NULL, '2026-07-03 12:17:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107314, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7cf1d652b1594279a05f82712b7d516c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:47:59', NULL, '2026-07-03 12:17:59', NULL, '2026-07-03 12:19:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107315, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '539e10021eaa4da8a959e2f3612d24df', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:49:56', NULL, '2026-07-03 12:19:56', NULL, '2026-07-03 12:19:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107316, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b363793d4dce4120afcdba7933bf5c7e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:49:59', NULL, '2026-07-03 12:19:59', NULL, '2026-07-03 12:21:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107317, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8c90c908ce024ec0ac325434b092626e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:51:56', NULL, '2026-07-03 12:21:56', NULL, '2026-07-03 12:22:00', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107318, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a1c464a6a68346df9e09d1df3c7a42ec', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:52:00', NULL, '2026-07-03 12:22:00', NULL, '2026-07-03 12:23:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107319, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '58c9f05268ab4c128b8cc9bed1201a68', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:53:56', NULL, '2026-07-03 12:23:56', NULL, '2026-07-03 12:23:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107320, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'faa269726968409db2b5b98d10de3aaf', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:53:59', NULL, '2026-07-03 12:23:59', NULL, '2026-07-03 12:25:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107321, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ab8c920cf4d242238b9bba2c47bd2a8e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:55:56', NULL, '2026-07-03 12:25:56', NULL, '2026-07-03 12:25:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107322, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a0b4a2c198fa45eebd26db3ea0969038', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:55:59', NULL, '2026-07-03 12:25:59', NULL, '2026-07-03 12:27:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107323, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e177643b180f4cafac7e49989decc420', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:57:56', NULL, '2026-07-03 12:27:56', NULL, '2026-07-03 12:27:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107324, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5ff10c32913c42c28cbb027e94df4e3e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:57:59', NULL, '2026-07-03 12:27:59', NULL, '2026-07-03 12:29:58', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107325, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0e75136a81d24677bfd6c3903ea1ee76', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:59:58', NULL, '2026-07-03 12:29:58', NULL, '2026-07-03 12:29:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107326, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '26b39a434ffe46459899326a3c8bfaf9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 12:59:59', NULL, '2026-07-03 12:29:59', NULL, '2026-07-03 12:31:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107327, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '618947b8cb784d1589210aa419d5b475', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:01:56', NULL, '2026-07-03 12:31:56', NULL, '2026-07-03 12:31:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107328, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd88e925884fc440783fb73260c13e370', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:01:59', NULL, '2026-07-03 12:31:59', NULL, '2026-07-03 13:12:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107329, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '33a98f88c2b140af8c0070ce599ba792', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 13:40:19', NULL, '2026-07-03 13:10:19', NULL, '2026-07-03 13:41:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107330, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f5ff6218e70c40cb9b4d126482dfdf00', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:43:00', NULL, '2026-07-03 13:13:00', NULL, '2026-07-03 13:13:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107331, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f1415b588f7e4612922ec0ca7e19a5f2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:43:59', NULL, '2026-07-03 13:13:59', NULL, '2026-07-03 13:15:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107332, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '955ff581b8c448b69acf6b758a7fbe9e', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 13:43:59', NULL, '2026-07-03 13:13:59', NULL, '2026-07-03 13:44:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107333, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0b247ecf3ab8468fb430e417d21163d4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:45:04', NULL, '2026-07-03 13:15:04', NULL, '2026-07-03 13:15:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107334, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5851b295b05a488797b71b7c2450d1c5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:45:59', NULL, '2026-07-03 13:15:59', NULL, '2026-07-03 13:17:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107335, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '261f04a815f14bf69b473315befe9ddb', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:47:04', NULL, '2026-07-03 13:17:04', NULL, '2026-07-03 13:17:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107336, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd176efe1d0c142d891cdcaa1bd92e2e6', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:47:59', NULL, '2026-07-03 13:17:59', NULL, '2026-07-03 13:19:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107337, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '54d4bcff61cc4900b20788fa312543f5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:49:04', NULL, '2026-07-03 13:19:04', NULL, '2026-07-03 13:19:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107338, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6dd9c771d4574036aed6b80eb29b5e98', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:49:59', NULL, '2026-07-03 13:19:59', NULL, '2026-07-03 13:21:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107339, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd473244713f74ecdb9730d5d90f2814e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:51:04', NULL, '2026-07-03 13:21:04', NULL, '2026-07-03 13:21:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107340, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dba30ce89c584ba489217ef9f63075f4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:51:59', NULL, '2026-07-03 13:21:59', NULL, '2026-07-03 13:23:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107341, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c16df2d88898417c853aa990999d64b2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:53:04', NULL, '2026-07-03 13:23:04', NULL, '2026-07-03 13:23:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107342, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8679f05df8e941ecbeff4b27a84f65c6', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:53:59', NULL, '2026-07-03 13:23:59', NULL, '2026-07-03 13:25:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107343, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '78e0c088be8e4407987c9c7b6b6e0417', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:55:04', NULL, '2026-07-03 13:25:04', NULL, '2026-07-03 13:25:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107344, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a4459577bc174e25a814d33100c68f07', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:55:59', NULL, '2026-07-03 13:25:59', NULL, '2026-07-03 13:27:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107345, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'aa03e5af9cce4a999ef49facb040f941', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:57:59', NULL, '2026-07-03 13:27:59', NULL, '2026-07-03 13:29:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107346, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '66424ca30fa646a9804b926388ae25d9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 13:59:59', NULL, '2026-07-03 13:29:59', NULL, '2026-07-03 13:31:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107347, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0d8f1e3a7c6847a6a92a83bc7d3e82e2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:01:59', NULL, '2026-07-03 13:31:59', NULL, '2026-07-03 13:33:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107348, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e96e858305a54834af839479be468eea', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:03:59', NULL, '2026-07-03 13:33:59', NULL, '2026-07-03 13:35:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107349, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2b75dc32664f484b87681fc8f31acbb5', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 14:05:34', NULL, '2026-07-03 13:35:34', NULL, '2026-07-03 14:06:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107350, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e59f6399a9eb4739a5b671d6368c2994', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:05:59', NULL, '2026-07-03 13:35:59', NULL, '2026-07-03 13:37:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107351, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'af45294185db403d857d8f876977de05', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:07:59', NULL, '2026-07-03 13:37:59', NULL, '2026-07-03 13:39:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107352, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '701ffd40b1b647949d4dd02eb8e7bfce', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:09:59', NULL, '2026-07-03 13:39:59', NULL, '2026-07-03 13:41:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107353, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '57a127d78afe48619bba390c23ff408b', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 14:11:25', NULL, '2026-07-03 13:41:25', NULL, '2026-07-03 14:11:48', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107354, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '68c33a93a19c4e208d4136d6e69791ff', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:11:59', NULL, '2026-07-03 13:41:59', NULL, '2026-07-03 13:43:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107355, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f2db885d6bb04236acec883ff45ceca5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:13:59', NULL, '2026-07-03 13:43:59', NULL, '2026-07-03 13:45:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107356, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3d8be8988b954af3b595bb68bc44defa', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 14:14:59', NULL, '2026-07-03 13:44:59', NULL, '2026-07-03 14:16:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107357, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9273e32ac98247d1a3cc81b2712a20c4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:15:59', NULL, '2026-07-03 13:45:59', NULL, '2026-07-03 13:47:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107358, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a66a9dfac72b433f8f9f258ab14132aa', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:17:59', NULL, '2026-07-03 13:47:59', NULL, '2026-07-03 13:49:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107359, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e549b51a5869432fb0ff8c7d9eee50a2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:19:59', NULL, '2026-07-03 13:49:59', NULL, '2026-07-03 13:51:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107360, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a1f40583761644569988f1827dda69c3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:21:59', NULL, '2026-07-03 13:51:59', NULL, '2026-07-03 13:53:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107361, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '71fb085b38a945faa2b67c882ea58ee2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:23:59', NULL, '2026-07-03 13:53:59', NULL, '2026-07-03 13:55:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107362, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '040ab35c7c3540d7990afcb050db9361', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:25:59', NULL, '2026-07-03 13:55:59', NULL, '2026-07-03 13:57:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107363, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7dafa5a38d7f40f1878fc71cbc2a69b8', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-03 14:27:02', NULL, '2026-07-03 13:57:02', NULL, '2026-07-03 14:27:06', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107364, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0f7d350b364b43c08e5935ab14971dfc', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:27:59', NULL, '2026-07-03 13:57:59', NULL, '2026-07-03 13:59:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107365, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7cee6ba01e4147deba8232f2e59c937e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:29:59', NULL, '2026-07-03 13:59:59', NULL, '2026-07-03 14:01:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107366, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd743da04277642de8081245ac1a664d2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:31:59', NULL, '2026-07-03 14:01:59', NULL, '2026-07-03 14:03:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107367, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7088e939c53f47899df0253e7e3c7a3a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:33:59', NULL, '2026-07-03 14:03:59', NULL, '2026-07-03 14:05:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107368, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8b699352f7a04b7e99a442ecc5f6fc13', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:35:59', NULL, '2026-07-03 14:05:59', NULL, '2026-07-03 14:07:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107369, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7e131bb56aab4c459b0e3293a38a0ea3', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 14:36:12', NULL, '2026-07-03 14:06:12', NULL, '2026-07-03 14:36:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107370, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b3c0d0250d1f4b4691efcde744a1e69f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:37:59', NULL, '2026-07-03 14:07:59', NULL, '2026-07-03 14:09:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107371, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'df65a70371fb4f34a55c54a3dc221609', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:39:59', NULL, '2026-07-03 14:09:59', NULL, '2026-07-03 14:11:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107372, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '83801a1c58034f8fad0ce19bb0ce74f7', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 14:41:48', NULL, '2026-07-03 14:11:48', NULL, '2026-07-03 14:42:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107373, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '925837a944654e2bb149d5a00ff190b7', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:41:59', NULL, '2026-07-03 14:11:59', NULL, '2026-07-03 14:13:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107374, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7b610b5e2f0348baba76ab898286cc95', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:43:59', NULL, '2026-07-03 14:13:59', NULL, '2026-07-03 14:15:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107375, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '685e6cde0bfe45feaa283ae37a7b5d0b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:45:59', NULL, '2026-07-03 14:15:59', NULL, '2026-07-03 14:17:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107376, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '204f7d7a626e43d590f4e251a21c5da5', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 14:46:59', NULL, '2026-07-03 14:16:59', NULL, '2026-07-03 14:48:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107377, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'abc377356aae48dbaf9cca2cc91c91b1', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:47:59', NULL, '2026-07-03 14:17:59', NULL, '2026-07-03 14:19:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107378, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '15dcae4bd6054d729df714fcfe57af6f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:49:59', NULL, '2026-07-03 14:19:59', NULL, '2026-07-03 14:21:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107379, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'bb8bd8e04bc844029c314c5bdf8e39f6', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:51:59', NULL, '2026-07-03 14:21:59', NULL, '2026-07-03 14:23:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107380, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c2676cd5c2d647fba78cbc72dffa96c4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:53:59', NULL, '2026-07-03 14:23:59', NULL, '2026-07-03 14:25:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107381, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '59b871ebc4f849ec961b972bea210944', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:55:59', NULL, '2026-07-03 14:25:59', NULL, '2026-07-03 14:27:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107382, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '05cfd00f72ba4cd3924657c478b8398e', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-03 14:57:06', NULL, '2026-07-03 14:27:06', NULL, '2026-07-03 14:57:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107383, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '241664b6b3a64e6a8af0dabb568e889b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:57:59', NULL, '2026-07-03 14:27:59', NULL, '2026-07-03 14:29:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107384, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e1bd934c5b7140eba632c6d4c20608b9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 14:59:59', NULL, '2026-07-03 14:29:59', NULL, '2026-07-03 14:31:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107385, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3b783822ae8f4858a1ce9e4e5806a588', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:01:59', NULL, '2026-07-03 14:31:59', NULL, '2026-07-03 14:33:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107386, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a48f4edd8b7c49349d33dc1e993a544f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:03:59', NULL, '2026-07-03 14:33:59', NULL, '2026-07-03 14:35:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107387, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '11abbb9266b74228a015a489619e7e96', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:05:59', NULL, '2026-07-03 14:35:59', NULL, '2026-07-03 14:37:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107388, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6012622dc685427f949cbea80a3208c6', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 15:06:35', NULL, '2026-07-03 14:36:35', NULL, '2026-07-03 15:07:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107389, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9b5d82613a59415ca86f2d04c909f436', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:07:59', NULL, '2026-07-03 14:37:59', NULL, '2026-07-03 14:39:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107390, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '37c1ecac52ee4d30b3fb03805e97106f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:09:59', NULL, '2026-07-03 14:39:59', NULL, '2026-07-03 14:41:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107391, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ed1f5e429abc4011908425c52641c863', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:11:59', NULL, '2026-07-03 14:41:59', NULL, '2026-07-03 14:43:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107392, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'c61f7a140e634d259f24db97cfba3224', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 15:12:25', NULL, '2026-07-03 14:42:25', NULL, '2026-07-03 15:12:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107393, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '18e72797652b4331ad394069b2efab73', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:13:59', NULL, '2026-07-03 14:43:59', NULL, '2026-07-03 14:45:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107394, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '02ec2cc4cc23407d831d0f51e5996a5b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:15:59', NULL, '2026-07-03 14:45:59', NULL, '2026-07-03 14:47:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107395, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c4004cf83b434780bc995b0a43a0f71c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:17:59', NULL, '2026-07-03 14:47:59', NULL, '2026-07-03 14:49:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107396, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3e3649e7b839412fa1fb79ff6074b329', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 15:18:59', NULL, '2026-07-03 14:48:59', NULL, '2026-07-03 15:19:18', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107397, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9b18060b25ef4933b0f63272a33fcec3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:19:59', NULL, '2026-07-03 14:49:59', NULL, '2026-07-03 14:51:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107398, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c8927535f92f4ba68a2992fe1d0d4f96', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:21:04', NULL, '2026-07-03 14:51:04', NULL, '2026-07-03 14:51:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107399, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '575205959f6b4a8986d4fe7fb31a7019', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:21:59', NULL, '2026-07-03 14:51:59', NULL, '2026-07-03 14:53:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107400, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '678c02f64f754782b6e74b800623025b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:23:59', NULL, '2026-07-03 14:53:59', NULL, '2026-07-03 14:55:31', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107401, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9751ff1da9c14ae39dd8a1f74b3b0220', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:25:31', NULL, '2026-07-03 14:55:31', NULL, '2026-07-03 14:55:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107402, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0e4b1671b81540e79c9d26f1aba30fc6', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:25:59', NULL, '2026-07-03 14:55:59', NULL, '2026-07-03 14:57:32', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107403, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fdc3255fd02a4e43b471fc6ae2720c8c', '2cb453082de84bbfbeb9f207ee27dd36', 'default', NULL, '2026-07-03 15:27:28', NULL, '2026-07-03 14:57:28', '1', '2026-07-03 15:05:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107404, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cb012bffd4a64d078b7946b297eb0027', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:27:32', NULL, '2026-07-03 14:57:32', NULL, '2026-07-03 14:57:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107405, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8536edf7f6fe4b129bc5553d926481b4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:27:59', NULL, '2026-07-03 14:57:59', NULL, '2026-07-03 14:59:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107406, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '51a5ed54d99e43af87f047782163ed90', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:29:59', NULL, '2026-07-03 14:59:59', NULL, '2026-07-03 15:01:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107407, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f06df0af3bd94fce8517214789f77687', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:31:59', NULL, '2026-07-03 15:01:59', NULL, '2026-07-03 15:03:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107408, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b36dd7c57f3045c19593c8509647cfd0', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:33:59', NULL, '2026-07-03 15:03:59', NULL, '2026-07-03 15:05:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107409, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7fb1be6dd5704430906daef8c38726e9', 'e28c8775e36646a0a433612ba0931bec', 'default', NULL, '2026-07-03 15:35:35', NULL, '2026-07-03 15:05:35', NULL, '2026-07-03 15:35:38', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107410, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5096cb24a45a4defaae171aecc07103a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:35:54', NULL, '2026-07-03 15:05:54', NULL, '2026-07-03 15:07:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107411, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '517ab467fc0c4a6d902c68d8edb7fc0d', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 15:37:03', NULL, '2026-07-03 15:07:03', NULL, '2026-07-03 15:48:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107412, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd3cc02b895c340eeac999ff1c72492e2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:37:54', NULL, '2026-07-03 15:07:54', NULL, '2026-07-03 15:09:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107413, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6a01b66b5d6d407bbbea8c5feba69426', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:39:54', NULL, '2026-07-03 15:09:54', NULL, '2026-07-03 15:11:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107414, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7590da7bb6144b7da329e3f7ca6bfaee', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:41:54', NULL, '2026-07-03 15:11:54', NULL, '2026-07-03 15:13:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107415, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '6a6c7ebdbd1e439eafb19ee0b0fb9b91', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 15:42:42', NULL, '2026-07-03 15:12:42', NULL, '2026-07-03 15:43:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107416, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd2477b2bfd034b31bf017b07b8d0a42c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:43:54', NULL, '2026-07-03 15:13:54', NULL, '2026-07-03 15:15:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107417, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '936205ddfc094f0cb6a903d765211412', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:45:54', NULL, '2026-07-03 15:15:54', NULL, '2026-07-03 15:17:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107418, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8df5d0a4b08b4d9392856da0a9fed6d7', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:47:54', NULL, '2026-07-03 15:17:54', NULL, '2026-07-03 15:19:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107419, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '798e577de19a4179b2c14a8a17e7d53d', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 15:49:18', NULL, '2026-07-03 15:19:18', NULL, '2026-07-03 15:50:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107420, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6cf001ac6c0948b99ec1d91e5d586953', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:49:54', NULL, '2026-07-03 15:19:54', NULL, '2026-07-03 15:21:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107421, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '88f328686b6e48d7b4bf4c4954b391f3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:51:54', NULL, '2026-07-03 15:21:54', NULL, '2026-07-03 15:23:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107422, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6c0c47ede4cd4f8489a21c5938532673', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:53:54', NULL, '2026-07-03 15:23:54', NULL, '2026-07-03 15:25:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107423, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '97651da9be2d4ebba89c46b493457484', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:55:54', NULL, '2026-07-03 15:25:54', NULL, '2026-07-03 15:27:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107424, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e9dc12ee2844420098bdda6c9cb941a5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:57:54', NULL, '2026-07-03 15:27:54', NULL, '2026-07-03 15:29:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107425, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9005598a4c784b97b0275fe06f0474bf', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 15:59:54', NULL, '2026-07-03 15:29:54', NULL, '2026-07-03 15:31:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107426, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5da57ac8541f4dd3b02936326c783321', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:01:54', NULL, '2026-07-03 15:31:54', NULL, '2026-07-03 15:33:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107427, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2853389034ee48d1a0ddb059809cd39b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:03:54', NULL, '2026-07-03 15:33:54', NULL, '2026-07-03 15:35:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107428, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0ff5d0d74739451da3e1661ccf29a541', 'e28c8775e36646a0a433612ba0931bec', 'default', NULL, '2026-07-03 16:05:38', NULL, '2026-07-03 15:35:38', NULL, '2026-07-03 16:09:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107429, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7ceee0f3f0314865b495887df8910afb', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:05:54', NULL, '2026-07-03 15:35:54', NULL, '2026-07-03 15:37:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107430, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '203cf7767caf476c94ed9604f4c4758d', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:07:54', NULL, '2026-07-03 15:37:54', NULL, '2026-07-03 15:39:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107431, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fbb498da6c4645aebe34758256c171c5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:09:54', NULL, '2026-07-03 15:39:54', NULL, '2026-07-03 15:41:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107432, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '74801ba3388744f9b20ae4b9a0e765e6', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:11:54', NULL, '2026-07-03 15:41:54', NULL, '2026-07-03 15:43:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107433, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'd0cbf60b339e483888ce6c078ed6dc06', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-03 16:13:15', NULL, '2026-07-03 15:43:15', NULL, '2026-07-06 09:24:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107434, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cbb845f89bcf413d967b8d067af860da', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:13:54', NULL, '2026-07-03 15:43:54', NULL, '2026-07-03 15:45:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107435, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '559744f590f645c08db2c432d90b7da9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:15:54', NULL, '2026-07-03 15:45:54', NULL, '2026-07-03 15:47:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107436, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '945e4b213c8741db87c621138934bf8a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:17:54', NULL, '2026-07-03 15:47:54', NULL, '2026-07-03 15:49:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107437, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '64cb4db1a8504f11aab876ab81ec6c6f', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-03 16:18:36', NULL, '2026-07-03 15:48:36', NULL, '2026-07-06 09:24:44', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107438, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '47cf6652f0aa4dd1b261a6885a91f6d9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:19:54', NULL, '2026-07-03 15:49:54', NULL, '2026-07-03 15:51:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107439, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '791b46db74b14e498f317fdb0675b852', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 16:20:54', NULL, '2026-07-03 15:50:54', NULL, '2026-07-03 16:21:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107440, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1199fb29070f4b41b3d41e7178e4baf3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:21:54', NULL, '2026-07-03 15:51:54', NULL, '2026-07-03 15:53:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107441, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '910b6d2269b1420b961774a4c1867881', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:23:54', NULL, '2026-07-03 15:53:54', NULL, '2026-07-03 15:55:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107442, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a51ab8b441c143ed86e3c105aa8147bc', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:25:54', NULL, '2026-07-03 15:55:54', NULL, '2026-07-03 15:57:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107443, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'df99969549384743bec306416a7eb9ec', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:27:54', NULL, '2026-07-03 15:57:54', NULL, '2026-07-03 15:59:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107444, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '508183151b9844359a4b136019f7336b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:29:54', NULL, '2026-07-03 15:59:54', NULL, '2026-07-03 16:01:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107445, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'da9999e64db44bcabedd673cf8b12a46', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:31:54', NULL, '2026-07-03 16:01:54', NULL, '2026-07-03 16:03:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107446, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f3c4eae482bf49e79e38de85beb8039c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:33:54', NULL, '2026-07-03 16:03:54', NULL, '2026-07-03 16:05:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107447, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '303802c7eff643099992a518c17cddb5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:35:55', NULL, '2026-07-03 16:05:55', NULL, '2026-07-03 16:07:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107448, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e045b023e1304464a6fb9b8a51129779', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:37:54', NULL, '2026-07-03 16:07:54', NULL, '2026-07-03 16:09:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107449, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4d1ecd72cf424e6ab2a975916fb0326b', 'e28c8775e36646a0a433612ba0931bec', 'default', NULL, '2026-07-03 16:39:45', NULL, '2026-07-03 16:09:45', NULL, '2026-07-03 16:40:05', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107450, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0db8c635a6174d539775a15a5a485e1d', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:39:54', NULL, '2026-07-03 16:09:54', NULL, '2026-07-03 16:11:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107451, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2de2b4e565e14dcca2f87b325fd9825a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:41:54', NULL, '2026-07-03 16:11:54', NULL, '2026-07-03 16:13:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107452, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd68e4ca9d7b84abcb80ec919251b1f1f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:43:55', NULL, '2026-07-03 16:13:55', NULL, '2026-07-03 16:15:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107453, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7d9cd5b21a24453f82127493d5891cf3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:45:54', NULL, '2026-07-03 16:15:54', NULL, '2026-07-03 16:17:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107454, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f3b7809877434591b0ba874a26fa083a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:47:54', NULL, '2026-07-03 16:17:54', NULL, '2026-07-03 16:19:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107455, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '967421b64e094412a837956d74facfef', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:49:54', NULL, '2026-07-03 16:19:54', NULL, '2026-07-03 16:21:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107456, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '68570a89f5444190873017e025fd18ee', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 16:51:26', NULL, '2026-07-03 16:21:26', NULL, '2026-07-03 16:51:32', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107457, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '055aadb7ca1b491a8df3213c3dd5293a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:51:54', NULL, '2026-07-03 16:21:54', NULL, '2026-07-03 16:23:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107458, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a6b404f69be64221905d3d66057a69b7', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:53:54', NULL, '2026-07-03 16:23:54', NULL, '2026-07-03 16:25:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107459, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7d04b3532e8a49e7a9814b714a1e94c3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:55:54', NULL, '2026-07-03 16:25:54', NULL, '2026-07-03 16:27:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107460, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7d95aae33af546cc8b251ebb4063ff35', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:57:54', NULL, '2026-07-03 16:27:54', NULL, '2026-07-03 16:29:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107461, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fee4d6de37e441f78c43d34d398f86b9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 16:59:54', NULL, '2026-07-03 16:29:54', NULL, '2026-07-03 16:31:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107462, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '39942be860f44eb2a2b1c1d56d364796', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:01:54', NULL, '2026-07-03 16:31:54', NULL, '2026-07-03 16:33:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107463, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '19d8372f00bc4f0dbb80cc5baccff2d4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:03:54', NULL, '2026-07-03 16:33:54', NULL, '2026-07-03 16:35:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107464, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8ade8c8044714547ba8b7bd9c0137a1e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:05:54', NULL, '2026-07-03 16:35:54', NULL, '2026-07-03 16:37:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107465, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0d82528f4289427a9552bf49ca1effec', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:07:54', NULL, '2026-07-03 16:37:54', NULL, '2026-07-03 16:39:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107466, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dac64a9a17e74c209c811d8ee2332450', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:09:54', NULL, '2026-07-03 16:39:54', NULL, '2026-07-03 16:41:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107467, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a5f0d494b0104611b0eb33ca989b4471', 'e28c8775e36646a0a433612ba0931bec', 'default', NULL, '2026-07-03 17:10:05', NULL, '2026-07-03 16:40:05', NULL, '2026-07-03 17:10:51', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107468, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '853856c7c0f44926ba65f1a9b770447c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:11:54', NULL, '2026-07-03 16:41:54', NULL, '2026-07-03 16:43:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107469, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '73ec4a5e2bc0497696ab3bbf059c4e51', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:13:54', NULL, '2026-07-03 16:43:54', NULL, '2026-07-03 16:45:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107470, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '68130dc5c3164a9abc02d398b60c0665', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:15:54', NULL, '2026-07-03 16:45:54', NULL, '2026-07-03 16:47:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107471, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5c8ab2b0691b45829fc01970c8e68cfc', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:17:54', NULL, '2026-07-03 16:47:54', NULL, '2026-07-03 16:49:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107472, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '32cf57ab94be466087c5ae451f549a62', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:19:54', NULL, '2026-07-03 16:49:54', NULL, '2026-07-03 16:51:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107473, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2218630c97394d0da8e87ba2d8814651', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 17:21:32', NULL, '2026-07-03 16:51:32', NULL, '2026-07-03 17:23:10', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107474, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cae67d1534ee402fb1b393f6b22ff3ac', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:21:55', NULL, '2026-07-03 16:51:55', NULL, '2026-07-03 16:53:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107475, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5c5e7b38d71e463fbe866decdf08173a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:23:54', NULL, '2026-07-03 16:53:54', NULL, '2026-07-03 16:55:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107476, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6e1d4ab1f7b9444abc500dad259b7e2d', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:25:54', NULL, '2026-07-03 16:55:54', NULL, '2026-07-03 16:57:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107477, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a2917eebf2a54bfd8a5fcda18ec29618', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:27:54', NULL, '2026-07-03 16:57:54', NULL, '2026-07-03 16:59:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107478, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c4e698c7eb724524a652f82fc8e7ab8c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:29:54', NULL, '2026-07-03 16:59:54', NULL, '2026-07-03 17:01:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107479, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1a190f6f75cf4456821ff1242ca5b70b', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:31:54', NULL, '2026-07-03 17:01:54', NULL, '2026-07-03 17:03:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107480, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b76559d93ba24cf9844089dd5d622a5d', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:33:54', NULL, '2026-07-03 17:03:54', NULL, '2026-07-03 17:05:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107481, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3c5392af61e34ce0aa2cf495134cca55', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:35:55', NULL, '2026-07-03 17:05:55', NULL, '2026-07-03 17:07:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107482, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '986a61d5f2904684acca3fd30c9b0c83', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:37:54', NULL, '2026-07-03 17:07:54', NULL, '2026-07-03 17:09:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107483, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e9fb8d0bb54c4c1580c491daf1d31f81', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:39:54', NULL, '2026-07-03 17:09:54', NULL, '2026-07-03 17:11:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107484, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e21e474ed35d48a29372fefc3703173d', 'e28c8775e36646a0a433612ba0931bec', 'default', NULL, '2026-07-03 17:40:51', NULL, '2026-07-03 17:10:51', NULL, '2026-07-03 17:53:31', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107485, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8f63c71a49614fb6985373706423623c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:41:54', NULL, '2026-07-03 17:11:54', NULL, '2026-07-03 17:13:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107486, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a17caeea80f94cbd91ba647d1301beb9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:43:54', NULL, '2026-07-03 17:13:54', NULL, '2026-07-03 17:15:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107487, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '56cd1ce11253423cb2ad8cad96f1d874', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:45:54', NULL, '2026-07-03 17:15:54', NULL, '2026-07-03 17:17:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107488, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '260f9d89159c4ae6b1336e41343d8ad2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:47:54', NULL, '2026-07-03 17:17:54', NULL, '2026-07-03 17:19:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107489, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5cb3afed7ee44253966076107537dda4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:49:54', NULL, '2026-07-03 17:19:54', NULL, '2026-07-03 17:21:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107490, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8a02e75d98cc4d69932c75faecca5e31', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:51:54', NULL, '2026-07-03 17:21:54', NULL, '2026-07-03 17:23:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107491, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'bce965da7c1244538d0bb879cf87d358', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 17:53:10', NULL, '2026-07-03 17:23:10', NULL, '2026-07-03 17:53:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107492, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f2ac61183db4415599e7ac8e28962db1', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:53:54', NULL, '2026-07-03 17:23:54', NULL, '2026-07-03 17:25:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107493, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2c38062cbbea474a8408ea4904c686b9', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:55:55', NULL, '2026-07-03 17:25:55', NULL, '2026-07-03 17:27:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107494, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3170a8727c8b43d99dd9a9c2bf48a1dd', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:57:55', NULL, '2026-07-03 17:27:55', NULL, '2026-07-03 17:29:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107495, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cf3554335fa84f60af360ac6a88f3ed2', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 17:59:54', NULL, '2026-07-03 17:29:54', NULL, '2026-07-03 17:31:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107496, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5248e2e205c9495c8864d8972467f3b0', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:01:55', NULL, '2026-07-03 17:31:55', NULL, '2026-07-03 17:33:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107497, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b2e579612dad4944af350d4e3ac9bf5f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:03:54', NULL, '2026-07-03 17:33:54', NULL, '2026-07-03 17:35:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107498, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '68a5d474bc6646928068de13ce4f3bf7', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:05:54', NULL, '2026-07-03 17:35:54', NULL, '2026-07-03 17:37:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107499, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'eba69fcb497e4959aa8e887b4defe8e3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:07:54', NULL, '2026-07-03 17:37:54', NULL, '2026-07-03 17:39:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107500, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2b09b25d55304ef29ee8d8141de88d2a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:09:54', NULL, '2026-07-03 17:39:54', NULL, '2026-07-03 17:41:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107501, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7fb6c7fc27ba42f1816584bb9da6be0c', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:11:54', NULL, '2026-07-03 17:41:54', NULL, '2026-07-03 17:42:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107502, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c2ccd67ca0ad48628af356c82f0e4d5a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:12:21', NULL, '2026-07-03 17:42:21', NULL, '2026-07-03 17:43:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107503, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4998556a021f46f6be983ab105d8d68f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:13:54', NULL, '2026-07-03 17:43:54', NULL, '2026-07-03 17:45:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107504, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '144903a7aa4b43e4aa34aeecf3e18d33', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:15:26', NULL, '2026-07-03 17:45:26', NULL, '2026-07-03 17:45:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107505, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '96fcbea0abeb439eb7c569d10cee3d25', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:15:54', NULL, '2026-07-03 17:45:54', NULL, '2026-07-03 17:47:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107506, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '292ed3c0e2bc49978cec1564d05f9426', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:17:26', NULL, '2026-07-03 17:47:26', NULL, '2026-07-03 17:47:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107507, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'affb6b9881114ca9baea23fe0e2e323f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:17:54', NULL, '2026-07-03 17:47:54', NULL, '2026-07-03 17:49:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107508, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0bba1acb60d04a3f808575075509723f', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:19:27', NULL, '2026-07-03 17:49:27', NULL, '2026-07-03 17:49:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107509, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2f821ab64b34453390eeff4a095e05a8', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:19:54', NULL, '2026-07-03 17:49:54', NULL, '2026-07-03 17:50:43', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107510, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '76b05c9e99f14f4a9faa5dfb43378455', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:20:43', NULL, '2026-07-03 17:50:43', NULL, '2026-07-03 17:51:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107511, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '858bbd50c9cc44daa7f8556b5c7041e5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:21:54', NULL, '2026-07-03 17:51:54', NULL, '2026-07-03 17:53:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107512, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ae8b8398f16e4140ac20333f4426d6c4', 'e28c8775e36646a0a433612ba0931bec', 'default', NULL, '2026-07-03 18:23:31', NULL, '2026-07-03 17:53:31', NULL, '2026-07-03 17:53:31', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107513, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9e93ef5b6c034617aa8dc93324949a50', '1d11ef70923347eda87417c52ae53093', 'default', NULL, '2026-07-03 18:23:33', NULL, '2026-07-03 17:53:33', NULL, '2026-07-03 17:53:33', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107514, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1eaa7fb1ff6d443ab99d952cd05dd8a8', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:23:54', NULL, '2026-07-03 17:53:54', NULL, '2026-07-03 17:55:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107515, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a07b2522d44c485f9f7135df338e8d7e', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:25:54', NULL, '2026-07-03 17:55:54', NULL, '2026-07-03 17:57:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107516, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6353d0f59eca446cb588b877989041a5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:27:54', NULL, '2026-07-03 17:57:54', NULL, '2026-07-03 17:59:54', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107517, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0d5f8711814143a9b8e1fd02906006c5', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-03 18:29:54', NULL, '2026-07-03 17:59:54', NULL, '2026-07-09 11:11:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107518, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '65ee4649ff544eef8a4df903387b6676', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 09:54:33', NULL, '2026-07-06 09:24:33', NULL, '2026-07-06 09:24:44', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107519, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '48aed72f4d1b47f0aab0cbaf66a64a4d', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-06 09:54:44', NULL, '2026-07-06 09:24:44', NULL, '2026-07-06 09:54:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107520, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '2fc99a554fd54e4198e048d8b1cd7eba', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 09:54:44', NULL, '2026-07-06 09:24:44', NULL, '2026-07-06 09:54:51', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107521, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4f5b7c603b254c55928f3bafee4fa52f', 'c3446ffc817549568451953aa1dea9ea', 'default', NULL, '2026-07-06 10:24:46', NULL, '2026-07-06 09:54:46', NULL, '2026-07-06 09:54:46', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107522, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'e9bb8efeb3694eb7a893182040cef335', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 10:24:51', NULL, '2026-07-06 09:54:51', NULL, '2026-07-06 10:33:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107523, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '682582c568624159899a2409bad70b83', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 11:03:55', NULL, '2026-07-06 10:33:55', NULL, '2026-07-06 11:04:49', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107524, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd13528f7e1dc46bbae9816c472dda318', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 11:03:59', NULL, '2026-07-06 10:33:59', NULL, '2026-07-06 11:05:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107525, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '01917b0928234f11969147131000e6d5', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 11:34:49', NULL, '2026-07-06 11:04:49', NULL, '2026-07-06 11:35:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107526, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '37ec879923814ef1ac263e604a9820e1', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 11:35:57', NULL, '2026-07-06 11:05:57', NULL, '2026-07-06 11:37:13', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107527, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '80b39056dd584799ba69e4e4916d2661', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 12:05:14', NULL, '2026-07-06 11:35:14', NULL, '2026-07-06 12:05:29', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107528, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5662040d4d534241887ccff1d774ddbd', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 12:07:13', NULL, '2026-07-06 11:37:13', NULL, '2026-07-06 12:07:48', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107529, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '7aac73b460c9472ba3199821e67ef7a2', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 12:35:29', NULL, '2026-07-06 12:05:29', NULL, '2026-07-06 13:07:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107530, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '898f7b5e41964d759cb5bf9408fceac9', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 12:37:48', NULL, '2026-07-06 12:07:48', NULL, '2026-07-06 13:10:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107531, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'bfc63964c9714210aab6e3d3e8625ccd', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 13:37:04', NULL, '2026-07-06 13:07:04', NULL, '2026-07-06 15:04:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107532, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '41757c7176564fb7abb6ddf4c7b5dec0', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 13:40:42', NULL, '2026-07-06 13:10:42', NULL, '2026-07-06 13:54:36', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107533, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b8d6ba48d79e487bab8f784134eaa5f2', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 14:24:36', NULL, '2026-07-06 13:54:36', NULL, '2026-07-06 15:11:55', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107534, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5bcd7aec70954422abd1395817f94835', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 15:34:24', NULL, '2026-07-06 15:04:24', NULL, '2026-07-06 15:36:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107535, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '49a43d3d36bd49c380df50886e1db72f', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 15:41:55', NULL, '2026-07-06 15:11:55', NULL, '2026-07-06 15:11:58', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107536, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '42bbf2ddfd4d4c0197d52c9656007927', '0db0209997084b589e7100787562e850', 'default', NULL, '2026-07-06 15:41:58', NULL, '2026-07-06 15:11:58', '1', '2026-07-06 15:22:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107537, 227, 2, '{\"nickname\":\"澶ф槑鏄焅",\"deptId\":\"104\"}', '12f38311d673413db230f2b3cc669f1c', 'f9d4360001004aaa9eff31e9903a28a4', 'default', NULL, '2026-07-06 15:52:32', NULL, '2026-07-06 15:22:32', '227', '2026-07-06 15:22:38', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107538, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '74f8ff03edec403d920aefae47c3075f', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-06 15:52:55', NULL, '2026-07-06 15:22:55', NULL, '2026-07-06 15:53:05', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107539, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '90475021774c42e489fe3c4a0840b71e', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 16:06:17', NULL, '2026-07-06 15:36:17', NULL, '2026-07-06 16:08:13', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107540, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8148dec611fb445a979fcaacc3d7f3aa', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-06 16:23:05', NULL, '2026-07-06 15:53:05', NULL, '2026-07-06 16:24:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107541, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'a00e1e6c9da849d88fad799c695a9883', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 16:38:13', NULL, '2026-07-06 16:08:13', NULL, '2026-07-06 16:38:56', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107542, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '029d99076bbc4c9693241c569edef3ca', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-06 16:54:17', NULL, '2026-07-06 16:24:17', NULL, '2026-07-06 16:55:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107543, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '1b071a9d933d400d8d847a24d9080abe', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 17:08:56', NULL, '2026-07-06 16:38:56', NULL, '2026-07-06 17:09:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107544, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '239d1392616f44108c2c0ec7e4becf51', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-06 17:25:03', NULL, '2026-07-06 16:55:03', NULL, '2026-07-06 17:25:31', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107545, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'caad4beb24aa42a3aa898d9baeff6a69', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 17:39:26', NULL, '2026-07-06 17:09:26', NULL, '2026-07-06 17:39:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107546, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '9220f3a9d2f14453bc9830f06d67e1bf', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-06 17:55:31', NULL, '2026-07-06 17:25:31', NULL, '2026-07-07 09:10:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107547, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'b04767085e0e493382a574b0b564526b', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-06 18:09:59', NULL, '2026-07-06 17:39:59', NULL, '2026-07-07 09:21:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107548, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f355dadbec604f8fb1d8467926922651', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-07 09:40:24', NULL, '2026-07-07 09:10:24', NULL, '2026-07-07 09:10:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107549, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7cb5fcadc52b40b39f5175b50fd15502', '39e47923de624b93b1dc1d0f71fb4af4', 'default', NULL, '2026-07-07 09:40:24', NULL, '2026-07-07 09:10:24', NULL, '2026-07-07 09:10:24', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107550, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '67d6be1c679143049213ea5ba6a37682', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 09:51:26', NULL, '2026-07-07 09:21:26', NULL, '2026-07-07 09:51:57', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107551, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '86f7be28a5204eeb8fa928efa0cb7bef', '83e0d30f2232431f8bc95eb0d47298c0', 'default', NULL, '2026-07-07 10:09:49', NULL, '2026-07-07 09:39:49', NULL, '2026-07-07 09:39:49', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107552, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'd64bc82573bc46a592af90456f2fdbb8', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 10:21:57', NULL, '2026-07-07 09:51:57', NULL, '2026-07-07 10:22:18', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107553, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4b763244b9de4a098f2c14d68625f714', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 10:29:15', NULL, '2026-07-07 09:59:15', NULL, '2026-07-07 10:29:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107554, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '2e00ed9928b248b0a27a24f179bd7dd3', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 10:52:18', NULL, '2026-07-07 10:22:18', NULL, '2026-07-07 10:53:06', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107555, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '17b21900b3a5452b98ea50ac6b0c00ff', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 10:59:23', NULL, '2026-07-07 10:29:23', NULL, '2026-07-07 11:06:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107556, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '8d931c3c481542b799714461dc0ed84d', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 11:23:06', NULL, '2026-07-07 10:53:06', NULL, '2026-07-07 11:24:12', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107557, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fdca05022b5645bc914a866c09d9c821', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 11:36:36', NULL, '2026-07-07 11:06:36', NULL, '2026-07-07 11:37:29', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107558, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '3c9ac154f4784bb594200e0e083c3a4c', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 11:54:12', NULL, '2026-07-07 11:24:12', NULL, '2026-07-07 11:56:51', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107559, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ae2b1c6eda9e48cc83b57b2e982a3121', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 12:07:29', NULL, '2026-07-07 11:37:29', NULL, '2026-07-07 12:08:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107560, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '591bc05fc4aa4529a249fc949ff29819', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 12:26:51', NULL, '2026-07-07 11:56:51', NULL, '2026-07-07 12:27:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107561, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cf72fa2abe404d708fe6af23bd125852', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 12:38:24', NULL, '2026-07-07 12:08:24', NULL, '2026-07-07 13:05:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107562, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '72d34ec95d1c4192a113a3b986015560', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 12:57:45', NULL, '2026-07-07 12:27:45', NULL, '2026-07-07 13:03:30', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107563, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'cfc3fa5f81f242b7bf29993b7bdff8f5', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 13:33:30', NULL, '2026-07-07 13:03:30', NULL, '2026-07-07 13:34:19', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107564, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f773bcac32904778866b5946e9eded5d', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 13:35:46', NULL, '2026-07-07 13:05:46', NULL, '2026-07-07 13:36:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107565, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5ee7b2b345544a6e9e08eca14e69a361', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 14:04:19', NULL, '2026-07-07 13:34:19', NULL, '2026-07-07 14:05:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107566, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e7aff289d69a4d9395d926bb8b34efd6', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 14:06:15', NULL, '2026-07-07 13:36:15', NULL, '2026-07-07 14:06:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107567, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'de1f8587ecd24dd39948e02ddd0a3bda', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 14:35:16', NULL, '2026-07-07 14:05:16', NULL, '2026-07-07 14:35:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107568, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3ba9552544de4b439b709fa1e650fe65', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 14:36:50', NULL, '2026-07-07 14:06:50', NULL, '2026-07-07 14:37:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107569, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '0927b5a9552742a7bd65be543372f187', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 15:05:16', NULL, '2026-07-07 14:35:16', NULL, '2026-07-07 15:32:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107570, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd1428890091148efbeb7502e882ae2d0', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 15:07:35', NULL, '2026-07-07 14:37:35', NULL, '2026-07-07 15:08:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107571, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3aaabca2f3b647ab83f8036ef56087a9', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-07 15:38:50', NULL, '2026-07-07 15:08:50', NULL, '2026-07-08 09:24:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107572, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4dd57671871b4f6abb647eb9e1da2486', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 16:02:46', NULL, '2026-07-07 15:32:46', NULL, '2026-07-07 16:03:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107573, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'c5bfab2017fb4349b004c5ed46c225d8', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-07 16:33:16', NULL, '2026-07-07 16:03:16', NULL, '2026-07-08 09:16:52', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107574, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4a5d8f44e8a44df58867adcf3406f607', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 09:46:52', NULL, '2026-07-08 09:16:52', NULL, '2026-07-08 09:47:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107575, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cbacec96373c47c2954dce4f34c01d02', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 09:54:23', NULL, '2026-07-08 09:24:23', NULL, '2026-07-08 09:54:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107576, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '97c6e38370be4794b2c7453e00fd73c3', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 10:17:15', NULL, '2026-07-08 09:47:15', NULL, '2026-07-08 10:19:32', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107577, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7106c18593e349419bddcb97128eeaa7', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 10:24:46', NULL, '2026-07-08 09:54:46', NULL, '2026-07-08 10:25:32', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107578, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '2fd1707446f947ad90d79a0b067a3aa2', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 10:49:32', NULL, '2026-07-08 10:19:32', NULL, '2026-07-08 11:03:19', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107579, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '77b7c1ad11ab43b9b86d30b30d5d2804', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 10:55:32', NULL, '2026-07-08 10:25:32', NULL, '2026-07-08 10:55:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107580, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '79205c13f7524fd9b05a42d42971bc19', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 11:25:35', NULL, '2026-07-08 10:55:35', NULL, '2026-07-08 11:25:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107581, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4f09a07118ee4efebeb815eedc91c118', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 11:33:19', NULL, '2026-07-08 11:03:19', NULL, '2026-07-08 11:33:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107582, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '306aad0daaa547cc9844c264eab7a8b7', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 11:55:45', NULL, '2026-07-08 11:25:45', NULL, '2026-07-08 13:16:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107583, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'ac2a94e8648d4d4db87ea113004dc962', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 12:03:25', NULL, '2026-07-08 11:33:25', NULL, '2026-07-08 12:05:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107584, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'd9be95fb606a4c78aa0939fbdcd1f94a', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 12:35:25', NULL, '2026-07-08 12:05:25', NULL, '2026-07-08 13:06:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107585, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'd9d4f06e429440539d4d53289c538d11', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 13:36:28', NULL, '2026-07-08 13:06:28', NULL, '2026-07-08 13:36:39', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107586, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '36b2e81b8a1b495daf96c819710d1129', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 13:46:50', NULL, '2026-07-08 13:16:50', NULL, '2026-07-08 13:48:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107587, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'fc72e1432c024303b24e498f117b2560', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 14:00:15', NULL, '2026-07-08 13:30:15', NULL, '2026-07-08 14:00:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107588, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '0f9c784403a64ab994bc499db77182b2', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 14:06:39', NULL, '2026-07-08 13:36:39', NULL, '2026-07-08 14:08:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107589, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd1b5a30747644bf296e552f04c67254f', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 14:18:45', NULL, '2026-07-08 13:48:45', NULL, '2026-07-08 14:28:02', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107590, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cc8050348f804cbcb218f84d03eb2a4e', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 14:30:17', NULL, '2026-07-08 14:00:17', NULL, '2026-07-08 15:11:13', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107591, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '099f2ec3e50e46809f8ac67db46a447a', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 14:38:03', NULL, '2026-07-08 14:08:03', NULL, '2026-07-08 15:08:07', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107592, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6d3f35b4bb9d400c8e00a1ab0b643286', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 14:58:02', NULL, '2026-07-08 14:28:02', NULL, '2026-07-08 15:08:06', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107593, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '303ee87d82b3409ab3f3abb1cbeb7c0f', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 15:38:06', NULL, '2026-07-08 15:08:06', NULL, '2026-07-08 15:38:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107594, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'db54baee15f6459e8f2590d7f9471429', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 15:38:07', NULL, '2026-07-08 15:08:07', NULL, '2026-07-08 16:32:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107595, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'cf3c585472ba4b9e91a026928f2fadb1', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 15:41:13', NULL, '2026-07-08 15:11:13', NULL, '2026-07-08 15:41:14', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107596, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '06cf3d647857411f95e7664b023b415a', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 16:08:46', NULL, '2026-07-08 15:38:46', NULL, '2026-07-08 16:26:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107597, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4eec54577df24fae8a607def38563459', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 16:11:14', NULL, '2026-07-08 15:41:14', NULL, '2026-07-08 16:37:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107598, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7bdb2aad6f744d7faa0ed3656988f14e', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 16:56:09', NULL, '2026-07-08 16:26:09', NULL, '2026-07-08 16:58:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107599, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '5d525361ecb74cc4abb56c63c7676775', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 17:02:21', NULL, '2026-07-08 16:32:21', NULL, '2026-07-08 17:04:08', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107600, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4b2c04744f4748a089dd6028df4f4b9e', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 17:07:17', NULL, '2026-07-08 16:37:17', NULL, '2026-07-08 17:07:23', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107601, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'abab9c126c28420eb9c4721e207b8cf0', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 17:28:09', NULL, '2026-07-08 16:58:09', NULL, '2026-07-08 17:28:30', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107602, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'bff1c80f5b844416927e28436d807b44', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 17:34:08', NULL, '2026-07-08 17:04:08', NULL, '2026-07-08 17:34:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107603, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '794b7933fdc34d6f9aab63e6675f84a6', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 17:37:23', NULL, '2026-07-08 17:07:23', NULL, '2026-07-08 17:38:38', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107604, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'dbaf513ae44d4ac0afd40af7f2f36c53', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 17:58:30', NULL, '2026-07-08 17:28:30', NULL, '2026-07-08 18:06:30', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107605, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '6b4cfc5324d44e8fbe98454ce67a5c92', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 18:04:33', NULL, '2026-07-08 17:34:33', NULL, '2026-07-08 18:05:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107606, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '843736b19ed2488c9d151bfefef8b60a', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-08 18:08:38', NULL, '2026-07-08 17:38:38', NULL, '2026-07-09 09:51:51', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107607, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '24f6e29dea664b9f9264fe1a9e2f4bb8', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-08 18:35:15', NULL, '2026-07-08 18:05:15', NULL, '2026-07-09 09:15:32', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107608, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f0ff675bb0504c6291e67825f38de18d', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-08 18:36:30', NULL, '2026-07-08 18:06:30', NULL, '2026-07-09 09:08:40', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107609, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '390e8803d0d346d3ae6cdbaef2601c0c', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 09:38:40', NULL, '2026-07-09 09:08:40', NULL, '2026-07-09 09:38:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107610, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '153cb30ebe8940e08c643c8ec813b434', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 09:45:32', NULL, '2026-07-09 09:15:32', NULL, '2026-07-09 09:47:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107611, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e0e172b71dfd424c94bf96bc7edd1340', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 10:08:42', NULL, '2026-07-09 09:38:42', NULL, '2026-07-09 10:08:42', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107612, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '67ee4e173484494ba0ca092d9603c660', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 10:17:17', NULL, '2026-07-09 09:47:17', NULL, '2026-07-09 10:17:33', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107613, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4aa6ccf0fbd14142affe2bfca509e72c', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 10:21:51', NULL, '2026-07-09 09:51:51', NULL, '2026-07-09 10:22:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107614, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c01a8dce75e543a0add97a86b953f950', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 10:38:42', NULL, '2026-07-09 10:08:42', NULL, '2026-07-09 10:39:19', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107615, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '58e19fbfdba24297bb1f69fa256cd211', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 10:47:33', NULL, '2026-07-09 10:17:33', NULL, '2026-07-09 10:48:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107616, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3e106ca353b14c95a47ad05d2778d1a8', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 10:52:27', NULL, '2026-07-09 10:22:27', NULL, '2026-07-09 10:52:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107617, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '5ab1267831d14bc18069898bee7c7cc3', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 11:09:19', NULL, '2026-07-09 10:39:19', NULL, '2026-07-09 11:11:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107618, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'e1e8fbdbae9c46e8b97de7a65ee802f6', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 11:18:15', NULL, '2026-07-09 10:48:15', NULL, '2026-07-09 11:20:15', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107619, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3dadf58466f3491b90a79c6ec50fd87a', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 11:22:27', NULL, '2026-07-09 10:52:27', NULL, '2026-07-09 11:22:59', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107620, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e56197039ba94feca27bde89799854a7', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 11:41:09', NULL, '2026-07-09 11:11:09', NULL, '2026-07-09 11:43:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107621, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'a0a7b1fcf4194b639c9cce51d839e1b4', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 11:41:57', NULL, '2026-07-09 11:11:57', NULL, '2026-07-09 11:42:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107622, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '52da6e475247481fb1ce202708ad2e65', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 11:50:15', NULL, '2026-07-09 11:20:15', NULL, '2026-07-09 13:30:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107623, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '72e3b613b89d4e3cb5cc036c068663d5', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 11:52:59', NULL, '2026-07-09 11:22:59', NULL, '2026-07-09 11:53:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107624, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '06b82ea5dd054ece8cecdb43e64c2ba3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 12:12:21', NULL, '2026-07-09 11:42:21', NULL, '2026-07-09 12:12:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107625, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2b650ff2a2124c4daad7f50819f5b0a9', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 12:13:09', NULL, '2026-07-09 11:43:09', NULL, '2026-07-09 12:15:09', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107626, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'c60d994bfb4d4eda80e0d0977d462ae2', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 12:23:27', NULL, '2026-07-09 11:53:27', NULL, '2026-07-09 12:23:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107627, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e7b7c847017841b3892b23757954af41', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 12:42:21', NULL, '2026-07-09 12:12:21', NULL, '2026-07-09 13:04:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107628, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '42f7cedfbd774f6f9edf9c41b69d6de0', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 12:45:09', NULL, '2026-07-09 12:15:09', NULL, '2026-07-09 13:09:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107629, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '1f5a887ab91c472ab573a79306b1ad31', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 12:53:27', NULL, '2026-07-09 12:23:27', NULL, '2026-07-09 13:03:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107630, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '57223de984344705a953b1f119fa8d26', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 13:33:27', NULL, '2026-07-09 13:03:27', NULL, '2026-07-09 13:34:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107631, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b7e3cfc48dea4fc7ab6ef361dd8d31b3', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 13:34:21', NULL, '2026-07-09 13:04:21', NULL, '2026-07-09 13:34:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107632, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '7cf6764129764e289f35bb8dfaeb2376', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 13:39:21', NULL, '2026-07-09 13:09:21', NULL, '2026-07-09 13:41:25', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107633, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '927c5c9bcbe144f39cb3fa95b516b876', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 14:00:16', NULL, '2026-07-09 13:30:16', NULL, '2026-07-09 13:30:17', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107634, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'bd37383a358349c38e010153c5edbdc6', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 14:00:17', NULL, '2026-07-09 13:30:17', NULL, '2026-07-09 14:00:26', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107635, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'eebcbaea98ea439796364c8311320b50', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 14:04:21', NULL, '2026-07-09 13:34:21', NULL, '2026-07-09 14:04:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107636, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3cd9e69b2c3446b0a8ef861991d3472b', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 14:04:22', NULL, '2026-07-09 13:34:22', NULL, '2026-07-09 14:05:20', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107637, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '3b9428ff3af04704b1dadb943123b08c', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 14:11:25', NULL, '2026-07-09 13:41:25', NULL, '2026-07-09 14:23:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107638, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4db9345144e440cfb62dafdf68106aaa', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 14:30:26', NULL, '2026-07-09 14:00:26', NULL, '2026-07-09 14:32:07', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107639, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '4f0021560c0e49c48defd5e3266ef604', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 14:34:21', NULL, '2026-07-09 14:04:21', NULL, '2026-07-09 14:36:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107640, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ed695cc1d9594be3834943be47f0fd99', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 14:35:20', NULL, '2026-07-09 14:05:20', NULL, '2026-07-09 14:35:24', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107641, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '668f88ab4de3416fb86ffb92df458f87', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 14:53:50', NULL, '2026-07-09 14:23:50', NULL, '2026-07-09 14:57:44', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107642, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '47f300456a4e4851b0a07b557c660760', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 15:02:07', NULL, '2026-07-09 14:32:07', NULL, '2026-07-09 15:04:06', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107643, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '0e3cfe5568ce460793dc71638f6873c9', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 15:05:24', NULL, '2026-07-09 14:35:24', NULL, '2026-07-09 15:05:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107644, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd1ff2cbb99f94d4dbf3171b04a3c9541', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 15:06:21', NULL, '2026-07-09 14:36:21', NULL, '2026-07-09 16:24:22', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107645, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '2b573a312f934a1785701f612c4bbba6', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 15:27:44', NULL, '2026-07-09 14:57:44', NULL, '2026-07-09 15:29:45', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107646, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'bc969927e1ea4465ab9a6786671d56b4', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 15:34:06', NULL, '2026-07-09 15:04:06', NULL, '2026-07-09 15:35:46', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107647, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '714fe92b6826484e8ea184521078a941', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 15:35:27', NULL, '2026-07-09 15:05:27', NULL, '2026-07-09 15:36:27', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107648, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8f9e8e1273cc49359960eea84c740b30', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 15:59:45', NULL, '2026-07-09 15:29:45', NULL, '2026-07-09 16:00:01', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107649, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'b1af3acb2b654b429c7c8fee6b015ebb', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 16:05:46', NULL, '2026-07-09 15:35:46', NULL, '2026-07-09 16:06:03', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107650, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'b532b9b5c10c47c985985ea04a114b1a', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 16:06:27', NULL, '2026-07-09 15:36:27', NULL, '2026-07-09 16:07:04', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107651, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f62dbe6d79a44798bb3a2953427d031f', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 16:30:02', NULL, '2026-07-09 16:00:02', NULL, '2026-07-09 16:30:30', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107652, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'c58723b90aeb4ed3a1ab05798c3262af', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 16:36:03', NULL, '2026-07-09 16:06:03', NULL, '2026-07-09 16:36:16', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107653, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '8b675421912f4eebb428184f8890469e', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 16:37:04', NULL, '2026-07-09 16:07:04', NULL, '2026-07-09 16:38:21', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107654, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '28ce22a720574913a16f3f52a8350747', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 16:54:22', NULL, '2026-07-09 16:24:22', NULL, '2026-07-09 16:56:00', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107655, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '360df395c4934240bbccb244cbe4b8bf', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 17:00:30', NULL, '2026-07-09 16:30:30', NULL, '2026-07-09 17:02:06', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107656, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '4236f160c0da443b9e2fb3e0233197f3', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 17:06:16', NULL, '2026-07-09 16:36:16', NULL, '2026-07-09 17:07:50', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107657, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '6558a6554869458784e83ef5fb1cc326', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 17:08:21', NULL, '2026-07-09 16:38:21', NULL, '2026-07-09 17:08:39', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107658, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '536e13b124744ff8b29e53a05fbdf39a', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 17:26:00', NULL, '2026-07-09 16:56:00', NULL, '2026-07-09 17:26:00', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107659, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '66cdc526b937473885fb56a92e5db618', 'e7199426f67c49d8836cf2655df68ed1', 'default', NULL, '2026-07-09 17:32:06', NULL, '2026-07-09 17:02:06', NULL, '2026-07-09 17:02:06', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107660, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', 'cceded9617bf419788224e9699cd113e', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 17:37:50', NULL, '2026-07-09 17:07:50', NULL, '2026-07-09 17:38:35', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107661, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '68fa2dc0cfa342b0b072d3b252bca879', '0f01e70f9ecd44acb1792d832cc7f912', 'default', NULL, '2026-07-09 17:38:24', NULL, '2026-07-09 17:08:24', NULL, '2026-07-09 17:39:52', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107662, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'f57f2ef0128d41d38237fd956a10ecc9', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 17:38:39', NULL, '2026-07-09 17:08:39', NULL, '2026-07-09 17:39:28', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107663, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'd44bc8eaf1a84771845ebb41f1301152', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 17:56:00', NULL, '2026-07-09 17:26:00', NULL, '2026-07-09 17:56:00', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107664, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '08074f80da9e4220af37eae3666bfae3', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-09 18:08:35', NULL, '2026-07-09 17:38:35', NULL, '2026-07-10 09:22:00', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107665, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '62fdfe179d0642e7b73df27d693f42ac', '2bdae85a2d0e4ab59ba7946d6ef989ff', 'default', NULL, '2026-07-09 18:09:28', NULL, '2026-07-09 17:39:28', NULL, '2026-07-09 17:39:28', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107666, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'ebfca3f6be814ff38876afd719bc82ac', '0f01e70f9ecd44acb1792d832cc7f912', 'default', NULL, '2026-07-09 18:09:52', NULL, '2026-07-09 17:39:52', NULL, '2026-07-10 09:22:47', b'1', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107667, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', '515f614aaf544c238e10ea45023e8af7', '91bff769f717499badeefd4bc032586f', 'default', NULL, '2026-07-09 18:26:00', NULL, '2026-07-09 17:56:00', NULL, '2026-07-09 17:56:00', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107668, 142, 2, '{\"nickname\":\"test01\",\"deptId\":null}', '3d453ef373974c3dae1c4c122a6f2cb1', 'd2a4170ddf364a03b610728fa798b4b8', 'default', NULL, '2026-07-10 09:52:00', NULL, '2026-07-10 09:22:00', NULL, '2026-07-10 09:22:00', b'0', 0);
+INSERT INTO `system_oauth2_access_token` VALUES (107669, 1, 2, '{\"nickname\":\"鑺嬮亾婧愮爜\",\"deptId\":\"103\"}', 'e26f7ff097d34e71ae26db50a5a5f916', '0f01e70f9ecd44acb1792d832cc7f912', 'default', NULL, '2026-07-10 09:52:47', NULL, '2026-07-10 09:22:47', NULL, '2026-07-10 09:22:47', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_oauth2_approve
+-- ----------------------------
+DROP TABLE IF EXISTS `system_oauth2_approve`;
+CREATE TABLE `system_oauth2_approve`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔紪鍙�',
+  `scope` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鎺堟潈鑼冨洿',
+  `approved` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鎺ュ彈',
+  `expires_time` datetime NOT NULL COMMENT '杩囨湡鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_user_id_user_type_client_id`(`user_id` ASC, `user_type` ASC, `client_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 84 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 鎵瑰噯琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_oauth2_approve
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_oauth2_client
+-- ----------------------------
+DROP TABLE IF EXISTS `system_oauth2_client`;
+CREATE TABLE `system_oauth2_client`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔紪鍙�',
+  `secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔瘑閽�',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '搴旂敤鍚�',
+  `logo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '搴旂敤鍥炬爣',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴旂敤鎻忚堪',
+  `status` tinyint NOT NULL COMMENT '鐘舵��',
+  `access_token_validity_seconds` int NOT NULL COMMENT '璁块棶浠ょ墝鐨勬湁鏁堟湡',
+  `refresh_token_validity_seconds` int NOT NULL COMMENT '鍒锋柊浠ょ墝鐨勬湁鏁堟湡',
+  `redirect_uris` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍙噸瀹氬悜鐨� URI 鍦板潃',
+  `authorized_grant_types` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎺堟潈绫诲瀷',
+  `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎺堟潈鑼冨洿',
+  `auto_approve_scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑷姩閫氳繃鐨勬巿鏉冭寖鍥�',
+  `authorities` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉冮檺',
+  `resource_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '璧勬簮',
+  `additional_information` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '闄勫姞淇℃伅',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_client_id`(`client_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 瀹㈡埛绔〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_oauth2_client
+-- ----------------------------
+INSERT INTO `system_oauth2_client` VALUES (1, 'default', 'admin123', '鑺嬮亾婧愮爜', 'http://test.yudao.iocoder.cn/20250502/sort2_1746189740718.png', '鎴戞槸鎻忚堪', 0, 1800, 2592000, '[\"https://www.iocoder.cn\",\"https://doc.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\",\"refresh_token\",\"client_credentials\"]', '[\"user.read\",\"user.write\"]', '[]', '[\"user.read\",\"user.write\"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2025-12-07 20:07:09', b'0');
+INSERT INTO `system_oauth2_client` VALUES (40, 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/20251227/javayuanma_1766829882970.jpg', '鍟﹀暒鍟﹀暒', 0, 1800, 43200, '[\"https://www.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\"]', '[\"user_info\",\"projects\"]', '[\"user_info\"]', '[]', '[]', '{}', '1', '2022-05-12 00:28:20', '1', '2025-12-27 18:04:44', b'0');
+INSERT INTO `system_oauth2_client` VALUES (41, 'yudao-sso-demo-by-code', 'test', '鍩轰簬鎺堟潈鐮佹ā寮忥紝濡備綍瀹炵幇 SSO 鍗曠偣鐧诲綍锛�', 'http://test.yudao.iocoder.cn/it/20250502/sign_1746181948685.png', NULL, 0, 1800, 43200, '[\"http://127.0.0.1:18080\"]', '[\"authorization_code\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[]', '[]', NULL, '1', '2022-09-29 13:28:31', '1', '2025-05-02 18:32:30', b'0');
+INSERT INTO `system_oauth2_client` VALUES (42, 'yudao-sso-demo-by-password', 'test', '鍩轰簬瀵嗙爜妯″紡锛屽浣曞疄鐜� SSO 鍗曠偣鐧诲綍锛�', 'http://test.yudao.iocoder.cn/oauth2/20260615/iShot_2026-05-31_23.18.10.png', NULL, 0, 1800, 43200, '[\"http://127.0.0.1:18080\"]', '[\"password\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[]', '[]', NULL, '1', '2022-10-04 17:40:16', '1', '2026-06-15 18:58:30', b'0');
+
+-- ----------------------------
+-- Table structure for system_oauth2_code
+-- ----------------------------
+DROP TABLE IF EXISTS `system_oauth2_code`;
+CREATE TABLE `system_oauth2_code`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎺堟潈鐮�',
+  `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔紪鍙�',
+  `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鎺堟潈鑼冨洿',
+  `expires_time` datetime NOT NULL COMMENT '杩囨湡鏃堕棿',
+  `redirect_uri` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍙噸瀹氬悜鐨� URI 鍦板潃',
+  `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_code`(`code` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 155 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 鎺堟潈鐮佽〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_oauth2_code
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_oauth2_refresh_token
+-- ----------------------------
+DROP TABLE IF EXISTS `system_oauth2_refresh_token`;
+CREATE TABLE `system_oauth2_refresh_token`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `refresh_token` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒锋柊浠ょ墝',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔紪鍙�',
+  `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎺堟潈鑼冨洿',
+  `expires_time` datetime NOT NULL COMMENT '杩囨湡鏃堕棿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_refresh_token`(`refresh_token` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3282 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 鍒锋柊浠ょ墝' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_oauth2_refresh_token
+-- ----------------------------
+INSERT INTO `system_oauth2_refresh_token` VALUES (3244, 1, '35a51aa055ee4ea18486a012390aa5f0', 2, 'default', NULL, '2026-07-22 15:03:36', NULL, '2026-06-22 15:03:36', NULL, '2026-06-22 15:03:36', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3245, 1, 'e4cc045580ea425188f1d36016b8c188', 2, 'default', NULL, '2026-07-22 15:46:31', NULL, '2026-06-22 15:46:31', NULL, '2026-06-22 15:46:31', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3246, 1, '1b88a71719824081862742b6150c0f78', 2, 'default', NULL, '2026-07-22 15:46:33', NULL, '2026-06-22 15:46:33', NULL, '2026-06-22 15:46:33', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3247, 1, '02a9064a80db49c09792aa8d2daa42d1', 2, 'default', NULL, '2026-07-22 15:46:34', NULL, '2026-06-22 15:46:34', NULL, '2026-06-22 15:46:34', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3248, 1, '5530fe9b0f8a4e8281e85133e99c249b', 2, 'default', NULL, '2026-07-22 15:47:16', NULL, '2026-06-22 15:47:16', NULL, '2026-06-22 15:47:16', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3249, 1, '0863e985ae97429caccb8278b5ba693c', 2, 'default', NULL, '2026-07-22 17:01:39', NULL, '2026-06-22 17:01:39', NULL, '2026-06-22 17:01:39', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3250, 1, '19a88549d11546ce8deb3c85e95d4770', 2, 'default', NULL, '2026-07-23 14:51:19', NULL, '2026-06-23 14:51:19', NULL, '2026-06-23 14:51:19', b'0', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3251, 1, 'd7cbbb362f29418980a38644ab24c709', 2, 'default', NULL, '2026-07-23 14:52:03', NULL, '2026-06-23 14:52:03', NULL, '2026-06-26 02:47:36', b'1', 1);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3252, 1, '08ad276cfc6e4b7696f8cbddd66ff54c', 2, 'default', NULL, '2026-07-23 17:46:05', NULL, '2026-06-23 17:46:05', NULL, '2026-06-23 17:46:05', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3253, 1, '2d40e2b738c34cbdbf68bfe6e9c1dd0c', 2, 'default', NULL, '2026-07-23 17:46:13', NULL, '2026-06-23 17:46:13', NULL, '2026-06-23 17:46:13', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3254, 1, '70141f76e4a24ee48d9ba75e8d7d555e', 2, 'default', NULL, '2026-07-24 09:28:23', NULL, '2026-06-24 09:28:23', NULL, '2026-06-24 09:28:23', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3255, 1, '84260dbd700442a3a40e3f5c6f9e48d1', 2, 'default', NULL, '2026-07-24 17:37:24', NULL, '2026-06-24 17:37:24', NULL, '2026-06-24 17:37:24', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3256, 1, '550878be52fe46248ba26334ca330464', 2, 'default', NULL, '2026-07-24 17:51:49', NULL, '2026-06-24 17:51:49', NULL, '2026-06-26 02:48:35', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3257, 1, '45232c54596c4108b62fbecb1ba6e8ea', 2, 'default', NULL, '2026-07-26 10:47:55', NULL, '2026-06-26 10:47:55', NULL, '2026-06-26 02:48:56', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3258, 1, 'd257ad536960450c85edfe62f2d879b1', 2, 'default', NULL, '2026-07-26 10:49:00', NULL, '2026-06-26 10:49:00', NULL, '2026-06-26 02:55:45', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3259, 1, 'f533a8741ac34e9199e146d3aae3edb1', 2, 'default', NULL, '2026-07-26 10:53:10', NULL, '2026-06-26 10:53:10', NULL, '2026-06-26 02:53:17', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3260, 1, 'b44b770020f74f588806a837692f5475', 2, 'default', NULL, '2026-07-26 10:53:23', NULL, '2026-06-26 10:53:23', NULL, '2026-06-26 10:53:23', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3261, 1, 'daeea35820634ab1b213653140930534', 2, 'default', NULL, '2026-07-26 10:55:48', NULL, '2026-06-26 10:55:48', NULL, '2026-06-26 10:55:48', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3262, 1, '8919d3af4b7b4d8e8ac24ba5da061300', 2, 'default', NULL, '2026-07-29 15:15:35', NULL, '2026-06-29 15:15:35', NULL, '2026-06-29 15:15:35', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3263, 1, 'a7443d4aea46436687837a5b3d49bb91', 2, 'default', NULL, '2026-07-30 09:14:01', NULL, '2026-06-30 09:14:01', NULL, '2026-06-30 01:17:02', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3264, 142, 'd2a4170ddf364a03b610728fa798b4b8', 2, 'default', NULL, '2026-07-30 09:17:07', NULL, '2026-06-30 09:17:07', NULL, '2026-06-30 09:17:07', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3265, 1, 'dcb537b1961345899bed3f6a30ecaca3', 2, 'default', NULL, '2026-07-30 14:25:50', NULL, '2026-06-30 14:25:50', NULL, '2026-06-30 14:25:50', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3266, 1, '29a752a6cdd648d6a8b098c47994c10d', 2, 'default', NULL, '2026-07-31 10:09:55', NULL, '2026-07-01 10:09:55', NULL, '2026-07-01 10:09:55', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3267, 1, 'c3446ffc817549568451953aa1dea9ea', 2, 'default', NULL, '2026-07-31 10:39:25', NULL, '2026-07-01 10:39:25', NULL, '2026-07-01 10:39:25', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3268, 1, '6b824e2cb5c143318a6d45e861a5d704', 2, 'default', NULL, '2026-07-31 13:59:29', NULL, '2026-07-01 13:59:29', NULL, '2026-07-01 13:59:29', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3269, 1, '6a5f95b66d6b4bcb8cd8004609d7a0ac', 2, 'default', NULL, '2026-07-31 14:34:00', NULL, '2026-07-01 14:34:00', NULL, '2026-07-01 14:34:00', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3270, 1, '5cfdca4a5db84b1b81463fb836bc6a20', 2, 'default', NULL, '2026-07-31 16:52:04', NULL, '2026-07-01 16:52:04', NULL, '2026-07-01 16:52:04', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3271, 1, '2cb453082de84bbfbeb9f207ee27dd36', 2, 'default', NULL, '2026-08-01 13:55:18', NULL, '2026-07-02 13:55:18', NULL, '2026-07-03 07:05:08', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3272, 1, '1d11ef70923347eda87417c52ae53093', 2, 'default', NULL, '2026-08-01 14:21:23', NULL, '2026-07-02 14:21:23', NULL, '2026-07-02 14:21:23', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3273, 1, '91bff769f717499badeefd4bc032586f', 2, 'default', NULL, '2026-08-02 11:44:32', NULL, '2026-07-03 11:44:32', NULL, '2026-07-03 11:44:32', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3274, 1, 'e28c8775e36646a0a433612ba0931bec', 2, 'default', NULL, '2026-08-02 15:05:35', NULL, '2026-07-03 15:05:35', NULL, '2026-07-03 15:05:35', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3275, 1, '0db0209997084b589e7100787562e850', 2, 'default', NULL, '2026-08-05 10:33:59', NULL, '2026-07-06 10:33:59', NULL, '2026-07-06 07:22:28', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3276, 227, 'f9d4360001004aaa9eff31e9903a28a4', 2, 'default', NULL, '2026-08-05 15:22:32', NULL, '2026-07-06 15:22:32', NULL, '2026-07-06 07:22:37', b'1', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3277, 1, '39e47923de624b93b1dc1d0f71fb4af4', 2, 'default', NULL, '2026-08-05 15:22:55', NULL, '2026-07-06 15:22:55', NULL, '2026-07-06 15:22:55', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3278, 1, '83e0d30f2232431f8bc95eb0d47298c0', 2, 'default', NULL, '2026-08-06 09:39:49', NULL, '2026-07-07 09:39:49', NULL, '2026-07-07 09:39:49', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3279, 1, 'e7199426f67c49d8836cf2655df68ed1', 2, 'default', NULL, '2026-08-06 09:59:15', NULL, '2026-07-07 09:59:15', NULL, '2026-07-07 09:59:15', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3280, 1, '2bdae85a2d0e4ab59ba7946d6ef989ff', 2, 'default', NULL, '2026-08-07 13:30:15', NULL, '2026-07-08 13:30:15', NULL, '2026-07-08 13:30:15', b'0', 0);
+INSERT INTO `system_oauth2_refresh_token` VALUES (3281, 1, '0f01e70f9ecd44acb1792d832cc7f912', 2, 'default', NULL, '2026-08-08 17:08:24', NULL, '2026-07-09 17:08:24', NULL, '2026-07-09 17:08:24', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_operate_log
+-- ----------------------------
+DROP TABLE IF EXISTS `system_operate_log`;
+CREATE TABLE `system_operate_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏃ュ織涓婚敭',
+  `trace_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '閾捐矾杩借釜缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛绫诲瀷',
+  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎿嶄綔妯″潡绫诲瀷',
+  `sub_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎿嶄綔鍚�',
+  `biz_id` bigint NOT NULL COMMENT '鎿嶄綔鏁版嵁妯″潡缂栧彿',
+  `action` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鎿嶄綔鍐呭',
+  `success` bit(1) NOT NULL DEFAULT b'1' COMMENT '鎿嶄綔缁撴灉',
+  `extra` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鎷撳睍瀛楁',
+  `request_method` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '璇锋眰鏂规硶鍚�',
+  `request_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '璇锋眰鍦板潃',
+  `user_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢ㄦ埛 IP',
+  `user_agent` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '娴忚鍣� UA',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9262 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鎿嶄綔鏃ュ織璁板綍 V2 鐗堟湰' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_operate_log
+-- ----------------------------
+INSERT INTO `system_operate_log` VALUES (9207, '', 1, 2, 'CRM 瀹㈡埛', '鍒涘缓瀹㈡埛', 1, '鍒涘缓浜嗗鎴锋祴璇�', b'1', '', 'POST', '/admin-api/crm/customer/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-23 16:06:26', '1', '2026-06-23 16:06:26', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9208, '', 1, 2, 'CRM 浜у搧鍒嗙被', '鍒涘缓浜у搧鍒嗙被', 1, '鍒涘缓浜嗕骇鍝佸垎绫汇�愰厭娉夈��', b'1', '', 'POST', '/admin-api/crm/product-category/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 11:00:36', '1', '2026-06-26 11:00:36', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9209, '', 1, 2, 'CRM 浜у搧', '鍒涘缓浜у搧', 1, '鍒涘缓浜嗕骇鍝併�愪骇鍝併��', b'1', '', 'POST', '/admin-api/crm/product/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 11:01:12', '1', '2026-06-26 11:01:12', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9210, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 1, '鍒涘缓浜嗗悎鍚�131231', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 11:02:53', '1', '2026-06-26 11:02:53', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9211, '', 1, 2, 'CRM 瀹㈡埛', '鏇存柊瀹㈡埛', 1, '鏇存柊浜嗗鎴枫�愭祴璇曘��: 銆愬湴鍖虹紪鍙枫�戜粠銆愮┖銆戜慨鏀逛负銆愬寳浜競 鍖椾含甯� 涓滃煄鍖恒�戯紱銆愪笅娆¤仈绯绘椂闂淬�戜粠銆愮┖銆戜慨鏀逛负銆�2026-06-30T13:45:50.322銆戯紱銆愯缁嗗湴鍧�銆戜粠銆愮┖銆戜慨鏀逛负銆�1312313銆戯紱銆愭墍灞炶涓氥�戜粠銆愮┖銆戜慨鏀逛负銆愰噾铻嶄笟銆戯紱銆愬鎴风瓑绾с�戜粠銆愮┖銆戜慨鏀逛负銆怉 锛堥噸鐐瑰鎴凤級銆戯紱銆愭墜鏈恒�戜粠銆愮┖銆戜慨鏀逛负銆�13598585685銆戯紱銆愮數璇濄�戜粠銆愮┖銆戜慨鏀逛负銆�66325267銆戯紱銆愬井淇°�戜粠銆愮┖銆戜慨鏀逛负銆�131231銆�', b'1', '', 'PUT', '/admin-api/crm/customer/update', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 13:46:09', '1', '2026-06-26 13:46:09', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9212, '', 1, 2, 'CRM 鍟嗘満', '鍒涘缓鍟嗘満', 1, '鍒涘缓浜嗗晢鏈�13123', b'1', '', 'POST', '/admin-api/crm/business/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 14:39:19', '1', '2026-06-26 14:39:19', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9213, '', 1, 2, 'CRM 瀹㈡埛', '瀹㈡埛璺熻繘', 1, '瀹㈡埛璺熻繘銆愭祴璇曘��', b'1', '', 'POST', '/admin-api/crm/follow-up-record/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 14:41:02', '1', '2026-06-26 14:41:02', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9214, '', 1, 2, 'CRM 瀹㈡埛', '瀹㈡埛鏀惧叆鍏捣', 1, '灏嗗鎴枫�愭祴璇曘�戞斁鍏ヤ簡鍏捣', b'1', '', 'PUT', '/admin-api/crm/customer/put-pool', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-06-26 14:46:37', '1', '2026-06-26 14:46:37', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9215, '', 142, 2, 'CRM 瀹㈡埛鍏捣瑙勫垯', '鍒涘缓瀹㈡埛鍏捣瑙勫垯', 1, '鍒涘缓浜嗗鎴峰叕娴疯鍒�', b'1', '', 'PUT', '/admin-api/crm/customer-pool-config/save', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 09:07:42', '142', '2026-07-02 09:07:42', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9216, '', 142, 2, 'CRM 瀹㈡埛', '鍒嗛厤瀹㈡埛', 1, '灏嗗鎴枫�愭祴璇曘�戝垎閰嶇粰銆恡est01銆�', b'1', '', 'PUT', '/admin-api/crm/customer/distribute', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 09:10:24', '142', '2026-07-02 09:10:24', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9217, '', 1, 2, 'CRM 瀹㈡埛', '鍒涘缓瀹㈡埛', 2, '鍒涘缓浜嗗鎴峰崡閫氬鎴�', b'1', '', 'POST', '/admin-api/crm/customer/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 09:34:58', '1', '2026-07-02 09:34:58', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9218, '', 1, 2, 'CRM 瀹㈡埛', '鏇存柊瀹㈡埛', 2, '鏇存柊浜嗗鎴枫�愬崡閫氬鎴枫��: 銆愬湴鍖虹紪鍙枫�戜粠銆愮┖銆戜慨鏀逛负銆愭睙鑻忕渷 鍗楅�氬競 宕囧窛鍖恒�戯紱銆愭墍灞炶涓氥�戜粠銆愮┖銆戜慨鏀逛负銆愭埧鍦颁骇銆戯紱銆愬鎴风瓑绾с�戜粠銆愮┖銆戜慨鏀逛负銆怋 锛堟櫘閫氬鎴凤級銆�', b'1', '', 'PUT', '/admin-api/crm/customer/update', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 09:36:58', '1', '2026-07-02 09:36:58', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9219, '', 1, 2, 'CRM 瀹㈡埛', '鏇存柊瀹㈡埛', 2, '鏇存柊浜嗗鎴枫�愬崡閫氬鎴枫��: 銆愬鎴风瓑绾с�戜粠銆怋 锛堟櫘閫氬鎴凤級銆戜慨鏀逛负銆怉 锛堥噸鐐瑰鎴凤級銆�', b'1', '', 'PUT', '/admin-api/crm/customer/update', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 09:37:04', '1', '2026-07-02 09:37:04', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9220, '', 1, 2, 'CRM 瀹㈡埛', '鏇存柊瀹㈡埛', 2, '鏇存柊浜嗗鎴枫�愬崡閫氬鎴枫��: 銆愬鎴风瓑绾с�戜粠銆怉 锛堥噸鐐瑰鎴凤級銆戜慨鏀逛负銆怌 锛堥潪浼樺厛瀹㈡埛锛夈��', b'1', '', 'PUT', '/admin-api/crm/customer/update', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 09:37:09', '1', '2026-07-02 09:37:09', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9221, '', 1, 2, 'CRM 瀹㈡埛', '鏇存柊瀹㈡埛', 2, '鏇存柊浜嗗鎴枫�愬崡閫氬鎴枫��: 銆愬鎴风瓑绾с�戜粠銆怌 锛堥潪浼樺厛瀹㈡埛锛夈�戜慨鏀逛负銆怉 锛堥噸鐐瑰鎴凤級銆�', b'1', '', 'PUT', '/admin-api/crm/customer/update', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 09:37:12', '1', '2026-07-02 09:37:12', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9222, '', 142, 2, 'CRM 绾跨储', '鍒涘缓绾跨储', 1, '鍒涘缓浜嗙嚎绱㈠競鍦鸿皟鐮�', b'1', '', 'POST', '/admin-api/crm/clue/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 10:57:21', '142', '2026-07-02 10:57:21', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9223, '', 142, 2, 'CRM 绾跨储', '绾跨储璺熻繘', 1, '绾跨储璺熻繘銆愬競鍦鸿皟鐮斻��', b'1', '', 'POST', '/admin-api/crm/follow-up-record/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 10:59:12', '142', '2026-07-02 10:59:12', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9224, '', 142, 2, 'CRM 瀹㈡埛', '鍒涘缓瀹㈡埛', 3, '鍒涘缓浜嗗鎴峰競鍦鸿皟鐮�', b'1', '', 'PUT', '/admin-api/crm/clue/transform', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 10:59:36', '142', '2026-07-02 10:59:36', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9225, '', 142, 2, 'CRM 绾跨储', '绾跨储杞寲涓哄鎴�', 1, '灏嗙嚎绱€�愬競鍦鸿皟鐮斻�戣浆鍖栦负瀹㈡埛', b'1', '', 'PUT', '/admin-api/crm/clue/transform', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 10:59:36', '142', '2026-07-02 10:59:36', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9226, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 3, '鍒涘缓浜嗗悎鍚屽崡鐡滃瓙', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 11:17:32', '1', '2026-07-02 11:17:32', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9227, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 4, '鍒涘缓浜嗗悎鍚岄厭娉�', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 11:17:35', '142', '2026-07-02 11:17:35', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9228, '', 142, 2, 'CRM 鍚堝悓', '鍒犻櫎鍚堝悓', 4, '鍒犻櫎浜嗗悎鍚屻�愰厭娉夈��', b'1', '', 'DELETE', '/admin-api/crm/contract/delete', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 11:24:45', '142', '2026-07-02 11:24:45', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9229, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 5, '鍒涘缓浜嗗悎鍚岄厭娉�', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 11:35:21', '142', '2026-07-02 11:35:21', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9230, '', 142, 2, 'CRM 鍚堝悓', '鍒犻櫎鍚堝悓', 5, '鍒犻櫎浜嗗悎鍚屻�愰厭娉夈��', b'1', '', 'DELETE', '/admin-api/crm/contract/delete', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 11:57:49', '142', '2026-07-02 11:57:49', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9231, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 6, '鍒涘缓浜嗗悎鍚屾悶', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 11:58:02', '142', '2026-07-02 11:58:02', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9232, '', 1, 2, 'CRM 瀹㈡埛', '閿佸畾瀹㈡埛', 2, '灏嗗鎴枫�愬崡閫氬鎴枫�戦攣瀹�', b'1', '', 'PUT', '/admin-api/crm/customer/lock', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 12:37:26', '1', '2026-07-02 12:37:26', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9233, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 7, '鍒涘缓浜嗗悎鍚屾悶', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 12:40:58', '142', '2026-07-02 12:40:58', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9234, '', 142, 2, 'CRM 鍚堝悓', '鍒犻櫎鍚堝悓', 6, '鍒犻櫎浜嗗悎鍚屻�愭悶銆�', b'1', '', 'DELETE', '/admin-api/crm/contract/delete', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 12:41:06', '142', '2026-07-02 12:41:06', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9235, '', 142, 2, 'CRM 鍚堝悓', '鍒犻櫎鍚堝悓', 7, '鍒犻櫎浜嗗悎鍚屻�愭悶銆�', b'1', '', 'DELETE', '/admin-api/crm/contract/delete', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 13:04:01', '142', '2026-07-02 13:04:01', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9236, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 8, '鍒涘缓浜嗗悎鍚屾悶', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 13:06:44', '142', '2026-07-02 13:06:44', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9237, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 9, '鍒涘缓浜嗗悎鍚屽崡鐡滃瓙-鍚堝悓', b'1', '', 'POST', '/admin-api/crm/sale-quotation/convert-contract', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 13:25:38', '142', '2026-07-02 13:25:38', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9238, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 10, '鍒涘缓浜嗗悎鍚屽崡鐡滃瓙-鍚堝悓', b'1', '', 'POST', '/admin-api/crm/sale-quotation/convert-contract', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 13:27:29', '1', '2026-07-02 13:27:29', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9239, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 11, '鍒涘缓浜嗗悎鍚屽崡鐡滃瓙-鍚堝悓', b'1', '', 'POST', '/admin-api/crm/sale-quotation/convert-contract', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 13:30:42', '1', '2026-07-02 13:30:42', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9240, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 12, '鍒涘缓浜嗗悎鍚屽悎鍚�1111', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 13:47:23', '1', '2026-07-02 13:47:23', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9241, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 13, '鍒涘缓浜嗗悎鍚屽崡鐡滃瓙', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 13:53:36', '142', '2026-07-02 13:53:36', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9242, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 14, '鍒涘缓浜嗗悎鍚屽悎鍚�222', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 13:55:02', '1', '2026-07-02 13:55:02', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9243, '', 142, 2, 'CRM 鍚堝悓', '鎻愪氦鍚堝悓瀹℃壒', 13, '鎻愪氦鍚堝悓銆愬崡鐡滃瓙銆戝鎵规垚鍔�', b'1', '', 'PUT', '/admin-api/crm/contract/submit', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 13:55:08', '142', '2026-07-02 13:55:08', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9244, '', 1, 2, 'CRM 鍚堝悓', '鎻愪氦鍚堝悓瀹℃壒', 14, '鎻愪氦鍚堝悓銆愬悎鍚�222銆戝鎵规垚鍔�', b'1', '', 'PUT', '/admin-api/crm/contract/submit', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 13:57:21', '1', '2026-07-02 13:57:21', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9245, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 15, '鍒涘缓浜嗗悎鍚屾悶', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 14:00:49', '142', '2026-07-02 14:00:49', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9246, '', 142, 2, 'CRM 鍚堝悓', '鎻愪氦鍚堝悓瀹℃壒', 15, '鎻愪氦鍚堝悓銆愭悶銆戝鎵规垚鍔�', b'1', '', 'PUT', '/admin-api/crm/contract/submit', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 14:00:53', '142', '2026-07-02 14:00:53', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9247, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 16, '鍒涘缓浜嗗悎鍚屽悎鍚�333', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 14:00:57', '1', '2026-07-02 14:00:57', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9248, '', 1, 2, 'CRM 鍚堝悓', '鎻愪氦鍚堝悓瀹℃壒', 16, '鎻愪氦鍚堝悓銆愬悎鍚�333銆戝鎵规垚鍔�', b'1', '', 'PUT', '/admin-api/crm/contract/submit', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 14:01:02', '1', '2026-07-02 14:01:02', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9249, '', 142, 2, 'CRM 鍚堝悓', '鐢熸垚閿�鍞鍗�', 15, '鍚堝悓銆愭悶銆戠敓鎴愰攢鍞鍗曘�怷SDD20260702000007銆戞垚鍔�', b'1', '', 'POST', '/admin-api/crm/contract/generate-sale-order', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 14:07:26', '142', '2026-07-02 14:07:26', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9250, '', 1, 2, 'CRM 鍚堝悓', '鐢熸垚閿�鍞鍗�', 16, '鍚堝悓銆愬悎鍚�333銆戠敓鎴愰攢鍞鍗曘�怷SDD20260702000008銆戞垚鍔�', b'1', '', 'POST', '/admin-api/crm/contract/generate-sale-order', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 14:08:33', '1', '2026-07-02 14:08:33', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9251, '', 142, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 17, '鍒涘缓浜嗗悎鍚屾悶', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 16:28:39', '142', '2026-07-02 16:28:39', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9252, '', 142, 2, 'CRM 鍚堝悓', '鎻愪氦鍚堝悓瀹℃壒', 17, '鎻愪氦鍚堝悓銆愭悶銆戝鎵规垚鍔�', b'1', '', 'PUT', '/admin-api/crm/contract/submit', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 16:28:44', '142', '2026-07-02 16:28:44', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9253, '', 142, 2, 'CRM 鍚堝悓', '鐢熸垚閿�鍞鍗�', 17, '鍚堝悓銆愭悶銆戠敓鎴愰攢鍞鍗曘�怷SDD20260702000009銆戞垚鍔�', b'1', '', 'POST', '/admin-api/crm/contract/generate-sale-order', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '142', '2026-07-02 16:28:47', '142', '2026-07-02 16:28:47', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9254, '', 1, 2, 'CRM 鍚堝悓', '鍒涘缓鍚堝悓', 18, '鍒涘缓浜嗗悎鍚屽悎鍚屽彲浠ヤ綔搴�', b'1', '', 'POST', '/admin-api/crm/contract/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 16:41:12', '1', '2026-07-02 16:41:12', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9255, '', 1, 2, 'CRM 鍚堝悓', '鎻愪氦鍚堝悓瀹℃壒', 18, '鎻愪氦鍚堝悓銆愬悎鍚屽彲浠ヤ綔搴熴�戝鎵规垚鍔�', b'1', '', 'PUT', '/admin-api/crm/contract/submit', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 16:41:18', '1', '2026-07-02 16:41:18', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9256, '', 1, 2, 'CRM 鍚堝悓', '鐢熸垚閿�鍞鍗�', 18, '鍚堝悓銆愬悎鍚屽彲浠ヤ綔搴熴�戠敓鎴愰攢鍞鍗曘�怷SDD20260702000010銆戞垚鍔�', b'1', '', 'POST', '/admin-api/crm/contract/generate-sale-order', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0', '1', '2026-07-02 16:41:21', '1', '2026-07-02 16:41:21', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9257, '', 1, 2, 'SYSTEM 鐢ㄦ埛', '鍒涘缓鐢ㄦ埛', 225, '鍒涘缓浜嗙敤鎴枫�愬崡鐡滃瓙銆�', b'1', '', 'POST', '/admin-api/hrm/employee/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '1', '2026-07-06 11:24:53', '1', '2026-07-06 11:24:53', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9258, '', 1, 2, 'SYSTEM 鐢ㄦ埛', '鍒涘缓鐢ㄦ埛', 226, '鍒涘缓浜嗙敤鎴枫�愬崈鍏嬨��', b'1', '', 'POST', '/admin-api/hrm/employee/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '1', '2026-07-06 11:26:35', '1', '2026-07-06 11:26:35', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9259, '', 1, 2, 'SYSTEM 鐢ㄦ埛', '鍒涘缓鐢ㄦ埛', 227, '鍒涘缓浜嗙敤鎴枫�愬ぇ鏄庢槦銆�', b'1', '', 'POST', '/admin-api/hrm/employee/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '1', '2026-07-06 15:15:38', '1', '2026-07-06 15:15:38', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9260, '', 1, 2, 'SYSTEM 鐢ㄦ埛', '鍒涘缓鐢ㄦ埛', 228, '鍒涘缓浜嗙敤鎴枫�愪笉鎯充笂鐝��', b'1', '', 'POST', '/admin-api/hrm/employee/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '1', '2026-07-07 10:50:55', '1', '2026-07-07 10:50:55', b'0', 0);
+INSERT INTO `system_operate_log` VALUES (9261, '', 1, 2, 'SYSTEM 鐢ㄦ埛', '鍒涘缓鐢ㄦ埛', 229, '鍒涘缓浜嗙敤鎴枫�愭斁鍋囥��', b'1', '', 'POST', '/admin-api/hrm/employee/create', '192.168.1.41', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0', '1', '2026-07-07 11:25:03', '1', '2026-07-07 11:25:03', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_post
+-- ----------------------------
+DROP TABLE IF EXISTS `system_post`;
+CREATE TABLE `system_post`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '宀椾綅ID',
+  `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '宀椾綅缂栫爜',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '宀椾綅鍚嶇О',
+  `sort` int NOT NULL COMMENT '鏄剧ず椤哄簭',
+  `status` tinyint NOT NULL COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '宀椾綅淇℃伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_post
+-- ----------------------------
+INSERT INTO `system_post` VALUES (2, 'se', '椤圭洰缁忕悊', 2, 0, '', 'admin', '2021-01-05 17:03:48', '1', '2025-12-15 22:38:43', b'0', 1);
+INSERT INTO `system_post` VALUES (4, 'user', '鏅�氬憳宸�', 4, 0, '111222', 'admin', '2021-01-05 17:03:48', '1', '2025-03-24 21:32:40', b'0', 1);
+INSERT INTO `system_post` VALUES (5, 'HR', '浜哄姏璧勬簮', 5, 0, '`', '1', '2024-03-24 20:45:40', '1', '2025-03-29 19:08:10', b'0', 1);
+INSERT INTO `system_post` VALUES (7, 'test', '娴嬭瘯', 10, 0, NULL, '1', '2025-09-02 08:45:57', '1', '2025-09-02 08:45:57', b'0', 1);
+
+-- ----------------------------
+-- Table structure for system_role
+-- ----------------------------
+DROP TABLE IF EXISTS `system_role`;
+CREATE TABLE `system_role`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '瑙掕壊ID',
+  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瑙掕壊鍚嶇О',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瑙掕壊鏉冮檺瀛楃涓�',
+  `sort` int NOT NULL COMMENT '鏄剧ず椤哄簭',
+  `data_scope` tinyint NOT NULL DEFAULT 1 COMMENT '鏁版嵁鑼冨洿锛�1锛氬叏閮ㄦ暟鎹潈闄� 2锛氳嚜瀹氭暟鎹潈闄� 3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺 4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶級',
+  `data_scope_dept_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鏁版嵁鑼冨洿(鎸囧畾閮ㄩ棬鏁扮粍)',
+  `status` tinyint NOT NULL COMMENT '瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `type` tinyint NOT NULL COMMENT '瑙掕壊绫诲瀷',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 160 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瑙掕壊淇℃伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_role
+-- ----------------------------
+INSERT INTO `system_role` VALUES (1, '瓒呯骇绠$悊鍛�', 'super_admin', 1, 1, '', 0, 1, '瓒呯骇绠$悊鍛�', 'admin', '2021-01-05 17:03:48', '', '2022-02-22 05:08:21', b'0', 1);
+INSERT INTO `system_role` VALUES (2, '鏅�氳鑹�', 'common', 2, 2, '', 0, 1, '鏅�氳鑹�', 'admin', '2021-01-05 17:03:48', '', '2022-02-22 05:08:20', b'0', 1);
+INSERT INTO `system_role` VALUES (3, 'CRM 绠$悊鍛�', 'crm_admin', 2, 1, '', 0, 1, 'CRM 涓撳睘瑙掕壊', '1', '2024-02-24 10:51:13', '1', '2024-02-24 02:51:32', b'0', 1);
+INSERT INTO `system_role` VALUES (109, '绉熸埛绠$悊鍛�', 'tenant_admin', 0, 1, '', 0, 1, '绯荤粺鑷姩鐢熸垚', '1', '2022-02-22 00:56:14', '1', '2022-02-22 00:56:14', b'0', 121);
+INSERT INTO `system_role` VALUES (111, '绉熸埛绠$悊鍛�', 'tenant_admin', 0, 1, '', 0, 1, '绯荤粺鑷姩鐢熸垚', '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
+INSERT INTO `system_role` VALUES (155, '娴嬭瘯鏁版嵁鏉冮檺12', 'test-dp', 4, 2, '[112,100,102,103,104,105,107,108]', 0, 2, '1111', '1', '2025-03-31 14:58:06', '1', '2026-06-07 01:37:53', b'0', 1);
+
+-- ----------------------------
+-- Table structure for system_role_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `system_role_menu`;
+CREATE TABLE `system_role_menu`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鑷缂栧彿',
+  `role_id` bigint NOT NULL COMMENT '瑙掕壊ID',
+  `menu_id` bigint NOT NULL COMMENT '鑿滃崟ID',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_role_id`(`role_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 6752 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瑙掕壊鍜岃彍鍗曞叧鑱旇〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_role_menu
+-- ----------------------------
+INSERT INTO `system_role_menu` VALUES (263, 109, 1, '1', '2022-02-22 00:56:14', '1', '2022-02-22 00:56:14', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (434, 2, 1, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (454, 2, 1093, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (455, 2, 1094, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (460, 2, 1100, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (467, 2, 1107, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (476, 2, 1117, '1', '2022-02-22 13:09:12', '1', '2026-07-01 05:35:21', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (477, 2, 100, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (478, 2, 101, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (479, 2, 102, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (480, 2, 1126, '1', '2022-02-22 13:09:12', '1', '2026-07-01 05:34:31', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (481, 2, 103, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (483, 2, 104, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (485, 2, 105, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (488, 2, 107, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (490, 2, 108, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (492, 2, 109, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (498, 2, 1138, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (523, 2, 1224, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (524, 2, 1225, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (541, 2, 500, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (543, 2, 501, '1', '2022-02-22 13:09:12', '1', '2022-02-22 13:09:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (675, 2, 2, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (689, 2, 1077, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (690, 2, 1078, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (692, 2, 1083, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (693, 2, 1084, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (699, 2, 1090, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (703, 2, 106, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (704, 2, 110, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (705, 2, 111, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (706, 2, 112, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (707, 2, 113, '1', '2022-02-22 13:16:57', '1', '2022-02-22 13:16:57', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1296, 110, 1, '110', '2022-02-23 00:23:55', '110', '2022-02-23 00:23:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1729, 109, 100, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1730, 109, 101, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1731, 109, 1063, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1732, 109, 1064, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1733, 109, 1001, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1734, 109, 1065, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1735, 109, 1002, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1736, 109, 1003, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1737, 109, 1004, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1738, 109, 1005, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1739, 109, 1006, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1740, 109, 1007, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1741, 109, 1008, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1742, 109, 1009, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1743, 109, 1010, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1744, 109, 1011, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1745, 109, 1012, '1', '2022-09-21 22:08:51', '1', '2022-09-21 22:08:51', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1763, 109, 100, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1764, 109, 101, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1765, 109, 1063, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1766, 109, 1064, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1767, 109, 1001, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1768, 109, 1065, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1769, 109, 1002, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1770, 109, 1003, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1771, 109, 1004, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1772, 109, 1005, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1773, 109, 1006, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1774, 109, 1007, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1775, 109, 1008, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1776, 109, 1009, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1777, 109, 1010, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1778, 109, 1011, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1779, 109, 1012, '1', '2022-09-21 22:08:53', '1', '2022-09-21 22:08:53', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1797, 109, 100, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1798, 109, 101, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1799, 109, 1063, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1800, 109, 1064, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1801, 109, 1001, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1802, 109, 1065, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1803, 109, 1002, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1804, 109, 1003, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1805, 109, 1004, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1806, 109, 1005, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1807, 109, 1006, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1808, 109, 1007, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1809, 109, 1008, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1810, 109, 1009, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1811, 109, 1010, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1812, 109, 1011, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1813, 109, 1012, '1', '2022-09-21 22:08:55', '1', '2022-09-21 22:08:55', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1831, 109, 103, '1', '2022-09-21 22:43:23', '1', '2022-09-21 22:43:23', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1832, 109, 1017, '1', '2022-09-21 22:43:23', '1', '2022-09-21 22:43:23', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1833, 109, 1018, '1', '2022-09-21 22:43:23', '1', '2022-09-21 22:43:23', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1834, 109, 1019, '1', '2022-09-21 22:43:23', '1', '2022-09-21 22:43:23', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1835, 109, 1020, '1', '2022-09-21 22:43:23', '1', '2022-09-21 22:43:23', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1841, 109, 1036, '1', '2022-09-21 22:48:13', '1', '2022-09-21 22:48:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1842, 109, 1037, '1', '2022-09-21 22:48:13', '1', '2022-09-21 22:48:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1843, 109, 1038, '1', '2022-09-21 22:48:13', '1', '2022-09-21 22:48:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1844, 109, 1039, '1', '2022-09-21 22:48:13', '1', '2022-09-21 22:48:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1845, 109, 107, '1', '2022-09-21 22:48:13', '1', '2022-09-21 22:48:13', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (1991, 2, 1024, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1992, 2, 1025, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1993, 2, 1026, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1994, 2, 1027, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1995, 2, 1028, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1996, 2, 1029, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1997, 2, 1030, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1998, 2, 1031, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (1999, 2, 1032, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2000, 2, 1033, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2001, 2, 1034, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2002, 2, 1035, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2003, 2, 1036, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2004, 2, 1037, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2005, 2, 1038, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2006, 2, 1039, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2007, 2, 1040, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2008, 2, 1042, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2009, 2, 1043, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2010, 2, 1045, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2011, 2, 1046, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2012, 2, 1048, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2013, 2, 1050, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2014, 2, 1051, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2015, 2, 1052, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2016, 2, 1053, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2017, 2, 1054, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2018, 2, 1056, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2019, 2, 1057, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2020, 2, 1058, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2021, 2, 2083, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2022, 2, 1059, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2023, 2, 1060, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2024, 2, 1063, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2025, 2, 1064, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2026, 2, 1065, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2027, 2, 1066, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2028, 2, 1067, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2029, 2, 1070, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2034, 2, 1075, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2036, 2, 1082, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2037, 2, 1085, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2038, 2, 1086, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2039, 2, 1087, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2040, 2, 1088, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2041, 2, 1089, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2042, 2, 1091, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2043, 2, 1092, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2044, 2, 1095, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2045, 2, 1096, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2046, 2, 1097, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2047, 2, 1098, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2048, 2, 1101, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2049, 2, 1102, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2050, 2, 1103, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2051, 2, 1104, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2052, 2, 1105, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2053, 2, 1106, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2054, 2, 1108, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2055, 2, 1109, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2061, 2, 1127, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:12', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2062, 2, 1128, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:10', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2063, 2, 1129, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:29', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2064, 2, 1130, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:08', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2066, 2, 1132, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:27', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2067, 2, 1133, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:18', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2068, 2, 1134, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:20', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2069, 2, 1135, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:22', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2070, 2, 1136, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:23', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2071, 2, 1137, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:25', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2072, 2, 114, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2073, 2, 1139, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2074, 2, 115, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2075, 2, 1140, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2076, 2, 116, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2077, 2, 1141, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2078, 2, 1142, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2079, 2, 1143, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2080, 2, 1150, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:16', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2081, 2, 1161, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:35:12', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2082, 2, 1162, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:53', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2086, 2, 1166, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:34:51', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2087, 2, 1173, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:35:19', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2088, 2, 1174, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:35:16', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2092, 2, 1178, '1', '2023-01-25 08:42:52', '1', '2026-07-01 05:35:17', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2099, 2, 1226, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2100, 2, 1227, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2101, 2, 1228, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2102, 2, 1229, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2103, 2, 1237, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2104, 2, 1238, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2105, 2, 1239, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2106, 2, 1240, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2107, 2, 1241, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2108, 2, 1242, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2109, 2, 1243, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2116, 2, 1254, '1', '2023-01-25 08:42:52', '1', '2026-06-24 09:49:31', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2117, 2, 1255, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2118, 2, 1256, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2119, 2, 1257, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2120, 2, 1258, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2121, 2, 1259, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2122, 2, 1260, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2123, 2, 1261, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2124, 2, 1263, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2125, 2, 1264, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2126, 2, 1265, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2127, 2, 1266, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2128, 2, 1267, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2129, 2, 1001, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2130, 2, 1002, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2131, 2, 1003, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2132, 2, 1004, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2133, 2, 1005, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2134, 2, 1006, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2135, 2, 1007, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2136, 2, 1008, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2137, 2, 1009, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2138, 2, 1010, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2139, 2, 1011, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2140, 2, 1012, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2141, 2, 1013, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2143, 2, 1015, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2145, 2, 1017, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2146, 2, 1018, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2147, 2, 1019, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2148, 2, 1020, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2149, 2, 1021, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2150, 2, 1022, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2151, 2, 1023, '1', '2023-01-25 08:42:52', '1', '2023-01-25 08:42:52', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2152, 2, 1281, '1', '2023-01-25 08:42:58', '1', '2023-01-25 08:42:58', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2153, 2, 1282, '1', '2023-01-25 08:42:58', '1', '2023-01-25 08:42:58', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (2154, 2, 2000, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:49', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2155, 2, 2002, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:15', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2156, 2, 2003, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:06', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2157, 2, 2004, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:09', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2158, 2, 2005, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:11', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2159, 2, 2006, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:13', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2160, 2, 2008, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:26', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2161, 2, 2009, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:18', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2162, 2, 2010, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:20', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2163, 2, 2011, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:22', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2164, 2, 2012, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:24', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2170, 2, 2019, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:36', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2171, 2, 2020, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:28', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2172, 2, 2021, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:30', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2173, 2, 2022, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:32', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2174, 2, 2023, '1', '2023-01-25 08:42:58', '1', '2026-06-30 02:06:34', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2175, 2, 2025, '1', '2023-01-25 08:42:58', '1', '2026-07-01 03:10:02', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2177, 2, 2027, '1', '2023-01-25 08:42:58', '1', '2026-07-01 03:09:58', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2178, 2, 2028, '1', '2023-01-25 08:42:58', '1', '2026-07-01 03:09:56', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2179, 2, 2029, '1', '2023-01-25 08:42:58', '1', '2026-07-01 03:09:54', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2180, 2, 2014, '1', '2023-01-25 08:43:12', '1', '2026-06-30 02:06:03', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2181, 2, 2015, '1', '2023-01-25 08:43:12', '1', '2026-06-30 02:05:48', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2182, 2, 2016, '1', '2023-01-25 08:43:12', '1', '2026-06-30 02:05:50', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2183, 2, 2017, '1', '2023-01-25 08:43:12', '1', '2026-06-30 02:05:52', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2184, 2, 2018, '1', '2023-01-25 08:43:12', '1', '2026-06-30 02:05:55', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (2929, 109, 1224, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2930, 109, 1225, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2931, 109, 1226, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2932, 109, 1227, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2933, 109, 1228, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2934, 109, 1229, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2935, 109, 1138, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2936, 109, 1139, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2937, 109, 1140, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2938, 109, 1141, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2939, 109, 1142, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2940, 109, 1143, '1', '2023-12-02 23:19:40', '1', '2023-12-02 23:19:40', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2993, 109, 2, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2994, 109, 1031, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2995, 109, 1032, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2996, 109, 1033, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2997, 109, 1034, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2998, 109, 1035, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (2999, 109, 1050, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3000, 109, 1051, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3001, 109, 1052, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3002, 109, 1053, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3003, 109, 1054, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3004, 109, 1056, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3005, 109, 1057, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3006, 109, 1058, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3007, 109, 1059, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3008, 109, 1060, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3009, 109, 1066, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3010, 109, 1067, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3011, 109, 1070, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3012, 109, 1075, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3014, 109, 1077, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3015, 109, 1078, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3016, 109, 1082, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3017, 109, 1083, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3018, 109, 1084, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3019, 109, 1085, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3020, 109, 1086, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3021, 109, 1087, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3022, 109, 1088, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3023, 109, 1089, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3024, 109, 1090, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3025, 109, 1091, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3026, 109, 1092, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3027, 109, 106, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3028, 109, 110, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3029, 109, 111, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3030, 109, 112, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3031, 109, 113, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3032, 109, 114, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3033, 109, 115, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3034, 109, 116, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3035, 109, 2472, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3036, 109, 2478, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3037, 109, 2479, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3038, 109, 2480, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3039, 109, 2481, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3040, 109, 2482, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3041, 109, 2483, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3042, 109, 2484, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3043, 109, 2485, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3044, 109, 2486, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3045, 109, 2487, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3046, 109, 2488, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3047, 109, 2489, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3048, 109, 2490, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3049, 109, 2491, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3050, 109, 2492, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3051, 109, 2493, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3052, 109, 2494, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3053, 109, 2495, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3054, 109, 2497, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3055, 109, 1237, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3056, 109, 1238, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3057, 109, 1239, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3058, 109, 1240, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3059, 109, 1241, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3060, 109, 1242, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3061, 109, 1243, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3062, 109, 2525, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3063, 109, 1255, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3064, 109, 1256, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3065, 109, 1257, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3066, 109, 1258, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3067, 109, 1259, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3068, 109, 1260, '1', '2023-12-02 23:41:02', '1', '2023-12-02 23:41:02', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3221, 109, 102, '1', '2023-12-30 11:42:36', '1', '2023-12-30 11:42:36', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3222, 109, 1013, '1', '2023-12-30 11:42:36', '1', '2023-12-30 11:42:36', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3223, 109, 1014, '1', '2023-12-30 11:42:36', '1', '2023-12-30 11:42:36', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3224, 109, 1015, '1', '2023-12-30 11:42:36', '1', '2023-12-30 11:42:36', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (3225, 109, 1016, '1', '2023-12-30 11:42:36', '1', '2023-12-30 11:42:36', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4163, 109, 5, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4164, 109, 1118, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4165, 109, 1119, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4166, 109, 1120, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4167, 109, 2713, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4168, 109, 2714, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4169, 109, 2715, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4170, 109, 2716, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4171, 109, 2717, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4172, 109, 2718, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4173, 109, 2720, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4174, 109, 1185, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4175, 109, 2721, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4176, 109, 1186, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4177, 109, 2722, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4178, 109, 1187, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4179, 109, 2723, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4180, 109, 1188, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4181, 109, 2724, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4182, 109, 1189, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4183, 109, 2725, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4184, 109, 1190, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4185, 109, 2726, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4186, 109, 1191, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4187, 109, 2727, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4188, 109, 1192, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4189, 109, 2728, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4190, 109, 1193, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4191, 109, 2729, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4192, 109, 1194, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4193, 109, 2730, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4194, 109, 1195, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4195, 109, 2731, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4197, 109, 2732, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4198, 109, 1197, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4199, 109, 2733, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4200, 109, 1198, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4201, 109, 2734, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4202, 109, 1199, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4203, 109, 2735, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4204, 109, 1200, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4205, 109, 1201, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4206, 109, 1202, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4207, 109, 1207, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4208, 109, 1208, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4209, 109, 1209, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4210, 109, 1210, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4211, 109, 1211, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4212, 109, 1212, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4213, 109, 1213, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4214, 109, 1215, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4215, 109, 1216, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4216, 109, 1217, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4217, 109, 1218, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4218, 109, 1219, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4219, 109, 1220, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4220, 109, 1221, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (4221, 109, 1222, '1', '2024-03-30 17:53:17', '1', '2024-03-30 17:53:17', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (5779, 2, 2739, '1', '2024-07-07 20:39:38', '1', '2024-07-07 20:39:38', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (5780, 2, 2740, '1', '2024-07-07 20:39:38', '1', '2024-07-07 20:39:38', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (5781, 2, 2758, '1', '2024-07-07 20:39:38', '1', '2024-07-07 20:39:38', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (5782, 2, 2759, '1', '2024-07-07 20:39:38', '1', '2024-07-07 20:39:38', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (5783, 2, 2362, '1', '2024-07-07 20:39:38', '1', '2026-07-01 03:13:14', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (5784, 2, 2387, '1', '2024-07-07 20:39:38', '1', '2026-07-01 03:10:23', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (5785, 2, 2030, '1', '2024-07-07 20:39:38', '1', '2026-07-01 03:10:26', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (5789, 109, 2739, '1', '2024-07-13 22:37:24', '1', '2024-07-13 22:37:24', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (5790, 109, 2740, '1', '2024-07-13 22:37:24', '1', '2024-07-13 22:37:24', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (6053, 155, 4000, '1', '2025-04-01 13:48:26', '1', '2026-07-01 03:04:00', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6097, 155, 4050, '1', '2025-04-01 13:48:26', '1', '2026-07-01 02:46:36', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6104, 155, 4032, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:48', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6105, 155, 4033, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:46', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6106, 155, 4034, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:44', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6107, 155, 4035, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:43', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6108, 155, 4036, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:10', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6109, 155, 4037, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:41', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6110, 155, 4038, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:38', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6111, 155, 4039, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:35', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6112, 155, 4040, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:33', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6113, 155, 4041, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:31', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6114, 155, 4042, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:29', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6115, 155, 4043, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:05', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6116, 155, 4044, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:08', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6117, 155, 4045, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:07', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6119, 155, 4001, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:19', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6120, 155, 4002, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:46:49', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6121, 155, 4003, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:46:40', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6122, 155, 4004, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:46:42', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6123, 155, 4005, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:46:44', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6124, 155, 4006, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:46:46', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6125, 155, 4007, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:46:47', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6126, 155, 4008, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:17', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6127, 155, 4009, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:49:12', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6128, 155, 4010, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:51:58', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6129, 155, 4011, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:15', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6130, 155, 4012, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:14', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6131, 155, 4013, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:12', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6132, 155, 4014, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:03', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6133, 155, 4015, '1', '2025-04-01 13:49:30', '1', '2026-07-01 03:00:02', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6134, 155, 4016, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:59', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6135, 155, 4017, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:57', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6136, 155, 4018, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:55', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6137, 155, 4031, '1', '2025-04-01 13:49:30', '1', '2026-07-01 02:59:49', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6139, 109, 1117, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:35:21', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6140, 109, 1126, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:31', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6141, 109, 1127, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:12', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6142, 109, 1128, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:10', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6143, 109, 1129, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:29', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6144, 109, 1130, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:08', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6145, 109, 1132, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:27', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6146, 109, 1133, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:18', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6147, 109, 1134, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:20', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6148, 109, 1135, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:22', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6149, 109, 1136, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:23', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6150, 109, 1137, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:25', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6151, 109, 2161, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:31', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6152, 109, 1150, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:16', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6153, 109, 1161, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:35:12', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6154, 109, 1162, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:53', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6155, 109, 1166, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:51', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6156, 109, 1173, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:35:19', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6157, 109, 1174, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:35:16', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6158, 109, 1178, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:35:17', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6159, 109, 2745, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:05', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6160, 109, 2746, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:03', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6161, 109, 2747, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:33:53', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6162, 109, 2748, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:33:49', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6163, 109, 2301, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:35', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6164, 109, 2302, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:33', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6165, 109, 5011, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:44', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6166, 109, 5012, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:47', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6167, 109, 2549, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:29', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6168, 109, 2550, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:27', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6169, 109, 2551, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:36', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6170, 109, 2552, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:34', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6171, 109, 2553, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:44', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6172, 109, 2554, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:46', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6173, 109, 2555, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:48', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6174, 109, 2556, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:50', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6175, 109, 2557, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:42', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6176, 109, 2558, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:32:40', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6177, 109, 2559, '1', '2025-09-06 20:52:12', '1', '2026-07-01 05:34:49', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6217, 109, 2756, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:17', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6218, 109, 2757, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:21', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6219, 109, 2262, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:26', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6220, 109, 2275, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:45', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6221, 109, 2276, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:41', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6222, 109, 2277, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:43', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6223, 109, 2281, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:41', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6224, 109, 2282, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:38', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6225, 109, 2283, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:36', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6226, 109, 2284, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:33', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6227, 109, 2285, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:31', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6228, 109, 2287, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:50', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6229, 109, 2288, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:48', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6230, 109, 2293, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:28', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6231, 109, 2294, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:26', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6232, 109, 2297, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:23', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6233, 109, 2300, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:01:44', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6234, 109, 2317, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:58', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6235, 109, 2318, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:47', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6236, 109, 2319, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:49', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6237, 109, 2320, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:08', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6238, 109, 2321, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:00', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6239, 109, 2322, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:02', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6240, 109, 2323, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:04', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6241, 109, 2324, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:06', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6242, 109, 2325, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:24', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6243, 109, 2326, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:09', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6244, 109, 2327, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:11', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6245, 109, 2328, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:13', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6246, 109, 2329, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:05:15', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6247, 109, 2330, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:34', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6248, 109, 2331, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:31', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6249, 109, 2332, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:28', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6250, 109, 2333, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:25', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6251, 109, 2334, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:22', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6252, 109, 2335, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:52', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6253, 109, 2363, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:54', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6254, 109, 2364, '1', '2025-09-06 20:52:25', '1', '2026-06-30 02:04:56', b'1', 121);
+INSERT INTO `system_role_menu` VALUES (6293, 2, 5, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6294, 2, 1118, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6295, 2, 1119, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6296, 2, 1120, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6297, 2, 2713, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6298, 2, 2714, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6299, 2, 2715, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6300, 2, 2716, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6301, 2, 2717, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6302, 2, 2718, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6303, 2, 2720, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6304, 2, 1185, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6305, 2, 2721, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6306, 2, 1186, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6307, 2, 2722, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6308, 2, 1187, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6309, 2, 2723, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6310, 2, 1188, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6311, 2, 2724, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6312, 2, 1189, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6313, 2, 2725, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6314, 2, 1190, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6315, 2, 2726, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6316, 2, 1191, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6317, 2, 2727, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6318, 2, 1192, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6319, 2, 2728, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6320, 2, 1193, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6321, 2, 2729, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6322, 2, 1194, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6323, 2, 2730, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6324, 2, 1195, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6325, 2, 2731, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6326, 2, 2732, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6327, 2, 1197, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6328, 2, 2733, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6329, 2, 1198, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6330, 2, 2734, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6331, 2, 1199, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6332, 2, 2735, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6333, 2, 1200, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6334, 2, 1201, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6335, 2, 1202, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6336, 2, 1207, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6337, 2, 1208, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6338, 2, 1209, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6339, 2, 1210, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6340, 2, 1211, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6341, 2, 1212, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6342, 2, 1213, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6343, 2, 1215, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6344, 2, 1216, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6345, 2, 1217, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6346, 2, 1218, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6347, 2, 1219, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6348, 2, 1220, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6349, 2, 1221, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6350, 2, 1222, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6351, 2, 2913, '1', '2026-01-04 18:09:41', '1', '2026-01-04 18:09:41', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6352, 1, 5720, '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6353, 1, 5721, '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6354, 1, 5722, '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6355, 1, 5723, '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6356, 1, 5724, '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6357, 1, 5725, '1', '2026-02-19 04:24:53', '1', '2026-02-19 04:24:53', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6358, 1, 5811, '', '2026-03-30 03:11:59', '', '2026-03-30 03:11:59', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6359, 1, 5811, '', '2026-03-30 03:13:05', '', '2026-03-30 03:13:05', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6360, 2, 5811, '', '2026-03-30 03:13:05', '', '2026-03-30 03:13:05', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6361, 3, 5811, '', '2026-03-30 03:13:05', '', '2026-03-30 03:13:05', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6362, 109, 5811, '', '2026-03-30 03:13:05', '', '2026-03-30 03:13:05', b'0', 121);
+INSERT INTO `system_role_menu` VALUES (6364, 155, 5811, '', '2026-03-30 03:13:05', '', '2026-03-30 03:13:05', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6365, 2, 6400, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6366, 2, 6401, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6367, 2, 6402, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6368, 2, 6403, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6369, 2, 6404, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6370, 2, 6405, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6371, 2, 6406, '1', '2026-05-09 16:11:01', '1', '2026-05-09 16:11:01', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6380, 2, 6490, '1', '2026-05-14 09:36:12', '1', '2026-05-14 09:36:12', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6381, 111, 1, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6382, 111, 2, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6383, 111, 5, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6384, 111, 1031, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6385, 111, 1032, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6386, 111, 1033, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6387, 111, 1034, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6388, 111, 1035, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6389, 111, 1036, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6390, 111, 1037, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6391, 111, 1038, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6392, 111, 1039, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6393, 111, 1050, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6394, 111, 1051, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6395, 111, 1052, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6396, 111, 1053, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6397, 111, 1054, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6398, 111, 1056, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6399, 111, 1057, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6400, 111, 1058, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6401, 111, 1059, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6402, 111, 1060, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6403, 111, 1063, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6404, 111, 1064, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6405, 111, 1065, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6406, 111, 1066, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6407, 111, 1067, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6408, 111, 1070, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6409, 111, 1075, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6410, 111, 1077, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6411, 111, 1078, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6412, 111, 1082, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6413, 111, 1083, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6414, 111, 1084, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6415, 111, 1085, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6416, 111, 1086, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6417, 111, 1087, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6418, 111, 1088, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6419, 111, 1089, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6420, 111, 1090, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6421, 111, 1091, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6422, 111, 1092, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6423, 111, 1117, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:35:21', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6424, 111, 1118, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6425, 111, 1119, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6426, 111, 1120, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6427, 111, 100, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6428, 111, 101, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6429, 111, 102, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6430, 111, 1126, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:31', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6431, 111, 103, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6432, 111, 1127, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:12', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6433, 111, 1128, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:10', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6434, 111, 1129, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:29', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6435, 111, 106, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6436, 111, 1130, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:08', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6437, 111, 107, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6438, 111, 1132, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:27', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6439, 111, 1133, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:18', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6440, 111, 110, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6441, 111, 1134, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:20', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6442, 111, 111, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6443, 111, 1135, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:22', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6444, 111, 112, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6445, 111, 1136, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:23', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6446, 111, 113, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6447, 111, 1137, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:25', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6448, 111, 2161, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:31', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6449, 111, 114, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6450, 111, 1138, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6451, 111, 1139, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6452, 111, 115, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6453, 111, 1140, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6454, 111, 116, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6455, 111, 1141, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6456, 111, 1142, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6457, 111, 1143, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6458, 111, 1150, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:16', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6459, 111, 1161, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:35:12', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6460, 111, 1162, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:53', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6461, 111, 1166, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:51', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6462, 111, 1173, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:35:19', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6463, 111, 1174, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:35:16', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6464, 111, 2713, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6465, 111, 2714, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6466, 111, 1178, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:35:17', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6467, 111, 2715, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6468, 111, 2716, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6469, 111, 2717, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6470, 111, 2718, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6471, 111, 2720, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6472, 111, 2721, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6473, 111, 1185, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6474, 111, 2722, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6475, 111, 1186, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6476, 111, 1187, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6477, 111, 2723, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6478, 111, 1188, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6479, 111, 2724, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6480, 111, 1189, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6481, 111, 2725, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6482, 111, 1190, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6483, 111, 2726, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6484, 111, 1191, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6485, 111, 2727, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6486, 111, 1192, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6487, 111, 2728, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6488, 111, 2729, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6489, 111, 1193, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6490, 111, 1194, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6491, 111, 2730, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6492, 111, 1195, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6493, 111, 2731, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6494, 111, 2732, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6495, 111, 1197, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6496, 111, 2733, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6497, 111, 1198, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6498, 111, 2734, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6499, 111, 1199, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6500, 111, 2735, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6501, 111, 1200, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6502, 111, 1201, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6503, 111, 1202, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6504, 111, 2739, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6505, 111, 2740, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6506, 111, 1207, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6507, 111, 1208, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6508, 111, 1209, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6509, 111, 2745, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:05', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6510, 111, 1210, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6511, 111, 2746, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:03', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6512, 111, 1211, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6513, 111, 2747, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:33:53', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6514, 111, 1212, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6515, 111, 2748, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:33:49', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6516, 111, 1213, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6517, 111, 1215, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6518, 111, 1216, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6519, 111, 1217, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6520, 111, 1218, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6521, 111, 1219, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6522, 111, 1220, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6523, 111, 2756, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:17', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6524, 111, 1221, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6525, 111, 2757, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:21', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6526, 111, 1222, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6527, 111, 1224, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6528, 111, 1225, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6529, 111, 1226, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6530, 111, 1227, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6531, 111, 1228, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6532, 111, 1229, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6533, 111, 1237, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6534, 111, 1238, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6535, 111, 2262, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:26', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6536, 111, 1239, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6537, 111, 1240, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6538, 111, 1241, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6539, 111, 1242, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6540, 111, 1243, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6541, 111, 2275, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:45', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6542, 111, 2276, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:41', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6543, 111, 2277, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:43', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6544, 111, 1255, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6545, 111, 1256, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6546, 111, 1257, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6547, 111, 2281, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:41', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6548, 111, 1258, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6549, 111, 2282, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:38', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6550, 111, 1259, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6551, 111, 2283, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:36', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6552, 111, 1260, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6553, 111, 2284, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:33', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6554, 111, 2285, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:31', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6555, 111, 2287, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:50', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6556, 111, 2288, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:48', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6557, 111, 2293, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:28', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6558, 111, 2294, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:26', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6559, 111, 2297, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:23', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6560, 111, 2300, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:01:44', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6561, 111, 2301, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:35', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6562, 111, 2302, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:33', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6563, 111, 2317, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:58', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6564, 111, 2318, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:47', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6565, 111, 2319, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:49', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6566, 111, 2320, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:08', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6567, 111, 2321, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:00', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6568, 111, 2322, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:02', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6569, 111, 2323, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:04', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6570, 111, 2324, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:06', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6571, 111, 2325, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:24', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6572, 111, 2326, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:09', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6573, 111, 2327, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:11', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6574, 111, 2328, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:13', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6575, 111, 2329, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:05:15', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6576, 111, 2330, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:34', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6577, 111, 2331, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:31', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6578, 111, 2332, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:28', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6579, 111, 2333, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:25', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6580, 111, 2334, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:22', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6581, 111, 2335, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:52', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6582, 111, 2363, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:54', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6583, 111, 2364, '1', '2026-06-01 23:29:35', '1', '2026-06-30 02:04:56', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6584, 111, 5011, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:44', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6585, 111, 5012, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:47', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6586, 111, 2472, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6587, 111, 2478, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6588, 111, 2479, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6589, 111, 2480, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6590, 111, 2481, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6591, 111, 2482, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6592, 111, 2483, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6593, 111, 2484, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6594, 111, 2485, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6595, 111, 2486, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6596, 111, 2487, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6597, 111, 2488, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6598, 111, 2489, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6599, 111, 2490, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6600, 111, 2491, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6601, 111, 2492, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6602, 111, 2493, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6603, 111, 2494, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6604, 111, 2495, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6605, 111, 2497, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6606, 111, 2525, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6607, 111, 1001, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6608, 111, 1002, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6609, 111, 1003, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6610, 111, 1004, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6611, 111, 1005, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6612, 111, 1006, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6613, 111, 1007, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6614, 111, 1008, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6615, 111, 1009, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6616, 111, 1010, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6617, 111, 1011, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6618, 111, 1012, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6619, 111, 1013, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6620, 111, 2549, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:29', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6621, 111, 1014, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6622, 111, 2550, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:27', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6623, 111, 1015, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6624, 111, 2551, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:36', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6625, 111, 1016, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6626, 111, 2552, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:34', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6627, 111, 1017, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6628, 111, 2553, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:44', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6629, 111, 1018, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6630, 111, 2554, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:46', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6631, 111, 1019, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6632, 111, 2555, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:48', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6633, 111, 1020, '1', '2026-06-01 23:29:35', '1', '2026-06-01 23:29:35', b'0', 122);
+INSERT INTO `system_role_menu` VALUES (6634, 111, 2556, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:50', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6635, 111, 2557, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:42', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6636, 111, 2558, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:32:40', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6637, 111, 2559, '1', '2026-06-01 23:29:35', '1', '2026-07-01 05:34:49', b'1', 122);
+INSERT INTO `system_role_menu` VALUES (6638, 155, 5780, '1', '2026-06-10 09:04:18', '1', '2026-06-10 09:04:18', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6639, 155, 2084, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:22', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6640, 155, 2085, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:20', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6641, 155, 2086, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:12', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6642, 155, 2087, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:14', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6643, 155, 2088, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:56', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6644, 155, 2089, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:15', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6645, 155, 2090, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:17', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6646, 155, 2091, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:17:18', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6647, 155, 2092, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:49', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6648, 155, 2093, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:46', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6649, 155, 5805, '1', '2026-06-10 09:04:18', '1', '2026-06-10 09:04:18', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6650, 155, 2094, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:39', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6651, 155, 2095, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:40', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6652, 155, 2096, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:42', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6653, 155, 2097, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:43', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6654, 155, 2098, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:45', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6655, 155, 5042, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:47', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6656, 155, 2099, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:36', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6657, 155, 5043, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:44', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6658, 155, 2100, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:31', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6659, 155, 5044, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:43', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6660, 155, 2101, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:32', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6661, 155, 5045, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:41', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6662, 155, 2102, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:16:34', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6663, 155, 5046, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:39', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6664, 155, 2103, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:55', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6665, 155, 2104, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:13:34', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6666, 155, 2105, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:13:28', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6667, 155, 2106, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:13:30', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6668, 155, 2107, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:13:32', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6669, 155, 2108, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:11', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6670, 155, 2109, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:05', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6671, 155, 2110, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:07', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6672, 155, 2111, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:03', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6673, 155, 2112, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:09', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6674, 155, 2113, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:23', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6675, 155, 2114, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:13', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6676, 155, 2115, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:16', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6677, 155, 2116, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:18', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6678, 155, 2117, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:20', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6679, 155, 2118, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:21', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6680, 155, 2119, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:37', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6681, 155, 2120, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:21', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6682, 155, 2121, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:25', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6683, 155, 2122, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:27', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6684, 155, 2123, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:29', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6685, 155, 2124, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:14:31', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6686, 155, 2125, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:28', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6687, 155, 2126, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:31', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6688, 155, 2127, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:35', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6689, 155, 2128, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:51', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6690, 155, 2129, '1', '2026-06-10 09:04:18', '1', '2026-07-01 03:15:53', b'1', 1);
+INSERT INTO `system_role_menu` VALUES (6691, 155, 5100, '1', '2026-06-10 09:04:18', '1', '2026-06-10 09:04:18', b'0', 1);
+INSERT INTO `system_role_menu` VALUES (6692, 1, 6001, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6693, 1, 6002, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6694, 1, 6003, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6695, 1, 60031, '1', '2026-07-03 06:48:27', '1', '2026-07-06 02:43:51', b'1', 0);
+INSERT INTO `system_role_menu` VALUES (6696, 1, 60032, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6697, 1, 60033, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6698, 1, 60034, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6699, 1, 60035, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6700, 1, 6004, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6701, 1, 60041, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6702, 1, 60042, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6703, 1, 60043, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6704, 1, 60044, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6705, 1, 60045, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6706, 1, 6005, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6707, 1, 60051, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6708, 1, 60052, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6709, 1, 60053, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6710, 1, 60054, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6711, 1, 60055, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6712, 1, 6010, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6713, 1, 6011, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6714, 1, 60111, '1', '2026-07-03 06:48:27', '1', '2026-07-06 02:45:35', b'1', 0);
+INSERT INTO `system_role_menu` VALUES (6715, 1, 60112, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6716, 1, 60113, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6717, 1, 6012, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6718, 1, 6020, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6719, 1, 6021, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6720, 1, 60211, '1', '2026-07-03 06:48:27', '1', '2026-07-06 02:46:38', b'1', 0);
+INSERT INTO `system_role_menu` VALUES (6721, 1, 60212, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6722, 1, 60213, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6723, 1, 60214, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6724, 1, 6022, '1', '2026-07-03 06:48:27', '1', '2026-07-03 06:48:27', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6725, 1, 6023, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6726, 1, 60231, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6727, 1, 60232, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6728, 1, 60233, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6729, 1, 60234, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6730, 1, 6024, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6731, 1, 60241, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6732, 1, 60242, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6733, 1, 60243, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6734, 1, 60244, '1', '2026-07-06 07:30:08', '1', '2026-07-06 07:30:08', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6735, 1, 6013, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6736, 1, 60131, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:43:00', b'1', 0);
+INSERT INTO `system_role_menu` VALUES (6737, 1, 60132, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6738, 1, 60133, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6739, 1, 60134, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6740, 1, 60135, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6741, 1, 6014, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6742, 1, 60141, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:43:29', b'1', 0);
+INSERT INTO `system_role_menu` VALUES (6743, 1, 60142, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6744, 1, 60143, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6745, 1, 60144, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6746, 1, 60145, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6747, 1, 6015, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6748, 1, 60151, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:44:14', b'1', 0);
+INSERT INTO `system_role_menu` VALUES (6749, 1, 60152, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6750, 1, 60153, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+INSERT INTO `system_role_menu` VALUES (6751, 1, 60114, '1', '2026-07-08 02:05:39', '1', '2026-07-08 02:05:39', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_sms_channel
+-- ----------------------------
+DROP TABLE IF EXISTS `system_sms_channel`;
+CREATE TABLE `system_sms_channel`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `signature` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊绛惧悕',
+  `code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '娓犻亾缂栫爜',
+  `status` tinyint NOT NULL COMMENT '寮�鍚姸鎬�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `api_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊 API 鐨勮处鍙�',
+  `api_secret` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭俊 API 鐨勭閽�',
+  `callback_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭俊鍙戦�佸洖璋� URL',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐭俊娓犻亾' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_sms_channel
+-- ----------------------------
+INSERT INTO `system_sms_channel` VALUES (2, 'Ballcat', 'ALIYUN', 0, '浣犺鏀瑰摝锛屽彧鏈夋垜鍙互鐢紒锛侊紒锛�', 'LTAI5tCnKso2uG3kJ5gRav88', 'fGJ5SNXL7P1NHNRmJ7DJaMJGPyE55C', NULL, '', '2021-03-31 11:53:10', '1', '2024-08-04 08:53:26', b'0');
+INSERT INTO `system_sms_channel` VALUES (4, '娴嬭瘯娓犻亾', 'DEBUG_DING_TALK', 0, '123', '696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859', 'SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67', NULL, '1', '2021-04-13 00:23:14', '1', '2022-03-27 20:29:49', b'0');
+INSERT INTO `system_sms_channel` VALUES (7, 'mock鑵捐浜�', 'TENCENT', 0, '123', '1 2', '2 3', '', '1', '2024-09-30 08:53:45', '1', '2025-12-20 11:30:18', b'0');
+
+-- ----------------------------
+-- Table structure for system_sms_code
+-- ----------------------------
+DROP TABLE IF EXISTS `system_sms_code`;
+CREATE TABLE `system_sms_code`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `mobile` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎵嬫満鍙�',
+  `code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '楠岃瘉鐮�',
+  `create_ip` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍒涘缓 IP',
+  `scene` tinyint NOT NULL COMMENT '鍙戦�佸満鏅�',
+  `today_index` tinyint NOT NULL COMMENT '浠婃棩鍙戦�佺殑绗嚑鏉�',
+  `used` tinyint NOT NULL COMMENT '鏄惁浣跨敤',
+  `used_time` datetime NULL DEFAULT NULL COMMENT '浣跨敤鏃堕棿',
+  `used_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浣跨敤 IP',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_mobile`(`mobile` ASC) USING BTREE COMMENT '鎵嬫満鍙�'
+) ENGINE = InnoDB AUTO_INCREMENT = 694 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鎵嬫満楠岃瘉鐮�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_sms_code
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_sms_log
+-- ----------------------------
+DROP TABLE IF EXISTS `system_sms_log`;
+CREATE TABLE `system_sms_log`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `channel_id` bigint NOT NULL COMMENT '鐭俊娓犻亾缂栧彿',
+  `channel_code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊娓犻亾缂栫爜',
+  `template_id` bigint NOT NULL COMMENT '妯℃澘缂栧彿',
+  `template_code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘缂栫爜',
+  `template_type` tinyint NOT NULL COMMENT '鐭俊绫诲瀷',
+  `template_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊鍐呭',
+  `template_params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊鍙傛暟',
+  `api_template_id` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊 API 鐨勬ā鏉跨紪鍙�',
+  `mobile` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鎵嬫満鍙�',
+  `user_id` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NULL DEFAULT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `send_status` tinyint NOT NULL DEFAULT 0 COMMENT '鍙戦�佺姸鎬�',
+  `send_time` datetime NULL DEFAULT NULL COMMENT '鍙戦�佹椂闂�',
+  `api_send_code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭俊 API 鍙戦�佺粨鏋滅殑缂栫爜',
+  `api_send_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭俊 API 鍙戦�佸け璐ョ殑鎻愮ず',
+  `api_request_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭俊 API 鍙戦�佽繑鍥炵殑鍞竴璇锋眰 ID',
+  `api_serial_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐭俊 API 鍙戦�佽繑鍥炵殑搴忓彿',
+  `receive_status` tinyint NOT NULL DEFAULT 0 COMMENT '鎺ユ敹鐘舵��',
+  `receive_time` datetime NULL DEFAULT NULL COMMENT '鎺ユ敹鏃堕棿',
+  `api_receive_code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'API 鎺ユ敹缁撴灉鐨勭紪鐮�',
+  `api_receive_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'API 鎺ユ敹缁撴灉鐨勮鏄�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1591 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐭俊鏃ュ織' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_sms_log
+-- ----------------------------
+INSERT INTO `system_sms_log` VALUES (1568, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛�121锛屾煡鐪嬮摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=7ab4733c-6edd-11f1-af1d-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=7ab4733c-6edd-11f1-af1d-00155dd68500\",\"processInstanceName\":\"121\"}', 'suibian', '18818260272', 1, 2, 20, '2026-06-23 16:28:17', '660026', NULL, NULL, '9b26bc52-6803-4b54-872a-f29443bc63cf', 0, NULL, NULL, NULL, '1', '2026-06-23 16:28:15', '1', '2026-06-23 16:28:17', b'0');
+INSERT INTO `system_sms_log` VALUES (1569, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛�121锛屾煡鐪嬮摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=54847d0b-745f-11f1-b91b-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=54847d0b-745f-11f1-b91b-00155dd68500\",\"processInstanceName\":\"121\"}', 'suibian', '19021719925', 142, 2, 20, '2026-06-30 16:40:22', '660026', NULL, NULL, '14b411cf-fe09-4eca-8f58-5eefd5261c36', 0, NULL, NULL, NULL, '142', '2026-06-30 16:40:22', '142', '2026-06-30 16:40:22', b'0');
+INSERT INTO `system_sms_log` VALUES (1570, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氶噰璐鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=2c00b373-74fc-11f1-9120-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=2c00b373-74fc-11f1-9120-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 10, '2026-07-01 11:23:05', '0', NULL, NULL, '2d2a184c-562a-4b2d-bfc5-8fab91c8fee8', 0, NULL, NULL, NULL, '142', '2026-07-01 11:23:05', '142', '2026-07-01 11:23:05', b'0');
+INSERT INTO `system_sms_log` VALUES (1571, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氶噰璐鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=9e13aa29-74fe-11f1-9120-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=9e13aa29-74fe-11f1-9120-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-01 11:40:35', '660026', NULL, NULL, '0e9e7509-329d-4503-9150-6ceef9c5cf59', 0, NULL, NULL, NULL, '1', '2026-07-01 11:40:35', '1', '2026-07-01 11:40:35', b'0');
+INSERT INTO `system_sms_log` VALUES (1572, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細閲囪喘瀹℃牳-瀹℃壒浜猴紝鐢宠浜猴細test01锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=dcc6fede-74fe-11f1-9120-00155dd68500', '{\"startUserNickname\":\"test01\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=dcc6fede-74fe-11f1-9120-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-01 11:42:20', '660026', NULL, NULL, '83e1893c-513d-4321-a82d-615d02a0e07f', 0, NULL, NULL, NULL, '142', '2026-07-01 11:42:20', '142', '2026-07-01 11:42:20', b'0');
+INSERT INTO `system_sms_log` VALUES (1573, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氶噰璐鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=dcc6fede-74fe-11f1-9120-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=dcc6fede-74fe-11f1-9120-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-01 11:42:43', '660026', NULL, NULL, '1d750065-78a0-4904-9563-8e7105403311', 0, NULL, NULL, NULL, '142', '2026-07-01 11:42:43', '142', '2026-07-01 11:42:43', b'0');
+INSERT INTO `system_sms_log` VALUES (1574, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛�121锛屾煡鐪嬮摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=e579a46a-7500-11f1-993f-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=e579a46a-7500-11f1-993f-00155dd68500\",\"processInstanceName\":\"121\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-01 11:56:54', '660026', NULL, NULL, '48f14cbb-75c2-43fe-b08c-15cc0edb8122', 0, NULL, NULL, NULL, '142', '2026-07-01 11:56:54', '142', '2026-07-01 11:56:54', b'0');
+INSERT INTO `system_sms_log` VALUES (1575, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛�121锛屾煡鐪嬮摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=1c75e01b-7501-11f1-993f-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=1c75e01b-7501-11f1-993f-00155dd68500\",\"processInstanceName\":\"121\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-01 11:58:26', '660026', NULL, NULL, 'b1e503d9-0e09-46be-8d5a-bfeb37854076', 0, NULL, NULL, NULL, '1', '2026-07-01 11:58:26', '1', '2026-07-01 11:58:26', b'0');
+INSERT INTO `system_sms_log` VALUES (1576, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細閲囪喘瀹℃牳-瀹℃壒浜猴紝鐢宠浜猴細test01锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=48307a8f-750c-11f1-ad84-00155dd68500', '{\"startUserNickname\":\"test01\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=48307a8f-750c-11f1-ad84-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-01 13:18:25', '660026', NULL, NULL, '658dda1e-c743-4aaf-803a-283ee2b4b225', 0, NULL, NULL, NULL, '142', '2026-07-01 13:18:24', '142', '2026-07-01 13:18:25', b'0');
+INSERT INTO `system_sms_log` VALUES (1577, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氶噰璐鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=48307a8f-750c-11f1-ad84-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=48307a8f-750c-11f1-ad84-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-01 13:18:39', '660026', NULL, NULL, 'b783cfc3-ec8d-466f-af5c-fc5f7def54cc', 0, NULL, NULL, NULL, '142', '2026-07-01 13:18:38', '142', '2026-07-01 13:18:39', b'0');
+INSERT INTO `system_sms_log` VALUES (1578, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細閲囪喘瀹℃牳-瀹℃壒浜猴紝鐢宠浜猴細鑺嬮亾婧愮爜锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=46b026d3-750d-11f1-ad84-00155dd68500', '{\"startUserNickname\":\"鑺嬮亾婧愮爜\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=46b026d3-750d-11f1-ad84-00155dd68500\",\"processInstanceName\":\"閲囪喘瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 10, '2026-07-01 13:25:31', '0', NULL, NULL, '4c58db0e-4e5c-403f-a6db-f260672dcc54', 0, NULL, NULL, NULL, '1', '2026-07-01 13:25:31', '1', '2026-07-01 13:25:31', b'0');
+INSERT INTO `system_sms_log` VALUES (1579, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=949c7de9-75da-11f1-a595-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=949c7de9-75da-11f1-a595-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 10, '2026-07-02 13:55:09', '0', NULL, NULL, '1a29410a-72da-4858-a17d-5e9f0b9311e6', 0, NULL, NULL, NULL, '142', '2026-07-02 13:55:09', '142', '2026-07-02 13:55:09', b'0');
+INSERT INTO `system_sms_log` VALUES (1580, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=e3b3882a-75da-11f1-a595-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=e3b3882a-75da-11f1-a595-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '18818260272', 1, 2, 10, '2026-07-02 13:57:21', '0', NULL, NULL, '4130b763-7328-4049-a1bc-023f57b06a73', 0, NULL, NULL, NULL, '1', '2026-07-02 13:57:21', '1', '2026-07-02 13:57:21', b'0');
+INSERT INTO `system_sms_log` VALUES (1581, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=621448cf-75db-11f1-80f9-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=621448cf-75db-11f1-80f9-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-02 14:00:54', '660026', NULL, NULL, '7401595d-7f7a-4305-8fae-55c20219578d', 0, NULL, NULL, NULL, '142', '2026-07-02 14:00:54', '142', '2026-07-02 14:00:54', b'0');
+INSERT INTO `system_sms_log` VALUES (1582, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=673c2b80-75db-11f1-80f9-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=673c2b80-75db-11f1-80f9-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '18818260272', 1, 2, 10, '2026-07-02 14:01:02', '0', NULL, NULL, '01a568d2-cf5a-4a9b-8a3c-282774ed9012', 0, NULL, NULL, NULL, '1', '2026-07-02 14:01:02', '1', '2026-07-02 14:01:02', b'0');
+INSERT INTO `system_sms_log` VALUES (1583, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=0986b582-75f0-11f1-a696-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=0986b582-75f0-11f1-a696-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '19021719925', 142, 2, 20, '2026-07-02 16:28:44', '660026', NULL, NULL, '533fcc36-c8e3-4a4f-a869-11c0593feb58', 0, NULL, NULL, NULL, '142', '2026-07-02 16:28:44', '142', '2026-07-02 16:28:45', b'0');
+INSERT INTO `system_sms_log` VALUES (1584, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=cb504733-75f1-11f1-a696-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=cb504733-75f1-11f1-a696-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-02 16:41:19', '660026', NULL, NULL, 'c2f07b7f-4111-45cc-8faf-8ff6115355b6', 0, NULL, NULL, NULL, '1', '2026-07-02 16:41:19', '1', '2026-07-02 16:41:19', b'0');
+INSERT INTO `system_sms_log` VALUES (1585, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氬悎鍚屽鏍革紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=5a51421b-7a90-11f1-9ea7-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=5a51421b-7a90-11f1-9ea7-00155dd68500\",\"processInstanceName\":\"鍚堝悓瀹℃牳\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-08 13:46:24', '660026', NULL, NULL, '8e6dd237-a77f-4d2b-98b3-d1fb2af418cd', 0, NULL, NULL, NULL, '1', '2026-07-08 13:46:24', '1', '2026-07-08 13:46:24', b'0');
+INSERT INTO `system_sms_log` VALUES (1586, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細璇峰亣娴佺▼-瀹℃壒浜猴紝鐢宠浜猴細鑺嬮亾婧愮爜锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=0b156a98-7a93-11f1-9ea7-00155dd68500', '{\"startUserNickname\":\"鑺嬮亾婧愮爜\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=0b156a98-7a93-11f1-9ea7-00155dd68500\",\"processInstanceName\":\"璇峰亣娴佺▼\"}', 'suibian', '15601691200', 104, 2, 20, '2026-07-08 14:05:39', '660026', NULL, NULL, '01496223-2f90-4930-b09d-155f3f136b51', 0, NULL, NULL, NULL, '1', '2026-07-08 14:05:39', '1', '2026-07-08 14:05:39', b'0');
+INSERT INTO `system_sms_log` VALUES (1587, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細璇峰亣娴佺▼-瀹℃壒浜猴紝鐢宠浜猴細鑺嬮亾婧愮爜锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6b24543a-7a93-11f1-9ea7-00155dd68500', '{\"startUserNickname\":\"鑺嬮亾婧愮爜\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=6b24543a-7a93-11f1-9ea7-00155dd68500\",\"processInstanceName\":\"璇峰亣娴佺▼\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-08 14:08:21', '660026', NULL, NULL, '7e7a0319-4964-4ee0-9569-6fcf16bde872', 0, NULL, NULL, NULL, '1', '2026-07-08 14:08:20', '1', '2026-07-08 14:08:21', b'0');
+INSERT INTO `system_sms_log` VALUES (1588, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細璇峰亣娴佺▼-瀹℃壒浜猴紝鐢宠浜猴細鑺嬮亾婧愮爜锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=75063c9f-7a93-11f1-9ea7-00155dd68500', '{\"startUserNickname\":\"鑺嬮亾婧愮爜\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=75063c9f-7a93-11f1-9ea7-00155dd68500\",\"processInstanceName\":\"璇峰亣娴佺▼\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-08 14:08:37', '660026', NULL, NULL, '35f615fd-d466-4652-b104-216d054ee1a0', 0, NULL, NULL, NULL, '1', '2026-07-08 14:08:37', '1', '2026-07-08 14:08:37', b'0');
+INSERT INTO `system_sms_log` VALUES (1589, 4, 'DEBUG_DING_TALK', 9, 'bpm_task_assigned', 2, '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細璇峰亣娴佺▼-瀹℃壒浜猴紝鐢宠浜猴細鑺嬮亾婧愮爜锛屽鐞嗛摼鎺ワ細http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=83ff16b4-7a93-11f1-9ea7-00155dd68500', '{\"startUserNickname\":\"鑺嬮亾婧愮爜\",\"taskName\":\"瀹℃壒浜篭",\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=83ff16b4-7a93-11f1-9ea7-00155dd68500\",\"processInstanceName\":\"璇峰亣娴佺▼\"}', 'suibian', '18818260272', 1, 2, 10, '2026-07-08 14:09:02', '0', NULL, NULL, '43383972-157e-4ddf-bb8e-8bf99aa266a3', 0, NULL, NULL, NULL, '1', '2026-07-08 14:09:02', '1', '2026-07-08 14:09:02', b'0');
+INSERT INTO `system_sms_log` VALUES (1590, 4, 'DEBUG_DING_TALK', 11, 'bpm_process_instance_approve', 2, '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛氳鍋囨祦绋嬶紝鏌ョ湅閾炬帴锛歨ttp://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=83ff16b4-7a93-11f1-9ea7-00155dd68500', '{\"detailUrl\":\"http://dashboard.yudao.iocoder.cn/bpm/process-instance/detail?id=83ff16b4-7a93-11f1-9ea7-00155dd68500\",\"processInstanceName\":\"璇峰亣娴佺▼\"}', 'suibian', '18818260272', 1, 2, 20, '2026-07-08 14:22:30', '660026', NULL, NULL, '6eb73b91-e2cc-4861-9935-1ec599503733', 0, NULL, NULL, NULL, '1', '2026-07-08 14:22:30', '1', '2026-07-08 14:22:30', b'0');
+
+-- ----------------------------
+-- Table structure for system_sms_template
+-- ----------------------------
+DROP TABLE IF EXISTS `system_sms_template`;
+CREATE TABLE `system_sms_template`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `type` tinyint NOT NULL COMMENT '妯℃澘绫诲瀷',
+  `status` tinyint NOT NULL COMMENT '寮�鍚姸鎬�',
+  `code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘缂栫爜',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘鍚嶇О',
+  `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '妯℃澘鍐呭',
+  `params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍙傛暟鏁扮粍',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `api_template_id` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊 API 鐨勬ā鏉跨紪鍙�',
+  `channel_id` bigint NOT NULL COMMENT '鐭俊娓犻亾缂栧彿',
+  `channel_code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐭俊娓犻亾缂栫爜',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐭俊妯℃澘' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_sms_template
+-- ----------------------------
+INSERT INTO `system_sms_template` VALUES (2, 1, 0, 'test_01', '娴嬭瘯楠岃瘉鐮佺煭淇�', '姝e湪杩涜鐧诲綍鎿嶄綔{operation}锛屾偍鐨勯獙璇佺爜鏄瘂code}', '[\"operation\",\"code\"]', '娴嬭瘯澶囨敞', '4383920', 4, 'DEBUG_DING_TALK', '', '2021-03-31 10:49:38', '1', '2024-08-18 11:57:18', b'0');
+INSERT INTO `system_sms_template` VALUES (3, 1, 0, 'test_02', '鍏憡閫氱煡', '鎮ㄧ殑楠岃瘉鐮亄code}锛岃楠岃瘉鐮�5鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勬紡浜庝粬浜猴紒', '[\"code\"]', NULL, 'SMS_207945135', 2, 'ALIYUN', '', '2021-03-31 11:56:30', '1', '2021-04-10 01:22:02', b'0');
+INSERT INTO `system_sms_template` VALUES (6, 3, 0, 'test-01', '娴嬭瘯妯℃澘', '鍝堝搱鍝� {name}', '[\"name\"]', 'f鍝堝搱鍝�', '4383920', 4, 'DEBUG_DING_TALK', '1', '2021-04-10 01:07:21', '1', '2024-08-18 11:57:07', b'0');
+INSERT INTO `system_sms_template` VALUES (7, 3, 0, 'test-04', '娴嬭瘯涓�', '鑰侀浮{name}锛岀墰閫納code}', '[\"name\",\"code\"]', '鍝堝搱鍝堝搱', 'suibian', 7, 'DEBUG_DING_TALK', '1', '2021-04-13 00:29:53', '1', '2024-09-30 00:56:24', b'0');
+INSERT INTO `system_sms_template` VALUES (8, 1, 0, 'user-sms-login', '鍓嶅彴鐢ㄦ埛鐭俊鐧诲綍', '鎮ㄧ殑楠岃瘉鐮佹槸{code}', '[\"code\"]', NULL, '4372216', 4, 'DEBUG_DING_TALK', '1', '2021-10-11 08:10:00', '1', '2024-08-18 11:57:06', b'0');
+INSERT INTO `system_sms_template` VALUES (9, 2, 0, 'bpm_task_assigned', '銆愬伐浣滄祦銆戜换鍔¤鍒嗛厤', '鎮ㄦ敹鍒颁簡涓�鏉℃柊鐨勫緟鍔炰换鍔★細{processInstanceName}-{taskName}锛岀敵璇蜂汉锛歿startUserNickname}锛屽鐞嗛摼鎺ワ細{detailUrl}', '[\"processInstanceName\",\"taskName\",\"startUserNickname\",\"detailUrl\"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-21 22:31:19', '1', '2022-01-22 00:03:36', b'0');
+INSERT INTO `system_sms_template` VALUES (10, 2, 0, 'bpm_process_instance_reject', '銆愬伐浣滄祦銆戞祦绋嬭涓嶉�氳繃', '鎮ㄧ殑娴佺▼琚鎵逛笉閫氳繃锛歿processInstanceName}锛屽師鍥狅細{reason}锛屾煡鐪嬮摼鎺ワ細{detailUrl}', '[\"processInstanceName\",\"reason\",\"detailUrl\"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-22 00:03:31', '1', '2022-05-01 12:33:14', b'0');
+INSERT INTO `system_sms_template` VALUES (11, 2, 0, 'bpm_process_instance_approve', '銆愬伐浣滄祦銆戞祦绋嬭閫氳繃', '鎮ㄧ殑娴佺▼琚鎵归�氳繃锛歿processInstanceName}锛屾煡鐪嬮摼鎺ワ細{detailUrl}', '[\"processInstanceName\",\"detailUrl\"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-22 00:04:31', '1', '2022-03-27 20:32:21', b'0');
+INSERT INTO `system_sms_template` VALUES (12, 2, 0, 'demo', '婕旂ず妯℃澘', '鎴戝氨鏄祴璇曚竴涓嬩笅', '[]', NULL, 'biubiubiu', 4, 'DEBUG_DING_TALK', '1', '2022-04-10 23:22:49', '1', '2024-08-18 11:57:04', b'0');
+INSERT INTO `system_sms_template` VALUES (14, 1, 0, 'user-update-mobile', '浼氬憳鐢ㄦ埛 - 淇敼鎵嬫満', '鎮ㄧ殑楠岃瘉鐮亄code}锛岃楠岃瘉鐮� 5 鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勬紡浜庝粬浜猴紒', '[\"code\"]', '', 'null', 4, 'DEBUG_DING_TALK', '1', '2023-08-19 18:58:01', '1', '2023-08-19 11:34:04', b'0');
+INSERT INTO `system_sms_template` VALUES (15, 1, 0, 'user-update-password', '浼氬憳鐢ㄦ埛 - 淇敼瀵嗙爜', '鎮ㄧ殑楠岃瘉鐮亄code}锛岃楠岃瘉鐮� 5 鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勬紡浜庝粬浜猴紒', '[\"code\"]', '', 'null', 4, 'DEBUG_DING_TALK', '1', '2023-08-19 18:58:01', '1', '2023-08-19 11:34:18', b'0');
+INSERT INTO `system_sms_template` VALUES (16, 1, 0, 'user-reset-password', '浼氬憳鐢ㄦ埛 - 閲嶇疆瀵嗙爜', '鎮ㄧ殑楠岃瘉鐮亄code}锛岃楠岃瘉鐮� 5 鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勬紡浜庝粬浜猴紒', '[\"code\"]', '', 'null', 4, 'DEBUG_DING_TALK', '1', '2023-08-19 18:58:01', '1', '2023-12-02 22:35:27', b'0');
+INSERT INTO `system_sms_template` VALUES (17, 2, 0, 'bpm_task_timeout', '銆愬伐浣滄祦銆戜换鍔″鎵硅秴鏃�', '鎮ㄦ敹鍒颁簡涓�鏉¤秴鏃剁殑寰呭姙浠诲姟锛歿processInstanceName}-{taskName}锛屽鐞嗛摼鎺ワ細{detailUrl}', '[\"processInstanceName\",\"taskName\",\"detailUrl\"]', '', 'X', 4, 'DEBUG_DING_TALK', '1', '2024-08-16 21:59:15', '1', '2024-08-16 21:59:34', b'0');
+INSERT INTO `system_sms_template` VALUES (18, 1, 0, 'admin-reset-password', '鍚庡彴鐢ㄦ埛 - 蹇樿瀵嗙爜', '鎮ㄧ殑楠岃瘉鐮亄code}锛岃楠岃瘉鐮� 5 鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勬紡浜庝粬浜猴紒', '[\"code\"]', '', 'null', 4, 'DEBUG_DING_TALK', '1', '2025-03-16 14:19:34', '1', '2025-03-16 14:19:45', b'0');
+INSERT INTO `system_sms_template` VALUES (19, 1, 0, 'admin-sms-login', '鍚庡彴鐢ㄦ埛鐭俊鐧诲綍', '鎮ㄧ殑楠岃瘉鐮佹槸{code}', '[\"code\"]', '', '4372216', 4, 'DEBUG_DING_TALK', '1', '2025-04-08 09:36:03', '1', '2025-04-08 09:36:17', b'0');
+
+-- ----------------------------
+-- Table structure for system_social_client
+-- ----------------------------
+DROP TABLE IF EXISTS `system_social_client`;
+CREATE TABLE `system_social_client`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '搴旂敤鍚�',
+  `social_type` tinyint NOT NULL COMMENT '绀句氦骞冲彴鐨勭被鍨�',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔紪鍙�',
+  `client_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '瀹㈡埛绔瘑閽�',
+  `agent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠g悊缂栧彿',
+  `public_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'publicKey 鍏挜',
+  `status` tinyint NOT NULL COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 48 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绀句氦瀹㈡埛绔〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_social_client
+-- ----------------------------
+INSERT INTO `system_social_client` VALUES (1, '閽夐拤', 20, 2, 'dingvrnreaje3yqvzhxg', 'i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI', NULL, NULL, 0, '', '2023-10-18 11:21:18', '1', '2023-12-20 21:28:26', b'1', 1);
+INSERT INTO `system_social_client` VALUES (2, '閽夐拤锛堢帇鍦熻眴锛�', 20, 2, 'dingtsu9hpepjkbmthhw', 'FP_bnSq_HAHKCSncmJjw5hxhnzs6vaVDSZZn3egj6rdqTQ_hu5tQVJyLMpgCakdP', NULL, NULL, 0, '', '2023-10-18 11:21:18', '', '2023-12-20 21:28:26', b'1', 121);
+INSERT INTO `system_social_client` VALUES (3, '寰俊鍏紬鍙�', 31, 1, 'wx5b23ba7a5589ecbb', '2a7b3b20c537e52e74afd395eb85f61f', NULL, NULL, 0, '', '2023-10-18 16:07:46', '1', '2023-12-20 21:28:23', b'1', 1);
+INSERT INTO `system_social_client` VALUES (43, '寰俊灏忕▼搴�', 34, 1, 'wx63c280fe3248a3e7', '6f270509224a7ae1296bbf1c8cb97aed', NULL, NULL, 0, '', '2023-10-19 13:37:41', '1', '2023-12-20 21:28:25', b'1', 1);
+INSERT INTO `system_social_client` VALUES (44, '1', 10, 1, '2', '3', NULL, NULL, 0, '1', '2025-04-06 20:36:28', '1', '2025-04-06 20:43:12', b'1', 1);
+INSERT INTO `system_social_client` VALUES (45, '1', 10, 1, '2', '3', NULL, NULL, 1, '1', '2025-09-06 20:26:15', '1', '2025-09-06 20:27:55', b'1', 1);
+INSERT INTO `system_social_client` VALUES (46, '1', 10, 1, '2', '3', NULL, NULL, 0, '1', '2025-11-29 16:04:23', '1', '2025-11-29 16:04:26', b'1', 1);
+INSERT INTO `system_social_client` VALUES (47, '123', 10, 1, '1', '2', '3', NULL, 0, '1', '2025-12-21 10:27:02', '1', '2025-12-21 10:27:20', b'1', 1);
+
+-- ----------------------------
+-- Table structure for system_social_user
+-- ----------------------------
+DROP TABLE IF EXISTS `system_social_user`;
+CREATE TABLE `system_social_user`  (
+  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '涓婚敭(鑷绛栫暐)',
+  `type` tinyint NOT NULL COMMENT '绀句氦骞冲彴鐨勭被鍨�',
+  `openid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绀句氦 openid',
+  `token` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绀句氦 token',
+  `raw_token_info` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍘熷 Token 鏁版嵁锛屼竴鑸槸 JSON 鏍煎紡',
+  `nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛鏄电О',
+  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐢ㄦ埛澶村儚',
+  `raw_user_info` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍘熷鐢ㄦ埛鏁版嵁锛屼竴鑸槸 JSON 鏍煎紡',
+  `code` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鏈�鍚庝竴娆$殑璁よ瘉 code',
+  `state` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏈�鍚庝竴娆$殑璁よ瘉 state',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_type_openid`(`type` ASC, `openid` ASC) USING BTREE,
+  INDEX `idx_type_code_state`(`type` ASC, `code` ASC, `state` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绀句氦鐢ㄦ埛琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_social_user
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_social_user_bind
+-- ----------------------------
+DROP TABLE IF EXISTS `system_social_user_bind`;
+CREATE TABLE `system_social_user_bind`  (
+  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '涓婚敭(鑷绛栫暐)',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛缂栧彿',
+  `user_type` tinyint NOT NULL COMMENT '鐢ㄦ埛绫诲瀷',
+  `social_type` tinyint NOT NULL COMMENT '绀句氦骞冲彴鐨勭被鍨�',
+  `social_user_id` bigint NOT NULL COMMENT '绀句氦鐢ㄦ埛鐨勭紪鍙�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_user_type_social_user_id`(`user_type` ASC, `social_user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 165 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绀句氦缁戝畾琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_social_user_bind
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_tenant
+-- ----------------------------
+DROP TABLE IF EXISTS `system_tenant`;
+CREATE TABLE `system_tenant`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '绉熸埛缂栧彿',
+  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绉熸埛鍚�',
+  `contact_user_id` bigint NULL DEFAULT NULL COMMENT '鑱旂郴浜虹殑鐢ㄦ埛缂栧彿',
+  `contact_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鑱旂郴浜�',
+  `contact_mobile` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴鎵嬫満',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '绉熸埛鐘舵��',
+  `websites` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '缁戝畾鍩熷悕鏁扮粍',
+  `package_id` bigint NOT NULL COMMENT '绉熸埛濂楅缂栧彿',
+  `expire_time` datetime NOT NULL COMMENT '杩囨湡鏃堕棿',
+  `account_count` int NOT NULL COMMENT '璐﹀彿鏁伴噺',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 162 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绉熸埛琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_tenant
+-- ----------------------------
+INSERT INTO `system_tenant` VALUES (1, '鑺嬮亾婧愮爜', NULL, '鑺嬭壙', '17321315478', 0, 'www.iocoder.cn,127.0.0.1:3000,wxc4598c446f8a9cb3', 0, '2099-02-19 17:14:16', 9999, '1', '2021-01-05 17:03:47', '1', '2025-08-19 05:18:41', b'0');
+INSERT INTO `system_tenant` VALUES (121, '灏忕鎴�', 110, '灏忕帇2', '15601691300', 0, 'zsxq.iocoder.cn,123321', 111, '2026-07-10 00:00:00', 30, '1', '2022-02-22 00:56:14', '1', '2025-08-19 21:19:29', b'0');
+INSERT INTO `system_tenant` VALUES (122, '娴嬭瘯绉熸埛', 113, '鑺嬮亾', '15601691300', 0, 'test.iocoder.cn,222,333', 111, '2023-04-29 00:00:00', 50, '1', '2022-03-07 21:37:58', '1', '2026-06-01 23:29:35', b'0');
+
+-- ----------------------------
+-- Table structure for system_tenant_package
+-- ----------------------------
+DROP TABLE IF EXISTS `system_tenant_package`;
+CREATE TABLE `system_tenant_package`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '濂楅缂栧彿',
+  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '濂楅鍚�',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '绉熸埛鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '澶囨敞',
+  `menu_ids` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍏宠仈鐨勮彍鍗曠紪鍙�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 114 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绉熸埛濂楅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_tenant_package
+-- ----------------------------
+INSERT INTO `system_tenant_package` VALUES (111, '鏅�氬椁�', 0, '灏忓姛鑳�', '[1,2,5,1031,1032,1033,1034,1035,1036,1037,1038,1039,1050,1051,1052,1053,1054,1056,1057,1058,1059,1060,1063,1064,1065,1066,1067,1070,1075,1077,1078,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1117,1118,1119,1120,100,101,102,1126,103,1127,1128,1129,106,1130,107,1132,1133,110,1134,111,1135,112,1136,113,1137,2161,114,1138,1139,115,1140,116,1141,1142,1143,1150,1161,1162,1166,1173,1174,2713,2714,1178,2715,2716,2717,2718,2720,2721,1185,2722,1186,1187,2723,1188,2724,1189,2725,1190,2726,1191,2727,1192,2728,2729,1193,1194,2730,1195,2731,2732,1197,2733,1198,2734,1199,2735,1200,1201,1202,2739,2740,1207,1208,1209,2745,1210,2746,1211,2747,1212,2748,1213,1215,1216,1217,1218,1219,1220,2756,1221,2757,1222,1224,1225,1226,1227,1228,1229,1237,1238,2262,1239,1240,1241,1242,1243,2275,2276,2277,1255,1256,1257,2281,1258,2282,1259,2283,1260,2284,2285,2287,2288,2293,2294,2297,2300,2301,2302,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2363,2364,5011,5012,2472,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2497,2525,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,2549,1014,2550,1015,2551,1016,2552,1017,2553,1018,2554,1019,2555,1020,2556,2557,2558,2559]', '1', '2022-02-22 00:54:00', '1', '2025-09-06 20:52:25', b'0');
+INSERT INTO `system_tenant_package` VALUES (113, '娴嬭瘯濂楅锛堝暐閮芥病鏈夛級', 0, '', '[2160,1254,2159]', '1', '2026-06-01 23:22:39', '1', '2026-06-09 14:44:00', b'0');
+
+-- ----------------------------
+-- Table structure for system_user_post
+-- ----------------------------
+DROP TABLE IF EXISTS `system_user_post`;
+CREATE TABLE `system_user_post`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `user_id` bigint NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛ID',
+  `post_id` bigint NOT NULL DEFAULT 0 COMMENT '宀椾綅ID',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 135 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐢ㄦ埛宀椾綅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_user_post
+-- ----------------------------
+INSERT INTO `system_user_post` VALUES (112, 1, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1);
+INSERT INTO `system_user_post` VALUES (113, 100, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1);
+INSERT INTO `system_user_post` VALUES (115, 104, 1, '1', '2022-05-16 19:36:28', '1', '2022-05-16 19:36:28', b'0', 1);
+INSERT INTO `system_user_post` VALUES (116, 117, 2, '1', '2022-07-09 17:40:26', '1', '2022-07-09 17:40:26', b'0', 1);
+INSERT INTO `system_user_post` VALUES (117, 118, 1, '1', '2022-07-09 17:44:44', '1', '2022-07-09 17:44:44', b'0', 1);
+INSERT INTO `system_user_post` VALUES (119, 114, 5, '1', '2024-03-24 20:45:51', '1', '2024-03-24 20:45:51', b'0', 1);
+INSERT INTO `system_user_post` VALUES (123, 115, 1, '1', '2024-04-04 09:37:14', '1', '2024-04-04 09:37:14', b'0', 1);
+INSERT INTO `system_user_post` VALUES (124, 115, 2, '1', '2024-04-04 09:37:14', '1', '2024-04-04 09:37:14', b'0', 1);
+INSERT INTO `system_user_post` VALUES (125, 1, 2, '1', '2024-07-13 22:31:39', '1', '2024-07-13 22:31:39', b'0', 1);
+INSERT INTO `system_user_post` VALUES (128, 139, 2, '1', '2025-12-05 21:43:27', '1', '2025-12-05 21:43:27', b'0', 1);
+INSERT INTO `system_user_post` VALUES (129, 139, 4, '1', '2025-12-05 21:43:27', '1', '2025-12-05 21:43:27', b'0', 1);
+INSERT INTO `system_user_post` VALUES (130, 225, 2, '1', '2026-07-06 11:24:53', '1', '2026-07-06 11:24:53', b'0', 0);
+INSERT INTO `system_user_post` VALUES (131, 226, 2, '1', '2026-07-06 11:26:35', '1', '2026-07-06 11:26:35', b'0', 0);
+INSERT INTO `system_user_post` VALUES (132, 227, 4, '1', '2026-07-06 15:15:38', '1', '2026-07-06 15:15:38', b'0', 0);
+INSERT INTO `system_user_post` VALUES (133, 228, 4, '1', '2026-07-07 10:50:55', '1', '2026-07-07 10:50:55', b'0', 0);
+INSERT INTO `system_user_post` VALUES (134, 229, 4, '1', '2026-07-07 11:25:03', '1', '2026-07-07 11:25:03', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_user_role
+-- ----------------------------
+DROP TABLE IF EXISTS `system_user_role`;
+CREATE TABLE `system_user_role`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鑷缂栧彿',
+  `user_id` bigint NOT NULL COMMENT '鐢ㄦ埛ID',
+  `role_id` bigint NOT NULL COMMENT '瑙掕壊ID',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 57 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐢ㄦ埛鍜岃鑹插叧鑱旇〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_user_role
+-- ----------------------------
+INSERT INTO `system_user_role` VALUES (1, 1, 1, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:17', b'0', 1);
+INSERT INTO `system_user_role` VALUES (2, 2, 2, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:13', b'0', 1);
+INSERT INTO `system_user_role` VALUES (5, 100, 1, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:12', b'0', 1);
+INSERT INTO `system_user_role` VALUES (6, 100, 2, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:11', b'0', 1);
+INSERT INTO `system_user_role` VALUES (10, 103, 1, '1', '2022-01-11 13:19:45', '1', '2022-01-11 13:19:45', b'0', 1);
+INSERT INTO `system_user_role` VALUES (14, 110, 109, '1', '2022-02-22 00:56:14', '1', '2022-02-22 00:56:14', b'0', 121);
+INSERT INTO `system_user_role` VALUES (15, 111, 110, '110', '2022-02-23 13:14:38', '110', '2022-02-23 13:14:38', b'0', 121);
+INSERT INTO `system_user_role` VALUES (16, 113, 111, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122);
+INSERT INTO `system_user_role` VALUES (18, 1, 2, '1', '2022-05-12 20:39:29', '1', '2022-05-12 20:39:29', b'0', 1);
+INSERT INTO `system_user_role` VALUES (22, 115, 2, '1', '2022-07-21 22:08:30', '1', '2022-07-21 22:08:30', b'0', 1);
+INSERT INTO `system_user_role` VALUES (35, 112, 1, '1', '2024-03-15 20:00:24', '1', '2024-03-15 20:00:24', b'0', 1);
+INSERT INTO `system_user_role` VALUES (36, 118, 1, '1', '2024-03-17 09:12:08', '1', '2024-03-17 09:12:08', b'0', 1);
+INSERT INTO `system_user_role` VALUES (46, 117, 1, '1', '2024-10-02 10:16:11', '1', '2024-10-02 10:16:11', b'0', 1);
+INSERT INTO `system_user_role` VALUES (47, 104, 2, '1', '2025-01-04 10:40:33', '1', '2025-01-04 10:40:33', b'0', 1);
+INSERT INTO `system_user_role` VALUES (48, 100, 155, '1', '2025-04-04 10:41:14', '1', '2025-04-04 10:41:14', b'0', 1);
+INSERT INTO `system_user_role` VALUES (49, 142, 1, '1', '2025-07-23 09:11:42', '1', '2025-07-23 09:11:42', b'0', 1);
+INSERT INTO `system_user_role` VALUES (50, 142, 2, '1', '2025-10-07 20:50:37', '1', '2025-10-07 20:50:37', b'0', 1);
+INSERT INTO `system_user_role` VALUES (51, 139, 1, '1', '2025-12-05 22:36:57', '1', '2025-12-05 22:36:57', b'0', 1);
+INSERT INTO `system_user_role` VALUES (52, 139, 2, '1', '2025-12-05 22:37:00', '1', '2025-12-05 22:37:00', b'0', 1);
+INSERT INTO `system_user_role` VALUES (53, 114, 2, '1', '2026-01-04 18:15:40', '1', '2026-01-04 18:15:40', b'0', 1);
+INSERT INTO `system_user_role` VALUES (54, 114, 3, '1', '2026-01-04 18:16:19', '1', '2026-01-04 18:16:19', b'0', 1);
+INSERT INTO `system_user_role` VALUES (55, 228, 2, '1', '2026-07-07 10:50:55', '1', '2026-07-07 10:50:55', b'0', 0);
+INSERT INTO `system_user_role` VALUES (56, 229, 2, '1', '2026-07-07 11:25:03', '1', '2026-07-07 11:25:03', b'0', 0);
+
+-- ----------------------------
+-- Table structure for system_users
+-- ----------------------------
+DROP TABLE IF EXISTS `system_users`;
+CREATE TABLE `system_users`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鐢ㄦ埛ID',
+  `username` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛璐﹀彿',
+  `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '瀵嗙爜',
+  `nickname` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐢ㄦ埛鏄电О',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `dept_id` bigint NULL DEFAULT NULL COMMENT '閮ㄩ棬ID',
+  `post_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '宀椾綅缂栧彿鏁扮粍',
+  `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鐢ㄦ埛閭',
+  `mobile` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鎵嬫満鍙风爜',
+  `sex` tinyint NULL DEFAULT 0 COMMENT '鐢ㄦ埛鎬у埆',
+  `avatar` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '澶村儚鍦板潃',
+  `status` tinyint NOT NULL DEFAULT 0 COMMENT '甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+  `login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏈�鍚庣櫥褰旾P',
+  `login_date` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庣櫥褰曟椂闂�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_username`(`username` ASC) USING BTREE,
+  INDEX `idx_mobile`(`mobile` ASC) USING BTREE,
+  INDEX `idx_email`(`email` ASC) USING BTREE,
+  INDEX `idx_dept_id`(`dept_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 230 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '鐢ㄦ埛淇℃伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of system_users
+-- ----------------------------
+INSERT INTO `system_users` VALUES (1, 'admin', '$2a$04$.vd8nPeLwxt6hnSzmAoAyul8BOLX7Cib6QhcxRe30rfvrIPQHH1OG', '鑺嬮亾婧愮爜', '绠$悊鍛�', 103, '[1,2]', '13aoteman@126.com', '18818260272', 1, 'http://test.yudao.iocoder.cn/20260517/blob_1778998103688.png', 0, '192.168.1.41', '2026-07-09 17:08:24', 'admin', '2021-01-05 17:03:47', NULL, '2026-07-09 17:08:24', b'0', 1);
+INSERT INTO `system_users` VALUES (100, 'yudao', '$2a$04$.vd8nPeLwxt6hnSzmAoAyul8BOLX7Cib6QhcxRe30rfvrIPQHH1OG', '鑺嬮亾', '涓嶈鍚撴垜', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, NULL, 0, '127.0.0.1', '2026-06-17 09:37:17', '', '2021-01-07 09:07:17', NULL, '2026-06-17 09:37:17', b'0', 1);
+INSERT INTO `system_users` VALUES (103, 'yuanma', '$2a$04$k/d6mc0nySN0i2udwcI8Ee8V5aM5OHixBRbQfXmPuFTUl3Zf/DBs.', '婧愮爜', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, NULL, 0, '0:0:0:0:0:0:0:1', '2026-04-27 13:19:27', '', '2021-01-13 23:50:35', NULL, '2026-04-27 13:19:27', b'0', 1);
+INSERT INTO `system_users` VALUES (104, 'test', '$2a$04$BrwaYn303hjA/6TnXqdGoOLhyHOAA0bVrAFu6.1dJKycqKUnIoRz2', '娴嬭瘯鍙�', NULL, 107, '[1,2]', '111@qq.com', '15601691200', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2026-06-16 11:37:56', '', '2021-01-21 02:13:53', NULL, '2026-06-16 11:37:56', b'0', 1);
+INSERT INTO `system_users` VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '鑺嬭壙', NULL, NULL, NULL, '', '15601691300', 0, NULL, 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2025-04-21 14:23:08', b'0', 118);
+INSERT INTO `system_users` VALUES (108, 'admin108', '$2a$10$y6mfvKoNYL1GXWak8nYwVOH.kCWqjactkzdoIDgiKl93WN3Ejg.Lu', '鑺嬭壙', NULL, NULL, NULL, '', '15601691300', 0, NULL, 0, '', NULL, '1', '2022-02-20 23:00:50', '1', '2025-04-21 14:23:08', b'0', 119);
+INSERT INTO `system_users` VALUES (109, 'admin109', '$2a$10$JAqvH0tEc0I7dfDVBI7zyuB4E3j.uH6daIjV53.vUS6PknFkDJkuK', '鑺嬭壙', NULL, NULL, NULL, '', '15601691300', 0, NULL, 0, '', NULL, '1', '2022-02-20 23:11:50', '1', '2025-04-21 14:23:08', b'0', 120);
+INSERT INTO `system_users` VALUES (110, 'admin110', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '灏忕帇', NULL, NULL, NULL, '', '15601691300', 0, NULL, 0, '0:0:0:0:0:0:0:1', '2024-07-20 22:23:17', '1', '2022-02-22 00:56:14', NULL, '2025-04-21 14:23:08', b'0', 121);
+INSERT INTO `system_users` VALUES (111, 'test', '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KOoR2Wm', '娴嬭瘯鐢ㄦ埛', NULL, NULL, '[]', '', '', 0, NULL, 0, '0:0:0:0:0:0:0:1', '2023-12-30 11:42:17', '110', '2022-02-23 13:14:33', NULL, '2025-04-21 14:23:08', b'0', 121);
+INSERT INTO `system_users` VALUES (112, 'newobject', '$2a$04$dB0z8Q819fJWz0hbaLe6B.VfHCjYgWx6LFfET5lyz3JwcqlyCkQ4C', '鏂板璞�', NULL, 100, '[]', '', '15601691235', 1, NULL, 0, '127.0.0.1', '2026-06-17 09:07:20', '1', '2022-02-23 19:08:03', NULL, '2026-06-17 09:07:20', b'0', 1);
+INSERT INTO `system_users` VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '鑺嬮亾1', NULL, NULL, NULL, '', '15601691300', 0, NULL, 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', '1', '2025-05-05 15:30:53', b'0', 122);
+INSERT INTO `system_users` VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 灏忓濮�', NULL, NULL, '[5]', '', '15601691236', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2026-01-04 18:16:01', '1', '2022-03-19 21:50:58', NULL, '2026-01-04 18:16:01', b'0', 1);
+INSERT INTO `system_users` VALUES (115, 'aotemane', '$2a$04$GcyP0Vyzb2F2Yni5PuIK9ueGxM0tkZGMtDwVRwrNbtMvorzbpNsV2', '闃垮憜', '11222', 102, '[1,2]', '7648@qq.com', '15601691229', 2, NULL, 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2025-04-21 14:23:08', b'0', 1);
+INSERT INTO `system_users` VALUES (117, 'admin123', '$2a$04$sEtimsHu9YCkYY4/oqElHem2Ijc9ld20eYO6lN.g/21NfLUTDLB9W', '娴嬭瘯鍙�02', '1111', 100, '[2]', '', '15601691234', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2024-10-02 10:16:20', '1', '2022-07-09 17:40:26', '1', '2025-05-14 09:56:04', b'0', 1);
+INSERT INTO `system_users` VALUES (118, 'goudan', '$2a$04$3suGZjnA6rM5bErf38u1felbgqbsPHGdRG3l9NkxPCEt2ah9Y6aJi', '鐙楄泲', NULL, 103, '[1]', '', '15601691239', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2025-11-23 15:28:25', '1', '2022-07-09 17:44:43', NULL, '2025-11-23 15:28:25', b'0', 1);
+INSERT INTO `system_users` VALUES (139, 'wwbwwb', '$2a$04$FJLIyg8lbPytP29pbZaiU.LesJvCsYfEaHqQfB0pGQhK3e9BeZmLy', '灏忕澶�', '123', 108, '[2,4]', '', '', 1, NULL, 0, '0:0:0:0:0:0:0:1', '2024-09-10 21:03:58', NULL, '2024-09-10 21:03:58', '1', '2025-12-15 22:38:15', b'0', 1);
+INSERT INTO `system_users` VALUES (141, 'admin1', '$2a$04$oj6F6d7HrZ70kYVD3TNzEu.m3TPUzajOVuC66zdKna8KRerK1FmVa', '鏂扮敤鎴�', NULL, NULL, NULL, '', '', 0, '', 0, '127.0.0.1', '2026-06-17 09:37:18', '1', '2025-04-08 13:09:07', NULL, '2026-06-17 09:37:18', b'0', 1);
+INSERT INTO `system_users` VALUES (142, 'test01', '$2a$04$4bCYWZkjxxOC4QE0LY2M9uEEKWeJbLfs489NFtQoyidL5I0FndRaO', 'test01', '', NULL, '[]', '', '19021719925', 1, '', 0, '192.168.1.41', '2026-06-30 09:17:07', '1', '2025-07-09 21:07:10', NULL, '2026-06-30 09:17:07', b'0', 1);
+INSERT INTO `system_users` VALUES (143, 'a00001', '$2a$04$GhVHFviOw/SsTmiQtifHJesDYFlHMeGK7OWh7aGCCjGGVCmbHVAwa', 'a00001', NULL, 104, NULL, '', '', 0, '', 0, '0:0:0:0:0:0:0:1', '2025-12-01 16:10:13', NULL, '2025-12-01 16:10:13', '1', '2025-12-05 21:34:05', b'0', 1);
+INSERT INTO `system_users` VALUES (144, 'aoteman001', '$2a$04$omQOmhz8OyUFBKw77nr8KOtMp6xdvoQ1gWStjk9r8.OYT3Bv6oEYe', 'aoteman00112', NULL, 104, NULL, '', '', 0, '', 1, '0:0:0:0:0:0:0:1', '2025-12-01 17:05:27', '1', '2025-12-01 17:05:27', '1', '2026-06-15 18:58:56', b'0', 1);
+INSERT INTO `system_users` VALUES (225, '15822054762', '$2a$04$/TmyUyNSQcxVuibsTWzq5eQ1gOF/dR4JQqiLhB9fnDxl5CzFgOWJa', '鍗楃摐瀛�', NULL, 105, '[2]', '', '15822054762', 1, '', 0, '', NULL, '1', '2026-07-06 11:24:53', '1', '2026-07-06 11:24:53', b'0', 0);
+INSERT INTO `system_users` VALUES (226, '15822054763', '$2a$04$r9U5Gj4lru0S9dQpBEr8EuSO2Vbq4.IPPshebFpziuJCX4zL4xgie', '鍗冨厠', NULL, 103, '[2]', '', '15822054763', 1, '', 0, '', NULL, '1', '2026-07-06 11:26:35', '1', '2026-07-06 11:26:35', b'0', 0);
+INSERT INTO `system_users` VALUES (227, '15822054767', '$2a$04$GMv2f3ytXAa0O/HdJT3QheStUoExbM7JhZojUUjL0UJbhLcpd1wQa', '澶ф槑鏄�', NULL, 104, '[4]', '', '15822054767', 1, '', 0, '192.168.1.41', '2026-07-06 15:22:32', '1', '2026-07-06 15:15:38', NULL, '2026-07-06 15:22:32', b'0', 0);
+INSERT INTO `system_users` VALUES (228, '15822054766', '$2a$04$6N1MKra653uq5djtoC.Squ/vN4gFUfYSJErOyQaTJVWOB6i3jBxTq', '涓嶆兂涓婄彮', NULL, 106, '[4]', '', '15822054766', 1, '', 0, '', NULL, '1', '2026-07-07 10:50:55', '1', '2026-07-07 10:50:55', b'0', 0);
+INSERT INTO `system_users` VALUES (229, '15822054764', '$2a$04$hSDDsAETjbNDg5TfMtny1.N95HEBHxJqVaEDW2o7zmcSzod6vjRFu', '鏀惧亣', NULL, 106, '[4]', '', '15822054764', 1, '', 0, '', NULL, '1', '2026-07-07 11:25:03', '1', '2026-07-07 11:25:03', b'0', 0);
+
+-- ----------------------------
+-- Table structure for wms_check_order
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_check_order`;
+CREATE TABLE `wms_check_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鐩樺簱鍗曞彿',
+  `order_time` datetime NULL DEFAULT NULL COMMENT '鍗曟嵁鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鐩樺簱鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `total_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鐩堜簭鏁伴噺',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬婚噾棰�',
+  `actual_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹為檯閲戦',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鐩樺簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_check_order
+-- ----------------------------
+INSERT INTO `wms_check_order` VALUES (1, 'PK06260158', '2026-06-26 14:55:03', 4, NULL, 1, 0.000000, 0.000000, 0.000000, '1', '2026-06-26 14:55:16', '1', '2026-06-26 14:55:23', b'0');
+
+-- ----------------------------
+-- Table structure for wms_check_order_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_check_order_detail`;
+CREATE TABLE `wms_check_order_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鐩樺簱鍗曠紪鍙�',
+  `sku_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧 SKU 缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `inventory_id` bigint NULL DEFAULT NULL COMMENT '搴撳瓨缂栧彿',
+  `receipt_time` datetime NULL DEFAULT NULL COMMENT '鍏ュ簱鏃堕棿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '璐﹂潰鏁伴噺',
+  `check_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹炵洏鏁伴噺',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍗曚环',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鐩樺簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_check_order_detail
+-- ----------------------------
+INSERT INTO `wms_check_order_detail` VALUES (1, 1, 1, 1, NULL, NULL, 0.000000, 0.000000, 12.000000, '1', '2026-06-26 14:55:16', '1', '2026-06-26 14:55:16', b'0');
+
+-- ----------------------------
+-- Table structure for wms_inventory
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_inventory`;
+CREATE TABLE `wms_inventory`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `sku_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧 SKU 缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '搴撳瓨鏁伴噺',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 搴撳瓨' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_inventory
+-- ----------------------------
+INSERT INTO `wms_inventory` VALUES (1, 1, 1, 0.000000, NULL, '1', '2026-06-26 14:55:23', '1', '2026-06-26 14:55:23', b'0');
+
+-- ----------------------------
+-- Table structure for wms_inventory_history
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_inventory_history`;
+CREATE TABLE `wms_inventory_history`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `sku_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧 SKU 缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '搴撳瓨鍙樺寲鏁伴噺',
+  `before_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍙樺寲鍓嶅簱瀛樻暟閲�',
+  `after_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍙樺寲鍚庡簱瀛樻暟閲�',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍗曚环',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '搴撳瓨鍙樺寲閲戦',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鍗曟嵁缂栧彿',
+  `order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曟嵁鍙�',
+  `order_type` int NULL DEFAULT NULL COMMENT '鍗曟嵁绫诲瀷',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 搴撳瓨娴佹按' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_inventory_history
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_inventory_reserve
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_inventory_reserve`;
+CREATE TABLE `wms_inventory_reserve`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `reserve_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '棰勭暀鍗曞彿',
+  `biz_type` int NOT NULL COMMENT '涓氬姟绫诲瀷锛�10=閿�鍞鐣� 20=鐢熶骇棰勭暀锛�',
+  `biz_id` bigint NOT NULL COMMENT '涓氬姟鍗曟嵁ID',
+  `biz_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍗曟嵁鍙�',
+  `sku_id` bigint NOT NULL COMMENT 'SKU缂栧彿',
+  `warehouse_id` bigint NOT NULL COMMENT '浠撳簱缂栧彿',
+  `reserve_quantity` decimal(24, 6) NOT NULL COMMENT '棰勭暀鏁伴噺',
+  `used_quantity` decimal(24, 6) NULL DEFAULT 0.000000 COMMENT '宸蹭娇鐢ㄦ暟閲�',
+  `status` int NOT NULL DEFAULT 0 COMMENT '鐘舵�侊紙0=棰勭暀涓� 1=閮ㄥ垎浣跨敤 2=宸蹭娇鐢� 3=宸查噴鏀撅級',
+  `expire_time` datetime NULL DEFAULT NULL COMMENT '杩囨湡鏃堕棿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_reserve_no`(`reserve_no` ASC) USING BTREE,
+  INDEX `idx_biz`(`biz_type` ASC, `biz_id` ASC) USING BTREE,
+  INDEX `idx_sku_warehouse`(`sku_id` ASC, `warehouse_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '搴撳瓨棰勭暀琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_inventory_reserve
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_inventory_transaction
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_inventory_transaction`;
+CREATE TABLE `wms_inventory_transaction`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `transaction_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '浜嬪姟娴佹按鍙�',
+  `transaction_type` int NOT NULL COMMENT '浜嬪姟绫诲瀷锛�10=鍏ュ簱 20=鍑哄簱 30=棰勭暀 40=閲婃斁 50=鐩樼偣 60=璋冩嫧锛�',
+  `biz_type` int NOT NULL COMMENT '涓氬姟绫诲瀷',
+  `biz_id` bigint NOT NULL COMMENT '涓氬姟鍗曟嵁ID',
+  `biz_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍗曟嵁鍙�',
+  `sku_id` bigint NOT NULL COMMENT 'SKU缂栧彿',
+  `warehouse_id` bigint NOT NULL COMMENT '浠撳簱缂栧彿',
+  `quantity` decimal(24, 6) NOT NULL COMMENT '鍙樺姩鏁伴噺锛堟鏁板叆搴擄紝璐熸暟鍑哄簱锛�',
+  `before_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍙樺姩鍓嶆暟閲�',
+  `after_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍙樺姩鍚庢暟閲�',
+  `reserve_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈棰勭暀ID',
+  `reserve_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍏宠仈棰勭暀鍗曞彿',
+  `transaction_time` datetime NOT NULL COMMENT '浜嬪姟鏃堕棿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_transaction_no`(`transaction_no` ASC) USING BTREE,
+  INDEX `idx_biz`(`biz_type` ASC, `biz_id` ASC) USING BTREE,
+  INDEX `idx_sku`(`sku_id` ASC) USING BTREE,
+  INDEX `idx_transaction_time`(`transaction_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '搴撳瓨浜嬪姟娴佹按琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_inventory_transaction
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_item
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_item`;
+CREATE TABLE `wms_item`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍟嗗搧缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍟嗗搧鍚嶇О',
+  `unit` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍗曚綅',
+  `category_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧鍒嗙被缂栧彿',
+  `brand_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧鍝佺墝缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍟嗗搧' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_item
+-- ----------------------------
+INSERT INTO `wms_item` VALUES (1, '1213', '121', '12312321', 1, 1, NULL, '1', '2026-06-26 14:54:22', '1', '2026-06-26 14:54:22', b'0');
+
+-- ----------------------------
+-- Table structure for wms_item_brand
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_item_brand`;
+CREATE TABLE `wms_item_brand`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍝佺墝缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍝佺墝鍚嶇О',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍟嗗搧鍝佺墝' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_item_brand
+-- ----------------------------
+INSERT INTO `wms_item_brand` VALUES (1, '001', '001', '1', '2026-06-26 14:53:07', '1', '2026-06-26 14:53:07', b'0');
+
+-- ----------------------------
+-- Table structure for wms_item_category
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_item_category`;
+CREATE TABLE `wms_item_category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖剁骇缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍒嗙被缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍒嗙被鍚嶇О',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑簭',
+  `status` int NULL DEFAULT NULL COMMENT '鐘舵��',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍟嗗搧鍒嗙被' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_item_category
+-- ----------------------------
+INSERT INTO `wms_item_category` VALUES (1, 0, '001', '001', 1, 0, '1', '2026-06-26 14:52:58', '1', '2026-06-26 14:52:58', b'0');
+
+-- ----------------------------
+-- Table structure for wms_item_sku
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_item_sku`;
+CREATE TABLE `wms_item_sku`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勬牸鍚嶇О',
+  `item_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧缂栧彿',
+  `bar_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鏉$爜',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '瑙勬牸缂栧彿',
+  `length` decimal(24, 6) NULL DEFAULT NULL COMMENT '闀匡紝鍗曚綅 cm',
+  `width` decimal(24, 6) NULL DEFAULT NULL COMMENT '瀹斤紝鍗曚綅 cm',
+  `height` decimal(24, 6) NULL DEFAULT NULL COMMENT '楂橈紝鍗曚綅 cm',
+  `gross_weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '姣涢噸锛屽崟浣� kg',
+  `net_weight` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍑�閲嶏紝鍗曚綅 kg',
+  `cost_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎴愭湰浠凤紝鍗曚綅鍏�',
+  `selling_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '閿�鍞环锛屽崟浣嶅厓',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍟嗗搧 SKU' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_item_sku
+-- ----------------------------
+INSERT INTO `wms_item_sku` VALUES (1, '12', 1, '2121', '1', 21.000000, NULL, 212.000000, 12.000000, 12.000000, 12.000000, 12.000000, '1', '2026-06-26 14:54:22', '1', '2026-06-26 14:54:22', b'0');
+
+-- ----------------------------
+-- Table structure for wms_merchant
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_merchant`;
+CREATE TABLE `wms_merchant`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寰�鏉ヤ紒涓氱紪鍙�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寰�鏉ヤ紒涓氬悕绉�',
+  `type` int NULL DEFAULT NULL COMMENT '寰�鏉ヤ紒涓氱被鍨�',
+  `level` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绾у埆',
+  `bank_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '寮�鎴疯',
+  `bank_account` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '閾惰璐︽埛',
+  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍦板潃',
+  `mobile` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙�',
+  `telephone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '搴ф満鍙�',
+  `contact` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鑱旂郴浜�',
+  `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'Email',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 寰�鏉ヤ紒涓�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_merchant
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_movement_order
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_movement_order`;
+CREATE TABLE `wms_movement_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '绉诲簱鍗曞彿',
+  `order_time` datetime NULL DEFAULT NULL COMMENT '鍗曟嵁鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '绉诲簱鐘舵��',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `source_warehouse_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮浠撳簱缂栧彿',
+  `target_warehouse_id` bigint NULL DEFAULT NULL COMMENT '鐩爣浠撳簱缂栧彿',
+  `total_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬绘暟閲�',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬婚噾棰�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 绉诲簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_movement_order
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_movement_order_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_movement_order_detail`;
+CREATE TABLE `wms_movement_order_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '绉诲簱鍗曠紪鍙�',
+  `sku_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧 SKU 缂栧彿',
+  `source_warehouse_id` bigint NULL DEFAULT NULL COMMENT '鏉ユ簮浠撳簱缂栧彿',
+  `target_warehouse_id` bigint NULL DEFAULT NULL COMMENT '鐩爣浠撳簱缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '绉诲簱鏁伴噺',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍗曚环',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '琛岄噾棰�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 绉诲簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_movement_order_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_receipt_order
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_receipt_order`;
+CREATE TABLE `wms_receipt_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍏ュ簱鍗曞彿',
+  `type` int NULL DEFAULT NULL COMMENT '鍏ュ簱绫诲瀷',
+  `order_time` datetime NULL DEFAULT NULL COMMENT '鍗曟嵁鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鍏ュ簱鐘舵��',
+  `biz_order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟璁㈠崟鍙�',
+  `merchant_id` bigint NULL DEFAULT NULL COMMENT '渚涘簲鍟嗙紪鍙�',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `total_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬绘暟閲�',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬婚噾棰�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍏ュ簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_receipt_order
+-- ----------------------------
+INSERT INTO `wms_receipt_order` VALUES (1, 'RK06266889', 100, '2026-06-26 14:54:30', 0, NULL, NULL, NULL, 1, 12.000000, 144.000000, '1', '2026-06-26 14:54:40', '1', '2026-06-26 14:54:40', b'0');
+
+-- ----------------------------
+-- Table structure for wms_receipt_order_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_receipt_order_detail`;
+CREATE TABLE `wms_receipt_order_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鍏ュ簱鍗曠紪鍙�',
+  `sku_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧 SKU 缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍏ュ簱鏁伴噺',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍗曚环',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '琛岄噾棰�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍏ュ簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_receipt_order_detail
+-- ----------------------------
+INSERT INTO `wms_receipt_order_detail` VALUES (1, 1, 1, 1, 12.000000, 12.000000, 144.000000, '1', '2026-06-26 14:54:40', '1', '2026-06-26 14:54:40', b'0');
+
+-- ----------------------------
+-- Table structure for wms_shipment_order
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_shipment_order`;
+CREATE TABLE `wms_shipment_order`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍑哄簱鍗曞彿',
+  `type` int NULL DEFAULT NULL COMMENT '鍑哄簱绫诲瀷',
+  `order_time` datetime NULL DEFAULT NULL COMMENT '鍗曟嵁鏃ユ湡',
+  `status` int NULL DEFAULT NULL COMMENT '鍑哄簱鐘舵��',
+  `biz_order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟璁㈠崟鍙�',
+  `merchant_id` bigint NULL DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `total_quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬绘暟閲�',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鎬婚噾棰�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍑哄簱鍗�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_shipment_order
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_shipment_order_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_shipment_order_detail`;
+CREATE TABLE `wms_shipment_order_detail`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `order_id` bigint NULL DEFAULT NULL COMMENT '鍑哄簱鍗曠紪鍙�',
+  `sku_id` bigint NULL DEFAULT NULL COMMENT '鍟嗗搧 SKU 缂栧彿',
+  `warehouse_id` bigint NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `quantity` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍑哄簱鏁伴噺',
+  `price` decimal(24, 6) NULL DEFAULT NULL COMMENT '鍗曚环',
+  `total_price` decimal(24, 6) NULL DEFAULT NULL COMMENT '琛岄噾棰�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 鍑哄簱鍗曟槑缁�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_shipment_order_detail
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_stock
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_stock`;
+CREATE TABLE `wms_stock`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '搴撳瓨ID',
+  `item_id` bigint NOT NULL COMMENT '鐗╂枡ID锛堝叧鑱� mdm_item锛�',
+  `warehouse_id` bigint NOT NULL COMMENT '浠撳簱ID锛堝叧鑱� mdm_warehouse锛�',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅ID',
+  `batch_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `quantity` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '褰撳墠搴撳瓨鏁伴噺',
+  `quantity_locked` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '閿佸畾鏁伴噺',
+  `quantity_available` decimal(24, 6) NOT NULL DEFAULT 0.000000 COMMENT '鍙敤鏁伴噺 = quantity - quantity_locked',
+  `unit_measure_id` bigint NOT NULL COMMENT '璁¢噺鍗曚綅ID',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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 INDEX `uk_item_warehouse_batch`(`item_id` ASC, `warehouse_id` ASC, `batch_code` ASC) USING BTREE,
+  INDEX `idx_item_id`(`item_id` ASC) USING BTREE,
+  INDEX `idx_warehouse_id`(`warehouse_id` ASC) USING BTREE,
+  INDEX `idx_batch_code`(`batch_code` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '搴撳瓨琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_stock
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_stock_transaction
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_stock_transaction`;
+CREATE TABLE `wms_stock_transaction`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '娴佹按ID',
+  `item_id` bigint NOT NULL COMMENT '鐗╂枡ID',
+  `warehouse_id` bigint NOT NULL COMMENT '浠撳簱ID',
+  `location_id` bigint NULL DEFAULT NULL COMMENT '搴撲綅ID',
+  `batch_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鎵规鍙�',
+  `quantity` decimal(24, 6) NOT NULL COMMENT '鍙樺姩鏁伴噺(姝f暟鍏ュ簱,璐熸暟鍑哄簱)',
+  `biz_type` tinyint NOT NULL COMMENT '涓氬姟绫诲瀷(瑙佹灇涓�)',
+  `biz_id` bigint NULL DEFAULT NULL COMMENT '涓氬姟鍗曟嵁ID',
+  `biz_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '涓氬姟鍗曟嵁鍙�',
+  `stock_id` bigint NULL DEFAULT NULL COMMENT '鍏宠仈搴撳瓨璁板綍ID',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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,
+  INDEX `idx_item_id`(`item_id` ASC) USING BTREE,
+  INDEX `idx_warehouse_id`(`warehouse_id` ASC) USING BTREE,
+  INDEX `idx_biz_type`(`biz_type` ASC) USING BTREE,
+  INDEX `idx_biz_id`(`biz_id` ASC) USING BTREE,
+  INDEX `idx_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '搴撳瓨浜嬪姟娴佹按琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_stock_transaction
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for wms_warehouse
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_warehouse`;
+CREATE TABLE `wms_warehouse`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '浠撳簱缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑簭',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL 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
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'WMS 浠撳簱' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_warehouse
+-- ----------------------------
+INSERT INTO `wms_warehouse` VALUES (1, '001', '浠撳簱1', NULL, 1, '1', '2026-06-26 14:52:44', '1', '2026-06-26 14:52:44', b'0');
+
+-- ----------------------------
+-- Table structure for wms_warehouse_approval_config
+-- ----------------------------
+DROP TABLE IF EXISTS `wms_warehouse_approval_config`;
+CREATE TABLE `wms_warehouse_approval_config`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭ID',
+  `warehouse_id` bigint NOT NULL COMMENT '浠撳簱ID',
+  `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '涓氬姟绫诲瀷(INBOUND-鍏ュ簱/OUTBOUND-鍑哄簱/TRANSFER-璋冩嫧/CHECK-鐩樼偣)',
+  `approval_enabled` tinyint(1) NULL DEFAULT 0 COMMENT '鏄惁鍚敤瀹℃壒(0-鍚� 1-鏄�)',
+  `process_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '娴佺▼瀹氫箟Key(涓虹┖鍒欎娇鐢ㄥ垎绫婚粯璁�)',
+  `category_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'wms_approve' COMMENT 'BPM鍒嗙被缂栫爜',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx_warehouse_biz`(`warehouse_id` ASC, `biz_type` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '浠撳簱瀹℃壒閰嶇疆琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of wms_warehouse_approval_config
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for yudao_demo01_contact
+-- ----------------------------
+DROP TABLE IF EXISTS `yudao_demo01_contact`;
+CREATE TABLE `yudao_demo01_contact`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍚嶅瓧',
+  `sex` tinyint(1) NOT NULL COMMENT '鎬у埆',
+  `birthday` datetime NOT NULL COMMENT '鍑虹敓骞�',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绠�浠�',
+  `avatar` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '澶村儚',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绀轰緥鑱旂郴浜鸿〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of yudao_demo01_contact
+-- ----------------------------
+INSERT INTO `yudao_demo01_contact` VALUES (1, '鍦熻眴', 2, '2023-11-07 00:00:00', '<p>澶╄殨鍦熻眴锛佸憖</p>', 'http://127.0.0.1:48080/admin-api/infra/file/4/get/46f8fa1a37db3f3960d8910ff2fe3962ab3b2db87cf2f8ccb4dc8145b8bdf237.jpeg', '1', '2023-11-15 23:34:30', '1', '2023-11-15 23:47:39', b'0', 1);
+
+-- ----------------------------
+-- Table structure for yudao_demo02_category
+-- ----------------------------
+DROP TABLE IF EXISTS `yudao_demo02_category`;
+CREATE TABLE `yudao_demo02_category`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍚嶅瓧',
+  `parent_id` bigint NOT NULL COMMENT '鐖剁骇缂栧彿',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '绀轰緥鍒嗙被琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of yudao_demo02_category
+-- ----------------------------
+INSERT INTO `yudao_demo02_category` VALUES (1, '鍦熻眴', 0, '1', '2023-11-15 23:34:30', '1', '2023-11-16 20:24:23', b'0', 1);
+INSERT INTO `yudao_demo02_category` VALUES (2, '鐣寗', 0, '1', '2023-11-16 20:24:00', '1', '2023-11-16 20:24:15', b'0', 1);
+INSERT INTO `yudao_demo02_category` VALUES (3, '鎬��', 0, '1', '2023-11-16 20:24:32', '1', '2023-11-16 20:24:32', b'0', 1);
+INSERT INTO `yudao_demo02_category` VALUES (4, '灏忕暘鑼�', 2, '1', '2023-11-16 20:24:39', '1', '2023-11-16 20:24:39', b'0', 1);
+INSERT INTO `yudao_demo02_category` VALUES (5, '澶х暘鑼�', 2, '1', '2023-11-16 20:24:46', '1', '2023-11-16 20:24:46', b'0', 1);
+INSERT INTO `yudao_demo02_category` VALUES (6, '11', 3, '1', '2023-11-24 19:29:34', '1', '2023-11-24 19:29:34', b'0', 1);
+INSERT INTO `yudao_demo02_category` VALUES (7, '1', 0, '1', '2025-10-01 09:19:20', '1', '2025-10-01 09:19:20', b'0', 1);
+
+-- ----------------------------
+-- Table structure for yudao_demo03_course
+-- ----------------------------
+DROP TABLE IF EXISTS `yudao_demo03_course`;
+CREATE TABLE `yudao_demo03_course`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `student_id` bigint NOT NULL COMMENT '瀛︾敓缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍚嶅瓧',
+  `score` tinyint NOT NULL COMMENT '鍒嗘暟',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀛︾敓璇剧▼琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of yudao_demo03_course
+-- ----------------------------
+INSERT INTO `yudao_demo03_course` VALUES (2, 2, '璇枃', 66, '1', '2023-11-16 23:21:49', '1', '2024-09-17 10:55:30', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (3, 2, '鏁板', 22, '1', '2023-11-16 23:21:49', '1', '2024-09-17 10:55:30', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (6, 5, '浣撹偛', 23, '1', '2023-11-16 23:22:46', '1', '2023-11-16 15:44:40', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (7, 5, '璁$畻鏈�', 11, '1', '2023-11-16 23:22:46', '1', '2023-11-16 15:44:40', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (8, 5, '浣撹偛', 23, '1', '2023-11-16 23:22:46', '1', '2023-11-16 15:47:09', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (9, 5, '璁$畻鏈�', 11, '1', '2023-11-16 23:22:46', '1', '2023-11-16 15:47:09', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (10, 5, '浣撹偛', 23, '1', '2023-11-16 23:22:46', '1', '2024-09-17 10:55:28', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (11, 5, '璁$畻鏈�', 11, '1', '2023-11-16 23:22:46', '1', '2024-09-17 10:55:28', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (12, 2, '鐢佃剳', 33, '1', '2023-11-17 00:20:42', '1', '2023-11-16 16:20:45', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (13, 9, '婊戦洩', 12, '1', '2023-11-17 13:13:20', '1', '2024-09-17 10:55:26', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (14, 9, '婊戦洩', 12, '1', '2023-11-17 13:13:20', '1', '2024-09-17 10:55:49', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (15, 5, '浣撹偛', 23, '1', '2023-11-16 23:22:46', '1', '2024-09-17 18:55:29', b'0', 1);
+INSERT INTO `yudao_demo03_course` VALUES (16, 5, '璁$畻鏈�', 11, '1', '2023-11-16 23:22:46', '1', '2024-09-17 18:55:29', b'0', 1);
+INSERT INTO `yudao_demo03_course` VALUES (17, 2, '璇枃', 66, '1', '2023-11-16 23:21:49', '1', '2024-09-17 18:55:31', b'0', 1);
+INSERT INTO `yudao_demo03_course` VALUES (18, 2, '鏁板', 22, '1', '2023-11-16 23:21:49', '1', '2024-09-17 18:55:31', b'0', 1);
+INSERT INTO `yudao_demo03_course` VALUES (19, 9, '婊戦洩', 12, '1', '2023-11-17 13:13:20', '1', '2025-04-19 02:49:03', b'1', 1);
+INSERT INTO `yudao_demo03_course` VALUES (20, 9, '婊戦洩', 12, '1', '2023-11-17 13:13:20', '1', '2025-04-19 10:49:04', b'0', 1);
+
+-- ----------------------------
+-- Table structure for yudao_demo03_grade
+-- ----------------------------
+DROP TABLE IF EXISTS `yudao_demo03_grade`;
+CREATE TABLE `yudao_demo03_grade`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `student_id` bigint NOT NULL COMMENT '瀛︾敓缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍚嶅瓧',
+  `teacher` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鐝富浠�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀛︾敓鐝骇琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of yudao_demo03_grade
+-- ----------------------------
+INSERT INTO `yudao_demo03_grade` VALUES (7, 2, '涓夊勾 2 鐝�', '鍛ㄦ澃浼�', '1', '2023-11-16 23:21:49', '1', '2024-09-17 18:55:31', b'0', 1);
+INSERT INTO `yudao_demo03_grade` VALUES (8, 5, '鍗庝负', '閬ラ仴棰嗗厛', '1', '2023-11-16 23:22:46', '1', '2024-09-17 18:55:29', b'0', 1);
+INSERT INTO `yudao_demo03_grade` VALUES (9, 9, '灏忓浘', '灏忓▋111', '1', '2023-11-17 13:10:23', '1', '2025-04-19 10:49:04', b'0', 1);
+
+-- ----------------------------
+-- Table structure for yudao_demo03_student
+-- ----------------------------
+DROP TABLE IF EXISTS `yudao_demo03_student`;
+CREATE TABLE `yudao_demo03_student`  (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '鍚嶅瓧',
+  `sex` tinyint NOT NULL COMMENT '鎬у埆',
+  `birthday` datetime NOT NULL COMMENT '鍑虹敓鏃ユ湡',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '绠�浠�',
+  `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鍒涘缓鑰�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '鏇存柊鑰�',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '绉熸埛缂栧彿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '瀛︾敓琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of yudao_demo03_student
+-- ----------------------------
+INSERT INTO `yudao_demo03_student` VALUES (2, '灏忕櫧', 1, '2023-11-16 00:00:00', '<p>鍘夊</p>', '1', '2023-11-16 23:21:49', '1', '2024-09-17 18:55:31', b'0', 1);
+INSERT INTO `yudao_demo03_student` VALUES (5, '澶ч粦', 2, '2023-11-13 00:00:00', '<p>浣犲湪鏁欐垜鍋氫簨?</p>', '1', '2023-11-16 23:22:46', '1', '2024-09-17 18:55:29', b'0', 1);
+INSERT INTO `yudao_demo03_student` VALUES (9, '灏忚姳', 1, '2023-11-07 00:00:00', '<p>鍝堝搱鍝�</p>', '1', '2023-11-17 00:04:47', '1', '2025-04-19 10:49:04', b'0', 1);
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/docs/purchase_receipt_integration.md b/docs/purchase_receipt_integration.md
new file mode 100644
index 0000000..c883c1b
--- /dev/null
+++ b/docs/purchase_receipt_integration.md
@@ -0,0 +1,244 @@
+# 閲囪喘鍏ュ簱娴佺▼浼樺寲 - 鍓嶇鑱旇皟鏂规
+
+## 涓氬姟娴佺▼姒傝堪
+
+浼樺寲鍚庣殑閲囪喘鍏ュ簱娴佺▼锛�
+
+```
+ERP閲囪喘璁㈠崟 -> MES鍒拌揣閫氱煡 -> MES閲囪喘鍏ュ簱 -> BPM瀹℃壒 -> 鍏ュ簱鎴愬姛
+```
+
+鏍稿績鏀硅繘锛�**姣忎竴姝ヨ嚜鍔ㄥ甫鍏ヤ笂娓告暟鎹紝鐗╂枡缁熶竴浣跨敤MDM妯″潡鏁版嵁锛屽噺灏戞墜鍔ㄨ緭鍏�**銆�
+
+---
+
+## 娑夊強椤甸潰
+
+- 鍒拌揣閫氱煡鍒楄〃椤碉紙`/mes/wm/arrival-notice`锛�
+- 鍒拌揣閫氱煡鏂板/缂栬緫寮圭獥
+- 閲囪喘鍏ュ簱鍒楄〃椤碉紙`/mes/wm/item-receipt`锛�
+- 閲囪喘鍏ュ簱鏂板/缂栬緫寮圭獥
+- 閲囪喘璁㈠崟閫夋嫨鍣ㄥ脊绐楋紙鏂板缁勪欢锛�
+- 鍒拌揣閫氱煡閫夋嫨鍣ㄥ脊绐楋紙鏂板缁勪欢锛�
+
+---
+
+## 鏁版嵁甯﹀叆瑙勫垯
+
+### 1. 閲囪喘璁㈠崟 -> 鍒拌揣閫氱煡
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 鑷姩甯﹀叆 | 璇存槑 |
+|----------|----------|----------|------|
+| 渚涘簲鍟� | 閲囪喘璁㈠崟.supplierId | 鉁� | 鑷姩濉厖锛屼笉鍙慨鏀� |
+| 閲囪喘璁㈠崟缂栫爜 | 閲囪喘璁㈠崟.no | 鉁� | 鏄剧ず鐢紝涓嶅彲淇敼 |
+| 閲囪喘璁㈠崟ID | 閲囪喘璁㈠崟.id | 鉁� | 鍏宠仈瀛楁 |
+
+### 2. 閲囪喘璁㈠崟琛� -> 鍒拌揣閫氱煡琛�
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 鑷姩甯﹀叆 | 璇存槑 |
+|----------|----------|----------|------|
+| 閲囪喘璁㈠崟琛孖D | 閲囪喘璁㈠崟琛�.id | 鉁� | 鍏宠仈瀛楁锛岀敤浜庤拷婧� |
+| 鐗╂枡缂栫爜 | ERP浜у搧缂栫爜鏄犲皠MDM鐗╂枡 | 鈿狅笍 | 闇�鐢ㄦ埛閫夋嫨鏄犲皠鍏崇郴 |
+| 鍒拌揣鏁伴噺 | 璁㈣喘鏁伴噺 - 宸插叆搴撴暟閲� | 鉁� | 鍙慨鏀� |
+| 鏄惁闇�妫�楠� | 榛樿false | 鉁� | 鍙慨鏀� |
+
+### 3. 鍒拌揣閫氱煡 -> 閲囪喘鍏ュ簱
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 鑷姩甯﹀叆 | 璇存槑 |
+|----------|----------|----------|------|
+| 渚涘簲鍟� | 鍒拌揣閫氱煡.vendorId | 鉁� | 鑷姩濉厖锛屼笉鍙慨鏀� |
+| 鍒拌揣閫氱煡缂栫爜 | 鍒拌揣閫氱煡.code | 鉁� | 鏄剧ず鐢� |
+| 閲囪喘璁㈠崟缂栫爜 | 鍒拌揣閫氱煡.purchaseOrderCode | 鉁� | 鏄剧ず鐢� |
+
+### 4. 鍒拌揣閫氱煡琛� -> 閲囪喘鍏ュ簱琛�
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 鑷姩甯﹀叆 | 璇存槑 |
+|----------|----------|----------|------|
+| 鐗╂枡ID | 鍒拌揣閫氱煡琛�.itemId | 鉁� | 涓嶅彲淇敼 |
+| 鍒拌揣閫氱煡琛孖D | 鍒拌揣閫氱煡琛�.id | 鉁� | 鍏宠仈瀛楁 |
+| 閲囪喘璁㈠崟琛孖D | 鍒拌揣閫氱煡琛�.purchaseOrderItemId | 鉁� | 鍏宠仈瀛楁 |
+| 鍏ュ簱鏁伴噺 | 鍒拌揣閫氱煡琛�.qualifiedQuantity | 鉁� | 鍙慨鏀� |
+| 鎵规淇℃伅 | 鑷姩鐢熸垚 | 鉁� | 鏍规嵁鎵规瑙勫垯 |
+
+---
+
+## 鏂板 API 鎺ュ彛
+
+### 鍒拌揣閫氱煡妯″潡
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | `/mes/wm/arrival-notice/generate-from-purchase-order?purchaseOrderId={id}` | 鏍规嵁閲囪喘璁㈠崟鐢熸垚鍒拌揣閫氱煡鍗� |
+
+**璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| purchaseOrderId | Long | 鏄� | ERP閲囪喘璁㈠崟缂栧彿 |
+
+**鍝嶅簲锛�** `{ "code": 200, "data": 123, "msg": "鎿嶄綔鎴愬姛" }` 锛坉ata涓虹敓鎴愮殑鍒拌揣閫氱煡鍗曠紪鍙凤級
+
+### 閲囪喘鍏ュ簱妯″潡
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | `/mes/wm/item-receipt/generate-from-arrival-notice?arrivalNoticeId={id}` | 鏍规嵁鍒拌揣閫氱煡鍗曠敓鎴愰噰璐叆搴撳崟 |
+| PUT | `/mes/wm/item-receipt/submit-approval?id={id}&processDefinitionKey={key}` | 鎻愪氦閲囪喘鍏ュ簱鍗曞鎵� |
+
+**璇锋眰鍙傛暟锛坓enerate-from-arrival-notice锛夛細**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| arrivalNoticeId | Long | 鏄� | 鍒拌揣閫氱煡鍗曠紪鍙� |
+
+**璇锋眰鍙傛暟锛坰ubmit-approval锛夛細**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| id | Long | 鏄� | 閲囪喘鍏ュ簱鍗曠紪鍙� |
+| processDefinitionKey | String | 鏄� | BPM娴佺▼瀹氫箟Key |
+
+---
+
+## 鍓嶇瀹炵幇瑕佺偣
+
+### 1. 鍒拌揣閫氱煡椤甸潰鏀归��
+
+#### 1.1 鏂板"浠庨噰璐鍗曠敓鎴�"鎸夐挳
+
+```html
+<el-button type="primary" @click="handleGenerateFromPO">
+  浠庨噰璐鍗曠敓鎴�
+</el-button>
+```
+
+#### 1.2 閲囪喘璁㈠崟閫夋嫨鍣ㄥ脊绐�
+
+- 璋冪敤 ERP 鎺ュ彛鑾峰彇宸插鏍哥姸鎬佺殑閲囪喘璁㈠崟鍒楄〃
+- 鏄剧ず瀛楁锛氳鍗曞彿銆佷緵搴斿晢鍚嶇О銆佽鍗曟棩鏈熴�佹�婚噾棰�
+- 閫夋嫨鍚庤皟鐢� `/mes/wm/arrival-notice/generate-from-purchase-order` 鎺ュ彛
+
+#### 1.3 鏁版嵁鑾峰彇鏃舵満
+
+```
+鐢ㄦ埛鐐瑰嚮"浠庨噰璐鍗曠敓鎴�" 
+  -> 寮瑰嚭閲囪喘璁㈠崟閫夋嫨鍣� 
+  -> 閫夋嫨璁㈠崟 
+  -> 璋冪敤 generate-from-purchase-order API 
+  -> 璺宠浆鍒板埌璐ч�氱煡缂栬緫椤碉紙ID涓鸿繑鍥炲�硷級
+  -> 鏄剧ず宸插甫鍏ョ殑鏁版嵁
+```
+
+#### 1.4 瀛楁鏄剧ず瑙勫垯
+
+- 鑷姩甯﹀叆鐨勫瓧娈垫樉绀轰负**绂佺敤鐘舵��**锛堢伆鑹茶儗鏅級
+- 鐗╂枡閫夋嫨鍣ㄤ粛淇濈暀锛屽厑璁哥敤鎴疯ˉ鍏呯墿鏂欐槧灏勫叧绯�
+
+### 2. 閲囪喘鍏ュ簱椤甸潰鏀归��
+
+#### 2.1 鏂板"浠庡埌璐ч�氱煡鐢熸垚"鎸夐挳
+
+```html
+<el-button type="primary" @click="handleGenerateFromAN">
+  浠庡埌璐ч�氱煡鐢熸垚
+</el-button>
+```
+
+#### 2.2 鍒拌揣閫氱煡閫夋嫨鍣ㄥ脊绐�
+
+- 璋冪敤 MES 鎺ュ彛鑾峰彇鐘舵�佷负"寰呭叆搴�"鐨勫埌璐ч�氱煡鍗曞垪琛�
+- 鏄剧ず瀛楁锛氶�氱煡鍗曞彿銆佷緵搴斿晢鍚嶇О銆佸埌璐ф棩鏈熴�佺姸鎬�
+- 閫夋嫨鍚庤皟鐢� `/mes/wm/item-receipt/generate-from-arrival-notice` 鎺ュ彛
+
+#### 2.3 鏁版嵁鑾峰彇鏃舵満
+
+```
+鐢ㄦ埛鐐瑰嚮"浠庡埌璐ч�氱煡鐢熸垚" 
+  -> 寮瑰嚭鍒拌揣閫氱煡閫夋嫨鍣� 
+  -> 閫夋嫨閫氱煡鍗� 
+  -> 璋冪敤 generate-from-arrival-notice API 
+  -> 璺宠浆鍒伴噰璐叆搴撶紪杈戦〉锛圛D涓鸿繑鍥炲�硷級
+  -> 鏄剧ず宸插甫鍏ョ殑鏁版嵁
+```
+
+#### 2.4 BPM瀹℃壒娴佺▼
+
+- 鐘舵�佷负"鑽夌"鏃舵樉绀�"鎻愪氦瀹℃壒"鎸夐挳
+- 鐐瑰嚮鍚庡脊鍑烘祦绋嬮�夋嫨鍣紙澶嶇敤鐜版湁BPM娴佺▼閫夋嫨缁勪欢锛�
+- 閫夋嫨娴佺▼鍚庤皟鐢� `submit-approval` API
+- 鐘舵�佸彉涓�"瀹℃壒涓�"锛岀姝㈢紪杈�
+
+### 3. 鐘舵�佹祦杞浘
+
+#### 鍒拌揣閫氱煡鐘舵��
+
+```
+鑽夌(0) --鎻愪氦--> 寰呰川妫�(2) --IQC瀹屾垚--> 寰呭叆搴�(3) --鍏ュ簱瀹屾垚--> 宸插畬鎴�(4)
+              \
+               -> 寰呭叆搴�(3) [鏃犻渶妫�楠宂
+```
+
+#### 閲囪喘鍏ュ簱鐘舵�侊紙鏂板BPM瀹℃壒锛�
+
+```
+鑽夌(0) --鎻愪氦瀹℃壒--> 瀹℃壒涓�(2) --瀹℃壒閫氳繃--> 寰呬笂鏋�(3) --涓婃灦--> 寰呭叆搴�(4) --鍏ュ簱--> 宸插畬鎴�(5)
+                        \
+                         -> 瀹℃壒鎷掔粷 -> 鑽夌(0) [鍙噸鏂版彁浜
+```
+
+---
+
+## 娉ㄦ剰浜嬮」
+
+### 鏁版嵁甯﹀叆寮鸿皟
+
+1. **鐗╂枡淇℃伅蹇呴』浠嶮DM妯″潡鑾峰彇**锛屼笉鍏佽鎵嬪姩杈撳叆鐗╂枡缂栫爜/鍚嶇О
+2. **閲囪喘璁㈠崟琛屽叧鑱�**锛氬埌璐ч�氱煡琛屽繀椤诲叧鑱旈噰璐鍗曡锛岀‘淇濇暟鎹彲杩芥函
+3. **鍏ュ簱鏁伴噺鏍¢獙**锛氬叆搴撴暟閲忎笉鑳借秴杩囧埌璐ч�氱煡琛岀殑鍚堟牸鏁伴噺
+
+### 鍓嶇鏍¢獙瑙勫垯
+
+1. 浠庨噰璐鍗曠敓鎴愬埌璐ч�氱煡鏃讹紝鏍¢獙閲囪喘璁㈠崟鐘舵�佸繀椤讳负"宸插鏍�"
+2. 浠庡埌璐ч�氱煡鐢熸垚閲囪喘鍏ュ簱鏃讹紝鏍¢獙鍒拌揣閫氱煡鐘舵�佸繀椤讳负"寰呭叆搴�"
+3. 鎻愪氦瀹℃壒鏃讹紝鏍¢獙鍏ュ簱鍗曠姸鎬佸繀椤讳负"鑽夌"锛屼笖鑷冲皯鏈変竴鏉″叆搴撹
+
+### 閿欒澶勭悊
+
+| 閿欒鐮� | 璇存槑 | 鍓嶇鎻愮ず |
+|--------|------|----------|
+| 1040705007 | 閲囪喘璁㈠崟涓嶅瓨鍦� | "鎵�閫夐噰璐鍗曚笉瀛樺湪锛岃鍒锋柊鍚庨噸璇�" |
+| 1040705008 | 閲囪喘璁㈠崟鏃犳槑缁嗘暟鎹� | "璇ラ噰璐鍗曟病鏈夋槑缁嗘暟鎹�" |
+| WM_ARRIVAL_NOTICE_NO_LINE | 鍒拌揣閫氱煡鏃犺鏁版嵁 | "璇ュ埌璐ч�氱煡娌℃湁鏄庣粏鏁版嵁" |
+
+---
+
+## 鍚庣淇敼鏂囦欢娓呭崟
+
+### 鏁版嵁搴撳彉鏇�
+- `sql/mysql/mes_purchase_receipt_enhance.sql`
+
+### ERP API 鎵╁睍
+- `yudao-module-erp-api/.../ErpPurchaseOrderApi.java`
+- `yudao-module-erp-api/.../ErpPurchaseOrderItemRespDTO.java`
+- `yudao-module-erp/.../ErpPurchaseOrderApiImpl.java`
+
+### MES DO/VO 淇敼
+- `MesWmArrivalNoticeDO.java` - 鏂板 purchaseOrderCode
+- `MesWmArrivalNoticeLineDO.java` - 鏂板 purchaseOrderItemId
+- `MesWmItemReceiptDO.java` - 鏂板 processInstanceId
+- `MesWmItemReceiptLineDO.java` - 鏂板 purchaseOrderItemId
+- 瀵瑰簲鐨� SaveReqVO 鍜� RespVO
+
+### MES Service 鏂板鏂规硶
+- `MesWmArrivalNoticeService.generateArrivalNoticeFromPurchaseOrder()`
+- `MesWmItemReceiptService.generateItemReceiptFromArrivalNotice()`
+- `MesWmItemReceiptService.submitItemReceiptApproval()`
+- `MesWmItemReceiptService.updateItemReceiptAuditStatus()`
+
+### MES Controller 鏂板鎺ュ彛
+- `POST /mes/wm/arrival-notice/generate-from-purchase-order`
+- `POST /mes/wm/item-receipt/generate-from-arrival-notice`
+- `PUT /mes/wm/item-receipt/submit-approval`
+
+### BPM 鐩戝惉鍣�
+- `MesWmItemReceiptStatusListener.java`
\ No newline at end of file
diff --git a/docs/sales_shipment_integration.md b/docs/sales_shipment_integration.md
new file mode 100644
index 0000000..07f09a5
--- /dev/null
+++ b/docs/sales_shipment_integration.md
@@ -0,0 +1,169 @@
+# 閿�鍞彂璐ф祦绋� - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- ERP 閿�鍞鍗曢〉闈�
+- MES 鍙戣揣閫氱煡鍗曢〉闈�
+- MES 閿�鍞嚭搴撳崟椤甸潰
+
+## 涓氬姟娴佺▼涓庢暟鎹甫鍏�
+
+1. **閿�鍞鍗� -> 鍙戣揣閫氱煡鍗�**锛氶攢鍞鍗旾D銆侀攢鍞鍗曞彿銆佸鎴稩D銆佺墿鏂欐槑缁嗚嚜鍔ㄥ甫鍏�
+2. **鍙戣揣閫氱煡鍗� -> 閿�鍞嚭搴撳崟**锛氬彂璐ч�氱煡鍗旾D銆侀攢鍞鍗旾D銆佸鎴稩D銆佺墿鏂欐槑缁嗚嚜鍔ㄥ甫鍏�
+3. **閿�鍞嚭搴� -> BPM瀹℃壒 -> 鍑哄簱鎴愬姛**锛氬悓姝ユ洿鏂伴攢鍞鍗曞嚭搴撴暟閲忓拰鐘舵��
+
+## API
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | /mes/wm/sales-notice/generate-from-sale-order | 浠庨攢鍞鍗曠敓鎴愬彂璐ч�氱煡鍗� |
+| GET | /mes/wm/sales-notice/page | 鍙戣揣閫氱煡鍗曞垎椤垫煡璇� |
+| GET | /mes/wm/sales-notice/get | 鑾峰彇鍙戣揣閫氱煡鍗曡鎯� |
+| POST | /mes/wm/sales-notice/create | 鍒涘缓鍙戣揣閫氱煡鍗� |
+| PUT | /mes/wm/sales-notice/submit | 鎻愪氦鍙戣揣閫氱煡鍗� |
+
+### 浠庨攢鍞鍗曠敓鎴愬彂璐ч�氱煡鍗�
+
+**璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| saleOrderId | Long | 鏄� | 閿�鍞鍗旾D |
+
+**鍝嶅簲锛�** `{ "code": 200, "data": 123 }` 锛堣繑鍥炲彂璐ч�氱煡鍗旾D锛�
+
+## 鍓嶇淇敼鐐�
+
+### 1. ERP 閿�鍞鍗曢〉闈� - 娣诲姞"鐢熸垚鍙戣揣閫氱煡鍗�"鎸夐挳
+
+```html
+<el-button type="primary" @click="handleGenerateNotice" v-hasPermi="['mes:wm-sales-notice:create']">
+  鐢熸垚鍙戣揣閫氱煡鍗�
+</el-button>
+```
+
+```js
+// data
+data() {
+  return {
+    // ...
+  }
+}
+
+// methods
+methods: {
+  /** 鐢熸垚鍙戣揣閫氱煡鍗� */
+  async handleGenerateNotice() {
+    if (!this.selectedRow) {
+      this.$modal.msgWarning('璇烽�夋嫨涓�鏉¢攢鍞鍗�');
+      return;
+    }
+    try {
+      const res = await generateFromSaleOrder(this.selectedRow.id);
+      this.$modal.msgSuccess('鐢熸垚鍙戣揣閫氱煡鍗曟垚鍔�');
+      // 璺宠浆鍒板彂璐ч�氱煡鍗曢〉闈�
+      this.$router.push({ 
+        path: '/mes/wm/sales-notice/edit', 
+        query: { id: res.data } 
+      });
+    } catch (e) {
+      console.error(e);
+    }
+  }
+}
+```
+
+### 2. 鍙戣揣閫氱煡鍗曢〉闈� - 鏄剧ず閿�鍞鍗曚俊鎭�
+
+```html
+<el-descriptions :column="3" border>
+  <el-descriptions-item label="閿�鍞鍗曞彿">
+    {{ form.saleOrderCode }}
+  </el-descriptions-item>
+  <el-descriptions-item label="瀹㈡埛">
+    {{ form.clientName }}
+  </el-descriptions-item>
+</el-descriptions>
+```
+
+### 3. 鍙戣揣閫氱煡鍗曡琛ㄦ牸 - 鏂板鍒�
+
+| 鍒楀悕 | 瀛楁 | 璇存槑 |
+|------|------|------|
+| 閿�鍞鍗曟槑缁咺D | saleOrderItemId | 闅愯棌瀛楁锛岀敤浜庤拷婧� |
+
+### 4. 閿�鍞嚭搴撳崟椤甸潰 - 鏄剧ず閿�鍞鍗曚俊鎭�
+
+```html
+<el-descriptions :column="3" border>
+  <el-descriptions-item label="鍙戣揣閫氱煡鍗曞彿">
+    {{ form.noticeCode }}
+  </el-descriptions-item>
+  <el-descriptions-item label="閿�鍞鍗曞彿">
+    {{ form.saleOrderCode }}
+  </el-descriptions-item>
+  <el-descriptions-item label="瀹㈡埛">
+    {{ form.clientName }}
+  </el-descriptions-item>
+</el-descriptions>
+```
+
+## 鏁版嵁瀛楁鏄犲皠
+
+### 鍙戣揣閫氱煡鍗曚富琛�
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 濉厖鏃舵満 |
+|----------|----------|----------|
+| saleOrderId | 閿�鍞鍗�.id | 浠庨攢鍞鍗曠敓鎴愭椂 |
+| saleOrderCode | 閿�鍞鍗�.no | 浠庨攢鍞鍗曠敓鎴愭椂 |
+| clientId | 閿�鍞鍗�.customerId | 浠庨攢鍞鍗曠敓鎴愭椂 |
+
+### 鍙戣揣閫氱煡鍗曡
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 濉厖鏃舵満 |
+|----------|----------|----------|
+| saleOrderItemId | 閿�鍞鍗曟槑缁�.id | 浠庨攢鍞鍗曠敓鎴愭椂 |
+| itemId | 閿�鍞鍗曟槑缁�.productId | 浠庨攢鍞鍗曠敓鎴愭椂 |
+| quantity | 閿�鍞鍗曟槑缁�.count | 浠庨攢鍞鍗曠敓鎴愭椂 |
+
+### 閿�鍞嚭搴撳崟涓昏〃
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 濉厖鏃舵満 |
+|----------|----------|----------|
+| noticeId | 鍙戣揣閫氱煡鍗�.id | 浠庡彂璐ч�氱煡鍗曠敓鎴愭椂 |
+| saleOrderId | 鍙戣揣閫氱煡鍗�.saleOrderId | 浠庡彂璐ч�氱煡鍗曠敓鎴愭椂 |
+| saleOrderCode | 鍙戣揣閫氱煡鍗�.saleOrderCode | 浠庡彂璐ч�氱煡鍗曠敓鎴愭椂 |
+
+### 閿�鍞嚭搴撳崟琛�
+
+| 鐩爣瀛楁 | 鏁版嵁鏉ユ簮 | 濉厖鏃舵満 |
+|----------|----------|----------|
+| noticeLineId | 鍙戣揣閫氱煡鍗曡.id | 浠庡彂璐ч�氱煡鍗曠敓鎴愭椂 |
+| saleOrderItemId | 鍙戣揣閫氱煡鍗曡.saleOrderItemId | 浠庡彂璐ч�氱煡鍗曠敓鎴愭椂 |
+
+## 鐘舵�佹祦杞�
+
+### 鍙戣揣閫氱煡鍗曠姸鎬�
+
+| 鐘舵�佸�� | 鐘舵�佸悕 | 璇存槑 |
+|--------|--------|------|
+| 0 | 鑽夌 | 鏂板缓鐘舵�� |
+| 3 | 寰呭嚭搴� | 鎻愪氦鍚� |
+| 4 | 宸插畬鎴� | 鍑哄簱瀹屾垚鍚庤嚜鍔ㄦ洿鏂� |
+
+### 閿�鍞鍗曞嚭搴撶姸鎬�
+
+| 鐘舵�佸�� | 鐘舵�佸悕 | 璇存槑 |
+|--------|--------|------|
+| 0 | 鏈嚭搴� | 榛樿鍊� |
+| 1 | 閮ㄥ垎鍑哄簱 | 閮ㄥ垎鏄庣粏宸插嚭搴� |
+| 2 | 鍏ㄩ儴鍑哄簱 | 鎵�鏈夋槑缁嗗凡鍑哄簱 |
+
+## 娉ㄦ剰浜嬮」
+
+1. 浠庨攢鍞鍗曠敓鎴愬彂璐ч�氱煡鍗曟椂锛屼細鑷姩甯﹀叆鎵�鏈夐攢鍞鍗曟槑缁�
+2. 鍙戣揣閫氱煡鍗曟彁浜ゅ悗鐘舵�佸彉涓�"寰呭嚭搴�"锛屾鏃跺彲浠庡彂璐ч�氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟
+3. 閿�鍞嚭搴撳畬鎴愬悗锛岀郴缁熻嚜鍔ㄦ洿鏂帮細
+   - 鍙戣揣閫氱煡鍗曠姸鎬� -> 宸插畬鎴�
+   - 閿�鍞鍗曞嚭搴撴暟閲忓拰鍑哄簱鐘舵��
+4. 閿�鍞鍗曠殑鍑哄簱鐘舵�佹牴鎹槑缁嗗嚭搴撴暟閲忚嚜鍔ㄨ绠楋紝鏃犻渶鎵嬪姩缁存姢
diff --git a/pom.xml b/pom.xml
index 85eafa5..dc9f57d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,8 +27,6 @@
         <module>yudao-module-erp-api</module>
 <!--        <module>yudao-module-iot</module>-->
         <module>yudao-module-mes</module>
-        <module>yudao-module-wms</module>
-        <module>yudao-module-wms-api</module>
         <module>yudao-module-im</module>
         <!-- MDM 涓绘暟鎹鐞嗘ā鍧� -->
         <module>yudao-module-mdm-api</module>
diff --git a/sql/mysql/mes_purchase_receipt_enhance.sql b/sql/mysql/mes_purchase_receipt_enhance.sql
new file mode 100644
index 0000000..b830d69
--- /dev/null
+++ b/sql/mysql/mes_purchase_receipt_enhance.sql
@@ -0,0 +1,53 @@
+-- 浠撳偍鐗╂祦妯″潡閲囪喘鍏ュ簱娴佺▼浼樺寲 - 鏁版嵁搴撳彉鏇磋剼鏈�
+-- 鎵ц鏃ユ湡: 2026-07-10
+
+-- =====================
+-- 1. 鍒拌揣閫氱煡涓昏〃鍙樻洿
+-- =====================
+
+-- 娣诲姞閲囪喘璁㈠崟缂栫爜锛堝啑浣欏瓧娈碉紝鐢ㄤ簬鏄剧ず锛�
+ALTER TABLE mes_wm_arrival_notice
+ADD COLUMN purchase_order_code VARCHAR(64) COMMENT '閲囪喘璁㈠崟缂栫爜锛堝啑浣欏瓧娈碉級' AFTER purchase_order_id;
+
+-- =====================
+-- 2. 鍒拌揣閫氱煡琛岃〃鍙樻洿
+-- =====================
+
+-- 娣诲姞閲囪喘璁㈠崟琛屽叧鑱�
+ALTER TABLE mes_wm_arrival_notice_line
+ADD COLUMN purchase_order_item_id BIGINT COMMENT '閲囪喘璁㈠崟琛岀紪鍙凤紙鍏宠仈 ERP 閲囪喘璁㈠崟鏄庣粏锛�' AFTER notice_id;
+
+-- 娣诲姞绱㈠紩
+ALTER TABLE mes_wm_arrival_notice_line
+ADD INDEX idx_purchase_order_item_id (purchase_order_item_id);
+
+-- =====================
+-- 3. 閲囪喘鍏ュ簱涓昏〃鍙樻洿
+-- =====================
+
+-- 娣诲姞 BPM 娴佺▼瀹炰緥缂栧彿
+ALTER TABLE mes_wm_item_receipt
+ADD COLUMN process_instance_id VARCHAR(64) COMMENT 'BPM 娴佺▼瀹炰緥缂栧彿' AFTER status;
+
+-- =====================
+-- 4. 閲囪喘鍏ュ簱琛岃〃鍙樻洿
+-- =====================
+
+-- 娣诲姞閲囪喘璁㈠崟琛屽叧鑱旓紙瀹屾暣杩芥函閾撅級
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN purchase_order_item_id BIGINT COMMENT '閲囪喘璁㈠崟琛岀紪鍙凤紙瀹屾暣杩芥函閾撅級' AFTER arrival_notice_line_id;
+
+-- 娣诲姞绱㈠紩
+ALTER TABLE mes_wm_item_receipt_line
+ADD INDEX idx_purchase_order_item_id (purchase_order_item_id);
+
+-- =====================
+-- 5. BPM 鍒嗙被閰嶇疆
+-- =====================
+
+-- 娣诲姞閲囪喘鍏ュ簱瀹℃壒鍒嗙被锛堝鏋滀笉瀛樺湪锛�
+-- 娉ㄦ剰锛歩d 闇�瑕佹牴鎹疄闄呮暟鎹簱搴忓垪鐢熸垚
+INSERT INTO bpm_category (name, code, status, remark, creator, create_time, updater, update_time, deleted)
+SELECT '閲囪喘鍏ュ簱瀹℃壒', 'item_receipt_approve', 0, 'MES閲囪喘鍏ュ簱鍗曞鎵瑰垎绫�', '1', NOW(), '1', NOW(), b'0'
+FROM DUAL
+WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'item_receipt_approve' AND deleted = b'0');
\ No newline at end of file
diff --git a/sql/mysql/mes_purchase_receipt_sync.sql b/sql/mysql/mes_purchase_receipt_sync.sql
new file mode 100644
index 0000000..0b48c73
--- /dev/null
+++ b/sql/mysql/mes_purchase_receipt_sync.sql
@@ -0,0 +1,72 @@
+-- 閲囪喘鍏ュ簱娴佺▼浼樺寲 - 鏁版嵁搴撳悓姝ヨ剼鏈�
+-- 鎵ц鏃ユ湡: 2026-07-10
+-- 璇存槑: 鍙屽悜鍚屾鏁版嵁搴撲笌 DO 绫诲瓧娈�
+
+-- =====================
+-- 1. 鍒拌揣閫氱煡琛岃〃琛ュ厖瀛楁
+-- =====================
+
+-- 娣诲姞鍒拌揣鏁伴噺锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_arrival_notice_line
+ADD COLUMN arrival_quantity DECIMAL(24,6) COMMENT '鍒拌揣鏁伴噺' AFTER item_id;
+
+-- 娣诲姞鍚堟牸鏁伴噺锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_arrival_notice_line
+ADD COLUMN qualified_quantity DECIMAL(24,6) COMMENT '鍚堟牸鏁伴噺' AFTER arrival_quantity;
+
+-- 娣诲姞鏄惁闇�妫�楠屾爣蹇楋紙DO 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_arrival_notice_line
+ADD COLUMN iqc_check_flag BIT DEFAULT b'0' COMMENT '鏄惁闇�瑕佹潵鏂欐楠�' AFTER qualified_quantity;
+
+-- 娣诲姞妫�楠屽崟缂栧彿锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_arrival_notice_line
+ADD COLUMN iqc_id BIGINT COMMENT '鏉ユ枡妫�楠屽崟缂栧彿' AFTER iqc_check_flag;
+
+-- 灏� quantity 鏀瑰悕涓哄悎閫傜殑瀛楁鍚嶏紙閬垮厤姝т箟锛屼繚鐣欏師瀛楁浣滀负澶囩敤锛�
+-- ALTER TABLE mes_wm_arrival_notice_line CHANGE COLUMN quantity reserved_quantity DECIMAL(24,6) COMMENT '棰勭暀鏁伴噺';
+
+-- =====================
+-- 2. 閲囪喘鍏ュ簱琛岃〃琛ュ厖瀛楁
+-- =====================
+
+-- 娣诲姞鍒拌揣閫氱煡琛孖D锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN arrival_notice_line_id BIGINT COMMENT '鍒拌揣閫氱煡鍗曡缂栧彿' AFTER receipt_id;
+
+-- 灏� quantity 鏀瑰悕涓� received_quantity锛堜笌 DO 瀛楁鍚嶄竴鑷达級
+ALTER TABLE mes_wm_item_receipt_line
+CHANGE COLUMN quantity received_quantity DECIMAL(24,6) COMMENT '鍏ュ簱鏁伴噺';
+
+-- 娣诲姞鎵规缂栧彿锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN batch_id BIGINT COMMENT '鎵规缂栧彿' AFTER received_quantity;
+
+-- 娣诲姞鎵规缂栫爜锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN batch_code VARCHAR(64) COMMENT '鎵规缂栫爜' AFTER batch_id;
+
+-- 娣诲姞鐢熶骇鏃ユ湡锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN production_date DATETIME COMMENT '鐢熶骇鏃ユ湡' AFTER batch_code;
+
+-- 娣诲姞鏈夋晥鏈燂紙DO 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN expire_date DATETIME COMMENT '鏈夋晥鏈�' AFTER production_date;
+
+-- 娣诲姞鐢熶骇鎵瑰彿锛圖O 鏈夛紝鏁版嵁搴撴棤锛�
+ALTER TABLE mes_wm_item_receipt_line
+ADD COLUMN lot_number VARCHAR(64) COMMENT '鐢熶骇鎵瑰彿' AFTER expire_date;
+
+-- =====================
+-- 3. 閲囪喘鍏ュ簱鏄庣粏琛ㄨˉ鍏呭瓧娈�
+-- =====================
+
+-- DO 缂哄皯 material_stock_id 瀛楁锛屼絾鏁版嵁搴撳凡鏈夛紝鏃犻渶鎿嶄綔
+
+-- =====================
+-- 4. 閲囪喘鍏ュ簱涓昏〃娣诲姞绱㈠紩
+-- =====================
+
+-- 娣诲姞娴佺▼瀹炰緥绱㈠紩锛堜究浜庢煡璇㈠鎵圭姸鎬侊級
+ALTER TABLE mes_wm_item_receipt
+ADD INDEX idx_process_instance_id (process_instance_id);
\ No newline at end of file
diff --git a/sql/mysql/mes_wm_item_receipt_add_columns.sql b/sql/mysql/mes_wm_item_receipt_add_columns.sql
new file mode 100644
index 0000000..8b342d1
--- /dev/null
+++ b/sql/mysql/mes_wm_item_receipt_add_columns.sql
@@ -0,0 +1,21 @@
+-- MES 閲囪喘鍏ュ簱鍗曡〃缁撴瀯淇敼
+-- 鏍规嵁 MesWmItemReceiptDO 璋冩暣鏁版嵁搴撹〃瀛楁
+-- 璇存槑锛氬師琛ㄧ粨鏋勪负"鐗╂枡閫�搴撳崟"锛孌O 绫诲畾涔変负"閲囪喘鍏ュ簱鍗�"
+
+-- 1. 鍒犻櫎鐢熶骇宸ュ崟 ID锛堥��搴撳崟瀛楁锛�
+ALTER TABLE mes_wm_item_receipt DROP COLUMN IF EXISTS work_order_id;
+
+-- 2. 娣诲姞鏉ユ枡妫�楠屽崟缂栧彿
+ALTER TABLE mes_wm_item_receipt ADD COLUMN iqc_id BIGINT COMMENT '鏉ユ枡妫�楠屽崟缂栧彿' AFTER name;
+
+-- 3. 娣诲姞鍒拌揣閫氱煡鍗曠紪鍙�
+ALTER TABLE mes_wm_item_receipt ADD COLUMN notice_id BIGINT COMMENT '鍒拌揣閫氱煡鍗曠紪鍙�' AFTER iqc_id;
+
+-- 4. 娣诲姞閲囪喘璁㈠崟鍙�
+ALTER TABLE mes_wm_item_receipt ADD COLUMN purchase_order_code VARCHAR(64) COMMENT '閲囪喘璁㈠崟鍙�' AFTER notice_id;
+
+-- 5. 娣诲姞渚涘簲鍟嗙紪鍙�
+ALTER TABLE mes_wm_item_receipt ADD COLUMN vendor_id BIGINT COMMENT '渚涘簲鍟嗙紪鍙�' AFTER purchase_order_code;
+
+-- 6. 鏇存柊琛ㄦ敞閲�
+ALTER TABLE mes_wm_item_receipt COMMENT 'MES 閲囪喘鍏ュ簱鍗�';
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
index 84d31ab..4098e32 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/CrmBusinessController.java
@@ -14,11 +14,11 @@
 import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessStatusDO;
 import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessStatusTypeDO;
 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
 import cn.iocoder.yudao.module.crm.service.business.CrmBusinessService;
 import cn.iocoder.yudao.module.crm.service.business.CrmBusinessStatusService;
 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@@ -62,7 +62,7 @@
     @Resource
     private CrmBusinessStatusService businessStatusService;
     @Resource
-    private CrmProductService productService;
+    private MdmItemApi mdmItemApi;
 
     @Resource
     private AdminUserApi adminUserApi;
@@ -117,12 +117,12 @@
         CrmBusinessRespVO businessVO = buildBusinessDetailList(Collections.singletonList(business)).get(0);
         // 鎷兼帴浜у搧椤�
         List<CrmBusinessProductDO> businessProducts = businessService.getBusinessProductListByBusinessId(businessVO.getId());
-        Map<Long, CrmProductDO> productMap = productService.getProductMap(
-                convertSet(businessProducts, CrmBusinessProductDO::getProductId));
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
+                convertSet(businessProducts, CrmBusinessProductDO::getItemId));
         businessVO.setProducts(BeanUtils.toBean(businessProducts, CrmBusinessRespVO.Product.class, businessProductVO ->
-                MapUtils.findAndThen(productMap, businessProductVO.getProductId(),
-                        product -> businessProductVO.setProductName(product.getName())
-                                .setProductNo(product.getNo()).setProductUnit(product.getUnit()))));
+                MapUtils.findAndThen(itemMap, businessProductVO.getItemId(),
+                        item -> businessProductVO.setItemName(item.getName())
+                                .setItemCode(item.getCode()).setItemUnitId(item.getUnitMeasureId()))));
         return businessVO;
     }
 
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
index c00b813..83e6578 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
@@ -124,22 +124,22 @@
         @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
         private Long id;
 
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
-        private Long productId;
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
-        private String productNo;
-        @Schema(description = "浜у搧鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-        private Integer productUnit;
+        @Schema(description = "MDM 鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
+        private Long itemId;
+        @Schema(description = "鐗╂枡鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
+        private String itemName;
+        @Schema(description = "鐗╂枡缂栫爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
+        private String itemCode;
+        @Schema(description = "璁¢噺鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+        private Long itemUnitId;
 
-        @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
-        private BigDecimal productPrice;
+        @Schema(description = "鐗╂枡鍘熶环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
+        private BigDecimal itemPrice;
 
         @Schema(description = "鍟嗘満浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
         private BigDecimal businessPrice;
 
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
+        @Schema(description = "鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
         private BigDecimal count;
 
         @Schema(description = "鎬昏浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java
index 102fcba..13ab5bc 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessSaveReqVO.java
@@ -74,21 +74,25 @@
     @AllArgsConstructor
     public static class BusinessProduct {
 
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
+        @Schema(description = "MDM 鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529")
+        @NotNull(message = "鐗╂枡缂栧彿涓嶈兘涓虹┖")
+        private Long itemId;
 
-        @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
-        @NotNull(message = "浜у搧鍗曚环涓嶈兘涓虹┖")
-        private BigDecimal productPrice;
+        @Schema(description = "璁¢噺鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+        @NotNull(message = "璁¢噺鍗曚綅涓嶈兘涓虹┖")
+        private Long itemUnitId;
+
+        @Schema(description = "鐗╂枡鍘熶环", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
+        @NotNull(message = "鐗╂枡鍘熶环涓嶈兘涓虹┖")
+        private BigDecimal itemPrice;
 
         @Schema(description = "鍟嗘満浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.00")
         @NotNull(message = "鍟嗘満浠锋牸涓嶈兘涓虹┖")
         private BigDecimal businessPrice;
 
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private Integer count;
+        @Schema(description = "鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
+        @NotNull(message = "鏁伴噺涓嶈兘涓虹┖")
+        private BigDecimal count;
 
     }
 
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/CrmContractController.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/CrmContractController.java
index b6df80f..555ccd3 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/CrmContractController.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/CrmContractController.java
@@ -25,7 +25,6 @@
 import cn.iocoder.yudao.module.crm.service.contact.CrmContactService;
 import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
 import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivableService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductCategoryController.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductCategoryController.java
deleted file mode 100644
index 2c840d5..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductCategoryController.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryCreateReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryListReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryRespVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductCategoryService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "绠$悊鍚庡彴 - CRM 浜у搧鍒嗙被")
-@RestController
-@RequestMapping("/crm/product-category")
-@Validated
-public class CrmProductCategoryController {
-
-    @Resource
-    private CrmProductCategoryService productCategoryService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浜у搧鍒嗙被")
-    @PreAuthorize("@ss.hasPermission('crm:product-category:create')")
-    public CommonResult<Long> createProductCategory(@Valid @RequestBody CrmProductCategoryCreateReqVO createReqVO) {
-        return success(productCategoryService.createProductCategory(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浜у搧鍒嗙被")
-    @PreAuthorize("@ss.hasPermission('crm:product-category:update')")
-    public CommonResult<Boolean> updateProductCategory(@Valid @RequestBody CrmProductCategoryCreateReqVO updateReqVO) {
-        productCategoryService.updateProductCategory(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浜у搧鍒嗙被")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('crm:product-category:delete')")
-    public CommonResult<Boolean> deleteProductCategory(@RequestParam("id") Long id) {
-        productCategoryService.deleteProductCategory(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗙被")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('crm:product-category:query')")
-    public CommonResult<CrmProductCategoryRespVO> getProductCategory(@RequestParam("id") Long id) {
-        CrmProductCategoryDO category = productCategoryService.getProductCategory(id);
-        return success(BeanUtils.toBean(category, CrmProductCategoryRespVO.class));
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗙被鍒楄〃")
-    @PreAuthorize("@ss.hasPermission('crm:product-category:query')")
-    public CommonResult<List<CrmProductCategoryRespVO>> getProductCategoryList(@Valid CrmProductCategoryListReqVO listReqVO) {
-        List<CrmProductCategoryDO> list = productCategoryService.getProductCategoryList(listReqVO);
-        return success(BeanUtils.toBean(list, CrmProductCategoryRespVO.class));
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductController.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductController.java
deleted file mode 100644
index 60b7d7b..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductController.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.translate.core.TranslateUtils;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductRespVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductSaveReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
-import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import org.dromara.core.trans.anno.TransMethodResult;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-
-@Tag(name = "绠$悊鍚庡彴 - CRM 浜у搧")
-@RestController
-@RequestMapping("/crm/product")
-@Validated
-public class CrmProductController {
-
-    @Resource
-    private CrmProductService productService;
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浜у搧")
-    @PreAuthorize("@ss.hasPermission('crm:product:create')")
-    public CommonResult<Long> createProduct(@Valid @RequestBody CrmProductSaveReqVO createReqVO) {
-        return success(productService.createProduct(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浜у搧")
-    @PreAuthorize("@ss.hasPermission('crm:product:update')")
-    public CommonResult<Boolean> updateProduct(@Valid @RequestBody CrmProductSaveReqVO updateReqVO) {
-        productService.updateProduct(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浜у搧")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('crm:product:delete')")
-    public CommonResult<Boolean> deleteProduct(@RequestParam("id") Long id) {
-        productService.deleteProduct(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('crm:product:query')")
-    @TransMethodResult
-    public CommonResult<CrmProductRespVO> getProduct(@RequestParam("id") Long id) {
-        CrmProductDO product = productService.getProduct(id);
-        return success(BeanUtils.toBean(product, CrmProductRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱浜у搧绮剧畝鍒楄〃", description = "鍙寘鍚寮�鍚殑浜у搧锛屼富瑕佺敤浜庡墠绔殑涓嬫媺閫夐」")
-    public CommonResult<List<CrmProductRespVO>> getProductSimpleList() {
-        List<CrmProductDO> list = productService.getProductListByStatus(CrmProductStatusEnum.ENABLE.getStatus());
-        return success(convertList(list, product -> new CrmProductRespVO().setId(product.getId()).setName(product.getName())
-                .setUnit(product.getUnit()).setNo(product.getNo()).setPrice(product.getPrice())));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('crm:product:query')")
-    @TransMethodResult
-    public CommonResult<PageResult<CrmProductRespVO>> getProductPage(@Valid CrmProductPageReqVO pageVO) {
-        PageResult<CrmProductDO> pageResult = productService.getProductPage(pageVO);
-        return success(BeanUtils.toBean(pageResult, CrmProductRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浜у搧 Excel")
-    @PreAuthorize("@ss.hasPermission('crm:product:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportProductExcel(@Valid CrmProductPageReqVO exportReqVO,
-                                   HttpServletResponse response) throws IOException {
-        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<CrmProductDO> list = productService.getProductPage(exportReqVO).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浜у搧.xls", "鏁版嵁", CrmProductRespVO.class,
-                TranslateUtils.translate(BeanUtils.toBean(list, CrmProductRespVO.class)));
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryCreateReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryCreateReqVO.java
deleted file mode 100644
index bb17806..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryCreateReqVO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product.vo.category;
-
-import com.mzt.logapi.starter.annotation.DiffLogField;
-import lombok.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import jakarta.validation.constraints.NotNull;
-
-@Schema(description = "绠$悊鍚庡彴 - CRM 浜у搧鍒嗙被鍒涘缓/鏇存柊 Request VO")
-@Data
-public class CrmProductCategoryCreateReqVO{
-
-    @Schema(description = "鍒嗙被缂栧彿", example = "23902")
-    private Long id;
-
-    @Schema(description = "鍒嗙被鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "璧靛叚")
-    @NotNull(message = "鍒嗙被鍚嶇О涓嶈兘涓虹┖")
-    @DiffLogField(name = "鍒嗙被鍚嶇О")
-    private String name;
-
-    @Schema(description = "鐖剁骇缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "4680")
-    @NotNull(message = "鐖剁骇缂栧彿涓嶈兘涓虹┖")
-    private Long parentId;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryListReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryListReqVO.java
deleted file mode 100644
index c8e181e..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryListReqVO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product.vo.category;
-
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - CRM 浜у搧鍒嗙被鍒楄〃 Request VO")
-@Data
-public class CrmProductCategoryListReqVO {
-
-    @ExcelProperty("鍚嶇О")
-    private String name;
-
-    @ExcelProperty("鐖剁骇 id")
-    private Long parentId;
-
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryRespVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryRespVO.java
deleted file mode 100644
index 4cea8e4..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/category/CrmProductCategoryRespVO.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product.vo.category;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - CRM 浜у搧鍒嗙被 Response VO")
-@Data
-public class CrmProductCategoryRespVO {
-
-    @Schema(description = "鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "23902")
-    private Long id;
-
-    @Schema(description = "鍒嗙被鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "璧靛叚")
-    private String name;
-
-    @Schema(description = "鐖剁骇缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "4680")
-    private Long parentId;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductPageReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductPageReqVO.java
deleted file mode 100644
index 39b1090..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductPageReqVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - CRM 浜у搧鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class CrmProductPageReqVO extends PageParam {
-
-    @Schema(description = "浜у搧鍚嶇О", example = "鏉庡洓")
-    private String name;
-
-    @Schema(description = "鐘舵��", example = "1")
-    private Integer status;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductRespVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductRespVO.java
deleted file mode 100644
index 45fa94e..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductRespVO.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
-import cn.iocoder.yudao.module.crm.enums.DictTypeConstants;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import org.dromara.core.trans.anno.Trans;
-import org.dromara.core.trans.constant.TransType;
-import org.dromara.core.trans.vo.VO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - CRM 浜у搧 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class CrmProductRespVO implements VO {
-
-    @Schema(description = "浜у搧缂栧彿", example = "20529")
-    @ExcelProperty("浜у搧缂栧彿")
-    private Long id;
-
-    @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "濂戒骇鍝�")
-    @ExcelProperty("浜у搧鍚嶇О")
-    private String name;
-
-    @Schema(description = "浜у搧缂栫爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "12306")
-    @ExcelProperty("浜у搧缂栫爜")
-    private String no;
-
-    @Schema(description = "鍗曚綅", example = "2")
-    @ExcelProperty(value = "鍗曚綅", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.CRM_PRODUCT_UNIT)
-    private Integer unit;
-
-    @Schema(description = "浠锋牸, 鍗曚綅锛氬垎", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
-    @ExcelProperty("浠锋牸锛屽崟浣嶏細鍒�")
-    private BigDecimal price;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "涓婃灦")
-    @ExcelProperty(value = "鍗曚綅", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.CRM_PRODUCT_STATUS)
-    private Integer status;
-
-    @Schema(description = "浜у搧鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @Trans(type = TransType.SIMPLE, target = CrmProductCategoryDO.class, fields = "name", ref = "categoryName")
-    private Long categoryId;
-    @Schema(description = "浜у搧鍒嗙被鍚嶅瓧", requiredMode = Schema.RequiredMode.REQUIRED, example = "琛f湇")
-    @ExcelProperty("浜у搧鍒嗙被")
-    private String categoryName;
-
-    @Schema(description = "浜у搧鎻忚堪", example = "浣犺鐨勫")
-    @ExcelProperty("浜у搧鎻忚堪")
-    private String description;
-
-    @Schema(description = "璐熻矗浜虹殑鐢ㄦ埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "31926")
-    @Trans(type = TransType.SIMPLE, targetClassName = "cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO",
-            fields = "nickname", ref = "ownerUserName")
-    private Long ownerUserId;
-    @Schema(description = "璐熻矗浜虹殑鐢ㄦ埛鏄电О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬮亾婧愮爜")
-    @ExcelProperty("璐熻矗浜�")
-    private String ownerUserName;
-
-    @Schema(description = "鍒涘缓浜虹紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @Trans(type = TransType.SIMPLE, targetClassName = "cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO",
-            fields = "nickname", ref = "creatorName")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕瀛�", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬮亾婧愮爜")
-    @ExcelProperty("鍒涘缓浜�")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鏇存柊鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鏇存柊鏃堕棿")
-    private LocalDateTime updateTime;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductSaveReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductSaveReqVO.java
deleted file mode 100644
index ef6d582..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductSaveReqVO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product;
-
-import cn.iocoder.yudao.module.crm.framework.operatelog.core.CrmProductStatusParseFunction;
-import cn.iocoder.yudao.module.crm.framework.operatelog.core.CrmProductUnitParseFunction;
-import com.mzt.logapi.starter.annotation.DiffLogField;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - CRM 浜у搧鍒涘缓/淇敼 Request VO")
-@Data
-public class CrmProductSaveReqVO {
-
-    @Schema(description = "浜у搧缂栧彿", example = "20529")
-    private Long id;
-
-    @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "濂戒骇鍝�")
-    @NotNull(message = "浜у搧鍚嶇О涓嶈兘涓虹┖")
-    @DiffLogField(name = "浜у搧鍚嶇О")
-    private String name;
-
-    @Schema(description = "浜у搧缂栫爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "12306")
-    @NotNull(message = "浜у搧缂栫爜涓嶈兘涓虹┖")
-    @DiffLogField(name = "浜у搧缂栫爜")
-    private String no;
-
-    @Schema(description = "鍗曚綅", example = "2")
-    @DiffLogField(name = "鍗曚綅", function = CrmProductUnitParseFunction.NAME)
-    private Integer unit;
-
-    @Schema(description = "浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED, example = "8911")
-    @NotNull(message = "浠锋牸涓嶈兘涓虹┖")
-    @DiffLogField(name = "浠锋牸")
-    private BigDecimal price;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "涓婃灦")
-    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
-    @DiffLogField(name = "鐘舵��", function = CrmProductStatusParseFunction.NAME)
-    private Integer status;
-
-    @Schema(description = "浜у搧鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotNull(message = "浜у搧鍒嗙被缂栧彿涓嶈兘涓虹┖")
-    @DiffLogField(name = "浜у搧鍒嗙被缂栧彿")
-    private Long categoryId;
-
-    @Schema(description = "浜у搧鎻忚堪", example = "浣犺鐨勫")
-    @DiffLogField(name = "浜у搧鎻忚堪")
-    private String description;
-
-    @Schema(description = "璐熻矗浜虹殑鐢ㄦ埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "31926")
-    @NotNull(message = "璐熻矗浜虹殑鐢ㄦ埛缂栧彿涓嶈兘涓虹┖")
-    private Long ownerUserId;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java
index 2f66fc3..328a3e2 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java
@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.crm.dal.dataobject.business;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -38,17 +37,21 @@
      */
     private Long businessId;
     /**
-     * 浜у搧缂栧彿
+     * MDM 鐗╂枡缂栧彿
      *
-     * 鍏宠仈 {@link CrmProductDO#getId()}
+     * 鍏宠仈 MdmItemRespDTO.id
      */
-    private Long productId;
+    private Long itemId;
     /**
-     * 浜у搧鍗曚环锛屽崟浣嶏細鍏�
+     * 璁¢噺鍗曚綅缂栧彿
      *
-     * 鍐椾綑 {@link CrmProductDO#getPrice()}
+     * 鍏宠仈 MdmUnitMeasureRespDTO.id
      */
-    private BigDecimal productPrice;
+    private Long itemUnitId;
+    /**
+     * 鐗╂枡鍘熶环锛屽崟浣嶏細鍏冿紙鍐椾綑锛�
+     */
+    private BigDecimal itemPrice;
     /**
      * 鍟嗘満浠锋牸, 鍗曚綅锛氬厓
      */
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductCategoryDO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductCategoryDO.java
deleted file mode 100644
index e0f4d62..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductCategoryDO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.crm.dal.dataobject.product;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * 浜у搧鍒嗙被 DO
- *
- * @author ZanGe涓�
- */
-@TableName("crm_product_category")
-@KeySequence("crm_product_category_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class CrmProductCategoryDO extends BaseDO {
-
-    /**
-     * 鐖跺垎绫荤紪鍙� - 鏍瑰垎绫�
-     */
-    public static final Long PARENT_ID_NULL = 0L;
-    /**
-     * 闄愬畾鍒嗙被灞傜骇
-     */
-    public static final int CATEGORY_LEVEL = 2;
-
-    /**
-     * 鍒嗙被缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍒嗙被鍚嶇О
-     */
-    private String name;
-    /**
-     * 鐖剁骇缂栧彿
-     *
-     * 鍏宠仈 {@link CrmProductCategoryDO#getId()}
-     */
-    private Long parentId;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductDO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductDO.java
deleted file mode 100644
index caeeb53..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductDO.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.iocoder.yudao.module.crm.dal.dataobject.product;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.crm.enums.DictTypeConstants;
-import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * CRM 浜у搧 DO
- *
- * @author ZanGe涓�
- */
-@TableName("crm_product")
-@KeySequence("crm_product_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class CrmProductDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 浜у搧鍚嶇О
-     */
-    private String name;
-    /**
-     * 浜у搧缂栫爜
-     */
-    private String no;
-    /**
-     * 鍗曚綅
-     *
-     * 瀛楀吀 {@link DictTypeConstants#CRM_PRODUCT_UNIT}
-     */
-    private Integer unit;
-    /**
-     * 浠锋牸锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal price;
-    /**
-     * 鐘舵��
-     *
-     * 鍏宠仈 {@link CrmProductStatusEnum}
-     */
-    private Integer status;
-    /**
-     * 浜у搧鍒嗙被 ID
-     *
-     * 鍏宠仈 {@link CrmProductCategoryDO#getId()} 瀛楁
-     */
-    private Long categoryId;
-    /**
-     * 浜у搧鎻忚堪
-     */
-    private String description;
-    /**
-     * 璐熻矗浜虹殑鐢ㄦ埛缂栧彿
-     *
-     * 鍏宠仈 AdminUserDO 鐨� id 瀛楁
-     */
-    private Long ownerUserId;
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/package-info.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/package-info.java
deleted file mode 100644
index 4c7282d..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * 浜у搧琛�
- */
-package cn.iocoder.yudao.module.crm.dal.dataobject.product;
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductCategoryMapper.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductCategoryMapper.java
deleted file mode 100644
index 3cced73..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductCategoryMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.crm.dal.mysql.product;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryListReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * CRM 浜у搧鍒嗙被 Mapper
- *
- * @author ZanGe涓�
- */
-@Mapper
-public interface CrmProductCategoryMapper extends BaseMapperX<CrmProductCategoryDO> {
-
-    default List<CrmProductCategoryDO> selectList(CrmProductCategoryListReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<CrmProductCategoryDO>()
-                .likeIfPresent(CrmProductCategoryDO::getName, reqVO.getName())
-                .eqIfPresent(CrmProductCategoryDO::getParentId, reqVO.getParentId())
-                .orderByDesc(CrmProductCategoryDO::getId));
-    }
-
-    default CrmProductCategoryDO selectByParentIdAndName(Long parentId, String name) {
-        return selectOne(CrmProductCategoryDO::getParentId, parentId, CrmProductCategoryDO::getName, name);
-    }
-
-    default Long selectCountByParentId(Long parentId) {
-        return selectCount(CrmProductCategoryDO::getParentId, parentId);
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductMapper.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductMapper.java
deleted file mode 100644
index 4d1d618..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductMapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.crm.dal.mysql.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * CRM 浜у搧 Mapper
- *
- * @author ZanGe涓�
- */
-@Mapper
-public interface CrmProductMapper extends BaseMapperX<CrmProductDO> {
-
-    default PageResult<CrmProductDO> selectPage(CrmProductPageReqVO reqVO) {
-        return selectPage(reqVO, new MPJLambdaWrapperX<CrmProductDO>()
-                .likeIfPresent(CrmProductDO::getName, reqVO.getName())
-                .eqIfPresent(CrmProductDO::getStatus, reqVO.getStatus())
-                .orderByDesc(CrmProductDO::getId));
-    }
-
-    default CrmProductDO selectByNo(String no) {
-        return selectOne(CrmProductDO::getNo, no);
-    }
-
-    default Long selectCountByCategoryId(Long categoryId) {
-        return selectCount(CrmProductDO::getCategoryId, categoryId);
-    }
-
-    default List<CrmProductDO> selectListByStatus(Integer status) {
-        return selectList(CrmProductDO::getStatus, status);
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/product/CrmProductStatusEnum.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/product/CrmProductStatusEnum.java
deleted file mode 100644
index f940e88..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/product/CrmProductStatusEnum.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.crm.enums.product;
-
-import cn.hutool.core.util.ObjUtil;
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * CRM 鍟嗗搧鐘舵��
- *
- * @author ZanGe涓�
- * @since 2023-11-30 21:53
- */
-@Getter
-@AllArgsConstructor
-public enum CrmProductStatusEnum implements ArrayValuable<Integer> {
-
-    DISABLE(0, "涓嬫灦"),
-    ENABLE(1, "涓婃灦");
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(CrmProductStatusEnum::getStatus).toArray(Integer[]::new);
-
-    /**
-     * 鐘舵��
-     */
-    private final Integer status;
-    /**
-     * 鐘舵�佸悕
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-    public static boolean isEnable(Integer status) {
-        return ObjUtil.equal(ENABLE.status, status);
-    }
-
-    public static boolean isDisable(Integer status) {
-        return ObjUtil.equal(DISABLE.status, status);
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmProductStatusParseFunction.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmProductStatusParseFunction.java
deleted file mode 100644
index 8034e11..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmProductStatusParseFunction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.crm.framework.operatelog.core;
-
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
-import cn.iocoder.yudao.module.crm.enums.DictTypeConstants;
-import com.mzt.logapi.service.IParseFunction;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-/**
- * 浜у搧鐘舵�佺殑 {@link IParseFunction} 瀹炵幇绫�
- *
- * @author anhaohao
- */
-@Component
-@Slf4j
-public class CrmProductStatusParseFunction implements IParseFunction {
-
-    public static final String NAME = "getProductStatusName";
-
-    @Override
-    public boolean executeBefore() {
-        return true; // 鍏堣浆鎹㈠�煎悗瀵规瘮
-    }
-
-    @Override
-    public String functionName() {
-        return NAME;
-    }
-
-    @Override
-    public String apply(Object value) {
-        if (StrUtil.isEmptyIfStr(value)) {
-            return "";
-        }
-        return DictFrameworkUtils.parseDictDataLabel(DictTypeConstants.CRM_PRODUCT_STATUS, value.toString());
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmProductUnitParseFunction.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmProductUnitParseFunction.java
deleted file mode 100644
index c769489..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmProductUnitParseFunction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.crm.framework.operatelog.core;
-
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
-import cn.iocoder.yudao.module.crm.enums.DictTypeConstants;
-import com.mzt.logapi.service.IParseFunction;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-/**
- * 浜у搧鍗曚綅鐨� {@link IParseFunction} 瀹炵幇绫�
- *
- * @author anhaohao
- */
-@Component
-@Slf4j
-public class CrmProductUnitParseFunction implements IParseFunction {
-
-    public static final String NAME = "getProductUnitName";
-
-    @Override
-    public boolean executeBefore() {
-        return true; // 鍏堣浆鎹㈠�煎悗瀵规瘮
-    }
-
-    @Override
-    public String functionName() {
-        return NAME;
-    }
-
-    @Override
-    public String apply(Object value) {
-        if (StrUtil.isEmptyIfStr(value)) {
-            return "";
-        }
-        return DictFrameworkUtils.parseDictDataLabel(DictTypeConstants.CRM_PRODUCT_UNIT, value.toString());
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
index 1828558..263b383 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
@@ -29,7 +29,8 @@
 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import com.mzt.logapi.context.LogRecordContext;
 import com.mzt.logapi.service.impl.DiffParseFunction;
@@ -45,6 +46,8 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
@@ -80,7 +83,7 @@
     @Resource
     private CrmContactBusinessService contactBusinessService;
     @Resource
-    private CrmProductService productService;
+    private MdmItemApi mdmItemApi;
 
     @Resource
     private AdminUserApi adminUserApi;
@@ -213,8 +216,14 @@
     }
 
     private List<CrmBusinessProductDO> validateBusinessProducts(List<CrmBusinessSaveReqVO.BusinessProduct> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        productService.validProductList(convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getProductId));
+        // 1. 鏍¢獙鐗╂枡瀛樺湪
+        Set<Long> itemIds = convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getItemId);
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(itemIds);
+        for (Long itemId : itemIds) {
+            if (itemMap.get(itemId) == null) {
+                throw exception(PRODUCT_NOT_EXISTS);
+            }
+        }
         // 2. 杞寲涓� CrmBusinessProductDO 鍒楄〃
         return convertList(list, o -> BeanUtils.toBean(o, CrmBusinessProductDO.class,
                 item -> item.setTotalPrice(MoneyUtils.priceMultiply(item.getBusinessPrice(), item.getCount()))));
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
index d875b2d..6518016 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
@@ -32,7 +32,6 @@
 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
 import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivableService;
 import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
 import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderCreateReqDTO;
@@ -98,8 +97,6 @@
 
     @Resource
     private CrmPermissionService crmPermissionService;
-    @Resource
-    private CrmProductService productService;
     @Resource
     private CrmCustomerService customerService;
     @Resource
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java
deleted file mode 100644
index c68c0cf..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.crm.service.product;
-
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryCreateReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryListReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * CRM 浜у搧鍒嗙被 Service 鎺ュ彛
- *
- * @author ZanGe涓�
- */
-public interface CrmProductCategoryService {
-
-    /**
-     * 鍒涘缓浜у搧鍒嗙被
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createProductCategory(@Valid CrmProductCategoryCreateReqVO createReqVO);
-
-    /**
-     * 鏇存柊浜у搧鍒嗙被
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateProductCategory(@Valid CrmProductCategoryCreateReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浜у搧鍒嗙被
-     *
-     * @param id 缂栧彿
-     */
-    void deleteProductCategory(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧鍒嗙被
-     */
-    CrmProductCategoryDO getProductCategory(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被鍒楄〃
-     *
-     * @param listReqVO 鍒楄〃璇锋眰
-     * @return 浜у搧鍒嗙被鍒楄〃
-     */
-    List<CrmProductCategoryDO> getProductCategoryList(CrmProductCategoryListReqVO listReqVO);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被鍒楄〃
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍒嗙被鍒楄〃
-     */
-    List<CrmProductCategoryDO> getProductCategoryList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被 Map
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍒嗙被 Map
-     */
-    default Map<Long, CrmProductCategoryDO> getProductCategoryMap(Collection<Long> ids) {
-        return convertMap(getProductCategoryList(ids), CrmProductCategoryDO::getId);
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryServiceImpl.java
deleted file mode 100644
index b685f59..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryServiceImpl.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package cn.iocoder.yudao.module.crm.service.product;
-
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryCreateReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.category.CrmProductCategoryListReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
-import cn.iocoder.yudao.module.crm.dal.mysql.product.CrmProductCategoryMapper;
-import com.mzt.logapi.context.LogRecordContext;
-import com.mzt.logapi.starter.annotation.LogRecord;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO.PARENT_ID_NULL;
-import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*;
-
-/**
- * CRM 浜у搧鍒嗙被 Service 瀹炵幇绫�
- *
- * @author ZanGe涓�
- */
-@Service
-@Validated
-public class CrmProductCategoryServiceImpl implements CrmProductCategoryService {
-
-    @Resource(name = "crmProductCategoryMapper")
-    private CrmProductCategoryMapper productCategoryMapper;
-
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岃В鍐冲惊鐜緷璧栭棶棰�
-    private CrmProductService crmProductService;
-
-    @Override
-    @LogRecord(type = CRM_PRODUCT_CATEGORY_TYPE, subType = CRM_PRODUCT_CATEGORY_CREATE_SUB_TYPE, bizNo = "{{#productCategoryId}}",
-            success = CRM_PRODUCT_CATEGORY_CREATE_SUCCESS)
-    public Long createProductCategory(CrmProductCategoryCreateReqVO createReqVO) {
-        // 1.1 鏍¢獙鐖跺垎绫诲瓨鍦�
-        validateParentProductCategory(createReqVO.getParentId());
-        // 1.2 鍒嗙被鍚嶇О鏄惁瀛樺湪
-        validateProductNameExists(null, createReqVO.getParentId(), createReqVO.getName());
-
-        // 2. 鎻掑叆鍒嗙被
-        CrmProductCategoryDO category = BeanUtils.toBean(createReqVO, CrmProductCategoryDO.class);
-        productCategoryMapper.insert(category);
-
-        // 3. 璁板綍鎿嶄綔鏃ュ織涓婁笅鏂�
-        LogRecordContext.putVariable("productCategoryId", category.getId());
-        return category.getId();
-    }
-
-    @Override
-    @LogRecord(type = CRM_PRODUCT_CATEGORY_TYPE, subType = CRM_PRODUCT_CATEGORY_UPDATE_SUB_TYPE, bizNo = "{{#updateReqVO.id}}",
-            success = CRM_PRODUCT_CATEGORY_UPDATE_SUCCESS)
-    public void updateProductCategory(CrmProductCategoryCreateReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        validateProductCategoryExists(updateReqVO.getId());
-        // 1.2 鏍¢獙鐖跺垎绫诲瓨鍦�
-        validateParentProductCategory(updateReqVO.getParentId());
-        // 1.3 鍒嗙被鍚嶇О鏄惁瀛樺湪
-        validateProductNameExists(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName());
-
-        // 2. 鏇存柊鍒嗙被
-        CrmProductCategoryDO updateObj = BeanUtils.toBean(updateReqVO, CrmProductCategoryDO.class);
-        productCategoryMapper.updateById(updateObj);
-    }
-
-    private void validateProductCategoryExists(Long id) {
-        if (productCategoryMapper.selectById(id) == null) {
-            throw exception(PRODUCT_CATEGORY_NOT_EXISTS);
-        }
-    }
-
-    private void validateParentProductCategory(Long id) {
-        // 濡傛灉鏄牴鍒嗙被锛屾棤闇�楠岃瘉
-        if (Objects.equals(id, PARENT_ID_NULL)) {
-            return;
-        }
-        // 鐖跺垎绫讳笉瀛樺湪
-        CrmProductCategoryDO category = productCategoryMapper.selectById(id);
-        if (category == null) {
-            throw exception(PRODUCT_CATEGORY_PARENT_NOT_EXISTS);
-        }
-        // 鐖跺垎绫讳笉鑳芥槸浜岀骇鍒嗙被
-        if (!Objects.equals(category.getParentId(), PARENT_ID_NULL)) {
-            throw exception(PRODUCT_CATEGORY_PARENT_NOT_FIRST_LEVEL);
-        }
-    }
-
-    private void validateProductNameExists(Long id, Long parentId, String name) {
-        CrmProductCategoryDO category = productCategoryMapper.selectByParentIdAndName(parentId, name);
-        if (category == null
-            || category.getId().equals(id)) {
-            return;
-        }
-        throw exception(PRODUCT_CATEGORY_EXISTS);
-    }
-
-    @Override
-    @LogRecord(type = CRM_PRODUCT_CATEGORY_TYPE, subType = CRM_PRODUCT_CATEGORY_DELETE_SUB_TYPE, bizNo = "{{#id}}",
-            success = CRM_PRODUCT_CATEGORY_DELETE_SUCCESS)
-    public void deleteProductCategory(Long id) {
-        // 1.1 鏍¢獙瀛樺湪
-        validateProductCategoryExists(id);
-        // 1.2 鏍¢獙鏄惁杩樻湁瀛愬垎绫�
-        if (productCategoryMapper.selectCountByParentId(id) > 0) {
-            throw exception(PRODUCT_CATEGORY_EXISTS_CHILDREN);
-        }
-        // 1.3 鏍¢獙鏄惁琚骇鍝佷娇鐢�
-        if (crmProductService.getProductByCategoryId(id) > 0) {
-            throw exception(PRODUCT_CATEGORY_USED);
-        }
-        // 2. 鍒犻櫎
-        productCategoryMapper.deleteById(id);
-    }
-
-    @Override
-    public CrmProductCategoryDO getProductCategory(Long id) {
-        return productCategoryMapper.selectById(id);
-    }
-
-    @Override
-    public List<CrmProductCategoryDO> getProductCategoryList(CrmProductCategoryListReqVO listReqVO) {
-        return productCategoryMapper.selectList(listReqVO);
-    }
-
-    @Override
-    public List<CrmProductCategoryDO> getProductCategoryList(Collection<Long> ids) {
-        return productCategoryMapper.selectByIds(ids);
-    }
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java
deleted file mode 100644
index 9379734..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package cn.iocoder.yudao.module.crm.service.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductSaveReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * CRM 浜у搧 Service 鎺ュ彛
- *
- * @author ZanGe涓�
- */
-public interface CrmProductService {
-
-    /**
-     * 鍒涘缓浜у搧
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createProduct(@Valid CrmProductSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊浜у搧
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateProduct(@Valid CrmProductSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浜у搧
-     *
-     * @param id 缂栧彿
-     */
-    void deleteProduct(Long id);
-
-    /**
-     * 鑾峰緱浜у搧
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧
-     */
-    CrmProductDO getProduct(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍒楄〃
-     *
-     * @param ids 缂栧彿
-     * @return 浜у搧鍒楄〃
-     */
-    List<CrmProductDO> getProductList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浜у搧 Map
-     *
-     * @param ids 缂栧彿
-     * @return 浜у搧 Map
-     */
-    default Map<Long, CrmProductDO> getProductMap(Collection<Long> ids) {
-        return convertMap(getProductList(ids), CrmProductDO::getId);
-    }
-
-    /**
-     * 鑾峰緱浜у搧鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 浜у搧鍒嗛〉
-     */
-    PageResult<CrmProductDO> getProductPage(CrmProductPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱浜у搧鏁伴噺
-     *
-     * @param categoryId 鍒嗙被缂栧彿
-     * @return 浜у搧
-     */
-    Long getProductByCategoryId(Long categoryId);
-
-    /**
-     * 鑾峰緱鎸囧畾鐘舵�佺殑浜у搧鍒楄〃
-     *
-     * @param status 鐘舵��
-     * @return 浜у搧鍒楄〃
-     */
-    List<CrmProductDO> getProductListByStatus(Integer status);
-
-    /**
-     * 鏍¢獙浜у搧浠殑鏈夋晥鎬�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍒楄〃
-     */
-    List<CrmProductDO> validProductList(Collection<Long> ids);
-
-}
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductServiceImpl.java
deleted file mode 100644
index 04dc3f5..0000000
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductServiceImpl.java
+++ /dev/null
@@ -1,296 +0,0 @@
-package cn.iocoder.yudao.module.crm.service.product;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO;
-import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductSaveReqVO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
-import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
-import cn.iocoder.yudao.module.crm.dal.mysql.product.CrmProductMapper;
-import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
-import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
-import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
-import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission;
-import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
-import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
-import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemCreateReqDTO;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemUpdateReqDTO;
-import cn.iocoder.yudao.module.mdm.enums.MdmItemTypeEnum;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import com.mzt.logapi.context.LogRecordContext;
-import com.mzt.logapi.service.impl.DiffParseFunction;
-import com.mzt.logapi.starter.annotation.LogRecord;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*;
-
-
-/**
- * CRM 浜у搧 Service 瀹炵幇绫�
- *
- * 鏀归�犺鏄庯細浜у搧鏁版嵁缁熶竴浣跨敤 MDM 涓绘暟鎹鐞嗭紙itemType=2 浜у搧绫诲瀷锛�
- * - 鍒涘缓銆佹洿鏂版搷浣滈�氳繃 MDM API 杩涜
- * - 鏌ヨ鎿嶄綔浠� MDM 鑾峰彇鏁版嵁
- * - CRM 浜у搧琛ㄤ繚鐣欑敤浜庢潈闄愮鐞�
- *
- * @author ZanGe涓�
- */
-@Service
-@Validated
-public class CrmProductServiceImpl implements CrmProductService {
-
-    @Resource(name = "crmProductMapper")
-    private CrmProductMapper productMapper;
-
-    @Resource
-    private CrmProductCategoryService productCategoryService;
-    @Resource
-    private CrmPermissionService permissionService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @Resource
-    private MdmItemApi mdmItemApi;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    @LogRecord(type = CRM_PRODUCT_TYPE, subType = CRM_PRODUCT_CREATE_SUB_TYPE, bizNo = "{{#productId}}",
-            success = CRM_PRODUCT_CREATE_SUCCESS)
-    public Long createProduct(CrmProductSaveReqVO createReqVO) {
-        // 1. 鏍¢獙浜у搧
-        adminUserApi.validateUserList(Collections.singleton(createReqVO.getOwnerUserId()));
-        validateProductNoDuplicate(null, createReqVO.getNo());
-        validateProductCategoryExists(createReqVO.getCategoryId());
-
-        // 2. 閫氳繃 MDM API 鍒涘缓浜у搧
-        MdmItemCreateReqDTO createReqDTO = new MdmItemCreateReqDTO();
-        createReqDTO.setCode(createReqVO.getNo());
-        createReqDTO.setName(createReqVO.getName());
-        createReqDTO.setBarCode(createReqVO.getNo()); // 浣跨敤缂栫爜浣滀负鏉$爜
-        createReqDTO.setCategoryId(createReqVO.getCategoryId());
-        createReqDTO.setUnitMeasureId(createReqVO.getUnit() != null ? createReqVO.getUnit().longValue() : null);
-        createReqDTO.setItemType(MdmItemTypeEnum.PRODUCT.getType()); // 浜у搧绫诲瀷
-        createReqDTO.setStatus(createReqVO.getStatus() != null ? createReqVO.getStatus() : CommonStatusEnum.ENABLE.getStatus());
-        createReqDTO.setSalesPrice(createReqVO.getPrice());
-        createReqDTO.setRemark(createReqVO.getDescription());
-        Long itemId = mdmItemApi.createItem(createReqDTO).getCheckedData();
-
-        // 3. 鎻掑叆鏈湴浜у搧璁板綍锛堢敤浜庢潈闄愮鐞嗭級
-        CrmProductDO product = new CrmProductDO();
-        product.setId(itemId);
-        product.setName(createReqVO.getName());
-        product.setNo(createReqVO.getNo());
-        product.setUnit(createReqVO.getUnit());
-        product.setPrice(createReqVO.getPrice());
-        product.setStatus(createReqVO.getStatus());
-        product.setCategoryId(createReqVO.getCategoryId());
-        product.setDescription(createReqVO.getDescription());
-        product.setOwnerUserId(createReqVO.getOwnerUserId());
-        productMapper.insert(product);
-
-        // 4. 鎻掑叆鏁版嵁鏉冮檺
-        permissionService.createPermission(new CrmPermissionCreateReqBO().setUserId(product.getOwnerUserId())
-                .setBizType(CrmBizTypeEnum.CRM_PRODUCT.getType()).setBizId(product.getId())
-                .setLevel(CrmPermissionLevelEnum.OWNER.getLevel()));
-
-        // 5. 璁板綍鎿嶄綔鏃ュ織涓婁笅鏂�
-        LogRecordContext.putVariable("productId", product.getId());
-        return product.getId();
-    }
-
-    @Override
-    @LogRecord(type = CRM_PRODUCT_TYPE, subType = CRM_PRODUCT_UPDATE_SUB_TYPE, bizNo = "{{#updateReqVO.id}}",
-            success = CRM_PRODUCT_UPDATE_SUCCESS)
-    @CrmPermission(bizType = CrmBizTypeEnum.CRM_PRODUCT, bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE)
-    public void updateProduct(CrmProductSaveReqVO updateReqVO) {
-        // 1. 鏍¢獙浜у搧
-        updateReqVO.setOwnerUserId(null); // 涓嶄慨鏀硅礋璐d汉
-        CrmProductDO crmProductDO = validateProductExists(updateReqVO.getId());
-        validateProductNoDuplicate(updateReqVO.getId(), updateReqVO.getNo());
-        validateProductCategoryExists(updateReqVO.getCategoryId());
-
-        // 2. 閫氳繃 MDM API 鏇存柊浜у搧
-        MdmItemUpdateReqDTO updateReqDTO = new MdmItemUpdateReqDTO();
-        updateReqDTO.setId(updateReqVO.getId());
-        updateReqDTO.setCode(updateReqVO.getNo());
-        updateReqDTO.setName(updateReqVO.getName());
-        updateReqDTO.setBarCode(updateReqVO.getNo());
-        updateReqDTO.setCategoryId(updateReqVO.getCategoryId());
-        updateReqDTO.setUnitMeasureId(updateReqVO.getUnit() != null ? updateReqVO.getUnit().longValue() : null);
-        updateReqDTO.setItemType(MdmItemTypeEnum.PRODUCT.getType());
-        updateReqDTO.setStatus(updateReqVO.getStatus());
-        updateReqDTO.setSalesPrice(updateReqVO.getPrice());
-        updateReqDTO.setRemark(updateReqVO.getDescription());
-        mdmItemApi.updateItem(updateReqDTO);
-
-        // 3. 鏇存柊鏈湴浜у搧璁板綍
-        CrmProductDO updateObj = BeanUtils.toBean(updateReqVO, CrmProductDO.class);
-        productMapper.updateById(updateObj);
-
-        // 4. 璁板綍鎿嶄綔鏃ュ織涓婁笅鏂�
-        LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(crmProductDO, CrmProductSaveReqVO.class));
-    }
-
-    private CrmProductDO validateProductExists(Long id) {
-        // 浠� MDM 鏍¢獙
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null) {
-            throw exception(PRODUCT_NOT_EXISTS);
-        }
-        // 浠庢湰鍦拌幏鍙� CRM 浜у搧璁板綍
-        CrmProductDO product = productMapper.selectById(id);
-        if (product == null) {
-            // 濡傛灉鏈湴涓嶅瓨鍦紝鍒涘缓涓�涓悓姝ヨ褰�
-            product = convertToCrmProduct(item);
-            productMapper.insert(product);
-        }
-        return product;
-    }
-
-    private void validateProductNoDuplicate(Long id, String no) {
-        MdmItemRespDTO item = mdmItemApi.getItemByCode(no).getCheckedData();
-        if (item == null || item.getId().equals(id)) {
-            return;
-        }
-        throw exception(PRODUCT_NO_EXISTS);
-    }
-
-    private void validateProductCategoryExists(Long categoryId) {
-        CrmProductCategoryDO category = productCategoryService.getProductCategory(categoryId);
-        if (category == null) {
-            throw exception(PRODUCT_CATEGORY_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    @LogRecord(type = CRM_PRODUCT_TYPE, subType = CRM_PRODUCT_DELETE_SUB_TYPE, bizNo = "{{#id}}",
-            success = CRM_PRODUCT_DELETE_SUCCESS)
-    @CrmPermission(bizType = CrmBizTypeEnum.CRM_PRODUCT, bizId = "#id", level = CrmPermissionLevelEnum.OWNER)
-    public void deleteProduct(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateProductExists(id);
-        // 閫氳繃 MDM API 鍒犻櫎锛堟洿鏂扮姸鎬佷负绂佺敤锛�
-        mdmItemApi.updateItemStatus(id, CommonStatusEnum.DISABLE.getStatus());
-        // 鍒犻櫎鏈湴璁板綍
-        productMapper.deleteById(id);
-    }
-
-    @Override
-    @CrmPermission(bizType = CrmBizTypeEnum.CRM_PRODUCT, bizId = "#id", level = CrmPermissionLevelEnum.READ)
-    public CrmProductDO getProduct(Long id) {
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null || !MdmItemTypeEnum.PRODUCT.getType().equals(item.getItemType())) {
-            return null;
-        }
-        // 鑾峰彇鏈湴 CRM 浜у搧璁板綍锛堢敤浜庢潈闄愶級
-        CrmProductDO product = productMapper.selectById(id);
-        if (product == null) {
-            // 鍚屾鍒涘缓鏈湴璁板綍
-            product = convertToCrmProduct(item);
-            productMapper.insert(product);
-        } else {
-            // 鏇存柊鏈湴璁板綍鐨勬暟鎹�
-            product.setName(item.getName());
-            product.setNo(item.getCode());
-            product.setPrice(item.getSalesPrice());
-            product.setStatus(item.getStatus());
-            product.setCategoryId(item.getCategoryId());
-            product.setDescription(item.getRemark());
-        }
-        return product;
-    }
-
-    @Override
-    public PageResult<CrmProductDO> getProductPage(CrmProductPageReqVO pageReqVO) {
-        // 浠� MDM 鑾峰彇浜у搧鍒嗛〉鏁版嵁
-        cn.iocoder.yudao.framework.common.pojo.PageResult<MdmItemRespDTO> mdmPageResult =
-                mdmItemApi.getItemPage(MdmItemTypeEnum.PRODUCT.getType(), null,
-                        pageReqVO.getPageNo(), pageReqVO.getPageSize()).getCheckedData();
-        // 杞崲涓� CRM 浜у搧
-        List<CrmProductDO> list = mdmPageResult.getList().stream()
-                .map(this::convertToCrmProduct)
-                .collect(Collectors.toList());
-        return new PageResult<>(list, mdmPageResult.getTotal());
-    }
-
-    @Override
-    public Long getProductByCategoryId(Long categoryId) {
-        return mdmItemApi.getItemCountByCategoryId(categoryId).getCheckedData();
-    }
-
-    @Override
-    public List<CrmProductDO> getProductListByStatus(Integer status) {
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁
-        List<MdmItemRespDTO> items = mdmItemApi.getItemListByStatus(status).getCheckedData();
-        // 杩囨护浜у搧绫诲瀷骞惰浆鎹�
-        return items.stream()
-                .filter(item -> MdmItemTypeEnum.PRODUCT.getType().equals(item.getItemType()))
-                .map(this::convertToCrmProduct)
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public List<CrmProductDO> validProductList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        List<MdmItemRespDTO> items = mdmItemApi.getItemList(ids).getCheckedData();
-        Map<Long, MdmItemRespDTO> itemMap = convertMap(items, MdmItemRespDTO::getId);
-        List<CrmProductDO> result = new ArrayList<>();
-        for (Long id : ids) {
-            MdmItemRespDTO item = itemMap.get(id);
-            if (item == null) {
-                throw exception(PRODUCT_NOT_EXISTS);
-            }
-            if (CrmProductStatusEnum.isDisable(item.getStatus())) {
-                throw exception(PRODUCT_NOT_ENABLE, item.getName());
-            }
-            result.add(convertToCrmProduct(item));
-        }
-        return result;
-    }
-
-    @Override
-    public List<CrmProductDO> getProductList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        List<MdmItemRespDTO> items = mdmItemApi.getItemList(ids).getCheckedData();
-        return items.stream()
-                .filter(item -> MdmItemTypeEnum.PRODUCT.getType().equals(item.getItemType()))
-                .map(this::convertToCrmProduct)
-                .collect(Collectors.toList());
-    }
-
-    /**
-     * 灏� MDM 鐗╂枡杞崲涓� CRM 浜у搧
-     */
-    private CrmProductDO convertToCrmProduct(MdmItemRespDTO item) {
-        CrmProductDO product = new CrmProductDO();
-        product.setId(item.getId());
-        product.setName(item.getName());
-        product.setNo(item.getCode());
-        product.setUnit(item.getUnitMeasureId() != null ? item.getUnitMeasureId().intValue() : null);
-        product.setPrice(item.getSalesPrice());
-        product.setStatus(item.getStatus());
-        product.setCategoryId(item.getCategoryId());
-        product.setDescription(item.getRemark());
-        return product;
-    }
-
-}
diff --git a/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApi.java b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApi.java
index a198dd4..92cfdc2 100644
--- a/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApi.java
+++ b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApi.java
@@ -1,8 +1,10 @@
 package cn.iocoder.yudao.module.erp.api.purchase;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO;
 import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderRespDTO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -38,4 +40,39 @@
      */
     CommonResult<List<ErpPurchaseOrderRespDTO>> getPurchaseOrderList(List<Long> ids);
 
+    /**
+     * 鑾峰彇閲囪喘璁㈠崟鏄庣粏鍒楄〃
+     *
+     * @param orderId 璁㈠崟缂栧彿
+     * @return 鏄庣粏鍒楄〃
+     */
+    CommonResult<List<ErpPurchaseOrderItemRespDTO>> getPurchaseOrderItemList(Long orderId);
+
+    /**
+     * 鑾峰彇閲囪喘璁㈠崟鏄庣粏
+     *
+     * @param id 鏄庣粏缂栧彿
+     * @return 鏄庣粏
+     */
+    CommonResult<ErpPurchaseOrderItemRespDTO> getPurchaseOrderItem(Long id);
+
+    /**
+     * 鏇存柊閲囪喘璁㈠崟鏄庣粏鐨勫叆搴撴暟閲�
+     *
+     * @param orderItemId 鏄庣粏缂栧彿
+     * @param inCount     鍏ュ簱鏁伴噺澧為噺
+     */
+    CommonResult<Boolean> updateOrderItemInCount(Long orderItemId, BigDecimal inCount);
+
+    /**
+     * 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撶姸鎬�
+     *
+     * 鏍规嵁鏄庣粏鍏ュ簱鏁伴噺鑷姩璁$畻璁㈠崟鐘舵�侊細
+     * - 鎵�鏈夋槑缁嗛兘瀹屾垚鍏ュ簱 鈫� 瀹屾垚鐘舵��
+     * - 閮ㄥ垎鏄庣粏瀹屾垚鍏ュ簱 鈫� 閮ㄥ垎鍏ュ簱鐘舵��
+     *
+     * @param orderId 璁㈠崟缂栧彿
+     */
+    CommonResult<Boolean> updateOrderInStatus(Long orderId);
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/dto/ErpPurchaseOrderItemRespDTO.java b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/dto/ErpPurchaseOrderItemRespDTO.java
new file mode 100644
index 0000000..7df8499
--- /dev/null
+++ b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/dto/ErpPurchaseOrderItemRespDTO.java
@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.erp.api.purchase.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Schema(description = "RPC 鏈嶅姟 - ERP 閲囪喘璁㈠崟鏄庣粏 Response DTO")
+@Data
+public class ErpPurchaseOrderItemRespDTO {
+
+    @Schema(description = "鏄庣粏缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long id;
+
+    @Schema(description = "閲囪喘璁㈠崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long orderId;
+
+    @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long productId;
+
+    @Schema(description = "浜у搧鍗曚綅缂栧彿", example = "1")
+    private Long productUnitId;
+
+    @Schema(description = "浜у搧鍗曚环锛屽崟浣嶏細鍏�", example = "100.00")
+    private BigDecimal productPrice;
+
+    @Schema(description = "璁㈣喘鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private BigDecimal count;
+
+    @Schema(description = "宸插叆搴撴暟閲�", example = "5")
+    private BigDecimal inCount;
+
+    @Schema(description = "宸查��璐ф暟閲�", example = "0")
+    private BigDecimal returnCount;
+
+    @Schema(description = "澶囨敞", example = "澶囨敞淇℃伅")
+    private String remark;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApi.java b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApi.java
index cdc79e4..c6b2ccd 100644
--- a/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApi.java
+++ b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApi.java
@@ -2,7 +2,11 @@
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderCreateReqDTO;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
 import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderRespDTO;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * ERP 閿�鍞鍗� API 鎺ュ彛
@@ -37,4 +41,39 @@
      */
     CommonResult<ErpSaleOrderRespDTO> getSaleOrderByContractId(Long contractId);
 
+    /**
+     * 鑾峰彇閿�鍞鍗曟槑缁嗗垪琛�
+     *
+     * @param orderId 璁㈠崟缂栧彿
+     * @return 鏄庣粏鍒楄〃
+     */
+    CommonResult<List<ErpSaleOrderItemRespDTO>> getSaleOrderItemList(Long orderId);
+
+    /**
+     * 鑾峰彇閿�鍞鍗曟槑缁�
+     *
+     * @param id 鏄庣粏缂栧彿
+     * @return 鏄庣粏
+     */
+    CommonResult<ErpSaleOrderItemRespDTO> getSaleOrderItem(Long id);
+
+    /**
+     * 鏇存柊閿�鍞鍗曟槑缁嗙殑鍑哄簱鏁伴噺
+     *
+     * @param orderItemId 鏄庣粏缂栧彿
+     * @param outCount    鍑哄簱鏁伴噺澧為噺
+     */
+    CommonResult<Boolean> updateOrderItemOutCount(Long orderItemId, BigDecimal outCount);
+
+    /**
+     * 鏇存柊閿�鍞鍗曠殑鍑哄簱鐘舵��
+     *
+     * 鏍规嵁鏄庣粏鍑哄簱鏁伴噺鑷姩璁$畻璁㈠崟鐘舵�侊細
+     * - 鎵�鏈夋槑缁嗛兘瀹屾垚鍑哄簱 鈫� 瀹屾垚鐘舵��
+     * - 閮ㄥ垎鏄庣粏瀹屾垚鍑哄簱 鈫� 閮ㄥ垎鍑哄簱鐘舵��
+     *
+     * @param orderId 璁㈠崟缂栧彿
+     */
+    CommonResult<Boolean> updateOrderOutStatus(Long orderId);
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/dto/ErpSaleOrderItemRespDTO.java b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/dto/ErpSaleOrderItemRespDTO.java
new file mode 100644
index 0000000..ed33cae
--- /dev/null
+++ b/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/sale/dto/ErpSaleOrderItemRespDTO.java
@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.erp.api.sale.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Schema(description = "RPC 鏈嶅姟 - ERP 閿�鍞鍗曟槑缁� Response DTO")
+@Data
+public class ErpSaleOrderItemRespDTO {
+
+    @Schema(description = "鏄庣粏缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long id;
+
+    @Schema(description = "閿�鍞鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long orderId;
+
+    @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long productId;
+
+    @Schema(description = "浜у搧鍗曚綅缂栧彿", example = "1")
+    private Long productUnitId;
+
+    @Schema(description = "浜у搧鍗曚环锛屽崟浣嶏細鍏�", example = "100.00")
+    private BigDecimal productPrice;
+
+    @Schema(description = "璁㈣喘鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private BigDecimal count;
+
+    @Schema(description = "宸插嚭搴撴暟閲�", example = "5")
+    private BigDecimal outCount;
+
+    @Schema(description = "宸查��璐ф暟閲�", example = "0")
+    private BigDecimal returnCount;
+
+    @Schema(description = "澶囨敞", example = "澶囨敞淇℃伅")
+    private String remark;
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/pom.xml b/yudao-module-erp/pom.xml
index 475b7ee..ec7a802 100644
--- a/yudao-module-erp/pom.xml
+++ b/yudao-module-erp/pom.xml
@@ -52,13 +52,6 @@
             <version>${revision}</version>
         </dependency>
 
-        <!-- WMS 浠撳偍鐗╂祦 API -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-wms-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
         <!-- 涓氬姟缁勪欢 -->
 
         <!-- Web 鐩稿叧 -->
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java
index 778f021..3b04bf6 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java
@@ -2,8 +2,11 @@
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO;
 import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderRespDTO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderItemMapper;
 import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderService;
 import jakarta.annotation.Resource;
@@ -11,6 +14,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.List;
 
@@ -28,6 +32,9 @@
 
     @Resource
     private ErpPurchaseOrderService purchaseOrderService;
+
+    @Resource
+    private ErpPurchaseOrderItemMapper purchaseOrderItemMapper;
 
     @Override
     public CommonResult<ErpPurchaseOrderRespDTO> getPurchaseOrder(Long id) {
@@ -55,4 +62,49 @@
         return success(BeanUtils.toBean(orders, ErpPurchaseOrderRespDTO.class));
     }
 
+    @Override
+    public CommonResult<List<ErpPurchaseOrderItemRespDTO>> getPurchaseOrderItemList(Long orderId) {
+        if (orderId == null) {
+            return success(Collections.emptyList());
+        }
+        List<ErpPurchaseOrderItemDO> items = purchaseOrderService.getPurchaseOrderItemListByOrderId(orderId);
+        return success(BeanUtils.toBean(items, ErpPurchaseOrderItemRespDTO.class));
+    }
+
+    @Override
+    public CommonResult<ErpPurchaseOrderItemRespDTO> getPurchaseOrderItem(Long id) {
+        if (id == null) {
+            return success(null);
+        }
+        ErpPurchaseOrderItemDO item = purchaseOrderItemMapper.selectById(id);
+        return success(BeanUtils.toBean(item, ErpPurchaseOrderItemRespDTO.class));
+    }
+
+    @Override
+    public CommonResult<Boolean> updateOrderItemInCount(Long orderItemId, BigDecimal inCount) {
+        if (orderItemId == null || inCount == null) {
+            return success(false);
+        }
+        ErpPurchaseOrderItemDO item = purchaseOrderItemMapper.selectById(orderItemId);
+        if (item == null) {
+            return success(false);
+        }
+        // 绱姞鍏ュ簱鏁伴噺
+        BigDecimal newInCount = (item.getInCount() != null ? item.getInCount() : BigDecimal.ZERO).add(inCount);
+        ErpPurchaseOrderItemDO updateItem = new ErpPurchaseOrderItemDO();
+        updateItem.setId(orderItemId);
+        updateItem.setInCount(newInCount);
+        purchaseOrderItemMapper.updateById(updateItem);
+        return success(true);
+    }
+
+    @Override
+    public CommonResult<Boolean> updateOrderInStatus(Long orderId) {
+        if (orderId == null) {
+            return success(false);
+        }
+        purchaseOrderService.updatePurchaseOrderInStatus(orderId);
+        return success(true);
+    }
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java
index 4e902eb..86acb62 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java
@@ -3,15 +3,22 @@
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderCreateReqDTO;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
 import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderRespDTO;
 import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO;
+import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderItemMapper;
 import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper;
 import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderService;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.Collections;
+import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
@@ -30,6 +37,9 @@
 
     @Resource
     private ErpSaleOrderMapper saleOrderMapper;
+
+    @Resource
+    private ErpSaleOrderItemMapper saleOrderItemMapper;
 
     @Override
     public CommonResult<Long> createSaleOrder(ErpSaleOrderCreateReqDTO createReqDTO) {
@@ -56,4 +66,49 @@
         return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class));
     }
 
+    @Override
+    public CommonResult<List<ErpSaleOrderItemRespDTO>> getSaleOrderItemList(Long orderId) {
+        if (orderId == null) {
+            return success(Collections.emptyList());
+        }
+        List<ErpSaleOrderItemDO> items = saleOrderService.getSaleOrderItemListByOrderId(orderId);
+        return success(BeanUtils.toBean(items, ErpSaleOrderItemRespDTO.class));
+    }
+
+    @Override
+    public CommonResult<ErpSaleOrderItemRespDTO> getSaleOrderItem(Long id) {
+        if (id == null) {
+            return success(null);
+        }
+        ErpSaleOrderItemDO item = saleOrderItemMapper.selectById(id);
+        return success(BeanUtils.toBean(item, ErpSaleOrderItemRespDTO.class));
+    }
+
+    @Override
+    public CommonResult<Boolean> updateOrderItemOutCount(Long orderItemId, BigDecimal outCount) {
+        if (orderItemId == null || outCount == null) {
+            return success(false);
+        }
+        ErpSaleOrderItemDO item = saleOrderItemMapper.selectById(orderItemId);
+        if (item == null) {
+            return success(false);
+        }
+        // 绱姞鍑哄簱鏁伴噺
+        BigDecimal newOutCount = (item.getOutCount() != null ? item.getOutCount() : BigDecimal.ZERO).add(outCount);
+        ErpSaleOrderItemDO updateItem = new ErpSaleOrderItemDO();
+        updateItem.setId(orderItemId);
+        updateItem.setOutCount(newOutCount);
+        saleOrderItemMapper.updateById(updateItem);
+        return success(true);
+    }
+
+    @Override
+    public CommonResult<Boolean> updateOrderOutStatus(Long orderId) {
+        if (orderId == null) {
+            return success(false);
+        }
+        saleOrderService.updateSaleOrderOutStatus(orderId);
+        return success(true);
+    }
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/ErpMesWarehouseMappingController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/ErpMesWarehouseMappingController.java
deleted file mode 100644
index 961568f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/ErpMesWarehouseMappingController.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.mapping;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingCreateReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingUpdateReqVO;
-import cn.iocoder.yudao.module.erp.convert.mapping.ErpMesWarehouseMappingConvert;
-import cn.iocoder.yudao.module.erp.dal.dataobject.mapping.ErpMesWarehouseMappingDO;
-import cn.iocoder.yudao.module.erp.service.product.mapping.ErpMesWarehouseMappingService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠 Controller
- */
-@Tag(name = "绠$悊鍚庡彴 - ERP浠撳簱涓嶮ES浠撳簱鏄犲皠")
-@RestController
-@RequestMapping("/erp/warehouse-mapping")
-@Validated
-public class ErpMesWarehouseMappingController {
-
-    @Resource
-    private ErpMesWarehouseMappingService mappingService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浠撳簱鏄犲皠")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:update')")
-    public CommonResult<Long> createMapping(@Valid @RequestBody ErpMesWarehouseMappingCreateReqVO createReqVO) {
-        return success(mappingService.createMapping(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浠撳簱鏄犲皠")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:update')")
-    public CommonResult<Boolean> updateMapping(@Valid @RequestBody ErpMesWarehouseMappingUpdateReqVO updateReqVO) {
-        mappingService.updateMapping(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浠撳簱鏄犲皠")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:delete')")
-    public CommonResult<Boolean> deleteMapping(@RequestParam("id") Long id) {
-        mappingService.deleteMapping(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰彇浠撳簱鏄犲皠")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
-    public CommonResult<ErpMesWarehouseMappingDO> getMapping(@RequestParam("id") Long id) {
-        return success(mappingService.getMapping(id));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰彇浠撳簱鏄犲皠鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
-    public CommonResult<PageResult<ErpMesWarehouseMappingDO>> getMappingPage(@Valid ErpMesWarehouseMappingPageReqVO pageReqVO) {
-        return success(mappingService.getMappingPage(pageReqVO));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingCreateReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingCreateReqVO.java
deleted file mode 100644
index 97dfb3e..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingCreateReqVO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.mapping.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠鍒涘缓 Request VO
- */
-@Schema(description = "绠$悊鍚庡彴 - ERP浠撳簱涓嶮ES浠撳簱鏄犲皠鍒涘缓 Request VO")
-@Data
-public class ErpMesWarehouseMappingCreateReqVO {
-
-    @Schema(description = "ERP浠撳簱ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "ERP浠撳簱ID涓嶈兘涓虹┖")
-    private Long erpWarehouseId;
-
-    @Schema(description = "ERP浠撳簱鍚嶇О")
-    private String erpWarehouseName;
-
-    @Schema(description = "MES浠撳簱ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "MES浠撳簱ID涓嶈兘涓虹┖")
-    private Long mesWarehouseId;
-
-    @Schema(description = "MES浠撳簱鍚嶇О")
-    private String mesWarehouseName;
-
-    @Schema(description = "鐘舵�侊紙1-鍚敤 0-绂佺敤锛�")
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingPageReqVO.java
deleted file mode 100644
index f9c3f0d..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingPageReqVO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.mapping.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠鍒嗛〉 Request VO
- */
-@Schema(description = "绠$悊鍚庡彴 - ERP浠撳簱涓嶮ES浠撳簱鏄犲皠鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ErpMesWarehouseMappingPageReqVO extends PageParam {
-
-    @Schema(description = "ERP浠撳簱ID")
-    private Long erpWarehouseId;
-
-    @Schema(description = "MES浠撳簱ID")
-    private Long mesWarehouseId;
-
-    @Schema(description = "鐘舵��")
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingUpdateReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingUpdateReqVO.java
deleted file mode 100644
index 7d7170c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mapping/vo/ErpMesWarehouseMappingUpdateReqVO.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.mapping.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠鏇存柊 Request VO
- */
-@Schema(description = "绠$悊鍚庡彴 - ERP浠撳簱涓嶮ES浠撳簱鏄犲皠鏇存柊 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ErpMesWarehouseMappingUpdateReqVO extends ErpMesWarehouseMappingCreateReqVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "缂栧彿涓嶈兘涓虹┖")
-    private Long id;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java
deleted file mode 100644
index d7bc7a7..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductCategoryController.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategorySaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductCategoryService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 浜у搧鍒嗙被")
-@RestController
-@RequestMapping("/erp/product-category")
-@Validated
-public class ErpProductCategoryController {
-
-    @Resource
-    private ErpProductCategoryService productCategoryService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浜у搧鍒嗙被")
-    @PreAuthorize("@ss.hasPermission('erp:product-category:create')")
-    public CommonResult<Long> createProductCategory(@Valid @RequestBody ErpProductCategorySaveReqVO createReqVO) {
-        return success(productCategoryService.createProductCategory(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浜у搧鍒嗙被")
-    @PreAuthorize("@ss.hasPermission('erp:product-category:update')")
-    public CommonResult<Boolean> updateProductCategory(@Valid @RequestBody ErpProductCategorySaveReqVO updateReqVO) {
-        productCategoryService.updateProductCategory(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浜у搧鍒嗙被")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:product-category:delete')")
-    public CommonResult<Boolean> deleteProductCategory(@RequestParam("id") Long id) {
-        productCategoryService.deleteProductCategory(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗙被")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:product-category:query')")
-    public CommonResult<ErpProductCategoryRespVO> getProductCategory(@RequestParam("id") Long id) {
-        ErpProductCategoryDO category = productCategoryService.getProductCategory(id);
-        return success(BeanUtils.toBean(category, ErpProductCategoryRespVO.class));
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗙被鍒楄〃")
-    @PreAuthorize("@ss.hasPermission('erp:product-category:query')")
-    public CommonResult<List<ErpProductCategoryRespVO>> getProductCategoryList(@Valid ErpProductCategoryListReqVO listReqVO) {
-        List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList(listReqVO);
-        return success(BeanUtils.toBean(list, ErpProductCategoryRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗙被绮剧畝鍒楄〃", description = "鍙寘鍚寮�鍚殑鍒嗙被锛屼富瑕佺敤浜庡墠绔殑涓嬫媺閫夐」")
-    public CommonResult<List<ErpProductCategoryRespVO>> getProductCategorySimpleList() {
-        List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList(
-                new ErpProductCategoryListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
-        return success(convertList(list, category -> new ErpProductCategoryRespVO()
-                .setId(category.getId()).setName(category.getName()).setParentId(category.getParentId())));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浜у搧鍒嗙被 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:product-category:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportProductCategoryExcel(@Valid ErpProductCategoryListReqVO listReqVO,
-              HttpServletResponse response) throws IOException {
-        List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList(listReqVO);
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浜у搧鍒嗙被.xls", "鏁版嵁", ErpProductCategoryRespVO.class,
-                        BeanUtils.toBean(list, ErpProductCategoryRespVO.class));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java
deleted file mode 100644
index 0c3f727..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 浜у搧")
-@RestController
-@RequestMapping("/erp/product")
-@Validated
-public class ErpProductController {
-
-    @Resource
-    private ErpProductService productService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浜у搧")
-    @PreAuthorize("@ss.hasPermission('erp:product:create')")
-    public CommonResult<Long> createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) {
-        return success(productService.createProduct(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浜у搧")
-    @PreAuthorize("@ss.hasPermission('erp:product:update')")
-    public CommonResult<Boolean> updateProduct(@Valid @RequestBody ProductSaveReqVO updateReqVO) {
-        productService.updateProduct(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浜у搧")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:product:delete')")
-    public CommonResult<Boolean> deleteProduct(@RequestParam("id") Long id) {
-        productService.deleteProduct(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:product:query')")
-    public CommonResult<ErpProductRespVO> getProduct(@RequestParam("id") Long id) {
-        ErpProductRespVO product = productService.getProductVO(id);
-        return success(product);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浜у搧鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:product:query')")
-    public CommonResult<PageResult<ErpProductRespVO>> getProductPage(@Valid ErpProductPageReqVO pageReqVO) {
-        return success(productService.getProductVOPage(pageReqVO));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱浜у搧绮剧畝鍒楄〃", description = "鍙寘鍚寮�鍚殑浜у搧锛屼富瑕佺敤浜庡墠绔殑涓嬫媺閫夐」")
-    public CommonResult<List<ErpProductRespVO>> getProductSimpleList() {
-        List<ErpProductRespVO> list = productService.getProductVOListByStatus(CommonStatusEnum.ENABLE.getStatus());
-        return success(convertList(list, product -> new ErpProductRespVO().setId(product.getId())
-                .setName(product.getName()).setBarCode(product.getBarCode())
-                .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName())
-                .setUnitId(product.getUnitId()).setUnitName(product.getUnitName())
-                .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()).setMinPrice(product.getMinPrice())));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浜у搧 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:product:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportProductExcel(@Valid ErpProductPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        PageResult<ErpProductRespVO> pageResult = productService.getProductVOPage(pageReqVO);
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浜у搧.xls", "鏁版嵁", ErpProductRespVO.class,
-                pageResult.getList());
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java
deleted file mode 100644
index 3be6dd9..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 浜у搧鍗曚綅")
-@RestController
-@RequestMapping("/erp/product-unit")
-@Validated
-public class ErpProductUnitController {
-
-    @Resource
-    private ErpProductUnitService productUnitService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浜у搧鍗曚綅")
-    @PreAuthorize("@ss.hasPermission('erp:product-unit:create')")
-    public CommonResult<Long> createProductUnit(@Valid @RequestBody ErpProductUnitSaveReqVO createReqVO) {
-        return success(productUnitService.createProductUnit(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浜у搧鍗曚綅")
-    @PreAuthorize("@ss.hasPermission('erp:product-unit:update')")
-    public CommonResult<Boolean> updateProductUnit(@Valid @RequestBody ErpProductUnitSaveReqVO updateReqVO) {
-        productUnitService.updateProductUnit(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浜у搧鍗曚綅")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:product-unit:delete')")
-    public CommonResult<Boolean> deleteProductUnit(@RequestParam("id") Long id) {
-        productUnitService.deleteProductUnit(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧鍗曚綅")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:product-unit:query')")
-    public CommonResult<ErpProductUnitRespVO> getProductUnit(@RequestParam("id") Long id) {
-        ErpProductUnitDO productUnit = productUnitService.getProductUnit(id);
-        return success(BeanUtils.toBean(productUnit, ErpProductUnitRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浜у搧鍗曚綅鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:product-unit:query')")
-    public CommonResult<PageResult<ErpProductUnitRespVO>> getProductUnitPage(@Valid ErpProductUnitPageReqVO pageReqVO) {
-        PageResult<ErpProductUnitDO> pageResult = productUnitService.getProductUnitPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, ErpProductUnitRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱浜у搧鍗曚綅绮剧畝鍒楄〃", description = "鍙寘鍚寮�鍚殑鍗曚綅锛屼富瑕佺敤浜庡墠绔殑涓嬫媺閫夐」")
-    public CommonResult<List<ErpProductUnitRespVO>> getProductUnitSimpleList() {
-        List<ErpProductUnitDO> list = productUnitService.getProductUnitListByStatus(CommonStatusEnum.ENABLE.getStatus());
-        return success(convertList(list, unit -> new ErpProductUnitRespVO().setId(unit.getId()).setName(unit.getName())));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浜у搧鍗曚綅 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:product-unit:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportProductUnitExcel(@Valid ErpProductUnitPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpProductUnitDO> list = productUnitService.getProductUnitPage(pageReqVO).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浜у搧鍗曚綅.xls", "鏁版嵁", ErpProductUnitRespVO.class,
-                        BeanUtils.toBean(list, ErpProductUnitRespVO.class));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java
deleted file mode 100644
index b9b530e..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryListReqVO.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.category;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍒嗙被鍒楄〃 Request VO")
-@Data
-public class ErpProductCategoryListReqVO {
-
-    @Schema(description = "鍒嗙被鍚嶇О", example = "鑺嬭壙")
-    private String name;
-
-    @Schema(description = "寮�鍚姸鎬�", example = "1")
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java
deleted file mode 100644
index 29d4c2f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategoryRespVO.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.category;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍒嗙被 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpProductCategoryRespVO {
-
-    @Schema(description = "鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "5860")
-    @ExcelProperty("鍒嗙被缂栧彿")
-    private Long id;
-
-    @Schema(description = "鐖跺垎绫荤紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "21829")
-    @ExcelProperty("鐖跺垎绫荤紪鍙�")
-    private Long parentId;
-
-    @Schema(description = "鍒嗙被鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬭壙")
-    @ExcelProperty("鍒嗙被鍚嶇О")
-    private String name;
-
-    @Schema(description = "鍒嗙被缂栫爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "S110")
-    @ExcelProperty("鍒嗙被缂栫爜")
-    private String code;
-
-    @Schema(description = "鍒嗙被鎺掑簭", example = "10")
-    @ExcelProperty("鍒嗙被鎺掑簭")
-    private Integer sort;
-
-    @Schema(description = "寮�鍚姸鎬�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty(value = "寮�鍚姸鎬�", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.COMMON_STATUS)
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java
deleted file mode 100644
index a3c82dc..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/category/ErpProductCategorySaveReqVO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.category;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍒嗙被鏂板/淇敼 Request VO")
-@Data
-public class ErpProductCategorySaveReqVO {
-
-    @Schema(description = "鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "5860")
-    private Long id;
-
-    @Schema(description = "鐖跺垎绫荤紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "21829")
-    @NotNull(message = "鐖跺垎绫荤紪鍙蜂笉鑳戒负绌�")
-    private Long parentId;
-
-    @Schema(description = "鍒嗙被鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬭壙")
-    @NotEmpty(message = "鍒嗙被鍚嶇О涓嶈兘涓虹┖")
-    private String name;
-
-    @Schema(description = "鍒嗙被缂栫爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "S110")
-    @NotEmpty(message = "鍒嗙被缂栫爜涓嶈兘涓虹┖")
-    private String code;
-
-    @Schema(description = "鍒嗙被鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @NotNull(message = "鍒嗙被鎺掑簭涓嶈兘涓虹┖")
-    private Integer sort;
-
-    @Schema(description = "寮�鍚姸鎬�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "寮�鍚姸鎬佷笉鑳戒负绌�")
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java
deleted file mode 100644
index de4f814..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductPageReqVO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product;
-
-import lombok.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpProductPageReqVO extends PageParam {
-
-    @Schema(description = "浜у搧鍚嶇О", example = "鏉庡洓")
-    private String name;
-
-    @Schema(description = "浜у搧鍒嗙被缂栧彿", example = "11161")
-    private Long categoryId;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java
deleted file mode 100644
index 8dcc9f8..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpProductRespVO {
-
-    @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "15672")
-    @ExcelProperty("浜у搧缂栧彿")
-    private Long id;
-
-    @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-    @ExcelProperty("浜у搧鍚嶇О")
-    private String name;
-
-    @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "X110")
-    @ExcelProperty("浜у搧鏉$爜")
-    private String barCode;
-
-    @Schema(description = "浜у搧鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161")
-    private Long categoryId;
-    @Schema(description = "浜у搧鍒嗙被", requiredMode = Schema.RequiredMode.REQUIRED, example = "姘存灉")
-    @ExcelProperty("浜у搧鍒嗙被")
-    private String categoryName;
-
-    @Schema(description = "鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "8869")
-    private Long unitId;
-    @Schema(description = "鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "涓�")
-    @ExcelProperty("鍗曚綅")
-    private String unitName;
-
-    @Schema(description = "浜у搧鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("浜у搧鐘舵��")
-    private Integer status;
-
-    @Schema(description = "浜у搧瑙勬牸", example = "绾㈣壊")
-    @ExcelProperty("浜у搧瑙勬牸")
-    private String standard;
-
-    @Schema(description = "浜у搧澶囨敞", example = "浣犵寽")
-    @ExcelProperty("浜у搧澶囨敞")
-    private String remark;
-
-    @Schema(description = "淇濊川鏈熷ぉ鏁�", example = "10")
-    @ExcelProperty("淇濊川鏈熷ぉ鏁�")
-    private Integer expiryDay;
-
-    @Schema(description = "鍩虹閲嶉噺锛坘g锛�", example = "1.00")
-    @ExcelProperty("鍩虹閲嶉噺锛坘g锛�")
-    private BigDecimal weight;
-
-    @Schema(description = "閲囪喘浠锋牸锛屽崟浣嶏細鍏�", example = "10.30")
-    @ExcelProperty("閲囪喘浠锋牸锛屽崟浣嶏細鍏�")
-    private BigDecimal purchasePrice;
-
-    @Schema(description = "閿�鍞环鏍硷紝鍗曚綅锛氬厓", example = "74.32")
-    @ExcelProperty("閿�鍞环鏍硷紝鍗曚綅锛氬厓")
-    private BigDecimal salePrice;
-
-    @Schema(description = "鏈�浣庝环鏍硷紝鍗曚綅锛氬厓", example = "161.87")
-    @ExcelProperty("鏈�浣庝环鏍硷紝鍗曚綅锛氬厓")
-    private BigDecimal minPrice;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java
deleted file mode 100644
index 6cf806e..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ProductSaveReqVO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鏂板/淇敼 Request VO")
-@Data
-public class ProductSaveReqVO {
-
-    @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "15672")
-    private Long id;
-
-    @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-    @NotEmpty(message = "浜у搧鍚嶇О涓嶈兘涓虹┖")
-    private String name;
-
-    @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "X110")
-    @NotEmpty(message = "浜у搧鏉$爜涓嶈兘涓虹┖")
-    private String barCode;
-
-    @Schema(description = "浜у搧鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161")
-    @NotNull(message = "浜у搧鍒嗙被缂栧彿涓嶈兘涓虹┖")
-    private Long categoryId;
-
-    @Schema(description = "鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "8869")
-    @NotNull(message = "鍗曚綅缂栧彿涓嶈兘涓虹┖")
-    private Long unitId;
-
-    @Schema(description = "浜у搧鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotNull(message = "浜у搧鐘舵�佷笉鑳戒负绌�")
-    private Integer status;
-
-    @Schema(description = "浜у搧瑙勬牸", example = "绾㈣壊")
-    private String standard;
-
-    @Schema(description = "浜у搧澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "淇濊川鏈熷ぉ鏁�", example = "10")
-    private Integer expiryDay;
-
-    @Schema(description = "鍩虹閲嶉噺锛坘g锛�", example = "1.00")
-    private BigDecimal weight;
-
-    @Schema(description = "閲囪喘浠锋牸锛屽崟浣嶏細鍏�", example = "10.30")
-    private BigDecimal purchasePrice;
-
-    @Schema(description = "閿�鍞环鏍硷紝鍗曚綅锛氬厓", example = "74.32")
-    private BigDecimal salePrice;
-
-    @Schema(description = "鏈�浣庝环鏍硷紝鍗曚綅锛氬厓", example = "161.87")
-    private BigDecimal minPrice;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java
deleted file mode 100644
index 87119c1..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitPageReqVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍗曚綅鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpProductUnitPageReqVO extends PageParam {
-
-    @Schema(description = "鍗曚綅鍚嶅瓧", example = "鑺嬭壙")
-    private String name;
-
-    @Schema(description = "鍗曚綅鐘舵��", example = "1")
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java
deleted file mode 100644
index 3044d5a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitRespVO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍗曚綅 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpProductUnitRespVO {
-
-    @Schema(description = "鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "31254")
-    @ExcelProperty("鍗曚綅缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍗曚綅鍚嶅瓧", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬭壙")
-    @ExcelProperty("鍗曚綅鍚嶅瓧")
-    private String name;
-
-    @Schema(description = "鍗曚綅鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("鍗曚綅鐘舵��")
-    @DictFormat(DictTypeConstants.COMMON_STATUS)
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java
deleted file mode 100644
index e413ec1..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧鍗曚綅鏂板/淇敼 Request VO")
-@Data
-public class ErpProductUnitSaveReqVO {
-
-    @Schema(description = "鍗曚綅缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "31254")
-    private Long id;
-
-    @Schema(description = "鍗曚綅鍚嶅瓧", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬭壙")
-    @NotEmpty(message = "鍗曚綅鍚嶅瓧涓嶈兘涓虹┖")
-    private String name;
-
-    @Schema(description = "鍗曚綅鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "鍗曚綅鐘舵�佷笉鑳戒负绌�")
-    @InEnum(CommonStatusEnum.class)
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java
deleted file mode 100644
index 3a63540..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseInController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseInService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 閲囪喘鍏ュ簱")
-@RestController
-@RequestMapping("/erp/purchase-in")
-@Validated
-public class ErpPurchaseInController {
-
-    @Resource
-    private ErpPurchaseInService purchaseInService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpSupplierService supplierService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓閲囪喘鍏ュ簱")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:create')")
-    public CommonResult<Long> createPurchaseIn(@Valid @RequestBody ErpPurchaseInSaveReqVO createReqVO) {
-        return success(purchaseInService.createPurchaseIn(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊閲囪喘鍏ュ簱")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:update')")
-    public CommonResult<Boolean> updatePurchaseIn(@Valid @RequestBody ErpPurchaseInSaveReqVO updateReqVO) {
-        purchaseInService.updatePurchaseIn(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊閲囪喘鍏ュ簱鐨勭姸鎬�")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:update-status')")
-    public CommonResult<Boolean> updatePurchaseInStatus(@RequestParam("id") Long id,
-                                                      @RequestParam("status") Integer status) {
-        purchaseInService.updatePurchaseInStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎閲囪喘鍏ュ簱")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:delete')")
-    public CommonResult<Boolean> deletePurchaseIn(@RequestParam("ids") List<Long> ids) {
-        purchaseInService.deletePurchaseIn(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱閲囪喘鍏ュ簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:query')")
-    public CommonResult<ErpPurchaseInRespVO> getPurchaseIn(@RequestParam("id") Long id) {
-        ErpPurchaseInDO purchaseIn = purchaseInService.getPurchaseIn(id);
-        if (purchaseIn == null) {
-            return success(null);
-        }
-        List<ErpPurchaseInItemDO> purchaseInItemList = purchaseInService.getPurchaseInItemListByInId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(purchaseInItemList, ErpPurchaseInItemDO::getProductId));
-        return success(BeanUtils.toBean(purchaseIn, ErpPurchaseInRespVO.class, purchaseInVO ->
-                purchaseInVO.setItems(BeanUtils.toBean(purchaseInItemList, ErpPurchaseInRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱閲囪喘鍏ュ簱鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:query')")
-    public CommonResult<PageResult<ErpPurchaseInRespVO>> getPurchaseInPage(@Valid ErpPurchaseInPageReqVO pageReqVO) {
-        PageResult<ErpPurchaseInDO> pageResult = purchaseInService.getPurchaseInPage(pageReqVO);
-        return success(buildPurchaseInVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭閲囪喘鍏ュ簱 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-in:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportPurchaseInExcel(@Valid ErpPurchaseInPageReqVO pageReqVO,
-                                    HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpPurchaseInRespVO> list = buildPurchaseInVOPageResult(purchaseInService.getPurchaseInPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "閲囪喘鍏ュ簱.xls", "鏁版嵁", ErpPurchaseInRespVO.class, list);
-    }
-
-    private PageResult<ErpPurchaseInRespVO> buildPurchaseInVOPageResult(PageResult<ErpPurchaseInDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 鍏ュ簱椤�
-        List<ErpPurchaseInItemDO> purchaseInItemList = purchaseInService.getPurchaseInItemListByInIds(
-                convertSet(pageResult.getList(), ErpPurchaseInDO::getId));
-        Map<Long, List<ErpPurchaseInItemDO>> purchaseInItemMap = convertMultiMap(purchaseInItemList, ErpPurchaseInItemDO::getInId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(purchaseInItemList, ErpPurchaseInItemDO::getProductId));
-        // 1.3 渚涘簲鍟嗕俊鎭�
-        Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
-                convertSet(pageResult.getList(), ErpPurchaseInDO::getSupplierId));
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), purchaseIn -> Long.parseLong(purchaseIn.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpPurchaseInRespVO.class, purchaseIn -> {
-            purchaseIn.setItems(BeanUtils.toBean(purchaseInItemMap.get(purchaseIn.getId()), ErpPurchaseInRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            purchaseIn.setProductNames(CollUtil.join(purchaseIn.getItems(), "锛�", ErpPurchaseInRespVO.Item::getProductName));
-            MapUtils.findAndThen(supplierMap, purchaseIn.getSupplierId(), supplier -> purchaseIn.setSupplierName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(purchaseIn.getCreator()), user -> purchaseIn.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java
index a560906..bc5cb00 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java
@@ -5,20 +5,19 @@
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderService;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
@@ -50,12 +49,10 @@
     @Resource
     private ErpPurchaseOrderService purchaseOrderService;
     @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
     private ErpSupplierService supplierService;
 
+    @Resource
+    private MdmItemApi mdmItemApi;
     @Resource
     private AdminUserApi adminUserApi;
 
@@ -102,14 +99,14 @@
             return success(null);
         }
         List<ErpPurchaseOrderItemDO> purchaseOrderItemList = purchaseOrderService.getPurchaseOrderItemListByOrderId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
                 convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId));
         return success(BeanUtils.toBean(purchaseOrder, ErpPurchaseOrderRespVO.class, purchaseOrderVO ->
                 purchaseOrderVO.setItems(BeanUtils.toBean(purchaseOrderItemList, ErpPurchaseOrderRespVO.Item.class, item -> {
-                    BigDecimal purchaseCount = stockService.getStockCount(item.getProductId());
-                    item.setStockCount(purchaseCount != null ? purchaseCount : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
+                    // 搴撳瓨淇℃伅鏆備笉鏌ヨ锛堜粨鍌ㄧ墿娴佹ā鍧楋級
+                    item.setStockCount(BigDecimal.ZERO);
+                    MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName())
+                            .setProductBarCode(mdmItem.getBarCode()));
                 }))));
     }
 
@@ -141,8 +138,8 @@
         List<ErpPurchaseOrderItemDO> purchaseOrderItemList = purchaseOrderService.getPurchaseOrderItemListByOrderIds(
                 convertSet(pageResult.getList(), ErpPurchaseOrderDO::getId));
         Map<Long, List<ErpPurchaseOrderItemDO>> purchaseOrderItemMap = convertMultiMap(purchaseOrderItemList, ErpPurchaseOrderItemDO::getOrderId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
+        // 1.2 鐗╂枡淇℃伅
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
                 convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId));
         // 1.3 渚涘簲鍟嗕俊鎭�
         Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
@@ -153,8 +150,8 @@
         // 2. 寮�濮嬫嫾鎺�
         return BeanUtils.toBean(pageResult, ErpPurchaseOrderRespVO.class, purchaseOrder -> {
             purchaseOrder.setItems(BeanUtils.toBean(purchaseOrderItemMap.get(purchaseOrder.getId()), ErpPurchaseOrderRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
+                    item -> MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName())
+                            .setProductBarCode(mdmItem.getBarCode()))));
             purchaseOrder.setProductNames(CollUtil.join(purchaseOrder.getItems(), "锛�", ErpPurchaseOrderRespVO.Item::getProductName));
             MapUtils.findAndThen(supplierMap, purchaseOrder.getSupplierId(), supplier -> purchaseOrder.setSupplierName(supplier.getName()));
             MapUtils.findAndThen(userMap, Long.parseLong(purchaseOrder.getCreator()), user -> purchaseOrder.setCreatorName(user.getNickname()));
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java
index 49d540e..0a765bd 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java
@@ -8,16 +8,16 @@
 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestItemDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseRequestService;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@@ -52,10 +52,10 @@
     @Resource
     private ErpPurchaseRequestService purchaseRequestService;
     @Resource
-    private ErpProductService productService;
-    @Resource
     private ErpSupplierService supplierService;
 
+    @Resource
+    private MdmItemApi mdmItemApi;
     @Resource
     private AdminUserApi adminUserApi;
     @Resource
@@ -104,12 +104,12 @@
             return success(null);
         }
         List<ErpPurchaseRequestItemDO> purchaseRequestItemList = purchaseRequestService.getPurchaseRequestItemListByRequestId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
                 convertSet(purchaseRequestItemList, ErpPurchaseRequestItemDO::getProductId));
         return success(BeanUtils.toBean(purchaseRequest, ErpPurchaseRequestRespVO.class, vo -> {
             vo.setItems(BeanUtils.toBean(purchaseRequestItemList, ErpPurchaseRequestRespVO.Item.class, item ->
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
+                    MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName())
+                            .setProductBarCode(mdmItem.getBarCode()))));
             // 濉厖鍏宠仈瀛楁
             fillPurchaseRequestRelatedFields(vo);
         }));
@@ -158,8 +158,8 @@
         List<ErpPurchaseRequestItemDO> purchaseRequestItemList = purchaseRequestService.getPurchaseRequestItemListByRequestIds(
                 convertSet(pageResult.getList(), ErpPurchaseRequestDO::getId));
         Map<Long, List<ErpPurchaseRequestItemDO>> purchaseRequestItemMap = convertMultiMap(purchaseRequestItemList, ErpPurchaseRequestItemDO::getRequestId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
+        // 1.2 鐗╂枡淇℃伅
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
                 convertSet(purchaseRequestItemList, ErpPurchaseRequestItemDO::getProductId));
         // 1.3 渚涘簲鍟嗕俊鎭�
         Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
@@ -174,8 +174,8 @@
         // 2. 寮�濮嬫嫾鎺�
         return BeanUtils.toBean(pageResult, ErpPurchaseRequestRespVO.class, vo -> {
             vo.setItems(BeanUtils.toBean(purchaseRequestItemMap.get(vo.getId()), ErpPurchaseRequestRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
+                    item -> MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName())
+                            .setProductBarCode(mdmItem.getBarCode()))));
             vo.setProductNames(CollUtil.join(vo.getItems(), "锛�", ErpPurchaseRequestRespVO.Item::getProductName));
             MapUtils.findAndThen(supplierMap, vo.getSupplierId(), supplier -> vo.setSupplierName(supplier.getName()));
             MapUtils.findAndThen(userMap, vo.getRequestUserId(), user -> vo.setRequestUserName(user.getNickname()));
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java
deleted file mode 100644
index 2847e2b..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseReturnController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseReturnService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 閲囪喘閫�璐�")
-@RestController
-@RequestMapping("/erp/purchase-return")
-@Validated
-public class ErpPurchaseReturnController {
-
-    @Resource
-    private ErpPurchaseReturnService purchaseReturnService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpSupplierService supplierService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓閲囪喘閫�璐�")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:create')")
-    public CommonResult<Long> createPurchaseReturn(@Valid @RequestBody ErpPurchaseReturnSaveReqVO createReqVO) {
-        return success(purchaseReturnService.createPurchaseReturn(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊閲囪喘閫�璐�")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:update')")
-    public CommonResult<Boolean> updatePurchaseReturn(@Valid @RequestBody ErpPurchaseReturnSaveReqVO updateReqVO) {
-        purchaseReturnService.updatePurchaseReturn(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊閲囪喘閫�璐х殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:update-status')")
-    public CommonResult<Boolean> updatePurchaseReturnStatus(@RequestParam("id") Long id,
-                                                      @RequestParam("status") Integer status) {
-        purchaseReturnService.updatePurchaseReturnStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎閲囪喘閫�璐�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:delete')")
-    public CommonResult<Boolean> deletePurchaseReturn(@RequestParam("ids") List<Long> ids) {
-        purchaseReturnService.deletePurchaseReturn(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱閲囪喘閫�璐�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:query')")
-    public CommonResult<ErpPurchaseReturnRespVO> getPurchaseReturn(@RequestParam("id") Long id) {
-        ErpPurchaseReturnDO purchaseReturn = purchaseReturnService.getPurchaseReturn(id);
-        if (purchaseReturn == null) {
-            return success(null);
-        }
-        List<ErpPurchaseReturnItemDO> purchaseReturnItemList = purchaseReturnService.getPurchaseReturnItemListByReturnId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(purchaseReturnItemList, ErpPurchaseReturnItemDO::getProductId));
-        return success(BeanUtils.toBean(purchaseReturn, ErpPurchaseReturnRespVO.class, purchaseReturnVO ->
-                purchaseReturnVO.setItems(BeanUtils.toBean(purchaseReturnItemList, ErpPurchaseReturnRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱閲囪喘閫�璐у垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:query')")
-    public CommonResult<PageResult<ErpPurchaseReturnRespVO>> getPurchaseReturnPage(@Valid ErpPurchaseReturnPageReqVO pageReqVO) {
-        PageResult<ErpPurchaseReturnDO> pageResult = purchaseReturnService.getPurchaseReturnPage(pageReqVO);
-        return success(buildPurchaseReturnVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭閲囪喘閫�璐� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:purchase-return:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportPurchaseReturnExcel(@Valid ErpPurchaseReturnPageReqVO pageReqVO,
-                                    HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpPurchaseReturnRespVO> list = buildPurchaseReturnVOPageResult(purchaseReturnService.getPurchaseReturnPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "閲囪喘閫�璐�.xls", "鏁版嵁", ErpPurchaseReturnRespVO.class, list);
-    }
-
-    private PageResult<ErpPurchaseReturnRespVO> buildPurchaseReturnVOPageResult(PageResult<ErpPurchaseReturnDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 閫�璐ч」
-        List<ErpPurchaseReturnItemDO> purchaseReturnItemList = purchaseReturnService.getPurchaseReturnItemListByReturnIds(
-                convertSet(pageResult.getList(), ErpPurchaseReturnDO::getId));
-        Map<Long, List<ErpPurchaseReturnItemDO>> purchaseReturnItemMap = convertMultiMap(purchaseReturnItemList, ErpPurchaseReturnItemDO::getReturnId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(purchaseReturnItemList, ErpPurchaseReturnItemDO::getProductId));
-        // 1.3 渚涘簲鍟嗕俊鎭�
-        Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
-                convertSet(pageResult.getList(), ErpPurchaseReturnDO::getSupplierId));
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), purchaseReturn -> Long.parseLong(purchaseReturn.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpPurchaseReturnRespVO.class, purchaseReturn -> {
-            purchaseReturn.setItems(BeanUtils.toBean(purchaseReturnItemMap.get(purchaseReturn.getId()), ErpPurchaseReturnRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            purchaseReturn.setProductNames(CollUtil.join(purchaseReturn.getItems(), "锛�", ErpPurchaseReturnRespVO.Item::getProductName));
-            MapUtils.findAndThen(supplierMap, purchaseReturn.getSupplierId(), supplier -> purchaseReturn.setSupplierName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(purchaseReturn.getCreator()), user -> purchaseReturn.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java
deleted file mode 100644
index e84607c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInPageReqVO.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘鍏ュ簱鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpPurchaseInPageReqVO extends PageParam {
-
-    public static final Integer PAYMENT_STATUS_NONE = 0;
-    public static final Integer PAYMENT_STATUS_PART = 1;
-    public static final Integer PAYMENT_STATUS_ALL = 2;
-
-    @Schema(description = "閲囪喘鍗曠紪鍙�", example = "XS001")
-    private String no;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1724")
-    private Long supplierId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] inTime;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "鍏ュ簱鐘舵��", example = "2")
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1")
-    private Long warehouseId;
-
-    @Schema(description = "缁撶畻璐﹀彿缂栧彿", example = "1")
-    private Long accountId;
-
-    @Schema(description = "浠樻鐘舵��", example = "1")
-    private Integer paymentStatus;
-
-    @Schema(description = "鏄惁鍙粯娆�", example = "true")
-    private Boolean paymentEnable; // 瀵瑰簲 paymentStatus = [0, 1]
-
-    @Schema(description = "閲囪喘鍗曞彿", example = "1")
-    private String orderNo;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java
deleted file mode 100644
index 03c446e..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInRespVO.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘鍏ュ簱 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpPurchaseInRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍏ュ簱鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    @ExcelProperty("鍏ュ簱鍗曠紪鍙�")
-    private String no;
-
-    @Schema(description = "鍏ュ簱鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("鍏ュ簱鐘舵��")
-    private Integer status;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724")
-    private Long supplierId;
-    @Schema(description = "渚涘簲鍟嗗悕绉�", example = "鑺嬮亾")
-    @ExcelProperty("渚涘簲鍟嗗悕绉�")
-    private String supplierName;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89")
-    @ExcelProperty("缁撶畻璐︽埛缂栧彿")
-    private Long accountId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍏ュ簱鏃堕棿")
-    private LocalDateTime inTime;
-
-    @Schema(description = "閲囪喘璁㈠崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long orderId;
-    @Schema(description = "閲囪喘璁㈠崟鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    private String orderNo;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-    @Schema(description = "鏈�缁堝悎璁′环鏍�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鏈�缁堝悎璁′环鏍�")
-    private BigDecimal totalPrice;
-    @Schema(description = "宸蹭粯娆鹃噾棰濓紝鍗曚綅锛氬厓", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal paymentPrice;
-
-    @Schema(description = "鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalProductPrice;
-
-    @Schema(description = "鍚堣绋庨锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalTaxPrice;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "浼樻儬閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal discountPrice;
-
-    @Schema(description = "瀹氶噾閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    @ExcelProperty("闄勪欢鍦板潃")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍏ュ簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍏ュ簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "閲囪喘璁㈠崟椤圭紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "绋庨锛屽崟浣嶏細鍏�", example = "100.00")
-        private BigDecimal taxPrice;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java
deleted file mode 100644
index 80edeec..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘鍏ュ簱鏂板/淇敼 Request VO")
-@Data
-public class ErpPurchaseInSaveReqVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long id;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", example = "31189")
-    private Long accountId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍏ュ簱鏃堕棿涓嶈兘涓虹┖")
-    private LocalDateTime inTime;
-
-    @Schema(description = "閲囪喘璁㈠崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @NotNull(message = "閲囪喘璁㈠崟缂栧彿涓嶈兘涓虹┖")
-    private Long orderId;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "鍏跺畠閲戦锛屽崟浣嶏細鍏�", example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "鍏ュ簱娓呭崟鍒楄〃")
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍏ュ簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "閲囪喘璁㈠崟椤圭紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        @NotNull(message = "閲囪喘璁㈠崟椤圭紪鍙蜂笉鑳戒负绌�")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧鍗曚綅鍗曚綅涓嶈兘涓虹┖")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java
deleted file mode 100644
index a534d2e..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnPageReqVO.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘閫�璐у垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpPurchaseReturnPageReqVO extends PageParam {
-
-    public static final Integer REFUND_STATUS_NONE = 0;
-    public static final Integer REFUND_STATUS_PART = 1;
-    public static final Integer REFUND_STATUS_ALL = 2;
-
-    @Schema(description = "閲囪喘鍗曠紪鍙�", example = "XS001")
-    private String no;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1724")
-    private Long supplierId;
-
-    @Schema(description = "閫�璐ф椂闂�")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] returnTime;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "閫�璐х姸鎬�", example = "2")
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1")
-    private Long warehouseId;
-
-    @Schema(description = "缁撶畻璐﹀彿缂栧彿", example = "1")
-    private Long accountId;
-
-    @Schema(description = "閲囪喘鍗曞彿", example = "1")
-    private String orderNo;
-
-    @Schema(description = "閫�娆剧姸鎬�", example = "1")
-    private Integer refundStatus;
-
-    @Schema(description = "鏄惁鍙��娆�", example = "true")
-    private Boolean refundEnable; // 瀵瑰簲 refundStatus = [0, 1]
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java
deleted file mode 100644
index 6762419..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnRespVO.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘閫�璐� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpPurchaseReturnRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "閫�璐у崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    @ExcelProperty("閫�璐у崟缂栧彿")
-    private String no;
-
-    @Schema(description = "閫�璐х姸鎬�", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("閫�璐х姸鎬�")
-    private Integer status;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724")
-    private Long supplierId;
-    @Schema(description = "渚涘簲鍟嗗悕绉�", example = "鑺嬮亾")
-    @ExcelProperty("渚涘簲鍟嗗悕绉�")
-    private String supplierName;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89")
-    @ExcelProperty("缁撶畻璐︽埛缂栧彿")
-    private Long accountId;
-
-    @Schema(description = "閫�璐ф椂闂�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("閫�璐ф椂闂�")
-    private LocalDateTime returnTime;
-
-    @Schema(description = "閲囪喘璁㈠崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long orderId;
-    @Schema(description = "閲囪喘璁㈠崟鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    private String orderNo;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-    @Schema(description = "鏈�缁堝悎璁′环鏍�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鏈�缁堝悎璁′环鏍�")
-    private BigDecimal totalPrice;
-    @Schema(description = "宸查��娆鹃噾棰濓紝鍗曚綅锛氬厓", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal refundPrice;
-
-    @Schema(description = "鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalProductPrice;
-
-    @Schema(description = "鍚堣绋庨锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalTaxPrice;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "浼樻儬閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal discountPrice;
-
-    @Schema(description = "瀹氶噾閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    @ExcelProperty("闄勪欢鍦板潃")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "閫�璐ч」鍒楄〃", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "閫�璐ч」缂栧彿", example = "11756")
-        private Long id;
-
-        @Schema(description = "閲囪喘璁㈠崟椤圭紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "绋庨锛屽崟浣嶏細鍏�", example = "100.00")
-        private BigDecimal taxPrice;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java
deleted file mode 100644
index 9254bd5..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/returns/ErpPurchaseReturnSaveReqVO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘閫�璐ф柊澧�/淇敼 Request VO")
-@Data
-public class ErpPurchaseReturnSaveReqVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long id;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", example = "31189")
-    private Long accountId;
-
-    @Schema(description = "閫�璐ф椂闂�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "閫�璐ф椂闂翠笉鑳戒负绌�")
-    private LocalDateTime returnTime;
-
-    @Schema(description = "閲囪喘璁㈠崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @NotNull(message = "閲囪喘璁㈠崟缂栧彿涓嶈兘涓虹┖")
-    private Long orderId;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "鍏跺畠閲戦锛屽崟浣嶏細鍏�", example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "閫�璐ф竻鍗曞垪琛�")
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "閫�璐ч」缂栧彿", example = "11756")
-        private Long id;
-
-        @Schema(description = "閲囪喘璁㈠崟椤圭紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        @NotNull(message = "閲囪喘璁㈠崟椤圭紪鍙蜂笉鑳戒负绌�")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧鍗曚綅鍗曚綅涓嶈兘涓虹┖")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java
index f0211bd..34a8891 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java
@@ -10,15 +10,14 @@
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
 import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
 import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
@@ -50,12 +49,10 @@
     @Resource
     private ErpSaleOrderService saleOrderService;
     @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
     private CrmCustomerApi customerApi;
 
+    @Resource
+    private MdmItemApi mdmItemApi;
     @Resource
     private AdminUserApi adminUserApi;
 
@@ -120,14 +117,14 @@
             return success(null);
         }
         List<ErpSaleOrderItemDO> saleOrderItemList = saleOrderService.getSaleOrderItemListByOrderId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
                 convertSet(saleOrderItemList, ErpSaleOrderItemDO::getProductId));
         return success(BeanUtils.toBean(saleOrder, ErpSaleOrderRespVO.class, saleOrderVO ->
                 saleOrderVO.setItems(BeanUtils.toBean(saleOrderItemList, ErpSaleOrderRespVO.Item.class, item -> {
-                    BigDecimal stockCount = stockService.getStockCount(item.getProductId());
-                    item.setStockCount(stockCount != null ? stockCount : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
+                    // 搴撳瓨淇℃伅鏆備笉鏌ヨ锛堜粨鍌ㄧ墿娴佹ā鍧楋級
+                    item.setStockCount(BigDecimal.ZERO);
+                    MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName())
+                            .setProductBarCode(mdmItem.getBarCode()));
                 }))));
     }
 
@@ -159,8 +156,8 @@
         List<ErpSaleOrderItemDO> saleOrderItemList = saleOrderService.getSaleOrderItemListByOrderIds(
                 convertSet(pageResult.getList(), ErpSaleOrderDO::getId));
         Map<Long, List<ErpSaleOrderItemDO>> saleOrderItemMap = convertMultiMap(saleOrderItemList, ErpSaleOrderItemDO::getOrderId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
+        // 1.2 鐗╂枡淇℃伅
+        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
                 convertSet(saleOrderItemList, ErpSaleOrderItemDO::getProductId));
         // 1.3 瀹㈡埛淇℃伅锛堜娇鐢� CRM 瀹㈡埛 API锛�
         Map<Long, CrmCustomerRespDTO> customerMap = customerApi.getCustomerMap(
@@ -171,8 +168,8 @@
         // 2. 寮�濮嬫嫾鎺�
         return BeanUtils.toBean(pageResult, ErpSaleOrderRespVO.class, saleOrder -> {
             saleOrder.setItems(BeanUtils.toBean(saleOrderItemMap.get(saleOrder.getId()), ErpSaleOrderRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
+                    item -> MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName())
+                            .setProductBarCode(mdmItem.getBarCode()))));
             saleOrder.setProductNames(CollUtil.join(saleOrder.getItems(), "锛�", ErpSaleOrderRespVO.Item::getProductName));
             MapUtils.findAndThen(customerMap, saleOrder.getCustomerId(), supplier -> saleOrder.setCustomerName(supplier.getName()));
             MapUtils.findAndThen(userMap, Long.parseLong(saleOrder.getCreator()), user -> saleOrder.setCreatorName(user.getNickname()));
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java
deleted file mode 100644
index f67398b..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOutController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOutService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 閿�鍞嚭搴�")
-@RestController
-@RequestMapping("/erp/sale-out")
-@Validated
-public class ErpSaleOutController {
-
-    @Resource
-    private ErpSaleOutService saleOutService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpCustomerService customerService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓閿�鍞嚭搴�")
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:create')")
-    public CommonResult<Long> createSaleOut(@Valid @RequestBody ErpSaleOutSaveReqVO createReqVO) {
-        return success(saleOutService.createSaleOut(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊閿�鍞嚭搴�")
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:update')")
-    public CommonResult<Boolean> updateSaleOut(@Valid @RequestBody ErpSaleOutSaveReqVO updateReqVO) {
-        saleOutService.updateSaleOut(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊閿�鍞嚭搴撶殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:update-status')")
-    public CommonResult<Boolean> updateSaleOutStatus(@RequestParam("id") Long id,
-                                                      @RequestParam("status") Integer status) {
-        saleOutService.updateSaleOutStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎閿�鍞嚭搴�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:delete')")
-    public CommonResult<Boolean> deleteSaleOut(@RequestParam("ids") List<Long> ids) {
-        saleOutService.deleteSaleOut(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱閿�鍞嚭搴�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
-    public CommonResult<ErpSaleOutRespVO> getSaleOut(@RequestParam("id") Long id) {
-        ErpSaleOutDO saleOut = saleOutService.getSaleOut(id);
-        if (saleOut == null) {
-            return success(null);
-        }
-        List<ErpSaleOutItemDO> saleOutItemList = saleOutService.getSaleOutItemListByOutId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(saleOutItemList, ErpSaleOutItemDO::getProductId));
-        return success(BeanUtils.toBean(saleOut, ErpSaleOutRespVO.class, saleOutVO ->
-                saleOutVO.setItems(BeanUtils.toBean(saleOutItemList, ErpSaleOutRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱閿�鍞嚭搴撳垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:query')")
-    public CommonResult<PageResult<ErpSaleOutRespVO>> getSaleOutPage(@Valid ErpSaleOutPageReqVO pageReqVO) {
-        PageResult<ErpSaleOutDO> pageResult = saleOutService.getSaleOutPage(pageReqVO);
-        return success(buildSaleOutVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭閿�鍞嚭搴� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:sale-out:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportSaleOutExcel(@Valid ErpSaleOutPageReqVO pageReqVO,
-                                    HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpSaleOutRespVO> list = buildSaleOutVOPageResult(saleOutService.getSaleOutPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "閿�鍞嚭搴�.xls", "鏁版嵁", ErpSaleOutRespVO.class, list);
-    }
-
-    private PageResult<ErpSaleOutRespVO> buildSaleOutVOPageResult(PageResult<ErpSaleOutDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 鍑哄簱椤�
-        List<ErpSaleOutItemDO> saleOutItemList = saleOutService.getSaleOutItemListByOutIds(
-                convertSet(pageResult.getList(), ErpSaleOutDO::getId));
-        Map<Long, List<ErpSaleOutItemDO>> saleOutItemMap = convertMultiMap(saleOutItemList, ErpSaleOutItemDO::getOutId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(saleOutItemList, ErpSaleOutItemDO::getProductId));
-        // 1.3 瀹㈡埛淇℃伅
-        Map<Long, ErpCustomerDO> customerMap = customerService.getCustomerMap(
-                convertSet(pageResult.getList(), ErpSaleOutDO::getCustomerId));
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), stockOut -> Long.parseLong(stockOut.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpSaleOutRespVO.class, saleOut -> {
-            saleOut.setItems(BeanUtils.toBean(saleOutItemMap.get(saleOut.getId()), ErpSaleOutRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            saleOut.setProductNames(CollUtil.join(saleOut.getItems(), "锛�", ErpSaleOutRespVO.Item::getProductName));
-            MapUtils.findAndThen(customerMap, saleOut.getCustomerId(), supplier -> saleOut.setCustomerName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(saleOut.getCreator()), user -> saleOut.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java
deleted file mode 100644
index 77e6106..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleReturnController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpSaleReturnService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 閿�鍞��璐�")
-@RestController
-@RequestMapping("/erp/sale-return")
-@Validated
-public class ErpSaleReturnController {
-
-    @Resource
-    private ErpSaleReturnService saleReturnService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpCustomerService customerService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓閿�鍞��璐�")
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:create')")
-    public CommonResult<Long> createSaleReturn(@Valid @RequestBody ErpSaleReturnSaveReqVO createReqVO) {
-        return success(saleReturnService.createSaleReturn(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊閿�鍞��璐�")
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:update')")
-    public CommonResult<Boolean> updateSaleReturn(@Valid @RequestBody ErpSaleReturnSaveReqVO updateReqVO) {
-        saleReturnService.updateSaleReturn(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊閿�鍞��璐х殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:update-status')")
-    public CommonResult<Boolean> updateSaleReturnStatus(@RequestParam("id") Long id,
-                                                      @RequestParam("status") Integer status) {
-        saleReturnService.updateSaleReturnStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎閿�鍞��璐�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:delete')")
-    public CommonResult<Boolean> deleteSaleReturn(@RequestParam("ids") List<Long> ids) {
-        saleReturnService.deleteSaleReturn(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱閿�鍞��璐�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:query')")
-    public CommonResult<ErpSaleReturnRespVO> getSaleReturn(@RequestParam("id") Long id) {
-        ErpSaleReturnDO saleReturn = saleReturnService.getSaleReturn(id);
-        if (saleReturn == null) {
-            return success(null);
-        }
-        List<ErpSaleReturnItemDO> saleReturnItemList = saleReturnService.getSaleReturnItemListByReturnId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(saleReturnItemList, ErpSaleReturnItemDO::getProductId));
-        return success(BeanUtils.toBean(saleReturn, ErpSaleReturnRespVO.class, saleReturnVO ->
-                saleReturnVO.setItems(BeanUtils.toBean(saleReturnItemList, ErpSaleReturnRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱閿�鍞��璐у垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:query')")
-    public CommonResult<PageResult<ErpSaleReturnRespVO>> getSaleReturnPage(@Valid ErpSaleReturnPageReqVO pageReqVO) {
-        PageResult<ErpSaleReturnDO> pageResult = saleReturnService.getSaleReturnPage(pageReqVO);
-        return success(buildSaleReturnVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭閿�鍞��璐� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:sale-return:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportSaleReturnExcel(@Valid ErpSaleReturnPageReqVO pageReqVO,
-                                    HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpSaleReturnRespVO> list = buildSaleReturnVOPageResult(saleReturnService.getSaleReturnPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "閿�鍞��璐�.xls", "鏁版嵁", ErpSaleReturnRespVO.class, list);
-    }
-
-    private PageResult<ErpSaleReturnRespVO> buildSaleReturnVOPageResult(PageResult<ErpSaleReturnDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 閫�璐ч」
-        List<ErpSaleReturnItemDO> saleReturnItemList = saleReturnService.getSaleReturnItemListByReturnIds(
-                convertSet(pageResult.getList(), ErpSaleReturnDO::getId));
-        Map<Long, List<ErpSaleReturnItemDO>> saleReturnItemMap = convertMultiMap(saleReturnItemList, ErpSaleReturnItemDO::getReturnId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(saleReturnItemList, ErpSaleReturnItemDO::getProductId));
-        // 1.3 瀹㈡埛淇℃伅
-        Map<Long, ErpCustomerDO> customerMap = customerService.getCustomerMap(
-                convertSet(pageResult.getList(), ErpSaleReturnDO::getCustomerId));
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), saleReturn -> Long.parseLong(saleReturn.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpSaleReturnRespVO.class, saleReturn -> {
-            saleReturn.setItems(BeanUtils.toBean(saleReturnItemMap.get(saleReturn.getId()), ErpSaleReturnRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            saleReturn.setProductNames(CollUtil.join(saleReturn.getItems(), "锛�", ErpSaleReturnRespVO.Item::getProductName));
-            MapUtils.findAndThen(customerMap, saleReturn.getCustomerId(), supplier -> saleReturn.setCustomerName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(saleReturn.getCreator()), user -> saleReturn.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java
deleted file mode 100644
index 5afeeea..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutPageReqVO.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞嚭搴撳垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpSaleOutPageReqVO extends PageParam {
-
-    public static final Integer RECEIPT_STATUS_NONE = 0;
-    public static final Integer RECEIPT_STATUS_PART = 1;
-    public static final Integer RECEIPT_STATUS_ALL = 2;
-
-    @Schema(description = "閿�鍞崟缂栧彿", example = "XS001")
-    private String no;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "1724")
-    private Long customerId;
-
-    @Schema(description = "鍑哄簱鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] outTime;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "鍑哄簱鐘舵��", example = "2")
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1")
-    private Long warehouseId;
-
-    @Schema(description = "缁撶畻璐﹀彿缂栧彿", example = "1")
-    private Long accountId;
-
-    @Schema(description = "鏀舵鐘舵��", example = "1")
-    private Integer receiptStatus;
-
-    @Schema(description = "鏄惁鍙敹娆�", example = "true")
-    private Boolean receiptEnable; // 瀵瑰簲 receiptStatus = [0, 1]
-
-    @Schema(description = "閿�鍞崟鍙�", example = "1")
-    private String orderNo;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java
deleted file mode 100644
index a004ed3..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutRespVO.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞嚭搴� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpSaleOutRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍑哄簱鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    @ExcelProperty("鍑哄簱鍗曠紪鍙�")
-    private String no;
-
-    @Schema(description = "鍑哄簱鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("鍑哄簱鐘舵��")
-    private Integer status;
-
-    @Schema(description = "瀹㈡埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724")
-    private Long customerId;
-    @Schema(description = "瀹㈡埛鍚嶇О", example = "鑺嬮亾")
-    @ExcelProperty("瀹㈡埛鍚嶇О")
-    private String customerName;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89")
-    @ExcelProperty("缁撶畻璐︽埛缂栧彿")
-    private Long accountId;
-
-    @Schema(description = "鍑哄簱鍛樼紪鍙�", example = "1888")
-    private Long saleUserId;
-
-    @Schema(description = "鍑哄簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍑哄簱鏃堕棿")
-    private LocalDateTime outTime;
-
-    @Schema(description = "閿�鍞鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long orderId;
-    @Schema(description = "閿�鍞鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    private String orderNo;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-    @Schema(description = "鏈�缁堝悎璁′环鏍�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鏈�缁堝悎璁′环鏍�")
-    private BigDecimal totalPrice;
-    @Schema(description = "宸叉敹娆鹃噾棰濓紝鍗曚綅锛氬厓", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal receiptPrice;
-
-    @Schema(description = "鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalProductPrice;
-
-    @Schema(description = "鍚堣绋庨锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalTaxPrice;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "浼樻儬閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal discountPrice;
-
-    @Schema(description = "鍏跺畠閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    @ExcelProperty("闄勪欢鍦板潃")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍑哄簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍑哄簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "閿�鍞鍗曢」缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "绋庨锛屽崟浣嶏細鍏�", example = "100.00")
-        private BigDecimal taxPrice;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java
deleted file mode 100644
index 3a2216a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/out/ErpSaleOutSaveReqVO.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞嚭搴撴柊澧�/淇敼 Request VO")
-@Data
-public class ErpSaleOutSaveReqVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long id;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", example = "31189")
-    private Long accountId;
-
-    @Schema(description = "閿�鍞憳缂栧彿", example = "1888")
-    private Long saleUserId;
-
-    @Schema(description = "鍑哄簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍑哄簱鏃堕棿涓嶈兘涓虹┖")
-    private LocalDateTime outTime;
-
-    @Schema(description = "閿�鍞鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @NotNull(message = "閿�鍞鍗曠紪鍙蜂笉鑳戒负绌�")
-    private Long orderId;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "鍏跺畠閲戦锛屽崟浣嶏細鍏�", example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "鍑哄簱娓呭崟鍒楄〃")
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍑哄簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "閿�鍞鍗曢」缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        @NotNull(message = "閿�鍞鍗曢」缂栧彿涓嶈兘涓虹┖")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧鍗曚綅鍗曚綅涓嶈兘涓虹┖")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java
deleted file mode 100644
index a9be73b..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnPageReqVO.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞��璐у垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpSaleReturnPageReqVO extends PageParam {
-
-    public static final Integer REFUND_STATUS_NONE = 0;
-    public static final Integer REFUND_STATUS_PART = 1;
-    public static final Integer REFUND_STATUS_ALL = 2;
-
-    @Schema(description = "閿�鍞崟缂栧彿", example = "XS001")
-    private String no;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "1724")
-    private Long customerId;
-
-    @Schema(description = "閫�璐ф椂闂�")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] returnTime;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "閫�璐х姸鎬�", example = "2")
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1")
-    private Long warehouseId;
-
-    @Schema(description = "缁撶畻璐﹀彿缂栧彿", example = "1")
-    private Long accountId;
-
-    @Schema(description = "閿�鍞崟鍙�", example = "1")
-    private String orderNo;
-
-    @Schema(description = "閫�娆剧姸鎬�", example = "1")
-    private Integer refundStatus;
-
-    @Schema(description = "鏄惁鍙��娆�", example = "true")
-    private Boolean refundEnable; // 瀵瑰簲 refundStatus = [0, 1]
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java
deleted file mode 100644
index 6a1ade0..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnRespVO.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞��璐� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpSaleReturnRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "閫�璐у崟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    @ExcelProperty("閫�璐у崟缂栧彿")
-    private String no;
-
-    @Schema(description = "閫�璐х姸鎬�", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("閫�璐х姸鎬�")
-    private Integer status;
-
-    @Schema(description = "瀹㈡埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724")
-    private Long customerId;
-    @Schema(description = "瀹㈡埛鍚嶇О", example = "鑺嬮亾")
-    @ExcelProperty("瀹㈡埛鍚嶇О")
-    private String customerName;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89")
-    @ExcelProperty("缁撶畻璐︽埛缂栧彿")
-    private Long accountId;
-
-    @Schema(description = "閫�璐у憳缂栧彿", example = "1888")
-    private Long saleUserId;
-
-    @Schema(description = "閫�璐ф椂闂�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("閫�璐ф椂闂�")
-    private LocalDateTime returnTime;
-
-    @Schema(description = "閿�鍞鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long orderId;
-    @Schema(description = "閿�鍞鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001")
-    private String orderNo;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-    @Schema(description = "鏈�缁堝悎璁′环鏍�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鏈�缁堝悎璁′环鏍�")
-    private BigDecimal totalPrice;
-    @Schema(description = "宸查��娆鹃噾棰濓紝鍗曚綅锛氬厓", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal refundPrice;
-
-    @Schema(description = "鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalProductPrice;
-
-    @Schema(description = "鍚堣绋庨锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal totalTaxPrice;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "浼樻儬閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal discountPrice;
-
-    @Schema(description = "鍏跺畠閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    @ExcelProperty("闄勪欢鍦板潃")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "閫�璐ч」鍒楄〃", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "閫�璐ч」缂栧彿", example = "11756")
-        private Long id;
-
-        @Schema(description = "閿�鍞鍗曢」缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "绋庨锛屽崟浣嶏細鍏�", example = "100.00")
-        private BigDecimal taxPrice;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java
deleted file mode 100644
index 81c046f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/returns/ErpSaleReturnSaveReqVO.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞��璐ф柊澧�/淇敼 Request VO")
-@Data
-public class ErpSaleReturnSaveReqVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    private Long id;
-
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", example = "31189")
-    private Long accountId;
-
-    @Schema(description = "閿�鍞憳缂栧彿", example = "1888")
-    private Long saleUserId;
-
-    @Schema(description = "閫�璐ф椂闂�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "閫�璐ф椂闂翠笉鑳戒负绌�")
-    private LocalDateTime returnTime;
-
-    @Schema(description = "閿�鍞鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386")
-    @NotNull(message = "閿�鍞鍗曠紪鍙蜂笉鑳戒负绌�")
-    private Long orderId;
-
-    @Schema(description = "浼樻儬鐜囷紝鐧惧垎姣�", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88")
-    private BigDecimal discountPercent;
-
-    @Schema(description = "鍏跺畠閲戦锛屽崟浣嶏細鍏�", example = "7127")
-    private BigDecimal otherPrice;
-
-    @Schema(description = "闄勪欢鍦板潃", example = "https://www.iocoder.cn")
-    private String fileUrl;
-
-    @Schema(description = "澶囨敞", example = "浣犵寽")
-    private String remark;
-
-    @Schema(description = "閫�璐ф竻鍗曞垪琛�")
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "閫�璐ч」缂栧彿", example = "11756")
-        private Long id;
-
-        @Schema(description = "閿�鍞鍗曢」缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-        @NotNull(message = "閿�鍞鍗曢」缂栧彿涓嶈兘涓虹┖")
-        private Long orderItemId;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚綅鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧鍗曚綅鍗曚綅涓嶈兘涓虹┖")
-        private Long productUnitId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "绋庣巼锛岀櫨鍒嗘瘮", example = "99.88")
-        private BigDecimal taxPercent;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java
deleted file mode 100644
index 2c35cb8..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockCheckService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 搴撳瓨璋冩嫧鍗�")
-@RestController
-@RequestMapping("/erp/stock-check")
-@Validated
-public class ErpStockCheckController {
-
-    @Resource
-    private ErpStockCheckService stockCheckService;
-    @Resource
-    private ErpProductService productService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓搴撳瓨璋冩嫧鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:create')")
-    public CommonResult<Long> createStockCheck(@Valid @RequestBody ErpStockCheckSaveReqVO createReqVO) {
-        return success(stockCheckService.createStockCheck(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊搴撳瓨璋冩嫧鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:update')")
-    public CommonResult<Boolean> updateStockCheck(@Valid @RequestBody ErpStockCheckSaveReqVO updateReqVO) {
-        stockCheckService.updateStockCheck(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊搴撳瓨璋冩嫧鍗曠殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:update-status')")
-    public CommonResult<Boolean> updateStockCheckStatus(@RequestParam("id") Long id,
-                                                     @RequestParam("status") Integer status) {
-        stockCheckService.updateStockCheckStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎搴撳瓨璋冩嫧鍗�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:delete')")
-    public CommonResult<Boolean> deleteStockCheck(@RequestParam("ids") List<Long> ids) {
-        stockCheckService.deleteStockCheck(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱搴撳瓨璋冩嫧鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
-    public CommonResult<ErpStockCheckRespVO> getStockCheck(@RequestParam("id") Long id) {
-        ErpStockCheckDO stockCheck = stockCheckService.getStockCheck(id);
-        if (stockCheck == null) {
-            return success(null);
-        }
-        List<ErpStockCheckItemDO> stockCheckItemList = stockCheckService.getStockCheckItemListByCheckId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockCheckItemList, ErpStockCheckItemDO::getProductId));
-        return success(BeanUtils.toBean(stockCheck, ErpStockCheckRespVO.class, stockCheckVO ->
-                stockCheckVO.setItems(BeanUtils.toBean(stockCheckItemList, ErpStockCheckRespVO.Item.class, item ->
-                        MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                                .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱搴撳瓨璋冩嫧鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
-    public CommonResult<PageResult<ErpStockCheckRespVO>> getStockCheckPage(@Valid ErpStockCheckPageReqVO pageReqVO) {
-        PageResult<ErpStockCheckDO> pageResult = stockCheckService.getStockCheckPage(pageReqVO);
-        return success(buildStockCheckVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭搴撳瓨璋冩嫧鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:stock-check:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportStockCheckExcel(@Valid ErpStockCheckPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpStockCheckRespVO> list = buildStockCheckVOPageResult(stockCheckService.getStockCheckPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "搴撳瓨璋冩嫧鍗�.xls", "鏁版嵁", ErpStockCheckRespVO.class, list);
-    }
-
-    private PageResult<ErpStockCheckRespVO> buildStockCheckVOPageResult(PageResult<ErpStockCheckDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 鐩樼偣椤�
-        List<ErpStockCheckItemDO> stockCheckItemList = stockCheckService.getStockCheckItemListByCheckIds(
-                convertSet(pageResult.getList(), ErpStockCheckDO::getId));
-        Map<Long, List<ErpStockCheckItemDO>> stockCheckItemMap = convertMultiMap(stockCheckItemList, ErpStockCheckItemDO::getCheckId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockCheckItemList, ErpStockCheckItemDO::getProductId));
-        // 1.3 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), stockCheck -> Long.parseLong(stockCheck.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpStockCheckRespVO.class, stockCheck -> {
-            stockCheck.setItems(BeanUtils.toBean(stockCheckItemMap.get(stockCheck.getId()), ErpStockCheckRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            stockCheck.setProductNames(CollUtil.join(stockCheck.getItems(), "锛�", ErpStockCheckRespVO.Item::getProductName));
-            MapUtils.findAndThen(userMap, Long.parseLong(stockCheck.getCreator()), user -> stockCheck.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java
deleted file mode 100644
index 981cb92..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockRespVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 浜у搧搴撳瓨")
-@RestController
-@RequestMapping("/erp/stock")
-@Validated
-public class ErpStockController {
-
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧搴撳瓨")
-    @Parameters({
-            @Parameter(name = "id", description = "缂栧彿", example = "1"), // 鏂规涓�锛氫紶閫� id
-            @Parameter(name = "productId", description = "浜у搧缂栧彿", example = "10"), // 鏂规浜岋細浼犻�� productId + warehouseId
-            @Parameter(name = "warehouseId", description = "浠撳簱缂栧彿", example = "2")
-    })
-    @PreAuthorize("@ss.hasPermission('erp:stock:query')")
-    public CommonResult<ErpStockRespVO> getStock(@RequestParam(value = "id", required = false) Long id,
-                                                 @RequestParam(value = "productId", required = false) Long productId,
-                                                 @RequestParam(value = "warehouseId", required = false) Long warehouseId) {
-        ErpStockDO stock = id != null ? stockService.getStock(id) : stockService.getStock(productId, warehouseId);
-        return success(BeanUtils.toBean(stock, ErpStockRespVO.class));
-    }
-
-    @GetMapping("/get-count")
-    @Operation(summary = "鑾峰緱浜у搧搴撳瓨鏁伴噺")
-    @Parameter(name = "productId", description = "浜у搧缂栧彿", example = "10")
-    public CommonResult<BigDecimal> getStockCount(@RequestParam("productId") Long productId) {
-        return success(stockService.getStockCount(productId));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浜у搧搴撳瓨鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:stock:query')")
-    public CommonResult<PageResult<ErpStockRespVO>> getStockPage(@Valid ErpStockPageReqVO pageReqVO) {
-        PageResult<ErpStockDO> pageResult = stockService.getStockPage(pageReqVO);
-        return success(buildStockVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浜у搧搴撳瓨 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:stock:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportStockExcel(@Valid ErpStockPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpStockRespVO> list = buildStockVOPageResult(stockService.getStockPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浜у搧搴撳瓨.xls", "鏁版嵁", ErpStockRespVO.class, list);
-    }
-
-    private PageResult<ErpStockRespVO> buildStockVOPageResult(PageResult<ErpStockDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(pageResult.getList(), ErpStockDO::getProductId));
-        Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(pageResult.getList(), ErpStockDO::getWarehouseId));
-        return BeanUtils.toBean(pageResult, ErpStockRespVO.class, stock -> {
-            MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName())
-                    .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName()));
-            MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java
deleted file mode 100644
index 49f640f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockInService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 鍏跺畠鍏ュ簱鍗�")
-@RestController
-@RequestMapping("/erp/stock-in")
-@Validated
-public class ErpStockInController {
-
-    @Resource
-    private ErpStockInService stockInService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpSupplierService supplierService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍏跺畠鍏ュ簱鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:create')")
-    public CommonResult<Long> createStockIn(@Valid @RequestBody ErpStockInSaveReqVO createReqVO) {
-        return success(stockInService.createStockIn(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍏跺畠鍏ュ簱鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:update')")
-    public CommonResult<Boolean> updateStockIn(@Valid @RequestBody ErpStockInSaveReqVO updateReqVO) {
-        stockInService.updateStockIn(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊鍏跺畠鍏ュ簱鍗曠殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:update-status')")
-    public CommonResult<Boolean> updateStockInStatus(@RequestParam("id") Long id,
-                                                     @RequestParam("status") Integer status) {
-        stockInService.updateStockInStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍏跺畠鍏ュ簱鍗�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:delete')")
-    public CommonResult<Boolean> deleteStockIn(@RequestParam("ids") List<Long> ids) {
-        stockInService.deleteStockIn(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍏跺畠鍏ュ簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
-    public CommonResult<ErpStockInRespVO> getStockIn(@RequestParam("id") Long id) {
-        ErpStockInDO stockIn = stockInService.getStockIn(id);
-        if (stockIn == null) {
-            return success(null);
-        }
-        List<ErpStockInItemDO> stockInItemList = stockInService.getStockInItemListByInId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockInItemList, ErpStockInItemDO::getProductId));
-        return success(BeanUtils.toBean(stockIn, ErpStockInRespVO.class, stockInVO ->
-                stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍏跺畠鍏ュ簱鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:query')")
-    public CommonResult<PageResult<ErpStockInRespVO>> getStockInPage(@Valid ErpStockInPageReqVO pageReqVO) {
-        PageResult<ErpStockInDO> pageResult = stockInService.getStockInPage(pageReqVO);
-        return success(buildStockInVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鍏跺畠鍏ュ簱鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:stock-in:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportStockInExcel(@Valid ErpStockInPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpStockInRespVO> list = buildStockInVOPageResult(stockInService.getStockInPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "鍏跺畠鍏ュ簱鍗�.xls", "鏁版嵁", ErpStockInRespVO.class, list);
-    }
-
-    private PageResult<ErpStockInRespVO> buildStockInVOPageResult(PageResult<ErpStockInDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 鍏ュ簱椤�
-        List<ErpStockInItemDO> stockInItemList = stockInService.getStockInItemListByInIds(
-                convertSet(pageResult.getList(), ErpStockInDO::getId));
-        Map<Long, List<ErpStockInItemDO>> stockInItemMap = convertMultiMap(stockInItemList, ErpStockInItemDO::getInId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockInItemList, ErpStockInItemDO::getProductId));
-        // 1.3 渚涘簲鍟嗕俊鎭�
-        Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap(
-                convertSet(pageResult.getList(), ErpStockInDO::getSupplierId));
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), stockIn -> Long.parseLong(stockIn.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpStockInRespVO.class, stockIn -> {
-            stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            stockIn.setProductNames(CollUtil.join(stockIn.getItems(), "锛�", ErpStockInRespVO.Item::getProductName));
-            MapUtils.findAndThen(supplierMap, stockIn.getSupplierId(), supplier -> stockIn.setSupplierName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(stockIn.getCreator()), user -> stockIn.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java
deleted file mode 100644
index d2b343f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockMoveService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 搴撳瓨璋冩嫧鍗�")
-@RestController
-@RequestMapping("/erp/stock-move")
-@Validated
-public class ErpStockMoveController {
-
-    @Resource
-    private ErpStockMoveService stockMoveService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓搴撳瓨璋冩嫧鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:create')")
-    public CommonResult<Long> createStockMove(@Valid @RequestBody ErpStockMoveSaveReqVO createReqVO) {
-        return success(stockMoveService.createStockMove(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊搴撳瓨璋冩嫧鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:update')")
-    public CommonResult<Boolean> updateStockMove(@Valid @RequestBody ErpStockMoveSaveReqVO updateReqVO) {
-        stockMoveService.updateStockMove(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊搴撳瓨璋冩嫧鍗曠殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:update-status')")
-    public CommonResult<Boolean> updateStockMoveStatus(@RequestParam("id") Long id,
-                                                     @RequestParam("status") Integer status) {
-        stockMoveService.updateStockMoveStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎搴撳瓨璋冩嫧鍗�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:delete')")
-    public CommonResult<Boolean> deleteStockMove(@RequestParam("ids") List<Long> ids) {
-        stockMoveService.deleteStockMove(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱搴撳瓨璋冩嫧鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
-    public CommonResult<ErpStockMoveRespVO> getStockMove(@RequestParam("id") Long id) {
-        ErpStockMoveDO stockMove = stockMoveService.getStockMove(id);
-        if (stockMove == null) {
-            return success(null);
-        }
-        List<ErpStockMoveItemDO> stockMoveItemList = stockMoveService.getStockMoveItemListByMoveId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockMoveItemList, ErpStockMoveItemDO::getProductId));
-        return success(BeanUtils.toBean(stockMove, ErpStockMoveRespVO.class, stockMoveVO ->
-                stockMoveVO.setItems(BeanUtils.toBean(stockMoveItemList, ErpStockMoveRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getFromWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱搴撳瓨璋冩嫧鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:query')")
-    public CommonResult<PageResult<ErpStockMoveRespVO>> getStockMovePage(@Valid ErpStockMovePageReqVO pageReqVO) {
-        PageResult<ErpStockMoveDO> pageResult = stockMoveService.getStockMovePage(pageReqVO);
-        return success(buildStockMoveVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭搴撳瓨璋冩嫧鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:stock-move:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportStockMoveExcel(@Valid ErpStockMovePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpStockMoveRespVO> list = buildStockMoveVOPageResult(stockMoveService.getStockMovePage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "搴撳瓨璋冩嫧鍗�.xls", "鏁版嵁", ErpStockMoveRespVO.class, list);
-    }
-
-    private PageResult<ErpStockMoveRespVO> buildStockMoveVOPageResult(PageResult<ErpStockMoveDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 璋冩嫧椤�
-        List<ErpStockMoveItemDO> stockMoveItemList = stockMoveService.getStockMoveItemListByMoveIds(
-                convertSet(pageResult.getList(), ErpStockMoveDO::getId));
-        Map<Long, List<ErpStockMoveItemDO>> stockMoveItemMap = convertMultiMap(stockMoveItemList, ErpStockMoveItemDO::getMoveId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockMoveItemList, ErpStockMoveItemDO::getProductId));
-        // 1.3 TODO 鑺嬭壙锛氭悶浠撳簱淇℃伅
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), stockMove -> Long.parseLong(stockMove.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpStockMoveRespVO.class, stockMove -> {
-            stockMove.setItems(BeanUtils.toBean(stockMoveItemMap.get(stockMove.getId()), ErpStockMoveRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            stockMove.setProductNames(CollUtil.join(stockMove.getItems(), "锛�", ErpStockMoveRespVO.Item::getProductName));
-            // TODO 鑺嬭壙锛�
-//            MapUtils.findAndThen(customerMap, stockMove.getCustomerId(), supplier -> stockMove.setCustomerName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(stockMove.getCreator()), user -> stockMove.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java
deleted file mode 100644
index 2ab548b..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockOutService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 鍏跺畠鍑哄簱鍗�")
-@RestController
-@RequestMapping("/erp/stock-out")
-@Validated
-public class ErpStockOutController {
-
-    @Resource
-    private ErpStockOutService stockOutService;
-    @Resource
-    private ErpStockService stockService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpCustomerService customerService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍏跺畠鍑哄簱鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:create')")
-    public CommonResult<Long> createStockOut(@Valid @RequestBody ErpStockOutSaveReqVO createReqVO) {
-        return success(stockOutService.createStockOut(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍏跺畠鍑哄簱鍗�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:update')")
-    public CommonResult<Boolean> updateStockOut(@Valid @RequestBody ErpStockOutSaveReqVO updateReqVO) {
-        stockOutService.updateStockOut(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "鏇存柊鍏跺畠鍑哄簱鍗曠殑鐘舵��")
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')")
-    public CommonResult<Boolean> updateStockOutStatus(@RequestParam("id") Long id,
-                                                     @RequestParam("status") Integer status) {
-        stockOutService.updateStockOutStatus(id, status);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍏跺畠鍑哄簱鍗�")
-    @Parameter(name = "ids", description = "缂栧彿鏁扮粍", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:delete')")
-    public CommonResult<Boolean> deleteStockOut(@RequestParam("ids") List<Long> ids) {
-        stockOutService.deleteStockOut(ids);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍏跺畠鍑哄簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
-    public CommonResult<ErpStockOutRespVO> getStockOut(@RequestParam("id") Long id) {
-        ErpStockOutDO stockOut = stockOutService.getStockOut(id);
-        if (stockOut == null) {
-            return success(null);
-        }
-        List<ErpStockOutItemDO> stockOutItemList = stockOutService.getStockOutItemListByOutId(id);
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockOutItemList, ErpStockOutItemDO::getProductId));
-        return success(BeanUtils.toBean(stockOut, ErpStockOutRespVO.class, stockOutVO ->
-                stockOutVO.setItems(BeanUtils.toBean(stockOutItemList, ErpStockOutRespVO.Item.class, item -> {
-                    ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId());
-                    item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO);
-                    MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()));
-                }))));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍏跺畠鍑哄簱鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:query')")
-    public CommonResult<PageResult<ErpStockOutRespVO>> getStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) {
-        PageResult<ErpStockOutDO> pageResult = stockOutService.getStockOutPage(pageReqVO);
-        return success(buildStockOutVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鍏跺畠鍑哄簱鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('erp:stock-out:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportStockOutExcel(@Valid ErpStockOutPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpStockOutRespVO> list = buildStockOutVOPageResult(stockOutService.getStockOutPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "鍏跺畠鍑哄簱鍗�.xls", "鏁版嵁", ErpStockOutRespVO.class, list);
-    }
-
-    private PageResult<ErpStockOutRespVO> buildStockOutVOPageResult(PageResult<ErpStockOutDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        // 1.1 鍑哄簱椤�
-        List<ErpStockOutItemDO> stockOutItemList = stockOutService.getStockOutItemListByOutIds(
-                convertSet(pageResult.getList(), ErpStockOutDO::getId));
-        Map<Long, List<ErpStockOutItemDO>> stockOutItemMap = convertMultiMap(stockOutItemList, ErpStockOutItemDO::getOutId);
-        // 1.2 浜у搧淇℃伅
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(stockOutItemList, ErpStockOutItemDO::getProductId));
-        // 1.3 瀹㈡埛淇℃伅
-        Map<Long, ErpCustomerDO> customerMap = customerService.getCustomerMap(
-                convertSet(pageResult.getList(), ErpStockOutDO::getCustomerId));
-        // 1.4 绠$悊鍛樹俊鎭�
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), stockOut -> Long.parseLong(stockOut.getCreator())));
-        // 2. 寮�濮嬫嫾鎺�
-        return BeanUtils.toBean(pageResult, ErpStockOutRespVO.class, stockOut -> {
-            stockOut.setItems(BeanUtils.toBean(stockOutItemMap.get(stockOut.getId()), ErpStockOutRespVO.Item.class,
-                    item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName())
-                            .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName()))));
-            stockOut.setProductNames(CollUtil.join(stockOut.getItems(), "锛�", ErpStockOutRespVO.Item::getProductName));
-            MapUtils.findAndThen(customerMap, stockOut.getCustomerId(), supplier -> stockOut.setCustomerName(supplier.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(stockOut.getCreator()), user -> stockOut.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java
deleted file mode 100644
index 943df16..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordRespVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 浜у搧搴撳瓨鏄庣粏")
-@RestController
-@RequestMapping("/erp/stock-record")
-@Validated
-public class ErpStockRecordController {
-
-    @Resource
-    private ErpStockRecordService stockRecordService;
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浜у搧搴撳瓨鏄庣粏")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:stock-record:query')")
-    public CommonResult<ErpStockRecordRespVO> getStockRecord(@RequestParam("id") Long id) {
-        ErpStockRecordDO stockRecord = stockRecordService.getStockRecord(id);
-        return success(BeanUtils.toBean(stockRecord, ErpStockRecordRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浜у搧搴撳瓨鏄庣粏鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:stock-record:query')")
-    public CommonResult<PageResult<ErpStockRecordRespVO>> getStockRecordPage(@Valid ErpStockRecordPageReqVO pageReqVO) {
-        PageResult<ErpStockRecordDO> pageResult = stockRecordService.getStockRecordPage(pageReqVO);
-        return success(buildStockRecrodVOPageResult(pageResult));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浜у搧搴撳瓨鏄庣粏 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:stock-record:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportStockRecordExcel(@Valid ErpStockRecordPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpStockRecordRespVO> list = buildStockRecrodVOPageResult(stockRecordService.getStockRecordPage(pageReqVO)).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浜у搧搴撳瓨鏄庣粏.xls", "鏁版嵁", ErpStockRecordRespVO.class, list);
-    }
-
-    private PageResult<ErpStockRecordRespVO> buildStockRecrodVOPageResult(PageResult<ErpStockRecordDO> pageResult) {
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return PageResult.empty(pageResult.getTotal());
-        }
-        Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
-                convertSet(pageResult.getList(), ErpStockRecordDO::getProductId));
-        Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(pageResult.getList(), ErpStockRecordDO::getWarehouseId));
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
-                convertSet(pageResult.getList(), record -> Long.parseLong(record.getCreator())));
-        return BeanUtils.toBean(pageResult, ErpStockRecordRespVO.class, stock -> {
-            MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName())
-                    .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName()));
-            MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(userMap, Long.parseLong(stock.getCreator()), user -> stock.setCreatorName(user.getNickname()));
-        });
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java
deleted file mode 100644
index 6adc383..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpWarehouseController.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-
-@Tag(name = "绠$悊鍚庡彴 - ERP 浠撳簱")
-@RestController
-@RequestMapping("/erp/warehouse")
-@Validated
-public class ErpWarehouseController {
-
-    @Resource
-    private ErpWarehouseService warehouseService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浠撳簱")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:create')")
-    public CommonResult<Long> createWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO createReqVO) {
-        return success(warehouseService.createWarehouse(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浠撳簱")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:update')")
-    public CommonResult<Boolean> updateWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO updateReqVO) {
-        warehouseService.updateWarehouse(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update-default-status")
-    @Operation(summary = "鏇存柊浠撳簱榛樿鐘舵��")
-    @Parameters({
-            @Parameter(name = "id", description = "缂栧彿", required = true),
-            @Parameter(name = "status", description = "鐘舵��", required = true)
-    })
-    public CommonResult<Boolean> updateWarehouseDefaultStatus(@RequestParam("id") Long id,
-                                                              @RequestParam("defaultStatus") Boolean defaultStatus) {
-        warehouseService.updateWarehouseDefaultStatus(id, defaultStatus);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浠撳簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:delete')")
-    public CommonResult<Boolean> deleteWarehouse(@RequestParam("id") Long id) {
-        warehouseService.deleteWarehouse(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浠撳簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
-    public CommonResult<ErpWarehouseRespVO> getWarehouse(@RequestParam("id") Long id) {
-        ErpWarehouseDO warehouse = warehouseService.getWarehouse(id);
-        return success(BeanUtils.toBean(warehouse, ErpWarehouseRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浠撳簱鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
-    public CommonResult<PageResult<ErpWarehouseRespVO>> getWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) {
-        PageResult<ErpWarehouseDO> pageResult = warehouseService.getWarehousePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱浠撳簱绮剧畝鍒楄〃", description = "鍙寘鍚寮�鍚殑浠撳簱锛屼富瑕佺敤浜庡墠绔殑涓嬫媺閫夐」")
-    public CommonResult<List<ErpWarehouseRespVO>> getWarehouseSimpleList() {
-        List<ErpWarehouseDO> list = warehouseService.getWarehouseListByStatus(CommonStatusEnum.ENABLE.getStatus());
-        return success(convertList(list, warehouse -> new ErpWarehouseRespVO().setId(warehouse.getId())
-                .setName(warehouse.getName()).setDefaultStatus(warehouse.getDefaultStatus())));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浠撳簱 Excel")
-    @PreAuthorize("@ss.hasPermission('erp:warehouse:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportWarehouseExcel(@Valid ErpWarehousePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ErpWarehouseDO> list = warehouseService.getWarehousePage(pageReqVO).getList();
-        // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "浠撳簱.xls", "鏁版嵁", ErpWarehouseRespVO.class,
-                        BeanUtils.toBean(list, ErpWarehouseRespVO.class));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java
deleted file mode 100644
index 2bae14c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckPageReqVO.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨鐩樼偣鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpStockCheckPageReqVO extends PageParam {
-
-    @Schema(description = "鐩樼偣鍗曞彿", example = "S123")
-    private String no;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "3113")
-    private Long warehouseId;
-
-    @Schema(description = "鐩樼偣鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] checkTime;
-
-    @Schema(description = "鐘舵��", example = "10")
-    @InEnum(ErpAuditStatus.class)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java
deleted file mode 100644
index 6f9b8da..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRespVO.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨鐩樼偣鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpStockCheckRespVO {
-
-    @Schema(description = "鐩樼偣缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    @ExcelProperty("鐩樼偣缂栧彿")
-    private Long id;
-
-    @Schema(description = "鐩樼偣鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123")
-    @ExcelProperty("鐩樼偣鍗曞彿")
-    private String no;
-
-    @Schema(description = "鐩樼偣鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鐩樼偣鏃堕棿")
-    private LocalDateTime checkTime;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-
-    @Schema(description = "鍚堣閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鍚堣閲戦")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
-    @DictFormat(AUDIT_STATUS)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鐩樼偣椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鐩樼偣椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "璐﹂潰鏁伴噺锛堝綋鍓嶅簱瀛橈級", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "璐﹂潰鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal stockCount;
-
-        @Schema(description = "瀹為檯鏁伴噺锛堝疄闄呭簱瀛橈級", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "瀹為檯鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal actualCount;
-
-        @Schema(description = "鐩堜簭鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "鐩堜簭鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java
deleted file mode 100644
index 0af223f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckSaveReqVO.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍑哄簱鍗曟柊澧�/淇敼 Request VO")
-@Data
-public class ErpStockCheckSaveReqVO {
-
-    @Schema(description = "鍑哄簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    private Long id;
-
-    @Schema(description = "鍑哄簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍑哄簱鏃堕棿涓嶈兘涓虹┖")
-    private LocalDateTime checkTime;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍑哄簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "鍑哄簱椤瑰垪琛ㄤ笉鑳戒负绌�")
-    @Valid
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍑哄簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "璐﹂潰鏁伴噺锛堝綋鍓嶅簱瀛橈級", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "璐﹂潰鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal stockCount;
-
-        @Schema(description = "瀹為檯鏁伴噺锛堝疄闄呭簱瀛橈級", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "瀹為檯鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal actualCount;
-
-        @Schema(description = "鐩堜簭鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "鐩堜簭鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java
deleted file mode 100644
index 02e3db3..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInPageReqVO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍏ュ簱鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpStockInPageReqVO extends PageParam {
-
-    @Schema(description = "鍏ュ簱鍗曞彿", example = "S123")
-    private String no;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "3113")
-    private Long supplierId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] inTime;
-
-    @Schema(description = "鐘舵��", example = "10")
-    @InEnum(ErpAuditStatus.class)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1")
-    private Long warehouseId;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java
deleted file mode 100644
index 1d23f36..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInRespVO.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍏ュ簱鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpStockInRespVO {
-
-    @Schema(description = "鍏ュ簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    @ExcelProperty("鍏ュ簱缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍏ュ簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123")
-    @ExcelProperty("鍏ュ簱鍗曞彿")
-    private String no;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "3113")
-    private Long supplierId;
-    @Schema(description = "渚涘簲鍟嗗悕绉�", example = "鑺嬮亾")
-    @ExcelProperty("渚涘簲鍟嗗悕绉�")
-    private String supplierName;
-
-    @Schema(description = "鍏ュ簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍏ュ簱鏃堕棿")
-    private LocalDateTime inTime;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-
-    @Schema(description = "鍚堣閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鍚堣閲戦")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
-    @DictFormat(AUDIT_STATUS)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍏ュ簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍏ュ簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java
deleted file mode 100644
index 0187872..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍏ュ簱鍗曟柊澧�/淇敼 Request VO")
-@Data
-public class ErpStockInSaveReqVO {
-
-    @Schema(description = "鍏ュ簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    private Long id;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "3113")
-    private Long supplierId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍏ュ簱鏃堕棿涓嶈兘涓虹┖")
-    private LocalDateTime inTime;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍏ュ簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "鍏ュ簱椤瑰垪琛ㄤ笉鑳戒负绌�")
-    @Valid
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍏ュ簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java
deleted file mode 100644
index 98a1fe9..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMovePageReqVO.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨璋冩嫧鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpStockMovePageReqVO extends PageParam {
-
-    @Schema(description = "璋冩嫧鍗曞彿", example = "S123")
-    private String no;
-
-    @Schema(description = "璋冩嫧鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] moveTime;
-
-    @Schema(description = "鐘舵��", example = "10")
-    @InEnum(ErpAuditStatus.class)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "璋冨嚭浠撳簱缂栧彿", example = "1")
-    private Long fromWarehouseId;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java
deleted file mode 100644
index f5f7650..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveRespVO.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨璋冩嫧鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpStockMoveRespVO {
-
-    @Schema(description = "璋冩嫧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    @ExcelProperty("璋冩嫧缂栧彿")
-    private Long id;
-
-    @Schema(description = "璋冩嫧鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123")
-    @ExcelProperty("璋冩嫧鍗曞彿")
-    private String no;
-
-    @Schema(description = "璋冩嫧鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("璋冩嫧鏃堕棿")
-    private LocalDateTime moveTime;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-
-    @Schema(description = "鍚堣閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鍚堣閲戦")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
-    @DictFormat(AUDIT_STATUS)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "璋冩嫧椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "璋冩嫧椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "璋冨嚭浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long fromWarehouseId;
-
-        @Schema(description = "璋冨叆浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
-        private Long toWarehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java
deleted file mode 100644
index 17a4315..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/move/ErpStockMoveSaveReqVO.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move;
-
-import cn.hutool.core.util.ObjectUtil;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.AssertTrue;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨璋冩嫧鍗曟柊澧�/淇敼 Request VO")
-@Data
-public class ErpStockMoveSaveReqVO {
-
-    @Schema(description = "璋冩嫧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    private Long id;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "3113")
-    private Long customerId;
-
-    @Schema(description = "璋冩嫧鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "璋冩嫧鏃堕棿涓嶈兘涓虹┖")
-    private LocalDateTime moveTime;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "璋冩嫧椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "璋冩嫧椤瑰垪琛ㄤ笉鑳戒负绌�")
-    @Valid
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "璋冩嫧椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "璋冨嚭浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "璋冨嚭浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long fromWarehouseId;
-
-        @Schema(description = "璋冨叆浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
-        @NotNull(message = "璋冨叆浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long toWarehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        @AssertTrue(message = "璋冨嚭銆佽皟浠撲粨搴撲笉鑳界浉鍚�")
-        @JsonIgnore
-        public boolean isWarehouseValid() {
-            return ObjectUtil.notEqual(fromWarehouseId, toWarehouseId);
-        }
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java
deleted file mode 100644
index 5f6558b..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍑哄簱鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpStockOutPageReqVO extends PageParam {
-
-    @Schema(description = "鍑哄簱鍗曞彿", example = "S123")
-    private String no;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "3113")
-    private Long customerId;
-
-    @Schema(description = "鍑哄簱鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] outTime;
-
-    @Schema(description = "鐘舵��", example = "10")
-    @InEnum(ErpAuditStatus.class)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "鍒涘缓鑰�")
-    private String creator;
-
-    @Schema(description = "浜у搧缂栧彿", example = "1")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1")
-    private Long warehouseId;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java
deleted file mode 100644
index a1d0f51..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.AUDIT_STATUS;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍑哄簱鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpStockOutRespVO {
-
-    @Schema(description = "鍑哄簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    @ExcelProperty("鍑哄簱缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍑哄簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "S123")
-    @ExcelProperty("鍑哄簱鍗曞彿")
-    private String no;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "3113")
-    private Long customerId;
-    @Schema(description = "瀹㈡埛鍚嶇О", example = "鑺嬮亾")
-    @ExcelProperty("瀹㈡埛鍚嶇О")
-    private String customerName;
-
-    @Schema(description = "鍑哄簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍑哄簱鏃堕棿")
-    private LocalDateTime outTime;
-
-    @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663")
-    @ExcelProperty("鍚堣鏁伴噺")
-    private BigDecimal totalCount;
-
-    @Schema(description = "鍚堣閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906")
-    @ExcelProperty("鍚堣閲戦")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @ExcelProperty(value = "鐘舵��", converter = DictConvert.class)
-    @DictFormat(AUDIT_STATUS)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍒涘缓浜�", example = "鑺嬮亾")
-    private String creator;
-    @Schema(description = "鍒涘缓浜哄悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍑哄簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    private List<Item> items;
-
-    @Schema(description = "浜у搧淇℃伅", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("浜у搧淇℃伅")
-    private String productNames;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍑哄簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-        // ========== 鍏宠仈瀛楁 ==========
-
-        @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "宸у厠鍔�")
-        private String productName;
-        @Schema(description = "浜у搧鏉$爜", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985")
-        private String productBarCode;
-        @Schema(description = "浜у搧鍗曚綅鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鐩�")
-        private String productUnitName;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal stockCount; // 璇ュ瓧娈典粎浠呭湪鈥滆鎯呪�濆拰鈥滅紪杈戔�濇椂浣跨敤
-
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java
deleted file mode 100644
index 5a90379..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 鍏跺畠鍑哄簱鍗曟柊澧�/淇敼 Request VO")
-@Data
-public class ErpStockOutSaveReqVO {
-
-    @Schema(description = "鍑哄簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11756")
-    private Long id;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "3113")
-    private Long customerId;
-
-    @Schema(description = "鍑哄簱鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍑哄簱鏃堕棿涓嶈兘涓虹┖")
-    private LocalDateTime outTime;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "闄勪欢 URL", example = "https://www.iocoder.cn/1.doc")
-    private String fileUrl;
-
-    @Schema(description = "鍑哄簱椤瑰垪琛�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "鍑哄簱椤瑰垪琛ㄤ笉鑳戒负绌�")
-    @Valid
-    private List<Item> items;
-
-    @Data
-    public static class Item {
-
-        @Schema(description = "鍑哄簱椤圭紪鍙�", example = "11756")
-        private Long id;
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
-        @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-        private Long productId;
-
-        @Schema(description = "浜у搧鍗曚环", example = "100.00")
-        private BigDecimal productPrice;
-
-        @Schema(description = "浜у搧鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        @NotNull(message = "浜у搧鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal count;
-
-        @Schema(description = "澶囨敞", example = "闅忎究")
-        private String remark;
-
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java
deleted file mode 100644
index c478e4f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordPageReqVO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧搴撳瓨鏄庣粏鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpStockRecordPageReqVO extends PageParam {
-
-    @Schema(description = "浜у搧缂栧彿", example = "10625")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "32407")
-    private Long warehouseId;
-
-    @Schema(description = "涓氬姟绫诲瀷", example = "10")
-    private Integer bizType;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "Z110")
-    private String bizNo;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java
deleted file mode 100644
index 47e1261..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.erp.enums.DictTypeConstants;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浜у搧搴撳瓨鏄庣粏 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpStockRecordRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "18909")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "10625")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "32407")
-    private Long warehouseId;
-
-    @Schema(description = "鍑哄叆搴撴暟閲�", requiredMode = Schema.RequiredMode.REQUIRED, example = "11084")
-    @ExcelProperty("鍑哄叆搴撴暟閲�")
-    private BigDecimal count;
-
-    @Schema(description = "鎬诲簱瀛橀噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "4307")
-    @ExcelProperty("鎬诲簱瀛橀噺")
-    private BigDecimal totalCount;
-
-    @Schema(description = "涓氬姟绫诲瀷", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @ExcelProperty(value = "涓氬姟绫诲瀷", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.STOCK_RECORD_BIZ_TYPE)
-    private Integer bizType;
-
-    @Schema(description = "涓氬姟缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "27093")
-    @ExcelProperty("涓氬姟缂栧彿")
-    private Long bizId;
-
-    @Schema(description = "涓氬姟椤圭紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "23516")
-    @ExcelProperty("涓氬姟椤圭紪鍙�")
-    private Long bizItemId;
-
-    @Schema(description = "涓氬姟鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "Z110")
-    @ExcelProperty("涓氬姟鍗曞彿")
-    private String bizNo;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍒涘缓浜�", requiredMode = Schema.RequiredMode.REQUIRED, example = "25682")
-    private String creator;
-
-    // ========== 浜у搧淇℃伅 ==========
-
-    @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑻规灉")
-    @ExcelProperty("浜у搧鍚嶇О")
-    private String productName;
-
-    @Schema(description = "浜у搧鍒嗙被", requiredMode = Schema.RequiredMode.REQUIRED, example = "姘存灉")
-    @ExcelProperty("浜у搧鍒嗙被")
-    private String categoryName;
-
-    @Schema(description = "鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "涓�")
-    @ExcelProperty("鍗曚綅")
-    private String unitName;
-
-    // ========== 浠撳簱淇℃伅 ==========
-
-    @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-    @ExcelProperty("浠撳簱鍚嶇О")
-    private String warehouseName;
-
-    // ========== 鐢ㄦ埛淇℃伅 ==========
-
-    @Schema(description = "鍒涘缓浜�", requiredMode = Schema.RequiredMode.REQUIRED, example = "寮犱笁")
-    @ExcelProperty("鍒涘缓浜�")
-    private String creatorName;
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java
deleted file mode 100644
index f7f3fa3..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockPageReqVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpStockPageReqVO extends PageParam {
-
-    @Schema(description = "浜у搧缂栧彿", example = "19614")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "2802")
-    private Long warehouseId;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java
deleted file mode 100644
index 8d84789..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 搴撳瓨 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpStockRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "17086")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "浜у搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "19614")
-    private Long productId;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2802")
-    private Long warehouseId;
-
-    @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "21935")
-    @ExcelProperty("搴撳瓨鏁伴噺")
-    private BigDecimal count;
-
-    // ========== 浜у搧淇℃伅 ==========
-
-    @Schema(description = "浜у搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑻规灉")
-    @ExcelProperty("浜у搧鍚嶇О")
-    private String productName;
-
-    @Schema(description = "浜у搧鍒嗙被", requiredMode = Schema.RequiredMode.REQUIRED, example = "姘存灉")
-    @ExcelProperty("浜у搧鍒嗙被")
-    private String categoryName;
-
-    @Schema(description = "鍗曚綅", requiredMode = Schema.RequiredMode.REQUIRED, example = "涓�")
-    @ExcelProperty("鍗曚綅")
-    private String unitName;
-
-    // ========== 浠撳簱淇℃伅 ==========
-
-    @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-    @ExcelProperty("浠撳簱鍚嶇О")
-    private String warehouseName;
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java
deleted file mode 100644
index 2accf9a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehousePageReqVO.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浠撳簱鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ErpWarehousePageReqVO extends PageParam {
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鏉庡洓")
-    private String name;
-
-    @Schema(description = "寮�鍚姸鎬�", example = "1")
-    @InEnum(CommonStatusEnum.class)
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java
deleted file mode 100644
index 06825b8..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseRespVO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浠撳簱 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ErpWarehouseRespVO {
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11614")
-    @ExcelProperty("浠撳簱缂栧彿")
-    private Long id;
-
-    @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-    @ExcelProperty("浠撳簱鍚嶇О")
-    private String name;
-
-    @Schema(description = "浠撳簱鍦板潃", example = "涓婃捣闄嗗鍢�")
-    @ExcelProperty("浠撳簱鍦板潃")
-    private String address;
-
-    @Schema(description = "鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @ExcelProperty("鎺掑簭")
-    private Long sort;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "璐熻矗浜�", example = "鑺嬪ご")
-    @ExcelProperty("璐熻矗浜�")
-    private String principal;
-
-    @Schema(description = "浠撳偍璐癸紝鍗曚綅锛氬厓", example = "13973")
-    @ExcelProperty("浠撳偍璐癸紝鍗曚綅锛氬厓")
-    private BigDecimal warehousePrice;
-
-    @Schema(description = "鎼繍璐癸紝鍗曚綅锛氬厓", example = "9903")
-    @ExcelProperty("鎼繍璐癸紝鍗曚綅锛氬厓")
-    private BigDecimal truckagePrice;
-
-    @Schema(description = "寮�鍚姸鎬�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty(value = "寮�鍚姸鎬�", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.COMMON_STATUS)
-    private Integer status;
-
-    @Schema(description = "鏄惁榛樿", example = "1")
-    @ExcelProperty("鏄惁榛樿")
-    private Boolean defaultStatus;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java
deleted file mode 100644
index 7bc956d..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/warehouse/ErpWarehouseSaveReqVO.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - ERP 浠撳簱鏂板/淇敼 Request VO")
-@Data
-public class ErpWarehouseSaveReqVO {
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "11614")
-    private Long id;
-
-    @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鏉庡洓")
-    @NotEmpty(message = "浠撳簱鍚嶇О涓嶈兘涓虹┖")
-    private String name;
-
-    @Schema(description = "浠撳簱鍦板潃", example = "涓婃捣闄嗗鍢�")
-    private String address;
-
-    @Schema(description = "鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    @NotNull(message = "鎺掑簭涓嶈兘涓虹┖")
-    private Long sort;
-
-    @Schema(description = "澶囨敞", example = "闅忎究")
-    private String remark;
-
-    @Schema(description = "璐熻矗浜�", example = "鑺嬪ご")
-    private String principal;
-
-    @Schema(description = "浠撳偍璐癸紝鍗曚綅锛氬厓", example = "13973")
-    private BigDecimal warehousePrice;
-
-    @Schema(description = "鎼繍璐癸紝鍗曚綅锛氬厓", example = "9903")
-    private BigDecimal truckagePrice;
-
-    @Schema(description = "寮�鍚姸鎬�", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotNull(message = "寮�鍚姸鎬佷笉鑳戒负绌�")
-    @InEnum(CommonStatusEnum.class)
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/mapping/ErpMesWarehouseMappingConvert.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/mapping/ErpMesWarehouseMappingConvert.java
deleted file mode 100644
index 594fe16..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/mapping/ErpMesWarehouseMappingConvert.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.module.erp.convert.mapping;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingCreateReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingUpdateReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.mapping.ErpMesWarehouseMappingDO;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠 Convert
- */
-@Mapper
-public interface ErpMesWarehouseMappingConvert {
-
-    ErpMesWarehouseMappingConvert INSTANCE = Mappers.getMapper(ErpMesWarehouseMappingConvert.class);
-
-    ErpMesWarehouseMappingDO convert(ErpMesWarehouseMappingCreateReqVO bean);
-
-    ErpMesWarehouseMappingDO convert(ErpMesWarehouseMappingUpdateReqVO bean);
-
-    default PageResult<ErpMesWarehouseMappingDO> convertPage(PageResult<ErpMesWarehouseMappingDO> page) {
-        return page;
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java
index dd5bc5f..79607ff 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java
@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.erp.dal.dataobject.finance;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -15,7 +14,7 @@
  * @author 鑺嬮亾婧愮爜
  */
 @TableName("erp_finance_payment_item")
-@KeySequence("erp_finance_payment_item_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
+@KeySequence("erp_finance_payment_item_seq")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
@@ -44,14 +43,10 @@
     private Integer bizType;
     /**
      * 涓氬姟缂栧彿
-     *
-     * 渚嬪璇达細{@link ErpPurchaseInDO#getId()}
      */
     private Long bizId;
     /**
      * 涓氬姟鍗曞彿
-     *
-     * 渚嬪璇达細{@link ErpPurchaseInDO#getNo()}
      */
     private String bizNo;
 
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java
index 87f051d..7cc3311 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java
@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.erp.dal.dataobject.finance;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -15,7 +14,7 @@
  * @author 鑺嬮亾婧愮爜
  */
 @TableName("erp_finance_receipt_item")
-@KeySequence("erp_finance_receipt_item_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
+@KeySequence("erp_finance_receipt_item_seq")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
@@ -44,14 +43,10 @@
     private Integer bizType;
     /**
      * 涓氬姟缂栧彿
-     *
-     * 渚嬪璇达細{@link ErpSaleOutDO#getId()}
      */
     private Long bizId;
     /**
      * 涓氬姟鍗曞彿
-     *
-     * 渚嬪璇达細{@link ErpSaleOutDO#getNo()}
      */
     private String bizNo;
 
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/mapping/ErpMesWarehouseMappingDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/mapping/ErpMesWarehouseMappingDO.java
deleted file mode 100644
index e806d09..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/mapping/ErpMesWarehouseMappingDO.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.mapping;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠 DO
- */
-@TableName("erp_mes_warehouse_mapping")
-@KeySequence("erp_mes_warehouse_mapping_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpMesWarehouseMappingDO extends BaseDO {
-
-    /**
-     * 涓婚敭ID
-     */
-    @TableId
-    private Long id;
-
-    /**
-     * ERP浠撳簱ID
-     */
-    private Long erpWarehouseId;
-
-    /**
-     * ERP浠撳簱鍚嶇О锛堝啑浣欙級
-     */
-    private String erpWarehouseName;
-
-    /**
-     * MES浠撳簱ID
-     */
-    private Long mesWarehouseId;
-
-    /**
-     * MES浠撳簱鍚嶇О锛堝啑浣欙級
-     */
-    private String mesWarehouseName;
-
-    /**
-     * 鐘舵�侊紙1-鍚敤 0-绂佺敤锛�
-     */
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java
deleted file mode 100644
index 4c62251..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.product;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * ERP 浜у搧鍒嗙被 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_product_category")
-@KeySequence("erp_product_category_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpProductCategoryDO extends BaseDO {
-
-    public static final Long PARENT_ID_ROOT = 0L;
-
-    /**
-     * 鍒嗙被缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鐖跺垎绫荤紪鍙�
-     */
-    private Long parentId;
-    /**
-     * 鍒嗙被鍚嶇О
-     */
-    private String name;
-    /**
-     * 鍒嗙被缂栫爜
-     */
-    private String code;
-    /**
-     * 鍒嗙被鎺掑簭
-     */
-    private Integer sort;
-    /**
-     * 寮�鍚姸鎬�
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
-     */
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java
deleted file mode 100644
index 31e4aa2..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.product;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 浜у搧 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_product")
-@KeySequence("erp_product_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpProductDO extends BaseDO {
-
-    /**
-     * 浜у搧缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 浜у搧鍚嶇О
-     */
-    private String name;
-    /**
-     * 浜у搧鏉$爜
-     */
-    private String barCode;
-    /**
-     * 浜у搧鍒嗙被缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductCategoryDO#getId()}
-     */
-    private Long categoryId;
-    /**
-     * 鍗曚綅缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductUnitDO#getId()}
-     */
-    private Long unitId;
-    /**
-     * 浜у搧鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
-     */
-    private Integer status;
-    /**
-     * 浜у搧瑙勬牸
-     */
-    private String standard;
-    /**
-     * 浜у搧澶囨敞
-     */
-    private String remark;
-    /**
-     * 淇濊川鏈熷ぉ鏁�
-     */
-    private Integer expiryDay;
-    /**
-     * 鍩虹閲嶉噺锛坘g锛�
-     */
-    private BigDecimal weight;
-    /**
-     * 閲囪喘浠锋牸锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal purchasePrice;
-    /**
-     * 閿�鍞环鏍硷紝鍗曚綅锛氬厓
-     */
-    private BigDecimal salePrice;
-    /**
-     * 鏈�浣庝环鏍硷紝鍗曚綅锛氬厓
-     */
-    private BigDecimal minPrice;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java
deleted file mode 100644
index 73c96c2..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.product;
-
-import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-
-/**
- * ERP 浜у搧鍗曚綅 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_product_unit")
-@KeySequence("erp_product_unit_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpProductUnitDO extends BaseDO {
-
-    /**
-     * 鍗曚綅缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍗曚綅鍚嶅瓧
-     */
-    private String name;
-    /**
-     * 鍗曚綅鐘舵��
-     */
-    private Integer status;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java
deleted file mode 100644
index b8186f5..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.purchase;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 閲囪喘鍏ュ簱 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName(value = "erp_purchase_in")
-@KeySequence("erp_purchase_in_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpPurchaseInDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閲囪喘鍏ュ簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 鍏ュ簱鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 渚涘簲鍟嗙紪鍙�
-     *
-     * 鍏宠仈 {@link ErpSupplierDO#getId()}
-     */
-    private Long supplierId;
-    /**
-     * 缁撶畻璐︽埛缂栧彿
-     *
-     * 鍏宠仈 {@link ErpAccountDO#getId()}
-     */
-    private Long accountId;
-    /**
-     * 鍏ュ簱鏃堕棿
-     */
-    private LocalDateTime inTime;
-
-    /**
-     * 閲囪喘璁㈠崟缂栧彿
-     *
-     * 鍏宠仈 {@link ErpPurchaseOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 閲囪喘璁㈠崟鍙�
-     *
-     * 鍐椾綑 {@link ErpPurchaseOrderDO#getNo()}
-     */
-    private String orderNo;
-
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓
-     *
-     * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 宸叉敮浠橀噾棰濓紝鍗曚綅锛氬厓
-     *
-     * 鐩殑锛氬拰 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO} 缁撳悎锛岃褰曞凡鏀粯閲戦
-     */
-    private BigDecimal paymentPrice;
-
-    /**
-     * 鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalProductPrice;
-    /**
-     * 鍚堣绋庨锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalTaxPrice;
-    /**
-     * 浼樻儬鐜囷紝鐧惧垎姣�
-     */
-    private BigDecimal discountPercent;
-    /**
-     * 浼樻儬閲戦锛屽崟浣嶏細鍏�
-     *
-     * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent
-     */
-    private BigDecimal discountPrice;
-    /**
-     * 鍏跺畠閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal otherPrice;
-
-    /**
-     * 闄勪欢鍦板潃
-     */
-    private String fileUrl;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java
deleted file mode 100644
index 1597bc1..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.purchase;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 閲囪喘鍏ュ簱椤� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_purchase_in_items")
-@KeySequence("erp_purchase_in_items_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpPurchaseInItemDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閲囪喘鍏ュ簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpPurchaseInDO##getId()}
-     */
-    private Long inId;
-    /**
-     * 閲囪喘璁㈠崟椤圭紪鍙�
-     *
-     * 鍏宠仈 {@link ErpPurchaseOrderItemDO#getId()}
-     * 鐩殑锛氭柟渚挎洿鏂板叧鑱旂殑閲囪喘璁㈠崟椤圭殑鍏ュ簱鏁伴噺
-     */
-    private Long orderItemId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅鍗曚綅
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-
-    /**
-     * 浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal productPrice;
-    /**
-     * 鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鎬讳环锛屽崟浣嶏細鍏�
-     *
-     * totalPrice = productPrice * count
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 绋庣巼锛岀櫨鍒嗘瘮
-     */
-    private BigDecimal taxPercent;
-    /**
-     * 绋庨锛屽崟浣嶏細鍏�
-     *
-     * taxPrice = totalPrice * taxPercent
-     */
-    private BigDecimal taxPrice;
-
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java
index bba1542..6f1c09b 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java
@@ -53,6 +53,16 @@
      */
     private Long accountId;
     /**
+     * 鍏宠仈閲囪喘鐢宠缂栧彿
+     *
+     * 鍏宠仈 {@link ErpPurchaseRequestDO#getId()}
+     */
+    private Long requestId;
+    /**
+     * 閲囪喘鐢宠鍗曞彿
+     */
+    private String requestNo;
+    /**
      * 涓嬪崟鏃堕棿
      */
     private LocalDateTime orderTime;
@@ -112,4 +122,11 @@
      */
     private BigDecimal returnCount;
 
+    /**
+     * 鍏ュ簱鐘舵��
+     *
+     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpPurchaseOrderInStatusEnum}
+     */
+    private Integer inStatus;
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java
index aa54d33..f20b148 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java
@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.erp.dal.dataobject.purchase;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -36,15 +35,15 @@
      */
     private Long orderId;
     /**
-     * 浜у搧缂栧彿
+     * 鐗╂枡缂栧彿
      *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
+     * 鍏宠仈 {@link cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO#getId()}
      */
     private Long productId;
     /**
-     * 浜у搧鍗曚綅鍗曚綅
+     * 璁¢噺鍗曚綅缂栧彿
      *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
+     * 鍏宠仈 {@link cn.iocoder.yudao.module.mdm.api.unitmeasure.dto.MdmUnitMeasureRespDTO#getId()}
      */
     private Long productUnitId;
 
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestDO.java
index cb51196..a3e896c 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestDO.java
@@ -111,6 +111,13 @@
     private LocalDateTime orderTime;
 
     /**
+     * 鍏ュ簱鐘舵��
+     *
+     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpPurchaseOrderInStatusEnum}
+     */
+    private Integer inStatus;
+
+    /**
      * 闄勪欢鍦板潃
      */
     private String fileUrl;
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestItemDO.java
index e5fcb71..7e54ce2 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestItemDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseRequestItemDO.java
@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.erp.dal.dataobject.purchase;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -37,15 +36,15 @@
      */
     private Long requestId;
     /**
-     * 浜у搧缂栧彿
+     * 鐗╂枡缂栧彿
      *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
+     * 鍏宠仈 {@link cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO#getId()}
      */
     private Long productId;
     /**
-     * 浜у搧鍗曚綅缂栧彿
+     * 璁¢噺鍗曚綅缂栧彿
      *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
+     * 鍏宠仈 {@link cn.iocoder.yudao.module.mdm.api.unitmeasure.dto.MdmUnitMeasureRespDTO#getId()}
      */
     private Long productUnitId;
 
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java
deleted file mode 100644
index 4189e0a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.purchase;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 閲囪喘閫�璐� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName(value = "erp_purchase_return")
-@KeySequence("erp_purchase_return_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpPurchaseReturnDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閲囪喘閫�璐у崟鍙�
-     */
-    private String no;
-    /**
-     * 閫�璐х姸鎬�
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 渚涘簲鍟嗙紪鍙�
-     *
-     * 鍏宠仈 {@link ErpSupplierDO#getId()}
-     */
-    private Long supplierId;
-    /**
-     * 缁撶畻璐︽埛缂栧彿
-     *
-     * 鍏宠仈 {@link ErpAccountDO#getId()}
-     */
-    private Long accountId;
-    /**
-     * 閫�璐ф椂闂�
-     */
-    private LocalDateTime returnTime;
-
-    /**
-     * 閲囪喘璁㈠崟缂栧彿
-     *
-     * 鍏宠仈 {@link ErpPurchaseOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 閲囪喘璁㈠崟鍙�
-     *
-     * 鍐椾綑 {@link ErpPurchaseOrderDO#getNo()}
-     */
-    private String orderNo;
-
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓
-     *
-     * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 宸查��娆鹃噾棰濓紝鍗曚綅锛氬厓
-     *
-     * 鐩殑锛氬拰 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO} 缁撳悎锛岃褰曞凡鏀粯閲戦
-     */
-    private BigDecimal refundPrice;
-
-    /**
-     * 鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalProductPrice;
-    /**
-     * 鍚堣绋庨锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalTaxPrice;
-    /**
-     * 浼樻儬鐜囷紝鐧惧垎姣�
-     */
-    private BigDecimal discountPercent;
-    /**
-     * 浼樻儬閲戦锛屽崟浣嶏細鍏�
-     *
-     * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent
-     */
-    private BigDecimal discountPrice;
-    /**
-     * 鍏跺畠閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal otherPrice;
-
-    /**
-     * 闄勪欢鍦板潃
-     */
-    private String fileUrl;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java
deleted file mode 100644
index 1e17132..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.purchase;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 閲囪喘閫�璐ч」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_purchase_return_items")
-@KeySequence("erp_purchase_return_items_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpPurchaseReturnItemDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閲囪喘閫�璐х紪鍙�
-     *
-     * 鍏宠仈 {@link ErpPurchaseReturnDO##getId()}
-     */
-    private Long returnId;
-    /**
-     * 閲囪喘璁㈠崟椤圭紪鍙�
-     *
-     * 鍏宠仈 {@link ErpPurchaseOrderItemDO#getId()}
-     * 鐩殑锛氭柟渚挎洿鏂板叧鑱旂殑閲囪喘璁㈠崟椤圭殑閫�璐ф暟閲�
-     */
-    private Long orderItemId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅鍗曚綅
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-
-    /**
-     * 浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal productPrice;
-    /**
-     * 鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鎬讳环锛屽崟浣嶏細鍏�
-     *
-     * totalPrice = productPrice * count
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 绋庣巼锛岀櫨鍒嗘瘮
-     */
-    private BigDecimal taxPercent;
-    /**
-     * 绋庨锛屽崟浣嶏細鍏�
-     *
-     * taxPrice = totalPrice * taxPercent
-     */
-    private BigDecimal taxPrice;
-
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java
index 77dfa18..83b8634 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java
@@ -126,4 +126,11 @@
      */
     private BigDecimal returnCount;
 
+    /**
+     * 鍑哄簱鐘舵��
+     *
+     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpSaleOrderOutStatusEnum}
+     */
+    private Integer outStatus;
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java
index 4c82976..c311157 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java
@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.erp.dal.dataobject.sale;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -15,7 +14,7 @@
  * @author 鑺嬮亾婧愮爜
  */
 @TableName("erp_sale_order_items")
-@KeySequence("erp_sale_order_items_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
+@KeySequence("erp_sale_order_items_seq")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
@@ -36,15 +35,15 @@
      */
     private Long orderId;
     /**
-     * 浜у搧缂栧彿
+     * 鐗╂枡缂栧彿
      *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
+     * 鍏宠仈 {@link cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO#getId()}
      */
     private Long productId;
     /**
-     * 浜у搧鍗曚綅鍗曚綅
+     * 璁¢噺鍗曚綅缂栧彿
      *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
+     * 鍏宠仈 {@link cn.iocoder.yudao.module.mdm.api.unitmeasure.dto.MdmUnitMeasureRespDTO#getId()}
      */
     private Long productUnitId;
 
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java
deleted file mode 100644
index 117cebd..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.sale;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 閿�鍞嚭搴� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName(value = "erp_sale_out")
-@KeySequence("erp_sale_out_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpSaleOutDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閿�鍞嚭搴撳崟鍙�
-     */
-    private String no;
-    /**
-     * 鍑哄簱鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 瀹㈡埛缂栧彿
-     *
-     * 鍏宠仈 CRM 瀹㈡埛 {@link cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO#getId()}
-     */
-    private Long customerId;
-    /**
-     * 缁撶畻璐︽埛缂栧彿
-     *
-     * 鍏宠仈 {@link ErpAccountDO#getId()}
-     */
-    private Long accountId;
-    /**
-     * 閿�鍞憳缂栧彿
-     *
-     * 鍏宠仈 AdminUserDO 鐨� id 瀛楁
-     */
-    private Long saleUserId;
-    /**
-     * 鍑哄簱鏃堕棿
-     */
-    private LocalDateTime outTime;
-
-    /**
-     * 閿�鍞鍗曠紪鍙�
-     *
-     * 鍏宠仈 {@link ErpSaleOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 閿�鍞鍗曞彿
-     *
-     * 鍐椾綑 {@link ErpSaleOrderDO#getNo()}
-     */
-    private String orderNo;
-
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓
-     *
-     * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 宸叉敹娆鹃噾棰濓紝鍗曚綅锛氬厓
-     *
-     * 鐩殑锛氬拰 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO} 缁撳悎锛岃褰曞凡鏀舵閲戦
-     */
-    private BigDecimal receiptPrice;
-
-    /**
-     * 鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalProductPrice;
-    /**
-     * 鍚堣绋庨锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalTaxPrice;
-    /**
-     * 浼樻儬鐜囷紝鐧惧垎姣�
-     */
-    private BigDecimal discountPercent;
-    /**
-     * 浼樻儬閲戦锛屽崟浣嶏細鍏�
-     *
-     * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent
-     */
-    private BigDecimal discountPrice;
-    /**
-     * 鍏跺畠閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal otherPrice;
-
-    /**
-     * 闄勪欢鍦板潃
-     */
-    private String fileUrl;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java
deleted file mode 100644
index b9b4064..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.sale;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 閿�鍞嚭搴撻」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_sale_out_items")
-@KeySequence("erp_sale_out_items_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpSaleOutItemDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閿�鍞嚭搴撶紪鍙�
-     *
-     * 鍏宠仈 {@link ErpStockOutDO##getId()}
-     */
-    private Long outId;
-    /**
-     * 閿�鍞鍗曢」缂栧彿
-     *
-     * 鍏宠仈 {@link ErpSaleOrderItemDO#getId()}
-     * 鐩殑锛氭柟渚挎洿鏂板叧鑱旂殑閿�鍞鍗曢」鐨勫嚭搴撴暟閲�
-     */
-    private Long orderItemId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅鍗曚綅
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-
-    /**
-     * 浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal productPrice;
-    /**
-     * 鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鎬讳环锛屽崟浣嶏細鍏�
-     *
-     * totalPrice = productPrice * count
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 绋庣巼锛岀櫨鍒嗘瘮
-     */
-    private BigDecimal taxPercent;
-    /**
-     * 绋庨锛屽崟浣嶏細鍏�
-     *
-     * taxPrice = totalPrice * taxPercent
-     */
-    private BigDecimal taxPrice;
-
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java
deleted file mode 100644
index 10f0dff..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.sale;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 閿�鍞��璐� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName(value = "erp_sale_return")
-@KeySequence("erp_sale_return_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpSaleReturnDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閿�鍞��璐у崟鍙�
-     */
-    private String no;
-    /**
-     * 閫�璐х姸鎬�
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 瀹㈡埛缂栧彿
-     *
-     * 鍏宠仈 CRM 瀹㈡埛 {@link cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO#getId()}
-     */
-    private Long customerId;
-    /**
-     * 缁撶畻璐︽埛缂栧彿
-     *
-     * 鍏宠仈 {@link ErpAccountDO#getId()}
-     */
-    private Long accountId;
-    /**
-     * 閿�鍞憳缂栧彿
-     *
-     * 鍏宠仈 AdminUserDO 鐨� id 瀛楁
-     */
-    private Long saleUserId;
-    /**
-     * 閫�璐ф椂闂�
-     */
-    private LocalDateTime returnTime;
-
-    /**
-     * 閿�鍞鍗曠紪鍙�
-     *
-     * 鍏宠仈 {@link ErpSaleOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 閿�鍞鍗曞彿
-     *
-     * 鍐椾綑 {@link ErpSaleOrderDO#getNo()}
-     */
-    private String orderNo;
-
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鏈�缁堝悎璁′环鏍硷紝鍗曚綅锛氬厓
-     *
-     * totalPrice = totalProductPrice + totalTaxPrice - discountPrice + otherPrice
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 宸查��娆鹃噾棰濓紝鍗曚綅锛氬厓
-     *
-     * 鐩殑锛氬拰 {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO} 缁撳悎锛岃褰曞凡閫�娆鹃噾棰�
-     */
-    private BigDecimal refundPrice;
-
-    /**
-     * 鍚堣浜у搧浠锋牸锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalProductPrice;
-    /**
-     * 鍚堣绋庨锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalTaxPrice;
-    /**
-     * 浼樻儬鐜囷紝鐧惧垎姣�
-     */
-    private BigDecimal discountPercent;
-    /**
-     * 浼樻儬閲戦锛屽崟浣嶏細鍏�
-     *
-     * discountPrice = (totalProductPrice + totalTaxPrice) * discountPercent
-     */
-    private BigDecimal discountPrice;
-    /**
-     * 鍏跺畠閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal otherPrice;
-
-    /**
-     * 闄勪欢鍦板潃
-     */
-    private String fileUrl;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java
deleted file mode 100644
index 8851d15..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.sale;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 閿�鍞��璐ч」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_sale_return_items")
-@KeySequence("erp_sale_return_items_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpSaleReturnItemDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 閿�鍞��璐х紪鍙�
-     *
-     * 鍏宠仈 {@link ErpSaleReturnDO##getId()}
-     */
-    private Long returnId;
-    /**
-     * 閿�鍞鍗曢」缂栧彿
-     *
-     * 鍏宠仈 {@link ErpSaleOrderItemDO#getId()}
-     * 鐩殑锛氭柟渚挎洿鏂板叧鑱旂殑閿�鍞鍗曢」鐨勯��璐ф暟閲�
-     */
-    private Long orderItemId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅鍗曚綅
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-
-    /**
-     * 浜у搧鍗曚綅鍗曚环锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal productPrice;
-    /**
-     * 鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鎬讳环锛屽崟浣嶏細鍏�
-     *
-     * totalPrice = productPrice * count
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 绋庣巼锛岀櫨鍒嗘瘮
-     */
-    private BigDecimal taxPercent;
-    /**
-     * 绋庨锛屽崟浣嶏細鍏�
-     *
-     * taxPrice = totalPrice * taxPercent
-     */
-    private BigDecimal taxPrice;
-
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java
deleted file mode 100644
index e916827..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 搴撳瓨鐩樼偣鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_check")
-@KeySequence("erp_stock_check_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockCheckDO extends BaseDO {
-
-    /**
-     * 鐩樼偣缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鐩樼偣鍗曞彿
-     */
-    private String no;
-    /**
-     * 鐩樼偣鏃堕棿
-     */
-    private LocalDateTime checkTime;
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-    /**
-     * 闄勪欢 URL
-     */
-    private String fileUrl;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java
deleted file mode 100644
index c3c4dbf..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 搴撳瓨鐩樼偣鍗曢」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_check_item")
-@KeySequence("erp_stock_check_item_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockCheckItemDO extends BaseDO {
-
-    /**
-     * 鐩樼偣椤圭紪鍙�
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鐩樼偣缂栧彿
-     *
-     * 鍏宠仈 {@link ErpStockCheckDO#getId()}
-     */
-    private Long checkId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅缂栧彿
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-    /**
-     * 浜у搧鍗曚环
-     */
-    private BigDecimal productPrice;
-    /**
-     * 璐﹂潰鏁伴噺锛堝綋鍓嶅簱瀛橈級
-     */
-    private BigDecimal stockCount;
-    /**
-     * 瀹為檯鏁伴噺锛堝疄闄呭簱瀛橈級
-     */
-    private BigDecimal actualCount;
-    /**
-     * 鐩堜簭鏁伴噺
-     *
-     * count = stockCount - actualCount
-     */
-    private BigDecimal count;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java
deleted file mode 100644
index 558c6c6..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 浜у搧搴撳瓨 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock")
-@KeySequence("erp_stock_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 搴撳瓨鏁伴噺
-     */
-    private BigDecimal count;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java
deleted file mode 100644
index ee2512a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 鍏跺畠鍏ュ簱鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_in")
-@KeySequence("erp_stock_in_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockInDO extends BaseDO {
-
-    /**
-     * 鍏ュ簱缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍏ュ簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 渚涘簲鍟嗙紪鍙�
-     *
-     * 鍏宠仈 {@link ErpSupplierDO#getId()}
-     */
-    private Long supplierId;
-    /**
-     * 鍏ュ簱鏃堕棿
-     */
-    private LocalDateTime inTime;
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-    /**
-     * 闄勪欢 URL
-     */
-    private String fileUrl;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java
deleted file mode 100644
index 3e3ca9c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 鍏跺畠鍏ュ簱鍗曢」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_in_item")
-@KeySequence("erp_stock_in_item_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockInItemDO extends BaseDO {
-
-    /**
-     * 鍏ュ簱椤圭紪鍙�
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍏ュ簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpStockInDO#getId()}
-     */
-    private Long inId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅缂栧彿
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-    /**
-     * 浜у搧鍗曚环
-     */
-    private BigDecimal productPrice;
-    /**
-     * 浜у搧鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java
deleted file mode 100644
index 682b331..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_move")
-@KeySequence("erp_stock_move_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockMoveDO extends BaseDO {
-
-    /**
-     * 璋冩嫧缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 璋冩嫧鍗曞彿
-     */
-    private String no;
-    /**
-     * 璋冩嫧鏃堕棿
-     */
-    private LocalDateTime moveTime;
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-    /**
-     * 闄勪欢 URL
-     */
-    private String fileUrl;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java
deleted file mode 100644
index aee2036..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗曢」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_move_item")
-@KeySequence("erp_stock_move_item_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockMoveItemDO extends BaseDO {
-
-    /**
-     * 璋冩嫧椤圭紪鍙�
-     */
-    @TableId
-    private Long id;
-    /**
-     * 璋冩嫧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpStockMoveDO#getId()}
-     */
-    private Long moveId;
-    /**
-     * 璋冨嚭浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long fromWarehouseId;
-    /**
-     * 璋冨叆浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long toWarehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅缂栧彿
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-    /**
-     * 浜у搧鍗曚环
-     */
-    private BigDecimal productPrice;
-    /**
-     * 浜у搧鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java
deleted file mode 100644
index e0b337a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * ERP 鍏跺畠鍑哄簱鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_out")
-@KeySequence("erp_stock_out_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockOutDO extends BaseDO {
-
-    /**
-     * 鍑哄簱缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍑哄簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 瀹㈡埛缂栧彿
-     *
-     * TODO 鑺嬭壙锛氬緟鍏宠仈
-     */
-    private Long customerId;
-    /**
-     * 鍑哄簱鏃堕棿
-     */
-    private LocalDateTime outTime;
-    /**
-     * 鍚堣鏁伴噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 鐘舵��
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.module.erp.enums.ErpAuditStatus}
-     */
-    private Integer status;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-    /**
-     * 闄勪欢 URL
-     */
-    private String fileUrl;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java
deleted file mode 100644
index 065c525..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 鍏跺畠鍑哄簱鍗曢」 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_out_item")
-@KeySequence("erp_stock_out_item_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockOutItemDO extends BaseDO {
-
-    /**
-     * 鍑哄簱椤圭紪鍙�
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍑哄簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpStockOutDO#getId()}
-     */
-    private Long outId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浜у搧鍗曚綅缂栧彿
-     *
-     * 鍐椾綑 {@link ErpProductDO#getUnitId()}
-     */
-    private Long productUnitId;
-    /**
-     * 浜у搧鍗曚环
-     */
-    private BigDecimal productPrice;
-    /**
-     * 浜у搧鏁伴噺
-     */
-    private BigDecimal count;
-    /**
-     * 鍚堣閲戦锛屽崟浣嶏細鍏�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java
deleted file mode 100644
index 7bc5e5a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 浜у搧搴撳瓨鏄庣粏 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_stock_record")
-@KeySequence("erp_stock_record_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockRecordDO extends BaseDO {
-
-    /**
-     * 缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 浜у搧缂栧彿
-     *
-     * 鍏宠仈 {@link ErpProductDO#getId()}
-     */
-    private Long productId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link ErpWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 鍑哄叆搴撴暟閲�
-     *
-     * 姝f暟锛岃〃绀哄叆搴擄紱璐熸暟锛岃〃绀哄嚭搴�
-     */
-    private BigDecimal count;
-    /**
-     * 鎬诲簱瀛橀噺
-     *
-     * 鍑哄叆搴撲箣鍚庯紝鐩墠鐨勫簱瀛橀噺
-     */
-    private BigDecimal totalCount;
-    /**
-     * 涓氬姟绫诲瀷
-     *
-     * 鏋氫妇 {@link ErpStockRecordBizTypeEnum}
-     */
-    private Integer bizType;
-    /**
-     * 涓氬姟缂栧彿
-     *
-     * 渚嬪璇达細{@link ErpStockInDO#getId()}
-     */
-    private Long bizId;
-    /**
-     * 涓氬姟椤圭紪鍙�
-     *
-     * 渚嬪璇达細{@link ErpStockInItemDO#getId()}
-     */
-    private Long bizItemId;
-    /**
-     * 涓氬姟鍗曞彿
-     *
-     * 渚嬪璇达細{@link ErpStockInDO#getNo()}
-     */
-    private String bizNo;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java
deleted file mode 100644
index 4f20617..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 浠撳簱 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("erp_warehouse")
-@KeySequence("erp_warehouse_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpWarehouseDO extends BaseDO {
-
-    /**
-     * 浠撳簱缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 浠撳簱鍚嶇О
-     */
-    private String name;
-    /**
-     * 浠撳簱鍦板潃
-     */
-    private String address;
-    /**
-     * 鎺掑簭
-     */
-    private Long sort;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-    /**
-     * 璐熻矗浜�
-     */
-    private String principal;
-    /**
-     * 浠撳偍璐癸紝鍗曚綅锛氬厓
-     */
-    private BigDecimal warehousePrice;
-    /**
-     * 鎼繍璐癸紝鍗曚綅锛氬厓
-     */
-    private BigDecimal truckagePrice;
-    /**
-     * 寮�鍚姸鎬�
-     *
-     * 鏋氫妇 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
-     */
-    private Integer status;
-    /**
-     * 鏄惁榛樿
-     */
-    private Boolean defaultStatus;
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/mapping/ErpMesWarehouseMappingMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/mapping/ErpMesWarehouseMappingMapper.java
deleted file mode 100644
index 44c73c6..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/mapping/ErpMesWarehouseMappingMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.mapping;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.mapping.ErpMesWarehouseMappingDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠 Mapper
- */
-@Mapper
-public interface ErpMesWarehouseMappingMapper extends BaseMapperX<ErpMesWarehouseMappingDO> {
-
-    default ErpMesWarehouseMappingDO selectByErpWarehouseId(Long erpWarehouseId) {
-        return selectOne(new LambdaQueryWrapperX<ErpMesWarehouseMappingDO>()
-                .eq(ErpMesWarehouseMappingDO::getErpWarehouseId, erpWarehouseId)
-                .eq(ErpMesWarehouseMappingDO::getStatus, 1)); // 鍙煡璇㈠惎鐢ㄧ姸鎬�
-    }
-
-    default ErpMesWarehouseMappingDO selectByMesWarehouseId(Long mesWarehouseId) {
-        return selectOne(new LambdaQueryWrapperX<ErpMesWarehouseMappingDO>()
-                .eq(ErpMesWarehouseMappingDO::getMesWarehouseId, mesWarehouseId));
-    }
-
-    default PageResult<ErpMesWarehouseMappingDO> selectPage(ErpMesWarehouseMappingPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ErpMesWarehouseMappingDO>()
-                .eqIfPresent(ErpMesWarehouseMappingDO::getErpWarehouseId, reqVO.getErpWarehouseId())
-                .eqIfPresent(ErpMesWarehouseMappingDO::getMesWarehouseId, reqVO.getMesWarehouseId())
-                .eqIfPresent(ErpMesWarehouseMappingDO::getStatus, reqVO.getStatus())
-                .orderByDesc(ErpMesWarehouseMappingDO::getId));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java
deleted file mode 100644
index 70bbc64..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductCategoryMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.product;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * ERP 浜у搧鍒嗙被 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpProductCategoryMapper extends BaseMapperX<ErpProductCategoryDO> {
-
-    default List<ErpProductCategoryDO> selectList(ErpProductCategoryListReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<ErpProductCategoryDO>()
-                .likeIfPresent(ErpProductCategoryDO::getName, reqVO.getName())
-                .eqIfPresent(ErpProductCategoryDO::getStatus, reqVO.getStatus())
-                .orderByDesc(ErpProductCategoryDO::getId));
-    }
-
-	default ErpProductCategoryDO selectByParentIdAndName(Long parentId, String name) {
-	    return selectOne(ErpProductCategoryDO::getParentId, parentId, ErpProductCategoryDO::getName, name);
-	}
-
-    default Long selectCountByParentId(Long parentId) {
-        return selectCount(ErpProductCategoryDO::getParentId, parentId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java
deleted file mode 100644
index ff491fe..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * ERP 浜у搧 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpProductMapper extends BaseMapperX<ErpProductDO> {
-
-    default PageResult<ErpProductDO> selectPage(ErpProductPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ErpProductDO>()
-                .likeIfPresent(ErpProductDO::getName, reqVO.getName())
-                .eqIfPresent(ErpProductDO::getCategoryId, reqVO.getCategoryId())
-                .betweenIfPresent(ErpProductDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ErpProductDO::getId));
-    }
-
-    default Long selectCountByCategoryId(Long categoryId) {
-        return selectCount(ErpProductDO::getCategoryId, categoryId);
-    }
-
-    default Long selectCountByUnitId(Long unitId) {
-        return selectCount(ErpProductDO::getUnitId, unitId);
-    }
-
-    default List<ErpProductDO> selectListByStatus(Integer status) {
-        return selectList(ErpProductDO::getStatus, status);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java
deleted file mode 100644
index 45db6a8..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductUnitMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * ERP 浜у搧鍗曚綅 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpProductUnitMapper extends BaseMapperX<ErpProductUnitDO> {
-
-    default PageResult<ErpProductUnitDO> selectPage(ErpProductUnitPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ErpProductUnitDO>()
-                .likeIfPresent(ErpProductUnitDO::getName, reqVO.getName())
-                .eqIfPresent(ErpProductUnitDO::getStatus, reqVO.getStatus())
-                .orderByDesc(ErpProductUnitDO::getId));
-    }
-
-    default ErpProductUnitDO selectByName(String name) {
-        return selectOne(ErpProductUnitDO::getName, name);
-    }
-
-    default List<ErpProductUnitDO> selectListByStatus(Integer status) {
-        return selectList(ErpProductUnitDO::getStatus, status);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java
deleted file mode 100644
index 5a14317..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInItemMapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.purchase;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 閲囪喘鍏ュ簱椤� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpPurchaseInItemMapper extends BaseMapperX<ErpPurchaseInItemDO> {
-
-    default List<ErpPurchaseInItemDO> selectListByInId(Long inId) {
-        return selectList(ErpPurchaseInItemDO::getInId, inId);
-    }
-
-    default List<ErpPurchaseInItemDO> selectListByInIds(Collection<Long> inIds) {
-        return selectList(ErpPurchaseInItemDO::getInId, inIds);
-    }
-
-    default int deleteByInId(Long inId) {
-        return delete(ErpPurchaseInItemDO::getInId, inId);
-    }
-
-    /**
-     * 鍩轰簬閲囪喘璁㈠崟缂栧彿锛屾煡璇㈡瘡涓噰璐鍗曢」鐨勫叆搴撴暟閲忎箣鍜�
-     *
-     * @param inIds 鍏ュ簱璁㈠崟椤圭紪鍙锋暟缁�
-     * @return key锛氶噰璐鍗曢」缂栧彿锛泇alue锛氬叆搴撴暟閲忎箣鍜�
-     */
-    default Map<Long, BigDecimal> selectOrderItemCountSumMapByInIds(Collection<Long> inIds) {
-        if (CollUtil.isEmpty(inIds)) {
-            return Collections.emptyMap();
-        }
-        // SQL sum 鏌ヨ
-        List<Map<String, Object>> result = selectMaps(new QueryWrapper<ErpPurchaseInItemDO>()
-                .select("order_item_id, SUM(count) AS sum_count")
-                .groupBy("order_item_id")
-                .in("in_id", inIds));
-        // 鑾峰緱鏁伴噺
-        return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sum_count"));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java
deleted file mode 100644
index c155d8c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.purchase;
-
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * ERP 閲囪喘鍏ュ簱 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpPurchaseInMapper extends BaseMapperX<ErpPurchaseInDO> {
-
-    default PageResult<ErpPurchaseInDO> selectPage(ErpPurchaseInPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpPurchaseInDO> query = new MPJLambdaWrapperX<ErpPurchaseInDO>()
-                .likeIfPresent(ErpPurchaseInDO::getNo, reqVO.getNo())
-                .eqIfPresent(ErpPurchaseInDO::getSupplierId, reqVO.getSupplierId())
-                .betweenIfPresent(ErpPurchaseInDO::getInTime, reqVO.getInTime())
-                .eqIfPresent(ErpPurchaseInDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpPurchaseInDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpPurchaseInDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(ErpPurchaseInDO::getAccountId, reqVO.getAccountId())
-                .likeIfPresent(ErpPurchaseInDO::getOrderNo, reqVO.getOrderNo())
-                .orderByDesc(ErpPurchaseInDO::getId);
-        // 浠樻鐘舵�併�備负浠�涔堥渶瑕� t. 鐨勫師鍥狅紝鏄洜涓鸿仈琛ㄦ煡璇㈡椂锛岄渶瑕佹寚瀹氳〃鍚嶏紝涓嶇劧浼氭姤瀛楁涓嶅瓨鍦ㄧ殑閿欒
-        if (Objects.equals(reqVO.getPaymentStatus(), ErpPurchaseInPageReqVO.PAYMENT_STATUS_NONE)) {
-            query.eq(ErpPurchaseInDO::getPaymentPrice, 0);
-        } else if (Objects.equals(reqVO.getPaymentStatus(), ErpPurchaseInPageReqVO.PAYMENT_STATUS_PART)) {
-            query.gt(ErpPurchaseInDO::getPaymentPrice, 0).apply("t.payment_price < t.total_price");
-        } else if (Objects.equals(reqVO.getPaymentStatus(), ErpPurchaseInPageReqVO.PAYMENT_STATUS_ALL)) {
-            query.apply("t.payment_price = t.total_price");
-        }
-        if (Boolean.TRUE.equals(reqVO.getPaymentEnable())) {
-            query.eq(ErpPurchaseInDO::getStatus, ErpAuditStatus.APPROVE.getStatus())
-                    .apply("t.payment_price < t.total_price");
-        }
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpPurchaseInItemDO.class, ErpPurchaseInItemDO::getInId, ErpPurchaseInDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpPurchaseInItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpPurchaseInItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpPurchaseInDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpPurchaseInDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseInDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpPurchaseInDO>()
-                .eq(ErpPurchaseInDO::getId, id).eq(ErpPurchaseInDO::getStatus, status));
-    }
-
-    default ErpPurchaseInDO selectByNo(String no) {
-        return selectOne(ErpPurchaseInDO::getNo, no);
-    }
-
-    default List<ErpPurchaseInDO> selectListByOrderId(Long orderId) {
-        return selectList(ErpPurchaseInDO::getOrderId, orderId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java
deleted file mode 100644
index 30527d2..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnItemMapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.purchase;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 閲囪喘閫�璐ч」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpPurchaseReturnItemMapper extends BaseMapperX<ErpPurchaseReturnItemDO> {
-
-    default List<ErpPurchaseReturnItemDO> selectListByReturnId(Long returnId) {
-        return selectList(ErpPurchaseReturnItemDO::getReturnId, returnId);
-    }
-
-    default List<ErpPurchaseReturnItemDO> selectListByReturnIds(Collection<Long> returnIds) {
-        return selectList(ErpPurchaseReturnItemDO::getReturnId, returnIds);
-    }
-
-    default int deleteByReturnId(Long returnId) {
-        return delete(ErpPurchaseReturnItemDO::getReturnId, returnId);
-    }
-
-    /**
-     * 鍩轰簬閲囪喘璁㈠崟缂栧彿锛屾煡璇㈡瘡涓噰璐鍗曢」鐨勯��璐ф暟閲忎箣鍜�
-     *
-     * @param returnIds 鍏ュ簱璁㈠崟椤圭紪鍙锋暟缁�
-     * @return key锛氶噰璐鍗曢」缂栧彿锛泇alue锛氶��璐ф暟閲忎箣鍜�
-     */
-    default Map<Long, BigDecimal> selectOrderItemCountSumMapByReturnIds(Collection<Long> returnIds) {
-        if (CollUtil.isEmpty(returnIds)) {
-            return Collections.emptyMap();
-        }
-        // SQL sum 鏌ヨ
-        List<Map<String, Object>> result = selectMaps(new QueryWrapper<ErpPurchaseReturnItemDO>()
-                .select("order_item_id, SUM(count) AS sum_count")
-                .groupBy("order_item_id")
-                .in("return_id", returnIds));
-        // 鑾峰緱鏁伴噺
-        return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sum_count"));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java
deleted file mode 100644
index 689a55d..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseReturnMapper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.purchase;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * ERP 閲囪喘閫�璐� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpPurchaseReturnMapper extends BaseMapperX<ErpPurchaseReturnDO> {
-
-    default PageResult<ErpPurchaseReturnDO> selectPage(ErpPurchaseReturnPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpPurchaseReturnDO> query = new MPJLambdaWrapperX<ErpPurchaseReturnDO>()
-                .likeIfPresent(ErpPurchaseReturnDO::getNo, reqVO.getNo())
-                .eqIfPresent(ErpPurchaseReturnDO::getSupplierId, reqVO.getSupplierId())
-                .betweenIfPresent(ErpPurchaseReturnDO::getReturnTime, reqVO.getReturnTime())
-                .eqIfPresent(ErpPurchaseReturnDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpPurchaseReturnDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpPurchaseReturnDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(ErpPurchaseReturnDO::getAccountId, reqVO.getAccountId())
-                .likeIfPresent(ErpPurchaseReturnDO::getOrderNo, reqVO.getOrderNo())
-                .orderByDesc(ErpPurchaseReturnDO::getId);
-        // 閫�娆剧姸鎬併�備负浠�涔堥渶瑕� t. 鐨勫師鍥狅紝鏄洜涓鸿仈琛ㄦ煡璇㈡椂锛岄渶瑕佹寚瀹氳〃鍚嶏紝涓嶇劧浼氭姤瀛楁涓嶅瓨鍦ㄧ殑閿欒
-        if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_NONE)) {
-            query.eq(ErpPurchaseReturnDO::getRefundPrice, 0);
-        } else if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_PART)) {
-            query.gt(ErpPurchaseReturnDO::getRefundPrice, 0).apply("t.refund_price < t.total_price");
-        } else if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_ALL)) {
-            query.apply("t.refund_price = t.total_price");
-        }
-        if (Boolean.TRUE.equals(reqVO.getRefundEnable())) {
-            query.eq(ErpPurchaseInDO::getStatus, ErpAuditStatus.APPROVE.getStatus())
-                    .apply("t.refund_price < t.total_price");
-        }
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpPurchaseReturnItemDO.class, ErpPurchaseReturnItemDO::getReturnId, ErpPurchaseReturnDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpPurchaseReturnItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpPurchaseReturnItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpPurchaseReturnDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpPurchaseReturnDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpPurchaseReturnDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpPurchaseReturnDO>()
-                .eq(ErpPurchaseReturnDO::getId, id).eq(ErpPurchaseReturnDO::getStatus, status));
-    }
-
-    default ErpPurchaseReturnDO selectByNo(String no) {
-        return selectOne(ErpPurchaseReturnDO::getNo, no);
-    }
-
-    default List<ErpPurchaseReturnDO> selectListByOrderId(Long orderId) {
-        return selectList(ErpPurchaseReturnDO::getOrderId, orderId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java
deleted file mode 100644
index 7872bb2..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutItemMapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.sale;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 閿�鍞嚭搴撻」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpSaleOutItemMapper extends BaseMapperX<ErpSaleOutItemDO> {
-
-    default List<ErpSaleOutItemDO> selectListByOutId(Long outId) {
-        return selectList(ErpSaleOutItemDO::getOutId, outId);
-    }
-
-    default List<ErpSaleOutItemDO> selectListByOutIds(Collection<Long> outIds) {
-        return selectList(ErpSaleOutItemDO::getOutId, outIds);
-    }
-
-    default int deleteByOutId(Long outId) {
-        return delete(ErpSaleOutItemDO::getOutId, outId);
-    }
-
-    /**
-     * 鍩轰簬閿�鍞鍗曠紪鍙凤紝鏌ヨ姣忎釜閿�鍞鍗曢」鐨勫嚭搴撴暟閲忎箣鍜�
-     *
-     * @param outIds 鍑哄簱璁㈠崟椤圭紪鍙锋暟缁�
-     * @return key锛氶攢鍞鍗曢」缂栧彿锛泇alue锛氬嚭搴撴暟閲忎箣鍜�
-     */
-    default Map<Long, BigDecimal> selectOrderItemCountSumMapByOutIds(Collection<Long> outIds) {
-        if (CollUtil.isEmpty(outIds)) {
-            return Collections.emptyMap();
-        }
-        // SQL sum 鏌ヨ
-        List<Map<String, Object>> result = selectMaps(new QueryWrapper<ErpSaleOutItemDO>()
-                .select("order_item_id, SUM(count) AS sum_count")
-                .groupBy("order_item_id")
-                .in("out_id", outIds));
-        // 鑾峰緱鏁伴噺
-        return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sum_count"));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java
deleted file mode 100644
index 128913f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleOutMapper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.sale;
-
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * ERP 閿�鍞嚭搴� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpSaleOutMapper extends BaseMapperX<ErpSaleOutDO> {
-
-    default PageResult<ErpSaleOutDO> selectPage(ErpSaleOutPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpSaleOutDO> query = new MPJLambdaWrapperX<ErpSaleOutDO>()
-                .likeIfPresent(ErpSaleOutDO::getNo, reqVO.getNo())
-                .eqIfPresent(ErpSaleOutDO::getCustomerId, reqVO.getCustomerId())
-                .betweenIfPresent(ErpSaleOutDO::getOutTime, reqVO.getOutTime())
-                .eqIfPresent(ErpSaleOutDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpSaleOutDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpSaleOutDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(ErpSaleOutDO::getAccountId, reqVO.getAccountId())
-                .likeIfPresent(ErpSaleOutDO::getOrderNo, reqVO.getOrderNo())
-                .orderByDesc(ErpSaleOutDO::getId);
-        // 鏀舵鐘舵�併�備负浠�涔堥渶瑕� t. 鐨勫師鍥狅紝鏄洜涓鸿仈琛ㄦ煡璇㈡椂锛岄渶瑕佹寚瀹氳〃鍚嶏紝涓嶇劧浼氭姤瀛楁涓嶅瓨鍦ㄧ殑閿欒
-        if (Objects.equals(reqVO.getReceiptStatus(), ErpSaleOutPageReqVO.RECEIPT_STATUS_NONE)) {
-            query.eq(ErpSaleOutDO::getReceiptPrice, 0);
-        } else if (Objects.equals(reqVO.getReceiptStatus(), ErpSaleOutPageReqVO.RECEIPT_STATUS_PART)) {
-            query.gt(ErpSaleOutDO::getReceiptPrice, 0).apply("t.receipt_price < t.total_price");
-        } else if (Objects.equals(reqVO.getReceiptStatus(), ErpSaleOutPageReqVO.RECEIPT_STATUS_ALL)) {
-            query.apply("t.receipt_price = t.total_price");
-        }
-        if (Boolean.TRUE.equals(reqVO.getReceiptEnable())) {
-            query.eq(ErpSaleOutDO::getStatus, ErpAuditStatus.APPROVE.getStatus())
-                    .apply("t.receipt_price < t.total_price");
-        }
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpSaleOutItemDO.class, ErpSaleOutItemDO::getOutId, ErpSaleOutDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpSaleOutItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpSaleOutItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpSaleOutDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpSaleOutDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpSaleOutDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpSaleOutDO>()
-                .eq(ErpSaleOutDO::getId, id).eq(ErpSaleOutDO::getStatus, status));
-    }
-
-    default ErpSaleOutDO selectByNo(String no) {
-        return selectOne(ErpSaleOutDO::getNo, no);
-    }
-
-    default List<ErpSaleOutDO> selectListByOrderId(Long orderId) {
-        return selectList(ErpSaleOutDO::getOrderId, orderId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java
deleted file mode 100644
index 609ee24..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnItemMapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.sale;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 閿�鍞��璐ч」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpSaleReturnItemMapper extends BaseMapperX<ErpSaleReturnItemDO> {
-
-    default List<ErpSaleReturnItemDO> selectListByReturnId(Long returnId) {
-        return selectList(ErpSaleReturnItemDO::getReturnId, returnId);
-    }
-
-    default List<ErpSaleReturnItemDO> selectListByReturnIds(Collection<Long> returnIds) {
-        return selectList(ErpSaleReturnItemDO::getReturnId, returnIds);
-    }
-
-    default int deleteByReturnId(Long returnId) {
-        return delete(ErpSaleReturnItemDO::getReturnId, returnId);
-    }
-
-    /**
-     * 鍩轰簬閿�鍞鍗曠紪鍙凤紝鏌ヨ姣忎釜閿�鍞鍗曢」鐨勯��璐ф暟閲忎箣鍜�
-     *
-     * @param returnIds 鍑哄簱璁㈠崟椤圭紪鍙锋暟缁�
-     * @return key锛氶攢鍞鍗曢」缂栧彿锛泇alue锛氶��璐ф暟閲忎箣鍜�
-     */
-    default Map<Long, BigDecimal> selectOrderItemCountSumMapByReturnIds(Collection<Long> returnIds) {
-        if (CollUtil.isEmpty(returnIds)) {
-            return Collections.emptyMap();
-        }
-        // SQL sum 鏌ヨ
-        List<Map<String, Object>> result = selectMaps(new QueryWrapper<ErpSaleReturnItemDO>()
-                .select("order_item_id, SUM(count) AS sum_count")
-                .groupBy("order_item_id")
-                .in("return_id", returnIds));
-        // 鑾峰緱鏁伴噺
-        return convertMap(result, obj -> (Long) obj.get("order_item_id"), obj -> (BigDecimal) obj.get("sum_count"));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java
deleted file mode 100644
index 867b454..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/sale/ErpSaleReturnMapper.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.sale;
-
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * ERP 閿�鍞��璐� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpSaleReturnMapper extends BaseMapperX<ErpSaleReturnDO> {
-
-    default PageResult<ErpSaleReturnDO> selectPage(ErpSaleReturnPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpSaleReturnDO> query = new MPJLambdaWrapperX<ErpSaleReturnDO>()
-                .likeIfPresent(ErpSaleReturnDO::getNo, reqVO.getNo())
-                .eqIfPresent(ErpSaleReturnDO::getCustomerId, reqVO.getCustomerId())
-                .betweenIfPresent(ErpSaleReturnDO::getReturnTime, reqVO.getReturnTime())
-                .eqIfPresent(ErpSaleReturnDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpSaleReturnDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpSaleReturnDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(ErpSaleReturnDO::getAccountId, reqVO.getAccountId())
-                .likeIfPresent(ErpSaleReturnDO::getOrderNo, reqVO.getOrderNo())
-                .orderByDesc(ErpSaleReturnDO::getId);
-        // 閫�娆剧姸鎬併�備负浠�涔堥渶瑕� t. 鐨勫師鍥狅紝鏄洜涓鸿仈琛ㄦ煡璇㈡椂锛岄渶瑕佹寚瀹氳〃鍚嶏紝涓嶇劧浼氭姤瀛楁涓嶅瓨鍦ㄧ殑閿欒
-        if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_NONE)) {
-            query.eq(ErpSaleReturnDO::getRefundPrice, 0);
-        } else if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_PART)) {
-            query.gt(ErpSaleReturnDO::getRefundPrice, 0).apply("t.refund_price < t.total_price");
-        } else if (Objects.equals(reqVO.getRefundStatus(), ErpSaleReturnPageReqVO.REFUND_STATUS_ALL)) {
-            query.apply("t.refund_price = t.total_price");
-        }
-        if (Boolean.TRUE.equals(reqVO.getRefundEnable())) {
-            query.eq(ErpSaleOutDO::getStatus, ErpAuditStatus.APPROVE.getStatus())
-                    .apply("t.refund_price < t.total_price");
-        }
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpSaleReturnItemDO.class, ErpSaleReturnItemDO::getReturnId, ErpSaleReturnDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpSaleReturnItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpSaleReturnItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpSaleReturnDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpSaleReturnDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpSaleReturnDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpSaleReturnDO>()
-                .eq(ErpSaleReturnDO::getId, id).eq(ErpSaleReturnDO::getStatus, status));
-    }
-
-    default ErpSaleReturnDO selectByNo(String no) {
-        return selectOne(ErpSaleReturnDO::getNo, no);
-    }
-
-    default List<ErpSaleReturnDO> selectListByOrderId(Long orderId) {
-        return selectList(ErpSaleReturnDO::getOrderId, orderId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java
deleted file mode 100644
index ae13f9f..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckItemMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 搴撳瓨鐩樼偣鍗曢」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockCheckItemMapper extends BaseMapperX<ErpStockCheckItemDO> {
-
-    default List<ErpStockCheckItemDO> selectListByCheckId(Long checkId) {
-        return selectList(ErpStockCheckItemDO::getCheckId, checkId);
-    }
-
-    default List<ErpStockCheckItemDO> selectListByCheckIds(Collection<Long> checkIds) {
-        return selectList(ErpStockCheckItemDO::getCheckId, checkIds);
-    }
-
-    default int deleteByCheckId(Long checkId) {
-        return delete(ErpStockCheckItemDO::getCheckId, checkId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java
deleted file mode 100644
index dd976df..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockCheckMapper.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockCheckMapper extends BaseMapperX<ErpStockCheckDO> {
-
-    default PageResult<ErpStockCheckDO> selectPage(ErpStockCheckPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpStockCheckDO> query = new MPJLambdaWrapperX<ErpStockCheckDO>()
-                .likeIfPresent(ErpStockCheckDO::getNo, reqVO.getNo())
-                .betweenIfPresent(ErpStockCheckDO::getCheckTime, reqVO.getCheckTime())
-                .eqIfPresent(ErpStockCheckDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpStockCheckDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpStockCheckDO::getCreator, reqVO.getCreator())
-                .orderByDesc(ErpStockCheckDO::getId);
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpStockCheckItemDO.class, ErpStockCheckItemDO::getCheckId, ErpStockCheckDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpStockCheckItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpStockCheckItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpStockCheckDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpStockCheckDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpStockCheckDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpStockCheckDO>()
-                .eq(ErpStockCheckDO::getId, id).eq(ErpStockCheckDO::getStatus, status));
-    }
-
-    default ErpStockCheckDO selectByNo(String no) {
-        return selectOne(ErpStockCheckDO::getNo, no);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java
deleted file mode 100644
index 2731aa7..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInItemMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 鍏跺畠鍏ュ簱鍗曢」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockInItemMapper extends BaseMapperX<ErpStockInItemDO> {
-
-    default List<ErpStockInItemDO> selectListByInId(Long inId) {
-        return selectList(ErpStockInItemDO::getInId, inId);
-    }
-
-    default List<ErpStockInItemDO> selectListByInIds(Collection<Long> inIds) {
-        return selectList(ErpStockInItemDO::getInId, inIds);
-    }
-
-    default int deleteByInId(Long inId) {
-        return delete(ErpStockInItemDO::getInId, inId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java
deleted file mode 100644
index e815583..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * ERP 鍏跺畠鍏ュ簱鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockInMapper extends BaseMapperX<ErpStockInDO> {
-
-    default PageResult<ErpStockInDO> selectPage(ErpStockInPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpStockInDO> query = new MPJLambdaWrapperX<ErpStockInDO>()
-                .likeIfPresent(ErpStockInDO::getNo, reqVO.getNo())
-                .eqIfPresent(ErpStockInDO::getSupplierId, reqVO.getSupplierId())
-                .betweenIfPresent(ErpStockInDO::getInTime, reqVO.getInTime())
-                .eqIfPresent(ErpStockInDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpStockInDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpStockInDO::getCreator, reqVO.getCreator())
-                .orderByDesc(ErpStockInDO::getId);
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpStockInItemDO.class, ErpStockInItemDO::getInId, ErpStockInDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpStockInItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpStockInItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpStockInDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpStockInDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpStockInDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpStockInDO>()
-                .eq(ErpStockInDO::getId, id).eq(ErpStockInDO::getStatus, status));
-    }
-
-    default ErpStockInDO selectByNo(String no) {
-        return selectOne(ErpStockInDO::getNo, no);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java
deleted file mode 100644
index 63ff1ca..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.map.MapUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-/**
- * ERP 浜у搧搴撳瓨 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockMapper extends BaseMapperX<ErpStockDO> {
-
-    default PageResult<ErpStockDO> selectPage(ErpStockPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ErpStockDO>()
-                .eqIfPresent(ErpStockDO::getProductId, reqVO.getProductId())
-                .eqIfPresent(ErpStockDO::getWarehouseId, reqVO.getWarehouseId())
-                .orderByDesc(ErpStockDO::getId));
-    }
-
-    default ErpStockDO selectByProductIdAndWarehouseId(Long productId, Long warehouseId) {
-        return selectOne(ErpStockDO::getProductId, productId,
-                ErpStockDO::getWarehouseId, warehouseId);
-    }
-
-    default int updateCountIncrement(Long id, BigDecimal count, boolean negativeEnable) {
-        LambdaUpdateWrapper<ErpStockDO> updateWrapper = new LambdaUpdateWrapper<ErpStockDO>()
-                .eq(ErpStockDO::getId, id);
-        if (count.compareTo(BigDecimal.ZERO) > 0) {
-            updateWrapper.setSql("count = count + " + count);
-        } else if (count.compareTo(BigDecimal.ZERO) < 0) {
-            if (!negativeEnable) {
-                updateWrapper.ge(ErpStockDO::getCount, count.abs());
-            }
-            updateWrapper.setSql("count = count - " + count.abs());
-        }
-        return update(null, updateWrapper);
-    }
-
-    default BigDecimal selectSumByProductId(Long productId) {
-        // SQL sum 鏌ヨ
-        List<Map<String, Object>> result = selectMaps(new QueryWrapper<ErpStockDO>()
-                .select("SUM(count) AS sum_count")
-                .eq("product_id", productId));
-        // 鑾峰緱鏁伴噺
-        if (CollUtil.isEmpty(result)) {
-            return BigDecimal.ZERO;
-        }
-        return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sum_count", 0D));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java
deleted file mode 100644
index 21a2670..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveItemMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗曢」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockMoveItemMapper extends BaseMapperX<ErpStockMoveItemDO> {
-
-    default List<ErpStockMoveItemDO> selectListByMoveId(Long moveId) {
-        return selectList(ErpStockMoveItemDO::getMoveId, moveId);
-    }
-
-    default List<ErpStockMoveItemDO> selectListByMoveIds(Collection<Long> moveIds) {
-        return selectList(ErpStockMoveItemDO::getMoveId, moveIds);
-    }
-
-    default int deleteByMoveId(Long moveId) {
-        return delete(ErpStockMoveItemDO::getMoveId, moveId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java
deleted file mode 100644
index 9a8ce0b..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMoveMapper.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockMoveMapper extends BaseMapperX<ErpStockMoveDO> {
-
-    default PageResult<ErpStockMoveDO> selectPage(ErpStockMovePageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpStockMoveDO> query = new MPJLambdaWrapperX<ErpStockMoveDO>()
-                .likeIfPresent(ErpStockMoveDO::getNo, reqVO.getNo())
-                .betweenIfPresent(ErpStockMoveDO::getMoveTime, reqVO.getMoveTime())
-                .eqIfPresent(ErpStockMoveDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpStockMoveDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpStockMoveDO::getCreator, reqVO.getCreator())
-                .orderByDesc(ErpStockMoveDO::getId);
-        if (reqVO.getFromWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpStockMoveItemDO.class, ErpStockMoveItemDO::getMoveId, ErpStockMoveDO::getId)
-                    .eq(reqVO.getFromWarehouseId() != null, ErpStockMoveItemDO::getFromWarehouseId, reqVO.getFromWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpStockMoveItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpStockMoveDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpStockMoveDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpStockMoveDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpStockMoveDO>()
-                .eq(ErpStockMoveDO::getId, id).eq(ErpStockMoveDO::getStatus, status));
-    }
-
-    default ErpStockMoveDO selectByNo(String no) {
-        return selectOne(ErpStockMoveDO::getNo, no);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java
deleted file mode 100644
index 3b27cd3..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 鍏跺畠鍑哄簱鍗曢」 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockOutItemMapper extends BaseMapperX<ErpStockOutItemDO> {
-
-    default List<ErpStockOutItemDO> selectListByOutId(Long outId) {
-        return selectList(ErpStockOutItemDO::getOutId, outId);
-    }
-
-    default List<ErpStockOutItemDO> selectListByOutIds(Collection<Long> outIds) {
-        return selectList(ErpStockOutItemDO::getOutId, outIds);
-    }
-
-    default int deleteByOutId(Long outId) {
-        return delete(ErpStockOutItemDO::getOutId, outId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java
deleted file mode 100644
index a73dd3c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * ERP 鍏跺畠鍑哄簱鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockOutMapper extends BaseMapperX<ErpStockOutDO> {
-
-    default PageResult<ErpStockOutDO> selectPage(ErpStockOutPageReqVO reqVO) {
-        MPJLambdaWrapperX<ErpStockOutDO> query = new MPJLambdaWrapperX<ErpStockOutDO>()
-                .likeIfPresent(ErpStockOutDO::getNo, reqVO.getNo())
-                .eqIfPresent(ErpStockOutDO::getCustomerId, reqVO.getCustomerId())
-                .betweenIfPresent(ErpStockOutDO::getOutTime, reqVO.getOutTime())
-                .eqIfPresent(ErpStockOutDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(ErpStockOutDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ErpStockOutDO::getCreator, reqVO.getCreator())
-                .orderByDesc(ErpStockOutDO::getId);
-        if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) {
-            query.leftJoin(ErpStockOutItemDO.class, ErpStockOutItemDO::getOutId, ErpStockOutDO::getId)
-                    .eq(reqVO.getWarehouseId() != null, ErpStockOutItemDO::getWarehouseId, reqVO.getWarehouseId())
-                    .eq(reqVO.getProductId() != null, ErpStockOutItemDO::getProductId, reqVO.getProductId())
-                    .groupBy(ErpStockOutDO::getId); // 閬垮厤 1 瀵瑰鏌ヨ锛屼骇鐢熺浉鍚岀殑 1
-        }
-        return selectJoinPage(reqVO, ErpStockOutDO.class, query);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, ErpStockOutDO updateObj) {
-        return update(updateObj, new LambdaUpdateWrapper<ErpStockOutDO>()
-                .eq(ErpStockOutDO::getId, id).eq(ErpStockOutDO::getStatus, status));
-    }
-
-    default ErpStockOutDO selectByNo(String no) {
-        return selectOne(ErpStockOutDO::getNo, no);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java
deleted file mode 100644
index bfd8b67..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockRecordMapper.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * ERP 浜у搧搴撳瓨鏄庣粏 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpStockRecordMapper extends BaseMapperX<ErpStockRecordDO> {
-
-    default PageResult<ErpStockRecordDO> selectPage(ErpStockRecordPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ErpStockRecordDO>()
-                .eqIfPresent(ErpStockRecordDO::getProductId, reqVO.getProductId())
-                .eqIfPresent(ErpStockRecordDO::getWarehouseId, reqVO.getWarehouseId())
-                .eqIfPresent(ErpStockRecordDO::getBizType, reqVO.getBizType())
-                .likeIfPresent(ErpStockRecordDO::getBizNo, reqVO.getBizNo())
-                .betweenIfPresent(ErpStockRecordDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ErpStockRecordDO::getId));
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java
deleted file mode 100644
index 0442011..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpWarehouseMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.erp.dal.mysql.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * ERP 浠撳簱 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface ErpWarehouseMapper extends BaseMapperX<ErpWarehouseDO> {
-
-    default PageResult<ErpWarehouseDO> selectPage(ErpWarehousePageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ErpWarehouseDO>()
-                .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName())
-                .eqIfPresent(ErpWarehouseDO::getStatus, reqVO.getStatus())
-                .orderByDesc(ErpWarehouseDO::getId));
-    }
-
-    default ErpWarehouseDO selectByDefaultStatus() {
-        return selectOne(ErpWarehouseDO::getDefaultStatus, true);
-    }
-
-    default List<ErpWarehouseDO> selectListByStatus(Integer status) {
-        return selectList(ErpWarehouseDO::getStatus, status);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java
index ae6f218..71d9d25 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java
@@ -20,36 +20,9 @@
 public class ErpNoRedisDAO {
 
     /**
-     * 鍏跺畠鍏ュ簱 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO}
-     */
-    public static final String STOCK_IN_NO_PREFIX = "QTRK";
-    /**
-     * 鍏跺畠鍑哄簱 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO}
-     */
-    public static final String STOCK_OUT_NO_PREFIX = "QCKD";
-
-    /**
-     * 搴撳瓨璋冩嫧 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO}
-     */
-    public static final String STOCK_MOVE_NO_PREFIX = "QCDB";
-
-    /**
-     * 搴撳瓨鐩樼偣 {@link cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO}
-     */
-    public static final String STOCK_CHECK_NO_PREFIX = "QCPD";
-
-    /**
      * 閿�鍞鍗� {@link cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO}
      */
     public static final String SALE_ORDER_NO_PREFIX = "XSDD";
-    /**
-     * 閿�鍞嚭搴� {@link cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO}
-     */
-    public static final String SALE_OUT_NO_PREFIX = "XSCK";
-    /**
-     * 閿�鍞��璐� {@link cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO}
-     */
-    public static final String SALE_RETURN_NO_PREFIX = "XSTH";
 
     /**
      * 閲囪喘璁㈠崟 {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO}
@@ -59,14 +32,6 @@
      * 閲囪喘鐢宠 {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestDO}
      */
     public static final String PURCHASE_REQUEST_NO_PREFIX = "CGSQ";
-    /**
-     * 閲囪喘鍏ュ簱 {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO}
-     */
-    public static final String PURCHASE_IN_NO_PREFIX = "CGRK";
-    /**
-     * 閲囪喘閫�璐� {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO}
-     */
-    public static final String PURCHASE_RETURN_NO_PREFIX = "CGTH";
 
     /**
      * 浠樻鍗� {@link cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO}
@@ -82,7 +47,7 @@
 
     /**
      * 鐢熸垚搴忓彿锛屼娇鐢ㄥ綋鍓嶆棩鏈燂紝鏍煎紡涓� {PREFIX} + yyyyMMdd + 6 浣嶈嚜澧�
-     * 渚嬪璇达細QTRK 202109 000001 锛堟病鏈変腑闂寸┖鏍硷級
+     * 渚嬪璇达細CGDD 202109 000001 锛堟病鏈変腑闂寸┖鏍硷級
      *
      * @param prefix 鍓嶇紑
      * @return 搴忓彿
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java
new file mode 100644
index 0000000..c1e5a9a
--- /dev/null
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java
@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.erp.enums;
+
+import cn.iocoder.yudao.framework.common.core.ArrayValuable;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.util.Arrays;
+
+/**
+ * ERP 閲囪喘璁㈠崟鍏ュ簱鐘舵�佹灇涓�
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+@RequiredArgsConstructor
+@Getter
+public enum ErpPurchaseOrderInStatusEnum implements ArrayValuable<Integer> {
+
+    NOT_IN(0, "鏈叆搴�"),
+    PART_IN(1, "閮ㄥ垎鍏ュ簱"),
+    ALL_IN(2, "鍏ㄩ儴鍏ュ簱");
+
+    private final Integer status;
+    private final String name;
+
+    public static final Integer[] ARRAYS = Arrays.stream(values())
+            .map(ErpPurchaseOrderInStatusEnum::getStatus).toArray(Integer[]::new);
+
+    @Override
+    public Integer[] array() {
+        return ARRAYS;
+    }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpSaleOrderOutStatusEnum.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpSaleOrderOutStatusEnum.java
new file mode 100644
index 0000000..1fbec7b
--- /dev/null
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpSaleOrderOutStatusEnum.java
@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.erp.enums;
+
+import cn.iocoder.yudao.framework.common.core.ArrayValuable;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.util.Arrays;
+
+/**
+ * ERP 閿�鍞鍗曞嚭搴撶姸鎬佹灇涓�
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+@RequiredArgsConstructor
+@Getter
+public enum ErpSaleOrderOutStatusEnum implements ArrayValuable<Integer> {
+
+    NOT_OUT(0, "鏈嚭搴�"),
+    PART_OUT(1, "閮ㄥ垎鍑哄簱"),
+    ALL_OUT(2, "鍏ㄩ儴鍑哄簱");
+
+    private final Integer status;
+    private final String name;
+
+    public static final Integer[] ARRAYS = Arrays.stream(values())
+            .map(ErpSaleOrderOutStatusEnum::getStatus).toArray(Integer[]::new);
+
+    @Override
+    public Integer[] array() {
+        return ARRAYS;
+    }
+
+}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java
deleted file mode 100644
index 9ed19c5..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package cn.iocoder.yudao.module.erp.enums.stock;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-import java.util.Arrays;
-
-/**
- * ERP 搴撳瓨鏄庣粏 - 涓氬姟绫诲瀷鏋氫妇
- *
- * @author 鑺嬮亾婧愮爜
- */
-@RequiredArgsConstructor
-@Getter
-public enum ErpStockRecordBizTypeEnum implements ArrayValuable<Integer> {
-
-    OTHER_IN(10, "鍏跺畠鍏ュ簱"),
-    OTHER_IN_CANCEL(11, "鍏跺畠鍏ュ簱锛堜綔搴燂級"),
-
-    OTHER_OUT(20, "鍏跺畠鍑哄簱"),
-    OTHER_OUT_CANCEL(21, "鍏跺畠鍑哄簱锛堜綔搴燂級"),
-
-    MOVE_IN(30, "璋冩嫧鍏ュ簱"),
-    MOVE_IN_CANCEL(31, "璋冩嫧鍏ュ簱锛堜綔搴燂級"),
-    MOVE_OUT(32, "璋冩嫧鍑哄簱"),
-    MOVE_OUT_CANCEL(33, "璋冩嫧鍑哄簱锛堜綔搴燂級"),
-
-    CHECK_MORE_IN(40, "鐩樼泩鍏ュ簱"),
-    CHECK_MORE_IN_CANCEL(41, "鐩樼泩鍏ュ簱锛堜綔搴燂級"),
-    CHECK_LESS_OUT(42, "鐩樹簭鍑哄簱"),
-    CHECK_LESS_OUT_CANCEL(43, "鐩樹簭鍑哄簱锛堜綔搴燂級"),
-
-    SALE_OUT(50, "閿�鍞嚭搴�"),
-    SALE_OUT_CANCEL(51, "閿�鍞嚭搴擄紙浣滃簾锛�"),
-
-    SALE_RETURN(60, "閿�鍞��璐у叆搴�"),
-    SALE_RETURN_CANCEL(61, "閿�鍞��璐у叆搴擄紙浣滃簾锛�"),
-
-    PURCHASE_IN(70, "閲囪喘鍏ュ簱"),
-    PURCHASE_IN_CANCEL(71, "閲囪喘鍏ュ簱锛堜綔搴燂級"),
-
-    PURCHASE_RETURN(80, "閲囪喘閫�璐у嚭搴�"),
-    PURCHASE_RETURN_CANCEL(81, "閲囪喘閫�璐у嚭搴擄紙浣滃簾锛�"),
-    ;
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(ErpStockRecordBizTypeEnum::getType).toArray(Integer[]::new);
-
-    /**
-     * 绫诲瀷
-     */
-    private final Integer type;
-    /**
-     * 鍚嶅瓧
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java
index afb9a31..e4c6b89 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java
@@ -1,24 +1,16 @@
 package cn.iocoder.yudao.module.erp.service.finance;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.lang.Assert;
-import cn.hutool.core.util.ObjectUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
 import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinancePaymentItemMapper;
 import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinancePaymentMapper;
 import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
 import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.common.ErpBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseInService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseReturnService;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import jakarta.annotation.Resource;
@@ -34,8 +26,6 @@
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
 import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
 
 /**
  * ERP 浠樻鍗� Service 瀹炵幇绫�
@@ -58,10 +48,6 @@
     private ErpSupplierService supplierService;
     @Resource
     private ErpAccountService accountService;
-    @Resource
-    private ErpPurchaseInService purchaseInService;
-    @Resource
-    private ErpPurchaseReturnService purchaseReturnService;
 
     @Resource
     private AdminUserApi adminUserApi;
@@ -159,28 +145,22 @@
     private List<ErpFinancePaymentItemDO> validateFinancePaymentItems(
             Long supplierId,
             List<ErpFinancePaymentSaveReqVO.Item> list) {
+        // 閲囪喘鍏ュ簱/閫�璐у姛鑳藉凡绉婚櫎锛屾殏鏃跺彧鏀寔鎵嬪姩褰曞叆浠樻鏄庣粏
         return convertList(list, o -> BeanUtils.toBean(o, ErpFinancePaymentItemDO.class, item -> {
-            if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.PURCHASE_IN.getType())) {
-                ErpPurchaseInDO purchaseIn = purchaseInService.validatePurchaseIn(item.getBizId());
-                Assert.equals(purchaseIn.getSupplierId(), supplierId, "渚涘簲鍟嗗繀椤荤浉鍚�");
-                item.setTotalPrice(purchaseIn.getTotalPrice()).setBizNo(purchaseIn.getNo());
-            } else if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.PURCHASE_RETURN.getType())) {
-                ErpPurchaseReturnDO purchaseReturn = purchaseReturnService.validatePurchaseReturn(item.getBizId());
-                Assert.equals(purchaseReturn.getSupplierId(), supplierId, "渚涘簲鍟嗗繀椤荤浉鍚�");
-                item.setTotalPrice(purchaseReturn.getTotalPrice().negate()).setBizNo(purchaseReturn.getNo());
-            } else {
-                throw new IllegalArgumentException("涓氬姟绫诲瀷涓嶆纭細" + item.getBizType());
+            if (item.getPaymentPrice() == null) {
+                item.setPaymentPrice(BigDecimal.ZERO);
+            }
+            if (item.getTotalPrice() == null) {
+                item.setTotalPrice(BigDecimal.ZERO);
             }
         }));
     }
 
     private void updateFinancePaymentItemList(Long id, List<ErpFinancePaymentItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
         List<ErpFinancePaymentItemDO> oldList = financePaymentItemMapper.selectListByPaymentId(id);
-        List<List<ErpFinancePaymentItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
+        List<List<ErpFinancePaymentItemDO>> diffList = diffList(oldList, newList,
                 (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
 
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
         if (CollUtil.isNotEmpty(diffList.get(0))) {
             diffList.get(0).forEach(o -> o.setPaymentId(id));
             financePaymentItemMapper.insertBatch(diffList.get(0));
@@ -191,23 +171,10 @@
         if (CollUtil.isNotEmpty(diffList.get(2))) {
             financePaymentItemMapper.deleteByIds(convertList(diffList.get(2), ErpFinancePaymentItemDO::getId));
         }
-
-        // 绗笁姝ワ紝鏇存柊閲囪喘鍏ュ簱銆侀��璐х殑浠樻閲戦鎯呭喌
-        updatePurchasePrice(CollectionUtils.newArrayList(diffList));
     }
 
     private void updatePurchasePrice(List<ErpFinancePaymentItemDO> paymentItems) {
-        paymentItems.forEach(paymentItem -> {
-            BigDecimal totalPaymentPrice = financePaymentItemMapper.selectPaymentPriceSumByBizIdAndBizType(
-                    paymentItem.getBizId(), paymentItem.getBizType());
-            if (ErpBizTypeEnum.PURCHASE_IN.getType().equals(paymentItem.getBizType())) {
-                purchaseInService.updatePurchaseInPaymentPrice(paymentItem.getBizId(), totalPaymentPrice);
-            } else if (ErpBizTypeEnum.PURCHASE_RETURN.getType().equals(paymentItem.getBizType())) {
-                purchaseReturnService.updatePurchaseReturnRefundPrice(paymentItem.getBizId(), totalPaymentPrice.negate());
-            } else {
-                throw new IllegalArgumentException("涓氬姟绫诲瀷涓嶆纭細" + paymentItem.getBizType());
-            }
-        });
+        // 閲囪喘鍏ュ簱/閫�璐у姛鑳藉凡绉婚櫎锛屼笉鍐嶆洿鏂板叧鑱斾笟鍔¢噾棰�
     }
 
     @Override
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java
index 20fb4ae..7c84c15 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinanceReceiptServiceImpl.java
@@ -1,25 +1,17 @@
 package cn.iocoder.yudao.module.erp.service.finance;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.lang.Assert;
-import cn.hutool.core.util.ObjectUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
 import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.receipt.ErpFinanceReceiptSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinanceReceiptItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
 import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinanceReceiptItemMapper;
 import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpFinanceReceiptMapper;
 import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
 import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.common.ErpBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOutService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpSaleReturnService;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -34,8 +26,6 @@
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
 import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
 
 /**
  * ERP 鏀舵鍗� Service 瀹炵幇绫�
@@ -58,10 +48,6 @@
     private CrmCustomerApi customerApi;
     @Resource
     private ErpAccountService accountService;
-    @Resource
-    private ErpSaleOutService saleOutService;
-    @Resource
-    private ErpSaleReturnService saleReturnService;
 
     @Resource
     private AdminUserApi adminUserApi;
@@ -159,17 +145,14 @@
     private List<ErpFinanceReceiptItemDO> validateFinanceReceiptItems(
             Long customerId,
             List<ErpFinanceReceiptSaveReqVO.Item> list) {
+        // 閿�鍞嚭搴�/閫�璐у姛鑳藉凡绉婚櫎锛屾殏鏃跺彧鏀寔鎵嬪姩褰曞叆鏀舵鏄庣粏
         return convertList(list, o -> BeanUtils.toBean(o, ErpFinanceReceiptItemDO.class, item -> {
-            if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.SALE_OUT.getType())) {
-                ErpSaleOutDO saleOut = saleOutService.validateSaleOut(item.getBizId());
-                Assert.equals(saleOut.getCustomerId(), customerId, "瀹㈡埛蹇呴』鐩稿悓");
-                item.setTotalPrice(saleOut.getTotalPrice()).setBizNo(saleOut.getNo());
-            } else if (ObjectUtil.equal(item.getBizType(), ErpBizTypeEnum.SALE_RETURN.getType())) {
-                ErpSaleReturnDO saleReturn = saleReturnService.validateSaleReturn(item.getBizId());
-                Assert.equals(saleReturn.getCustomerId(), customerId, "瀹㈡埛蹇呴』鐩稿悓");
-                item.setTotalPrice(saleReturn.getTotalPrice().negate()).setBizNo(saleReturn.getNo());
-            } else {
-                throw new IllegalArgumentException("涓氬姟绫诲瀷涓嶆纭細" + item.getBizType());
+            // 涓氬姟绫诲瀷鏍¢獙宸茬Щ闄わ紝鐩存帴浣跨敤浼犲叆鐨勬暟鎹�
+            if (item.getReceiptPrice() == null) {
+                item.setReceiptPrice(BigDecimal.ZERO);
+            }
+            if (item.getTotalPrice() == null) {
+                item.setTotalPrice(BigDecimal.ZERO);
             }
         }));
     }
@@ -177,7 +160,7 @@
     private void updateFinanceReceiptItemList(Long id, List<ErpFinanceReceiptItemDO> newList) {
         // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
         List<ErpFinanceReceiptItemDO> oldList = financeReceiptItemMapper.selectListByReceiptId(id);
-        List<List<ErpFinanceReceiptItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
+        List<List<ErpFinanceReceiptItemDO>> diffList = diffList(oldList, newList,
                 (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
 
         // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
@@ -191,23 +174,10 @@
         if (CollUtil.isNotEmpty(diffList.get(2))) {
             financeReceiptItemMapper.deleteByIds(convertList(diffList.get(2), ErpFinanceReceiptItemDO::getId));
         }
-
-        // 绗笁姝ワ紝鏇存柊閿�鍞嚭搴撱�侀��璐х殑鏀舵閲戦鎯呭喌
-        updateSalePrice(CollectionUtils.newArrayList(diffList));
     }
 
     private void updateSalePrice(List<ErpFinanceReceiptItemDO> receiptItems) {
-        receiptItems.forEach(receiptItem -> {
-            BigDecimal totalReceiptPrice = financeReceiptItemMapper.selectReceiptPriceSumByBizIdAndBizType(
-                    receiptItem.getBizId(), receiptItem.getBizType());
-            if (ErpBizTypeEnum.SALE_OUT.getType().equals(receiptItem.getBizType())) {
-                saleOutService.updateSaleInReceiptPrice(receiptItem.getBizId(), totalReceiptPrice);
-            } else if (ErpBizTypeEnum.SALE_RETURN.getType().equals(receiptItem.getBizType())) {
-                saleReturnService.updateSaleReturnRefundPrice(receiptItem.getBizId(), totalReceiptPrice.negate());
-            } else {
-                throw new IllegalArgumentException("涓氬姟绫诲瀷涓嶆纭細" + receiptItem.getBizType());
-            }
-        });
+        // 閿�鍞嚭搴�/閫�璐у姛鑳藉凡绉婚櫎锛屼笉鍐嶆洿鏂板叧鑱斾笟鍔¢噾棰�
     }
 
     @Override
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java
deleted file mode 100644
index 2b11faf..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product;
-
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategorySaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 浜у搧鍒嗙被 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpProductCategoryService {
-
-    /**
-     * 鍒涘缓浜у搧鍒嗙被
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createProductCategory(@Valid ErpProductCategorySaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊浜у搧鍒嗙被
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateProductCategory(@Valid ErpProductCategorySaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浜у搧鍒嗙被
-     *
-     * @param id 缂栧彿
-     */
-    void deleteProductCategory(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧鍒嗙被
-     */
-    ErpProductCategoryDO getProductCategory(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被鍒楄〃
-     *
-     * @param listReqVO 鏌ヨ鏉′欢
-     * @return 浜у搧鍒嗙被鍒楄〃
-     */
-    List<ErpProductCategoryDO> getProductCategoryList(ErpProductCategoryListReqVO listReqVO);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被鍒楄〃
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍒嗙被鍒楄〃
-     */
-    List<ErpProductCategoryDO> getProductCategoryList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浜у搧鍒嗙被 Map
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍒嗙被 Map
-     */
-    default Map<Long, ErpProductCategoryDO> getProductCategoryMap(Collection<Long> ids) {
-        return convertMap(getProductCategoryList(ids), ErpProductCategoryDO::getId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java
deleted file mode 100644
index d6456eb..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryServiceImpl.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product;
-
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategoryListReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.category.ErpProductCategorySaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductCategoryMapper;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-/**
- * ERP 浜у搧鍒嗙被 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpProductCategoryServiceImpl implements ErpProductCategoryService {
-
-    @Resource
-    private ErpProductCategoryMapper erpProductCategoryMapper;
-
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private ErpProductService productService;
-
-    @Override
-    public Long createProductCategory(ErpProductCategorySaveReqVO createReqVO) {
-        // 鏍¢獙鐖跺垎绫荤紪鍙风殑鏈夋晥鎬�
-        validateParentProductCategory(null, createReqVO.getParentId());
-        // 鏍¢獙鍒嗙被鍚嶇О鐨勫敮涓�鎬�
-        validateProductCategoryNameUnique(null, createReqVO.getParentId(), createReqVO.getName());
-
-        // 鎻掑叆
-        ErpProductCategoryDO category = BeanUtils.toBean(createReqVO, ErpProductCategoryDO.class);
-        erpProductCategoryMapper.insert(category);
-        // 杩斿洖
-        return category.getId();
-    }
-
-    @Override
-    public void updateProductCategory(ErpProductCategorySaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateProductCategoryExists(updateReqVO.getId());
-        // 鏍¢獙鐖跺垎绫荤紪鍙风殑鏈夋晥鎬�
-        validateParentProductCategory(updateReqVO.getId(), updateReqVO.getParentId());
-        // 鏍¢獙鍒嗙被鍚嶇О鐨勫敮涓�鎬�
-        validateProductCategoryNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName());
-
-        // 鏇存柊
-        ErpProductCategoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductCategoryDO.class);
-        erpProductCategoryMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deleteProductCategory(Long id) {
-        // 1.1 鏍¢獙瀛樺湪
-        validateProductCategoryExists(id);
-        // 1.2 鏍¢獙鏄惁鏈夊瓙浜у搧鍒嗙被
-        if (erpProductCategoryMapper.selectCountByParentId(id) > 0) {
-            throw exception(PRODUCT_CATEGORY_EXITS_CHILDREN);
-        }
-        // 1.3 鏍¢獙鏄惁鏈変骇鍝�
-        if (productService.getProductCountByCategoryId(id) > 0) {
-            throw exception(PRODUCT_CATEGORY_EXITS_PRODUCT);
-        }
-        // 2. 鍒犻櫎
-        erpProductCategoryMapper.deleteById(id);
-    }
-
-    private void validateProductCategoryExists(Long id) {
-        if (erpProductCategoryMapper.selectById(id) == null) {
-            throw exception(PRODUCT_CATEGORY_NOT_EXISTS);
-        }
-    }
-
-    private void validateParentProductCategory(Long id, Long parentId) {
-        if (parentId == null || ErpProductCategoryDO.PARENT_ID_ROOT.equals(parentId)) {
-            return;
-        }
-        // 1. 涓嶈兘璁剧疆鑷繁涓虹埗浜у搧鍒嗙被
-        if (Objects.equals(id, parentId)) {
-            throw exception(PRODUCT_CATEGORY_PARENT_ERROR);
-        }
-        // 2. 鐖朵骇鍝佸垎绫讳笉瀛樺湪
-        ErpProductCategoryDO parentCategory = erpProductCategoryMapper.selectById(parentId);
-        if (parentCategory == null) {
-            throw exception(PRODUCT_CATEGORY_PARENT_NOT_EXITS);
-        }
-        // 3. 閫掑綊鏍¢獙鐖朵骇鍝佸垎绫伙紝濡傛灉鐖朵骇鍝佸垎绫绘槸鑷繁鐨勫瓙浜у搧鍒嗙被锛屽垯鎶ラ敊锛岄伩鍏嶅舰鎴愮幆璺�
-        if (id == null) { // id 涓虹┖锛岃鏄庢柊澧烇紝涓嶉渶瑕佽�冭檻鐜矾
-            return;
-        }
-        for (int i = 0; i < Short.MAX_VALUE; i++) {
-            // 3.1 鏍¢獙鐜矾
-            parentId = parentCategory.getParentId();
-            if (Objects.equals(id, parentId)) {
-                throw exception(PRODUCT_CATEGORY_PARENT_IS_CHILD);
-            }
-            // 3.2 缁х画閫掑綊涓嬩竴绾х埗浜у搧鍒嗙被
-            if (parentId == null || ErpProductCategoryDO.PARENT_ID_ROOT.equals(parentId)) {
-                break;
-            }
-            parentCategory = erpProductCategoryMapper.selectById(parentId);
-            if (parentCategory == null) {
-                break;
-            }
-        }
-    }
-
-    private void validateProductCategoryNameUnique(Long id, Long parentId, String name) {
-        ErpProductCategoryDO productCategory = erpProductCategoryMapper.selectByParentIdAndName(parentId, name);
-        if (productCategory == null) {
-            return;
-        }
-        // 濡傛灉 id 涓虹┖锛岃鏄庝笉鐢ㄦ瘮杈冩槸鍚︿负鐩稿悓 id 鐨勪骇鍝佸垎绫�
-        if (id == null) {
-            throw exception(PRODUCT_CATEGORY_NAME_DUPLICATE);
-        }
-        if (!Objects.equals(productCategory.getId(), id)) {
-            throw exception(PRODUCT_CATEGORY_NAME_DUPLICATE);
-        }
-    }
-
-    @Override
-    public ErpProductCategoryDO getProductCategory(Long id) {
-        return erpProductCategoryMapper.selectById(id);
-    }
-
-    @Override
-    public List<ErpProductCategoryDO> getProductCategoryList(ErpProductCategoryListReqVO listReqVO) {
-        return erpProductCategoryMapper.selectList(listReqVO);
-    }
-
-    @Override
-    public List<ErpProductCategoryDO> getProductCategoryList(Collection<Long> ids) {
-        return erpProductCategoryMapper.selectByIds(ids);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java
deleted file mode 100644
index 0227ef3..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 浜у搧 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpProductService {
-
-    /**
-     * 鍒涘缓浜у搧
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createProduct(@Valid ProductSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊浜у搧
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateProduct(@Valid ProductSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浜у搧
-     *
-     * @param id 缂栧彿
-     */
-    void deleteProduct(Long id);
-
-    /**
-     * 鏍¢獙浜у搧浠殑鏈夋晥鎬�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍒楄〃
-     */
-    List<ErpProductDO> validProductList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浜у搧
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧
-     */
-    ErpProductDO getProduct(Long id);
-
-    /**
-     * 鑾峰緱浜у搧 VO
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧 VO
-     */
-    ErpProductRespVO getProductVO(Long id);
-
-    /**
-     * 鑾峰緱鎸囧畾鐘舵�佺殑浜у搧 VO 鍒楄〃
-     *
-     * @param status 鐘舵��
-     * @return 浜у搧 VO 鍒楄〃
-     */
-    List<ErpProductRespVO> getProductVOListByStatus(Integer status);
-
-    /**
-     * 鑾峰緱浜у搧 VO 鍒楄〃
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧 VO 鍒楄〃
-     */
-    List<ErpProductRespVO> getProductVOList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浜у搧 VO Map
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧 VO Map
-     */
-    default Map<Long, ErpProductRespVO> getProductVOMap(Collection<Long> ids) {
-        return convertMap(getProductVOList(ids), ErpProductRespVO::getId);
-    }
-
-    /**
-     * 鑾峰緱浜у搧 VO 鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 浜у搧鍒嗛〉
-     */
-    PageResult<ErpProductRespVO> getProductVOPage(ErpProductPageReqVO pageReqVO);
-
-    /**
-     * 鍩轰簬浜у搧鍒嗙被缂栧彿锛岃幏寰椾骇鍝佹暟閲�
-     *
-     * @param categoryId 浜у搧鍒嗙被缂栧彿
-     * @return 浜у搧鏁伴噺
-     */
-    Long getProductCountByCategoryId(Long categoryId);
-
-    /**
-     * 鍩轰簬浜у搧鍗曚綅缂栧彿锛岃幏寰椾骇鍝佹暟閲�
-     *
-     * @param unitId 浜у搧鍗曚綅缂栧彿
-     * @return 浜у搧鏁伴噺
-     */
-    Long getProductCountByUnitId(Long unitId);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java
deleted file mode 100644
index 247295e..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java
+++ /dev/null
@@ -1,287 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
-import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemCreateReqDTO;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemUpdateReqDTO;
-import cn.iocoder.yudao.module.mdm.enums.MdmItemTypeEnum;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.*;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-/**
- * ERP 浜у搧 Service 瀹炵幇绫�
- *
- * 鏀归�犺鏄庯細浜у搧鏁版嵁缁熶竴浣跨敤 MDM 涓绘暟鎹鐞嗭紙itemType=2 浜у搧绫诲瀷锛�
- * - 鍒涘缓銆佹洿鏂般�佸垹闄ゆ搷浣滈�氳繃 MDM API 杩涜
- * - 鏌ヨ鎿嶄綔浠� MDM 鑾峰彇鏁版嵁
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpProductServiceImpl implements ErpProductService {
-
-    @Resource
-    private ErpProductMapper productMapper;
-
-    @Resource
-    private MdmItemApi mdmItemApi;
-
-    @Override
-    public Long createProduct(ProductSaveReqVO createReqVO) {
-        // 1. 鏍¢獙鏉$爜鏄惁閲嶅
-        MdmItemRespDTO existItem = mdmItemApi.getItemByBarCode(createReqVO.getBarCode()).getCheckedData();
-        if (existItem != null) {
-            throw exception(PRODUCT_BAR_CODE_EXISTS);
-        }
-        // 2. 閫氳繃 MDM API 鍒涘缓浜у搧
-        MdmItemCreateReqDTO createReqDTO = new MdmItemCreateReqDTO();
-        createReqDTO.setCode(createReqVO.getBarCode()); // 浣跨敤鏉$爜浣滀负缂栫爜
-        createReqDTO.setName(createReqVO.getName());
-        createReqDTO.setBarCode(createReqVO.getBarCode());
-        createReqDTO.setSpecification(createReqVO.getStandard());
-        createReqDTO.setCategoryId(createReqVO.getCategoryId());
-        createReqDTO.setUnitMeasureId(createReqVO.getUnitId());
-        createReqDTO.setItemType(MdmItemTypeEnum.PRODUCT.getType()); // 浜у搧绫诲瀷
-        createReqDTO.setStatus(createReqVO.getStatus() != null ? createReqVO.getStatus() : CommonStatusEnum.ENABLE.getStatus());
-        createReqDTO.setPurchasePrice(createReqVO.getPurchasePrice());
-        createReqDTO.setSalesPrice(createReqVO.getSalePrice());
-        createReqDTO.setCostPrice(createReqVO.getMinPrice());
-        createReqDTO.setExpiryDay(createReqVO.getExpiryDay());
-        createReqDTO.setWeight(createReqVO.getWeight());
-        createReqDTO.setRemark(createReqVO.getRemark());
-        return mdmItemApi.createItem(createReqDTO).getCheckedData();
-    }
-
-    @Override
-    public void updateProduct(ProductSaveReqVO updateReqVO) {
-        // 1. 鏍¢獙瀛樺湪
-        MdmItemRespDTO existItem = mdmItemApi.getItem(updateReqVO.getId()).getCheckedData();
-        if (existItem == null) {
-            throw exception(PRODUCT_NOT_EXISTS);
-        }
-        // 2. 鏍¢獙鏉$爜鏄惁閲嶅
-        if (!existItem.getBarCode().equals(updateReqVO.getBarCode())) {
-            MdmItemRespDTO barCodeItem = mdmItemApi.getItemByBarCode(updateReqVO.getBarCode()).getCheckedData();
-            if (barCodeItem != null) {
-                throw exception(PRODUCT_BAR_CODE_EXISTS);
-            }
-        }
-        // 3. 閫氳繃 MDM API 鏇存柊浜у搧
-        MdmItemUpdateReqDTO updateReqDTO = new MdmItemUpdateReqDTO();
-        updateReqDTO.setId(updateReqVO.getId());
-        updateReqDTO.setCode(updateReqVO.getBarCode());
-        updateReqDTO.setName(updateReqVO.getName());
-        updateReqDTO.setBarCode(updateReqVO.getBarCode());
-        updateReqDTO.setSpecification(updateReqVO.getStandard());
-        updateReqDTO.setCategoryId(updateReqVO.getCategoryId());
-        updateReqDTO.setUnitMeasureId(updateReqVO.getUnitId());
-        updateReqDTO.setItemType(MdmItemTypeEnum.PRODUCT.getType());
-        updateReqDTO.setStatus(updateReqVO.getStatus());
-        updateReqDTO.setPurchasePrice(updateReqVO.getPurchasePrice());
-        updateReqDTO.setSalesPrice(updateReqVO.getSalePrice());
-        updateReqDTO.setCostPrice(updateReqVO.getMinPrice());
-        updateReqDTO.setExpiryDay(updateReqVO.getExpiryDay());
-        updateReqDTO.setWeight(updateReqVO.getWeight());
-        updateReqDTO.setRemark(updateReqVO.getRemark());
-        mdmItemApi.updateItem(updateReqDTO);
-    }
-
-    @Override
-    public void deleteProduct(Long id) {
-        // 鏍¢獙瀛樺湪
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null) {
-            throw exception(PRODUCT_NOT_EXISTS);
-        }
-        // 閫氳繃 MDM API 鍒犻櫎锛堟洿鏂扮姸鎬佷负绂佺敤锛�
-        mdmItemApi.updateItemStatus(id, CommonStatusEnum.DISABLE.getStatus());
-    }
-
-    @Override
-    public List<ErpProductDO> validProductList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁
-        List<MdmItemRespDTO> items = mdmItemApi.getItemList(ids).getCheckedData();
-        Map<Long, MdmItemRespDTO> itemMap = convertMap(items, MdmItemRespDTO::getId);
-        List<ErpProductDO> result = new ArrayList<>();
-        for (Long id : ids) {
-            MdmItemRespDTO item = itemMap.get(id);
-            if (item == null) {
-                throw exception(PRODUCT_NOT_EXISTS);
-            }
-            if (CommonStatusEnum.isDisable(item.getStatus())) {
-                throw exception(PRODUCT_NOT_ENABLE, item.getName());
-            }
-            // 杞崲涓� ErpProductDO
-            result.add(convertToErpProduct(item));
-        }
-        return result;
-    }
-
-    private void validateProductExists(Long id) {
-        // 浠� MDM 鏍¢獙
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null) {
-            throw exception(PRODUCT_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public ErpProductDO getProduct(Long id) {
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null) {
-            return null;
-        }
-        // 妫�鏌ユ槸鍚︿负浜у搧绫诲瀷
-        if (!MdmItemTypeEnum.PRODUCT.getType().equals(item.getItemType())) {
-            return null;
-        }
-        return convertToErpProduct(item);
-    }
-
-    @Override
-    public ErpProductRespVO getProductVO(Long id) {
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null) {
-            return null;
-        }
-        // 妫�鏌ユ槸鍚︿负浜у搧绫诲瀷
-        if (!MdmItemTypeEnum.PRODUCT.getType().equals(item.getItemType())) {
-            return null;
-        }
-        return convertToErpProductVO(item);
-    }
-
-    /**
-     * 灏� MDM 鐗╂枡杞崲涓� ERP 浜у搧 VO
-     */
-    private ErpProductRespVO convertToErpProductVO(MdmItemRespDTO item) {
-        ErpProductRespVO vo = new ErpProductRespVO();
-        vo.setId(item.getId());
-        vo.setName(item.getName());
-        vo.setBarCode(item.getBarCode());
-        vo.setStandard(item.getSpecification());
-        vo.setCategoryId(item.getCategoryId());
-        vo.setUnitId(item.getUnitMeasureId());
-        vo.setStatus(item.getStatus());
-        vo.setExpiryDay(item.getExpiryDay());
-        vo.setWeight(item.getWeight());
-        vo.setPurchasePrice(item.getPurchasePrice());
-        vo.setSalePrice(item.getSalesPrice());
-        vo.setMinPrice(item.getCostPrice());
-        vo.setRemark(item.getRemark());
-        return vo;
-    }
-
-    @Override
-    public List<ErpProductRespVO> getProductVOListByStatus(Integer status) {
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁锛坕temType=2锛�
-        List<MdmItemRespDTO> items = mdmItemApi.getItemListByStatus(status).getCheckedData();
-        // 杩囨护浜у搧绫诲瀷
-        items = items.stream()
-                .filter(item -> MdmItemTypeEnum.PRODUCT.getType().equals(item.getItemType()))
-                .toList();
-        return buildProductVOListFromMdm(items);
-    }
-
-    @Override
-    public List<ErpProductRespVO> getProductVOList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        // 浠� MDM 鑾峰彇浜у搧鏁版嵁
-        List<MdmItemRespDTO> items = mdmItemApi.getItemList(ids).getCheckedData();
-        return buildProductVOListFromMdm(items);
-    }
-
-    @Override
-    public PageResult<ErpProductRespVO> getProductVOPage(ErpProductPageReqVO pageReqVO) {
-        // 浠� MDM 鑾峰彇浜у搧鍒嗛〉鏁版嵁
-        cn.iocoder.yudao.framework.common.pojo.PageResult<MdmItemRespDTO> mdmPageResult =
-                mdmItemApi.getItemPage(MdmItemTypeEnum.PRODUCT.getType(), null,
-                        pageReqVO.getPageNo(), pageReqVO.getPageSize()).getCheckedData();
-        return new PageResult<>(buildProductVOListFromMdm(mdmPageResult.getList()), mdmPageResult.getTotal());
-    }
-
-    /**
-     * 浠� MDM 鏁版嵁鏋勫缓 ERP 浜у搧 VO 鍒楄〃
-     */
-    private List<ErpProductRespVO> buildProductVOListFromMdm(List<MdmItemRespDTO> items) {
-        if (CollUtil.isEmpty(items)) {
-            return Collections.emptyList();
-        }
-        List<ErpProductRespVO> result = new ArrayList<>();
-        for (MdmItemRespDTO item : items) {
-            ErpProductRespVO vo = new ErpProductRespVO();
-            vo.setId(item.getId());
-            vo.setName(item.getName());
-            vo.setBarCode(item.getBarCode());
-            vo.setStandard(item.getSpecification());
-            vo.setCategoryId(item.getCategoryId());
-            vo.setUnitId(item.getUnitMeasureId());
-            vo.setStatus(item.getStatus());
-            vo.setExpiryDay(item.getExpiryDay());
-            vo.setWeight(item.getWeight());
-            vo.setPurchasePrice(item.getPurchasePrice());
-            vo.setSalePrice(item.getSalesPrice());
-            vo.setMinPrice(item.getCostPrice()); // 浣跨敤鎴愭湰浠蜂綔涓烘渶浣庝环
-            vo.setRemark(item.getRemark());
-            // 鍒嗙被鍚嶇О鍜屽崟浣嶅悕绉伴渶瑕侀澶栨煡璇紙绠�鍖栧鐞嗭紝鍚庣画鍙紭鍖栵級
-            result.add(vo);
-        }
-        return result;
-    }
-
-    /**
-     * 灏� MDM 鐗╂枡杞崲涓� ERP 浜у搧 DO
-     */
-    private ErpProductDO convertToErpProduct(MdmItemRespDTO item) {
-        ErpProductDO product = new ErpProductDO();
-        product.setId(item.getId());
-        product.setName(item.getName());
-        product.setBarCode(item.getBarCode());
-        product.setStandard(item.getSpecification());
-        product.setCategoryId(item.getCategoryId());
-        product.setUnitId(item.getUnitMeasureId());
-        product.setStatus(item.getStatus());
-        product.setExpiryDay(item.getExpiryDay());
-        product.setWeight(item.getWeight());
-        product.setPurchasePrice(item.getPurchasePrice());
-        product.setSalePrice(item.getSalesPrice());
-        product.setMinPrice(item.getCostPrice());
-        product.setRemark(item.getRemark());
-        return product;
-    }
-
-    @Override
-    public Long getProductCountByCategoryId(Long categoryId) {
-        return mdmItemApi.getItemCountByCategoryId(categoryId).getCheckedData();
-    }
-
-    @Override
-    public Long getProductCountByUnitId(Long unitId) {
-        return mdmItemApi.getItemCountByUnitMeasureId(unitId).getCheckedData();
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java
deleted file mode 100644
index 340278a..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 浜у搧鍗曚綅 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpProductUnitService {
-
-    /**
-     * 鍒涘缓浜у搧鍗曚綅
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createProductUnit(@Valid ErpProductUnitSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊浜у搧鍗曚綅
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateProductUnit(@Valid ErpProductUnitSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浜у搧鍗曚綅
-     *
-     * @param id 缂栧彿
-     */
-    void deleteProductUnit(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍗曚綅
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧鍗曚綅
-     */
-    ErpProductUnitDO getProductUnit(Long id);
-
-    /**
-     * 鑾峰緱浜у搧鍗曚綅鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 浜у搧鍗曚綅鍒嗛〉
-     */
-    PageResult<ErpProductUnitDO> getProductUnitPage(ErpProductUnitPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鎸囧畾鐘舵�佺殑浜у搧鍗曚綅鍒楄〃
-     *
-     * @param status 鐘舵��
-     * @return 浜у搧鍗曚綅鍒楄〃
-     */
-    List<ErpProductUnitDO> getProductUnitListByStatus(Integer status);
-
-    /**
-     * 鑾峰緱浜у搧鍗曚綅鍒楄〃
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍗曚綅鍒楄〃
-     */
-    List<ErpProductUnitDO> getProductUnitList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浜у搧鍗曚綅 Map
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浜у搧鍗曚綅 Map
-     */
-    default Map<Long, ErpProductUnitDO> getProductUnitMap(Collection<Long> ids) {
-        return convertMap(getProductUnitList(ids), ErpProductUnitDO::getId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java
deleted file mode 100644
index 210a021..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductUnitMapper;
-import com.google.common.annotations.VisibleForTesting;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-/**
- * ERP 浜у搧鍗曚綅 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpProductUnitServiceImpl implements ErpProductUnitService {
-
-    @Resource
-    private ErpProductUnitMapper productUnitMapper;
-
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private ErpProductService productService;
-
-    @Override
-    public Long createProductUnit(ErpProductUnitSaveReqVO createReqVO) {
-        // 1. 鏍¢獙鍚嶅瓧鍞竴
-        validateProductUnitNameUnique(null, createReqVO.getName());
-        // 2. 鎻掑叆
-        ErpProductUnitDO unit = BeanUtils.toBean(createReqVO, ErpProductUnitDO.class);
-        productUnitMapper.insert(unit);
-        return unit.getId();
-    }
-
-    @Override
-    public void updateProductUnit(ErpProductUnitSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        validateProductUnitExists(updateReqVO.getId());
-        // 1.2 鏍¢獙鍚嶅瓧鍞竴
-        validateProductUnitNameUnique(updateReqVO.getId(), updateReqVO.getName());
-        // 2. 鏇存柊
-        ErpProductUnitDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductUnitDO.class);
-        productUnitMapper.updateById(updateObj);
-    }
-
-    @VisibleForTesting
-    void validateProductUnitNameUnique(Long id, String name) {
-        ErpProductUnitDO unit = productUnitMapper.selectByName(name);
-        if (unit == null) {
-            return;
-        }
-        // 濡傛灉 id 涓虹┖锛岃鏄庝笉鐢ㄦ瘮杈冩槸鍚︿负鐩稿悓 id 鐨勫瓧鍏哥被鍨�
-        if (id == null) {
-            throw exception(PRODUCT_UNIT_NAME_DUPLICATE);
-        }
-        if (!unit.getId().equals(id)) {
-            throw exception(PRODUCT_UNIT_NAME_DUPLICATE);
-        }
-    }
-
-    @Override
-    public void deleteProductUnit(Long id) {
-        // 1.1 鏍¢獙瀛樺湪
-        validateProductUnitExists(id);
-        // 1.2 鏍¢獙浜у搧鏄惁浣跨敤
-        if (productService.getProductCountByUnitId(id) > 0) {
-            throw exception(PRODUCT_UNIT_EXITS_PRODUCT);
-        }
-        // 2. 鍒犻櫎
-        productUnitMapper.deleteById(id);
-    }
-
-    private void validateProductUnitExists(Long id) {
-        if (productUnitMapper.selectById(id) == null) {
-            throw exception(PRODUCT_UNIT_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public ErpProductUnitDO getProductUnit(Long id) {
-        return productUnitMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpProductUnitDO> getProductUnitPage(ErpProductUnitPageReqVO pageReqVO) {
-        return productUnitMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<ErpProductUnitDO> getProductUnitListByStatus(Integer status) {
-        return productUnitMapper.selectListByStatus(status);
-    }
-
-    @Override
-    public List<ErpProductUnitDO> getProductUnitList(Collection<Long> ids) {
-         return productUnitMapper.selectByIds(ids);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMdmMappingService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMdmMappingService.java
deleted file mode 100644
index b8619ea..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMdmMappingService.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product.mapping;
-
-/**
- * ERP 浜у搧涓� MDM 鐗╂枡鏄犲皠鏈嶅姟鎺ュ彛
- *
- * 璇存槑锛氭湰椤圭洰鐗╂枡缁熶竴浣跨敤 MDM 涓绘暟鎹鐞嗭紝ERP 浜у搧闇�瑕佷笌 MDM 鐗╂枡寤虹珛鏄犲皠鍏崇郴銆�
- * 鏄犲皠绛栫暐锛氶�氳繃 ERP 浜у搧鏉$爜(barCode) 涓� MDM 鐗╂枡缂栫爜(code) 鎴栨潯鐮佽繘琛屽叧鑱斻��
- */
-public interface ErpMdmMappingService {
-
-    /**
-     * 鏍规嵁 ERP 浜у搧 ID 鑾峰彇 MDM 鐗╂枡 ID
-     *
-     * 鏄犲皠绛栫暐锛�
-     * 1. 鏌ヨ ERP 浜у搧鐨� barCode
-     * 2. 閫氳繃 barCode 鍖归厤 MDM 鐗╂枡缂栫爜(code) 鎴栨潯鐮�
-     *
-     * @param erpProductId ERP 浜у搧 ID
-     * @return MDM 鐗╂枡 ID锛屾湭鎵惧埌杩斿洖 null
-     */
-    Long getMdmItemId(Long erpProductId);
-
-    /**
-     * 鏍规嵁 ERP 浜у搧鏉$爜鑾峰彇 MDM 鐗╂枡 ID
-     *
-     * @param barCode ERP 浜у搧鏉$爜
-     * @return MDM 鐗╂枡 ID锛屾湭鎵惧埌杩斿洖 null
-     */
-    Long getMdmItemIdByBarCode(String barCode);
-
-    /**
-     * 鏍规嵁 ERP 浠撳簱 ID 鑾峰彇 MES 浠撳簱 ID
-     *
-     * 鏄犲皠绛栫暐锛氶�氳繃浠撳簱鍚嶇О绮剧‘鍖归厤 MES 浠撳簱
-     *
-     * @param erpWarehouseId ERP 浠撳簱 ID
-     * @return MES 浠撳簱 ID锛屾湭鎵惧埌杩斿洖 null
-     */
-    Long getMesWarehouseId(Long erpWarehouseId);
-
-    /**
-     * 鏍规嵁 ERP 浠撳簱鍚嶇О鑾峰彇 MES 浠撳簱 ID
-     *
-     * @param erpWarehouseName ERP 浠撳簱鍚嶇О
-     * @return MES 浠撳簱 ID锛屾湭鎵惧埌杩斿洖 null
-     */
-    Long getMesWarehouseIdByName(String erpWarehouseName);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMdmMappingServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMdmMappingServiceImpl.java
deleted file mode 100644
index ae56e04..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMdmMappingServiceImpl.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product.mapping;
-
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.module.erp.dal.dataobject.mapping.ErpMesWarehouseMappingDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.mapping.ErpMesWarehouseMappingMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpWarehouseMapper;
-import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-/**
- * ERP 浜у搧涓� MDM 鐗╂枡鏄犲皠鏈嶅姟瀹炵幇绫�
- */
-@Service
-@Validated
-@Slf4j
-public class ErpMdmMappingServiceImpl implements ErpMdmMappingService {
-
-    @Resource
-    private ErpProductMapper productMapper;
-
-    @Resource
-    private ErpWarehouseMapper warehouseMapper;
-
-    @Resource
-    private ErpMesWarehouseMappingMapper warehouseMappingMapper;
-
-    @Resource
-    private MdmItemApi mdmItemApi;
-
-    @Override
-    public Long getMdmItemId(Long erpProductId) {
-        if (erpProductId == null) {
-            return null;
-        }
-        // 1. 鏌ヨ ERP 浜у搧
-        ErpProductDO product = productMapper.selectById(erpProductId);
-        if (product == null || StrUtil.isEmpty(product.getBarCode())) {
-            log.warn("[getMdmItemId] ERP浜у搧涓嶅瓨鍦ㄦ垨鏉$爜涓虹┖锛宔rpProductId={}", erpProductId);
-            return null;
-        }
-
-        // 2. 閫氳繃鏉$爜鏌ヨ MDM 鐗╂枡
-        return getMdmItemIdByBarCode(product.getBarCode());
-    }
-
-    @Override
-    public Long getMdmItemIdByBarCode(String barCode) {
-        if (StrUtil.isEmpty(barCode)) {
-            return null;
-        }
-
-        // 浼樺厛閫氳繃鏉$爜鏌ヨ
-        MdmItemRespDTO item = mdmItemApi.getItemByBarCode(barCode).getCheckedData();
-        if (item != null) {
-            return item.getId();
-        }
-
-        // 鏉$爜鍖归厤缂栫爜
-        item = mdmItemApi.getItemByCode(barCode).getCheckedData();
-        if (item != null) {
-            return item.getId();
-        }
-
-        log.warn("[getMdmItemIdByBarCode] 鏈壘鍒板搴旂殑MDM鐗╂枡锛宐arCode={}", barCode);
-        return null;
-    }
-
-    @Override
-    public Long getMesWarehouseId(Long erpWarehouseId) {
-        if (erpWarehouseId == null) {
-            return null;
-        }
-
-        // 1. 浼樺厛鏌ヨ鏄犲皠琛�
-        ErpMesWarehouseMappingDO mapping = warehouseMappingMapper.selectByErpWarehouseId(erpWarehouseId);
-        if (mapping != null) {
-            return mapping.getMesWarehouseId();
-        }
-
-        // 2. 鏄犲皠琛ㄦ病鏈夎褰曪紝灏濊瘯閫氳繃鍚嶇О鍖归厤锛堝鐢ㄦ柟妗堬級
-        ErpWarehouseDO erpWarehouse = warehouseMapper.selectById(erpWarehouseId);
-        if (erpWarehouse == null) {
-            log.warn("[getMesWarehouseId] ERP浠撳簱涓嶅瓨鍦紝erpWarehouseId={}", erpWarehouseId);
-            return null;
-        }
-
-        log.warn("[getMesWarehouseId] 鏈壘鍒颁粨搴撴槧灏勯厤缃紝erpWarehouseId={}锛岃閰嶇疆浠撳簱鏄犲皠", erpWarehouseId);
-        return null;
-    }
-
-    @Override
-    public Long getMesWarehouseIdByName(String erpWarehouseName) {
-        // 姝ゆ柟娉曞凡涓嶅啀鎺ㄨ崘浣跨敤锛屽缓璁厤缃槧灏勮〃
-        log.warn("[getMesWarehouseIdByName] 寤鸿閰嶇疆浠撳簱鏄犲皠琛ㄦ浛浠e悕绉板尮閰嶏紝erpWarehouseName={}", erpWarehouseName);
-        return null;
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMesWarehouseMappingService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMesWarehouseMappingService.java
deleted file mode 100644
index c00a629..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMesWarehouseMappingService.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product.mapping;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingCreateReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingUpdateReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.mapping.ErpMesWarehouseMappingDO;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠 Service 鎺ュ彛
- */
-public interface ErpMesWarehouseMappingService {
-
-    /**
-     * 鍒涘缓浠撳簱鏄犲皠
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createMapping(ErpMesWarehouseMappingCreateReqVO createReqVO);
-
-    /**
-     * 鏇存柊浠撳簱鏄犲皠
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateMapping(ErpMesWarehouseMappingUpdateReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浠撳簱鏄犲皠
-     *
-     * @param id 缂栧彿
-     */
-    void deleteMapping(Long id);
-
-    /**
-     * 鑾峰彇浠撳簱鏄犲皠
-     *
-     * @param id 缂栧彿
-     * @return 浠撳簱鏄犲皠
-     */
-    ErpMesWarehouseMappingDO getMapping(Long id);
-
-    /**
-     * 鑾峰彇浠撳簱鏄犲皠鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ鍙傛暟
-     * @return 浠撳簱鏄犲皠鍒嗛〉
-     */
-    PageResult<ErpMesWarehouseMappingDO> getMappingPage(ErpMesWarehouseMappingPageReqVO pageReqVO);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMesWarehouseMappingServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMesWarehouseMappingServiceImpl.java
deleted file mode 100644
index 2553b82..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/product/mapping/ErpMesWarehouseMappingServiceImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.product.mapping;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingCreateReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.mapping.vo.ErpMesWarehouseMappingUpdateReqVO;
-import cn.iocoder.yudao.module.erp.convert.mapping.ErpMesWarehouseMappingConvert;
-import cn.iocoder.yudao.module.erp.dal.dataobject.mapping.ErpMesWarehouseMappingDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.mapping.ErpMesWarehouseMappingMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-/**
- * ERP浠撳簱涓嶮ES浠撳簱鏄犲皠 Service 瀹炵幇绫�
- */
-@Service
-@Validated
-public class ErpMesWarehouseMappingServiceImpl implements ErpMesWarehouseMappingService {
-
-    @Resource
-    private ErpMesWarehouseMappingMapper mappingMapper;
-
-    @Override
-    public Long createMapping(ErpMesWarehouseMappingCreateReqVO createReqVO) {
-        // 鏍¢獙ERP浠撳簱鏄惁宸插瓨鍦ㄦ槧灏�
-        ErpMesWarehouseMappingDO existing = mappingMapper.selectByErpWarehouseId(createReqVO.getErpWarehouseId());
-        if (existing != null) {
-            throw exception(WAREHOUSE_MAPPING_EXISTS);
-        }
-
-        ErpMesWarehouseMappingDO mapping = ErpMesWarehouseMappingConvert.INSTANCE.convert(createReqVO);
-        mapping.setStatus(1); // 榛樿鍚敤
-        mappingMapper.insert(mapping);
-        return mapping.getId();
-    }
-
-    @Override
-    public void updateMapping(ErpMesWarehouseMappingUpdateReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateMappingExists(updateReqVO.getId());
-
-        ErpMesWarehouseMappingDO mapping = ErpMesWarehouseMappingConvert.INSTANCE.convert(updateReqVO);
-        mappingMapper.updateById(mapping);
-    }
-
-    @Override
-    public void deleteMapping(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateMappingExists(id);
-        mappingMapper.deleteById(id);
-    }
-
-    private void validateMappingExists(Long id) {
-        if (mappingMapper.selectById(id) == null) {
-            throw exception(WAREHOUSE_MAPPING_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public ErpMesWarehouseMappingDO getMapping(Long id) {
-        return mappingMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpMesWarehouseMappingDO> getMappingPage(ErpMesWarehouseMappingPageReqVO pageReqVO) {
-        return mappingMapper.selectPage(pageReqVO);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java
deleted file mode 100644
index 37aa452..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.purchase;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO;
-import jakarta.validation.Valid;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 閲囪喘鍏ュ簱 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpPurchaseInService {
-
-    /**
-     * 鍒涘缓閲囪喘鍏ュ簱
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createPurchaseIn(@Valid ErpPurchaseInSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊閲囪喘鍏ュ簱
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updatePurchaseIn(@Valid ErpPurchaseInSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊閲囪喘鍏ュ簱鐨勭姸鎬�
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updatePurchaseInStatus(Long id, Integer status);
-
-    /**
-     * 鏇存柊閲囪喘鍏ュ簱鐨勪粯娆鹃噾棰�
-     *
-     * @param id 缂栧彿
-     * @param paymentPrice 浠樻閲戦
-     */
-    void updatePurchaseInPaymentPrice(Long id, BigDecimal paymentPrice);
-
-    /**
-     * 鍒犻櫎閲囪喘鍏ュ簱
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deletePurchaseIn(List<Long> ids);
-
-    /**
-     * 鑾峰緱閲囪喘鍏ュ簱
-     *
-     * @param id 缂栧彿
-     * @return 閲囪喘鍏ュ簱
-     */
-    ErpPurchaseInDO getPurchaseIn(Long id);
-
-    /**
-     * 鏍¢獙閲囪喘鍏ュ簱锛屽凡缁忓鏍搁�氳繃
-     *
-     * @param id 缂栧彿
-     * @return 閲囪喘鍏ュ簱
-     */
-    ErpPurchaseInDO validatePurchaseIn(Long id);
-
-    /**
-     * 鑾峰緱閲囪喘鍏ュ簱鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 閲囪喘鍏ュ簱鍒嗛〉
-     */
-    PageResult<ErpPurchaseInDO> getPurchaseInPage(ErpPurchaseInPageReqVO pageReqVO);
-
-    // ==================== 閲囪喘鍏ュ簱椤� ====================
-
-    /**
-     * 鑾峰緱閲囪喘鍏ュ簱椤瑰垪琛�
-     *
-     * @param inId 閲囪喘鍏ュ簱缂栧彿
-     * @return 閲囪喘鍏ュ簱椤瑰垪琛�
-     */
-    List<ErpPurchaseInItemDO> getPurchaseInItemListByInId(Long inId);
-
-    /**
-     * 鑾峰緱閲囪喘鍏ュ簱椤� List
-     *
-     * @param inIds 閲囪喘鍏ュ簱缂栧彿鏁扮粍
-     * @return 閲囪喘鍏ュ簱椤� List
-     */
-    List<ErpPurchaseInItemDO> getPurchaseInItemListByInIds(Collection<Long> inIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java
deleted file mode 100644
index bc53896..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java
+++ /dev/null
@@ -1,384 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.purchase;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in.ErpPurchaseInSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInItemDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseInItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseInMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.product.mapping.ErpMdmMappingService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsPurchaseInboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.stock.WmsStockApi;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 閲囪喘鍏ュ簱 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-@Slf4j
-public class ErpPurchaseInServiceImpl implements ErpPurchaseInService {
-
-    @Resource
-    private ErpPurchaseInMapper purchaseInMapper;
-    @Resource
-    private ErpPurchaseInItemMapper purchaseInItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private ErpPurchaseOrderService purchaseOrderService;
-    @Resource
-    private ErpAccountService accountService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Resource
-    private WmsStockApi wmsStockApi;
-
-    @Resource
-    private ErpMdmMappingService mdmMappingService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createPurchaseIn(ErpPurchaseInSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙閲囪喘璁㈠崟宸插鏍�
-        ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(createReqVO.getOrderId());
-        // 1.2 鏍¢獙鍏ュ簱椤圭殑鏈夋晥鎬�
-        List<ErpPurchaseInItemDO> purchaseInItems = validatePurchaseInItems(createReqVO.getItems());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(createReqVO.getAccountId());
-        // 1.4 鐢熸垚鍏ュ簱鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_IN_NO_PREFIX);
-        if (purchaseInMapper.selectByNo(no) != null) {
-            throw exception(PURCHASE_IN_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆鍏ュ簱
-        ErpPurchaseInDO purchaseIn = BeanUtils.toBean(createReqVO, ErpPurchaseInDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()))
-                .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId());
-        calculateTotalPrice(purchaseIn, purchaseInItems);
-        purchaseInMapper.insert(purchaseIn);
-        // 2.2 鎻掑叆鍏ュ簱椤�
-        purchaseInItems.forEach(o -> o.setInId(purchaseIn.getId()));
-        purchaseInItemMapper.insertBatch(purchaseInItems);
-
-        // 3. 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
-        updatePurchaseOrderInCount(createReqVO.getOrderId());
-        return purchaseIn.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updatePurchaseIn(ErpPurchaseInSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpPurchaseInDO purchaseIn = validatePurchaseInExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseIn.getStatus())) {
-            throw exception(PURCHASE_IN_UPDATE_FAIL_APPROVE, purchaseIn.getNo());
-        }
-        // 1.2 鏍¢獙閲囪喘璁㈠崟宸插鏍�
-        ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(updateReqVO.getOrderId());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(updateReqVO.getAccountId());
-        // 1.4 鏍¢獙璁㈠崟椤圭殑鏈夋晥鎬�
-        List<ErpPurchaseInItemDO> purchaseInItems = validatePurchaseInItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊鍏ュ簱
-        ErpPurchaseInDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseInDO.class)
-                .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId());
-        calculateTotalPrice(updateObj, purchaseInItems);
-        purchaseInMapper.updateById(updateObj);
-        // 2.2 鏇存柊鍏ュ簱椤�
-        updatePurchaseInItemList(updateReqVO.getId(), purchaseInItems);
-
-        // 3.1 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
-        updatePurchaseOrderInCount(updateObj.getOrderId());
-        // 3.2 娉ㄦ剰锛氬鏋滈噰璐鍗曠紪鍙峰彉鏇翠簡锛岄渶瑕佹洿鏂扳�滆�佲�濋噰璐鍗曠殑鍏ュ簱鏁伴噺
-        if (ObjectUtil.notEqual(purchaseIn.getOrderId(), updateObj.getOrderId())) {
-            updatePurchaseOrderInCount(purchaseIn.getOrderId());
-        }
-    }
-
-    private void calculateTotalPrice(ErpPurchaseInDO purchaseIn, List<ErpPurchaseInItemDO> purchaseInItems) {
-        purchaseIn.setTotalCount(getSumValue(purchaseInItems, ErpPurchaseInItemDO::getCount, BigDecimal::add));
-        purchaseIn.setTotalProductPrice(getSumValue(purchaseInItems, ErpPurchaseInItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO));
-        purchaseIn.setTotalTaxPrice(getSumValue(purchaseInItems, ErpPurchaseInItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO));
-        purchaseIn.setTotalPrice(purchaseIn.getTotalProductPrice().add(purchaseIn.getTotalTaxPrice()));
-        // 璁$畻浼樻儬浠锋牸
-        if (purchaseIn.getDiscountPercent() == null) {
-            purchaseIn.setDiscountPercent(BigDecimal.ZERO);
-        }
-        purchaseIn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(purchaseIn.getTotalPrice(), purchaseIn.getDiscountPercent()));
-        purchaseIn.setTotalPrice(purchaseIn.getTotalPrice().subtract(purchaseIn.getDiscountPrice()).add(purchaseIn.getOtherPrice()));
-    }
-
-    private void updatePurchaseOrderInCount(Long orderId) {
-        // 1.1 鏌ヨ閲囪喘璁㈠崟瀵瑰簲鐨勯噰璐叆搴撳崟鍒楄〃
-        List<ErpPurchaseInDO> purchaseIns = purchaseInMapper.selectListByOrderId(orderId);
-        // 1.2 鏌ヨ瀵瑰簲鐨勯噰璐鍗曢」鐨勫叆搴撴暟閲�
-        Map<Long, BigDecimal> returnCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds(
-                convertList(purchaseIns, ErpPurchaseInDO::getId));
-        // 2. 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
-        purchaseOrderService.updatePurchaseOrderInCount(orderId, returnCountMap);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updatePurchaseInStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpPurchaseInDO purchaseIn = validatePurchaseInExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (purchaseIn.getStatus().equals(status)) {
-            throw exception(approve ? PURCHASE_IN_APPROVE_FAIL : PURCHASE_IN_PROCESS_FAIL);
-        }
-        // 1.3 鏍¢獙宸蹭粯娆�
-        if (!approve && purchaseIn.getPaymentPrice().compareTo(BigDecimal.ZERO) > 0) {
-            throw exception(PURCHASE_IN_PROCESS_FAIL_EXISTS_PAYMENT);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = purchaseInMapper.updateByIdAndStatus(id, purchaseIn.getStatus(),
-                new ErpPurchaseInDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? PURCHASE_IN_APPROVE_FAIL : PURCHASE_IN_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpPurchaseInItemDO> purchaseInItems = purchaseInItemMapper.selectListByInId(id);
-        Integer bizType = approve ? ErpStockRecordBizTypeEnum.PURCHASE_IN.getType()
-                : ErpStockRecordBizTypeEnum.PURCHASE_IN_CANCEL.getType();
-        purchaseInItems.forEach(purchaseInItem -> {
-            BigDecimal count = approve ? purchaseInItem.getCount() : purchaseInItem.getCount().negate();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    purchaseInItem.getProductId(), purchaseInItem.getWarehouseId(), count,
-                    bizType, purchaseInItem.getInId(), purchaseInItem.getId(), purchaseIn.getNo()));
-        });
-
-        // 4. 鍚屾 WMS 搴撳瓨锛圡ES 搴撳瓨锛�
-        if (approve) {
-            syncToWmsPurchaseInbound(purchaseIn, purchaseInItems);
-        }
-    }
-
-    /**
-     * 鍚屾閲囪喘鍏ュ簱鍒� WMS 搴撳瓨
-     */
-    private void syncToWmsPurchaseInbound(ErpPurchaseInDO purchaseIn, List<ErpPurchaseInItemDO> purchaseInItems) {
-        if (CollUtil.isEmpty(purchaseInItems)) {
-            return;
-        }
-
-        log.info("[syncToWmsPurchaseInbound] 寮�濮嬪悓姝ラ噰璐叆搴撳埌WMS锛宲urchaseInId={}", purchaseIn.getId());
-
-        // 鏋勫缓鍏ュ簱璇锋眰
-        WmsPurchaseInboundReqDTO reqDTO = new WmsPurchaseInboundReqDTO()
-                .setBizId(purchaseIn.getId())
-                .setBizCode(purchaseIn.getNo())
-                .setReceiptTime(LocalDateTime.now());
-
-        // 杞崲鏄庣粏椤�
-        List<WmsPurchaseInboundReqDTO.Item> items = convertList(purchaseInItems, item -> {
-            // ERP 浜у搧 ID -> MDM 鐗╂枡 ID
-            Long mdmItemId = mdmMappingService.getMdmItemId(item.getProductId());
-            // ERP 浠撳簱 ID -> MES 浠撳簱 ID
-            Long mesWarehouseId = mdmMappingService.getMesWarehouseId(item.getWarehouseId());
-
-            if (mdmItemId == null) {
-                log.warn("[syncToWmsPurchaseInbound] 鏈壘鍒癕DM鐗╂枡鏄犲皠锛宔rpProductId={}", item.getProductId());
-                return null;
-            }
-            if (mesWarehouseId == null) {
-                log.warn("[syncToWmsPurchaseInbound] 鏈壘鍒癕ES浠撳簱鏄犲皠锛宔rpWarehouseId={}", item.getWarehouseId());
-                return null;
-            }
-
-            return new WmsPurchaseInboundReqDTO.Item()
-                    .setItemId(mdmItemId)
-                    .setWarehouseId(mesWarehouseId)
-                    .setQuantity(item.getCount())
-                    .setBizLineId(item.getId());
-        });
-
-        // 杩囨护鎺夋槧灏勫け璐ョ殑椤�
-        items = items.stream().filter(java.util.Objects::nonNull).toList();
-        if (CollUtil.isEmpty(items)) {
-            log.warn("[syncToWmsPurchaseInbound] 鏃犳湁鏁堢殑鍏ュ簱鏄庣粏锛岃烦杩嘩MS鍚屾");
-            return;
-        }
-
-        reqDTO.setItems(items);
-
-        try {
-            Long transactionId = wmsStockApi.purchaseInbound(reqDTO);
-            log.info("[syncToWmsPurchaseInbound] 鍚屾鎴愬姛锛宼ransactionId={}", transactionId);
-        } catch (Exception e) {
-            log.error("[syncToWmsPurchaseInbound] 鍚屾澶辫触", e);
-            // 娉ㄦ剰锛氳繖閲屽彲浠ラ�夋嫨鎶涘嚭寮傚父鍥炴粴锛屾垨浠呰褰曟棩蹇�
-            // throw exception(PURCHASE_IN_SYNC_WMS_FAIL);
-        }
-    }
-
-    @Override
-    public void updatePurchaseInPaymentPrice(Long id, BigDecimal paymentPrice) {
-        ErpPurchaseInDO purchaseIn = purchaseInMapper.selectById(id);
-        if (purchaseIn.getPaymentPrice().equals(paymentPrice)) {
-            return;
-        }
-        if (paymentPrice.compareTo(purchaseIn.getTotalPrice()) > 0) {
-            throw exception(PURCHASE_IN_FAIL_PAYMENT_PRICE_EXCEED, paymentPrice, purchaseIn.getTotalPrice());
-        }
-        purchaseInMapper.updateById(new ErpPurchaseInDO().setId(id).setPaymentPrice(paymentPrice));
-    }
-
-    private List<ErpPurchaseInItemDO> validatePurchaseInItems(List<ErpPurchaseInSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpPurchaseInSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpPurchaseInItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseInItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
-            item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
-            if (item.getTotalPrice() == null) {
-                return;
-            }
-            if (item.getTaxPercent() != null) {
-                item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
-            }
-        }));
-    }
-
-    private void updatePurchaseInItemList(Long id, List<ErpPurchaseInItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpPurchaseInItemDO> oldList = purchaseInItemMapper.selectListByInId(id);
-        List<List<ErpPurchaseInItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setInId(id));
-            purchaseInItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            purchaseInItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            purchaseInItemMapper.deleteByIds(convertList(diffList.get(2), ErpPurchaseInItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deletePurchaseIn(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpPurchaseInDO> purchaseIns = purchaseInMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(purchaseIns)) {
-            return;
-        }
-        purchaseIns.forEach(purchaseIn -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseIn.getStatus())) {
-                throw exception(PURCHASE_IN_DELETE_FAIL_APPROVE, purchaseIn.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        purchaseIns.forEach(purchaseIn -> {
-            // 2.1 鍒犻櫎璁㈠崟
-            purchaseInMapper.deleteById(purchaseIn.getId());
-            // 2.2 鍒犻櫎璁㈠崟椤�
-            purchaseInItemMapper.deleteByInId(purchaseIn.getId());
-
-            // 2.3 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
-            updatePurchaseOrderInCount(purchaseIn.getOrderId());
-        });
-
-    }
-
-    private ErpPurchaseInDO validatePurchaseInExists(Long id) {
-        ErpPurchaseInDO purchaseIn = purchaseInMapper.selectById(id);
-        if (purchaseIn == null) {
-            throw exception(PURCHASE_IN_NOT_EXISTS);
-        }
-        return purchaseIn;
-    }
-
-    @Override
-    public ErpPurchaseInDO getPurchaseIn(Long id) {
-        return purchaseInMapper.selectById(id);
-    }
-
-    @Override
-    public ErpPurchaseInDO validatePurchaseIn(Long id) {
-        ErpPurchaseInDO purchaseIn = validatePurchaseInExists(id);
-        if (ObjectUtil.notEqual(purchaseIn.getStatus(), ErpAuditStatus.APPROVE.getStatus())) {
-            throw exception(PURCHASE_IN_NOT_APPROVE);
-        }
-        return purchaseIn;
-    }
-
-    @Override
-    public PageResult<ErpPurchaseInDO> getPurchaseInPage(ErpPurchaseInPageReqVO pageReqVO) {
-        return purchaseInMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 閲囪喘鍏ュ簱椤� ====================
-
-    @Override
-    public List<ErpPurchaseInItemDO> getPurchaseInItemListByInId(Long inId) {
-        return purchaseInItemMapper.selectListByInId(inId);
-    }
-
-    @Override
-    public List<ErpPurchaseInItemDO> getPurchaseInItemListByInIds(Collection<Long> inIds) {
-        if (CollUtil.isEmpty(inIds)) {
-            return Collections.emptyList();
-        }
-        return purchaseInItemMapper.selectListByInIds(inIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java
index b709b02..0fe2151 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java
@@ -124,4 +124,16 @@
      */
     List<ErpPurchaseOrderDO> getPurchaseOrderList(List<Long> ids);
 
+    /**
+     * 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撶姸鎬�
+     *
+     * 鏍规嵁鏄庣粏鍏ュ簱鏁伴噺鑷姩璁$畻璁㈠崟鐘舵�侊細
+     * - 鎵�鏈夋槑缁嗛兘瀹屾垚鍏ュ簱 鈫� 鍏ㄩ儴鍏ュ簱鐘舵��
+     * - 閮ㄥ垎鏄庣粏瀹屾垚鍏ュ簱 鈫� 閮ㄥ垎鍏ュ簱鐘舵��
+     * - 鏃犳槑缁嗗叆搴� 鈫� 鏈叆搴撶姸鎬�
+     *
+     * @param orderId 璁㈠崟缂栧彿
+     */
+    void updatePurchaseOrderInStatus(Long orderId);
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java
index 6f7f42e..80777de 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java
@@ -7,16 +7,16 @@
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO;
 import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderItemMapper;
 import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper;
 import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
 import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
+import cn.iocoder.yudao.module.erp.enums.ErpPurchaseOrderInStatusEnum;
 import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
 import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -49,11 +49,13 @@
     private ErpNoRedisDAO noRedisDAO;
 
     @Resource
-    private ErpProductService productService;
-    @Resource
     private ErpSupplierService supplierService;
     @Resource
     private ErpAccountService accountService;
+
+    @Resource
+    @Lazy
+    private ErpPurchaseRequestService purchaseRequestService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -154,13 +156,8 @@
     }
 
     private List<ErpPurchaseOrderItemDO> validatePurchaseOrderItems(List<ErpPurchaseOrderSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpPurchaseOrderSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpPurchaseOrderItemDO 鍒楄〃
+        // 杞寲涓� ErpPurchaseOrderItemDO 鍒楄〃锛堜骇鍝侀獙璇佸凡绉婚櫎锛�
         return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseOrderItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
             item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
             if (item.getTotalPrice() == null) {
                 return;
@@ -201,7 +198,7 @@
             }
             if (inCount.compareTo(item.getCount()) > 0) {
                 throw exception(PURCHASE_ORDER_ITEM_IN_FAIL_PRODUCT_EXCEED,
-                        productService.getProduct(item.getProductId()).getName(), item.getCount());
+                        "浜у搧ID:" + item.getProductId(), item.getCount());
             }
             purchaseOrderItemMapper.updateById(new ErpPurchaseOrderItemDO().setId(item.getId()).setInCount(inCount));
         });
@@ -221,7 +218,7 @@
             }
             if (returnCount.compareTo(item.getInCount()) > 0) {
                 throw exception(PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED,
-                        productService.getProduct(item.getProductId()).getName(), item.getInCount());
+                        "浜у搧ID:" + item.getProductId(), item.getInCount());
             }
             purchaseOrderItemMapper.updateById(new ErpPurchaseOrderItemDO().setId(item.getId()).setReturnCount(returnCount));
         });
@@ -309,4 +306,55 @@
         return purchaseOrderMapper.selectByIds(ids);
     }
 
+    @Override
+    public void updatePurchaseOrderInStatus(Long orderId) {
+        // 1. 鑾峰彇閲囪喘璁㈠崟
+        ErpPurchaseOrderDO order = validatePurchaseOrderExists(orderId);
+        // 2. 鑾峰彇閲囪喘璁㈠崟鏄庣粏
+        List<ErpPurchaseOrderItemDO> items = purchaseOrderItemMapper.selectListByOrderId(orderId);
+        if (CollUtil.isEmpty(items)) {
+            return;
+        }
+        // 3. 璁$畻鍏ュ簱鐘舵��
+        int inStatus = calculateInStatus(items);
+        // 4. 鏇存柊閲囪喘璁㈠崟鍏ュ簱鐘舵��
+        purchaseOrderMapper.updateById(new ErpPurchaseOrderDO()
+                .setId(orderId).setInStatus(inStatus));
+        // 5. 鍚屾鏇存柊閲囪喘鐢宠鐨勫叆搴撶姸鎬侊紙濡傛灉鏈夊叧鑱旂殑閲囪喘鐢宠锛�
+        if (order.getRequestId() != null) {
+            purchaseRequestService.updatePurchaseRequestInStatus(order.getRequestId(), inStatus);
+        }
+    }
+
+    /**
+     * 璁$畻鍏ュ簱鐘舵��
+     *
+     * @param items 閲囪喘璁㈠崟鏄庣粏鍒楄〃
+     * @return 鍏ュ簱鐘舵��
+     */
+    private int calculateInStatus(List<ErpPurchaseOrderItemDO> items) {
+        boolean allIn = true;
+        boolean anyIn = false;
+
+        for (ErpPurchaseOrderItemDO item : items) {
+            BigDecimal count = item.getCount() != null ? item.getCount() : BigDecimal.ZERO;
+            BigDecimal inCount = item.getInCount() != null ? item.getInCount() : BigDecimal.ZERO;
+
+            if (inCount.compareTo(BigDecimal.ZERO) > 0) {
+                anyIn = true;
+            }
+            if (inCount.compareTo(count) < 0) {
+                allIn = false;
+            }
+        }
+
+        if (allIn) {
+            return ErpPurchaseOrderInStatusEnum.ALL_IN.getStatus();
+        } else if (anyIn) {
+            return ErpPurchaseOrderInStatusEnum.PART_IN.getStatus();
+        } else {
+            return ErpPurchaseOrderInStatusEnum.NOT_IN.getStatus();
+        }
+    }
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java
index f66ead5..569f11c 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java
@@ -107,4 +107,12 @@
      */
     List<java.util.Map<String, Object>> getPurchaseRequestApproveProcessDefinitionList();
 
+    /**
+     * 鏇存柊閲囪喘鐢宠鐨勫叆搴撶姸鎬�
+     *
+     * @param id       閲囪喘鐢宠缂栧彿
+     * @param inStatus 鍏ュ簱鐘舵��
+     */
+    void updatePurchaseRequestInStatus(Long id, Integer inStatus);
+
 }
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
index 766a564..88778f1 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -14,14 +14,12 @@
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestItemDO;
 import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestItemMapper;
 import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper;
 import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
 import cn.iocoder.yudao.module.erp.enums.ErpPurchaseRequestStatusEnum;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.repository.ProcessDefinition;
@@ -59,8 +57,6 @@
     @Resource
     private ErpNoRedisDAO noRedisDAO;
 
-    @Resource
-    private ErpProductService productService;
     @Resource
     private ErpSupplierService supplierService;
 
@@ -154,13 +150,8 @@
     }
 
     private List<ErpPurchaseRequestItemDO> validatePurchaseRequestItems(List<ErpPurchaseRequestSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpPurchaseRequestSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpPurchaseRequestItemDO 鍒楄〃
+        // 杞寲涓� ErpPurchaseRequestItemDO 鍒楄〃锛堜骇鍝侀獙璇佸凡绉婚櫎锛屼娇鐢� MDM 鐗╂枡锛�
         return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseRequestItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
             if (item.getProductPrice() != null && item.getCount() != null) {
                 item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
                 if (item.getTaxPercent() != null) {
@@ -400,4 +391,11 @@
         return result;
     }
 
+    @Override
+    public void updatePurchaseRequestInStatus(Long id, Integer inStatus) {
+        purchaseRequestMapper.updateById(new ErpPurchaseRequestDO()
+                .setId(id)
+                .setInStatus(inStatus));
+    }
+
 }
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java
deleted file mode 100644
index b6826fa..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.purchase;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
-import jakarta.validation.Valid;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 閲囪喘閫�璐� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpPurchaseReturnService {
-
-    /**
-     * 鍒涘缓閲囪喘閫�璐�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createPurchaseReturn(@Valid ErpPurchaseReturnSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊閲囪喘閫�璐�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updatePurchaseReturn(@Valid ErpPurchaseReturnSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊閲囪喘閫�璐х殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updatePurchaseReturnStatus(Long id, Integer status);
-
-    /**
-     * 鏇存柊閲囪喘閫�璐х殑閫�娆鹃噾棰�
-     *
-     * @param id 缂栧彿
-     * @param refundPrice 閫�娆鹃噾棰�
-     */
-    void updatePurchaseReturnRefundPrice(Long id, BigDecimal refundPrice);
-
-    /**
-     * 鍒犻櫎閲囪喘閫�璐�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deletePurchaseReturn(List<Long> ids);
-
-    /**
-     * 鑾峰緱閲囪喘閫�璐�
-     *
-     * @param id 缂栧彿
-     * @return 閲囪喘閫�璐�
-     */
-    ErpPurchaseReturnDO getPurchaseReturn(Long id);
-
-    /**
-     * 鏍¢獙閲囪喘閫�璐э紝宸茬粡瀹℃牳閫氳繃
-     *
-     * @param id 缂栧彿
-     * @return 閲囪喘閫�璐�
-     */
-    ErpPurchaseReturnDO validatePurchaseReturn(Long id);
-
-    /**
-     * 鑾峰緱閲囪喘閫�璐у垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 閲囪喘閫�璐у垎椤�
-     */
-    PageResult<ErpPurchaseReturnDO> getPurchaseReturnPage(ErpPurchaseReturnPageReqVO pageReqVO);
-
-    // ==================== 閲囪喘閫�璐ч」 ====================
-
-    /**
-     * 鑾峰緱閲囪喘閫�璐ч」鍒楄〃
-     *
-     * @param returnId 閲囪喘閫�璐х紪鍙�
-     * @return 閲囪喘閫�璐ч」鍒楄〃
-     */
-    List<ErpPurchaseReturnItemDO> getPurchaseReturnItemListByReturnId(Long returnId);
-
-    /**
-     * 鑾峰緱閲囪喘閫�璐ч」 List
-     *
-     * @param returnIds 閲囪喘閫�璐х紪鍙锋暟缁�
-     * @return 閲囪喘閫�璐ч」 List
-     */
-    List<ErpPurchaseReturnItemDO> getPurchaseReturnItemListByReturnIds(Collection<Long> returnIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java
deleted file mode 100644
index 18fe5ce..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseReturnServiceImpl.java
+++ /dev/null
@@ -1,304 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.purchase;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseReturnItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseReturnMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 閲囪喘閫�璐� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpPurchaseReturnServiceImpl implements ErpPurchaseReturnService {
-
-    @Resource
-    private ErpPurchaseReturnMapper purchaseReturnMapper;
-    @Resource
-    private ErpPurchaseReturnItemMapper purchaseReturnItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private ErpPurchaseOrderService purchaseOrderService;
-    @Resource
-    private ErpAccountService accountService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createPurchaseReturn(ErpPurchaseReturnSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙閲囪喘璁㈠崟宸插鏍�
-        ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(createReqVO.getOrderId());
-        // 1.2 鏍¢獙閫�璐ч」鐨勬湁鏁堟��
-        List<ErpPurchaseReturnItemDO> purchaseReturnItems = validatePurchaseReturnItems(createReqVO.getItems());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(createReqVO.getAccountId());
-        // 1.4 鐢熸垚閫�璐у崟鍙凤紝骞舵牎楠屽敮涓�鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_RETURN_NO_PREFIX);
-        if (purchaseReturnMapper.selectByNo(no) != null) {
-            throw exception(PURCHASE_RETURN_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆閫�璐�
-        ErpPurchaseReturnDO purchaseReturn = BeanUtils.toBean(createReqVO, ErpPurchaseReturnDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()))
-                .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId());
-        calculateTotalPrice(purchaseReturn, purchaseReturnItems);
-        purchaseReturnMapper.insert(purchaseReturn);
-        // 2.2 鎻掑叆閫�璐ч」
-        purchaseReturnItems.forEach(o -> o.setReturnId(purchaseReturn.getId()));
-        purchaseReturnItemMapper.insertBatch(purchaseReturnItems);
-
-        // 3. 鏇存柊閲囪喘璁㈠崟鐨勯��璐ф暟閲�
-        updatePurchaseOrderReturnCount(createReqVO.getOrderId());
-        return purchaseReturn.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updatePurchaseReturn(ErpPurchaseReturnSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpPurchaseReturnDO purchaseReturn = validatePurchaseReturnExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseReturn.getStatus())) {
-            throw exception(PURCHASE_RETURN_UPDATE_FAIL_APPROVE, purchaseReturn.getNo());
-        }
-        // 1.2 鏍¢獙閲囪喘璁㈠崟宸插鏍�
-        ErpPurchaseOrderDO purchaseOrder = purchaseOrderService.validatePurchaseOrder(updateReqVO.getOrderId());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(updateReqVO.getAccountId());
-        // 1.4 鏍¢獙璁㈠崟椤圭殑鏈夋晥鎬�
-        List<ErpPurchaseReturnItemDO> purchaseReturnItems = validatePurchaseReturnItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊閫�璐�
-        ErpPurchaseReturnDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseReturnDO.class)
-                .setOrderNo(purchaseOrder.getNo()).setSupplierId(purchaseOrder.getSupplierId());
-        calculateTotalPrice(updateObj, purchaseReturnItems);
-        purchaseReturnMapper.updateById(updateObj);
-        // 2.2 鏇存柊閫�璐ч」
-        updatePurchaseReturnItemList(updateReqVO.getId(), purchaseReturnItems);
-
-        // 3.1 鏇存柊閲囪喘璁㈠崟鐨勫嚭搴撴暟閲�
-        updatePurchaseOrderReturnCount(updateObj.getOrderId());
-        // 3.2 娉ㄦ剰锛氬鏋滈噰璐鍗曠紪鍙峰彉鏇翠簡锛岄渶瑕佹洿鏂扳�滆�佲�濋噰璐鍗曠殑鍑哄簱鏁伴噺
-        if (ObjectUtil.notEqual(purchaseReturn.getOrderId(), updateObj.getOrderId())) {
-            updatePurchaseOrderReturnCount(purchaseReturn.getOrderId());
-        }
-    }
-
-    private void calculateTotalPrice(ErpPurchaseReturnDO purchaseReturn, List<ErpPurchaseReturnItemDO> purchaseReturnItems) {
-        purchaseReturn.setTotalCount(getSumValue(purchaseReturnItems, ErpPurchaseReturnItemDO::getCount, BigDecimal::add));
-        purchaseReturn.setTotalProductPrice(getSumValue(purchaseReturnItems, ErpPurchaseReturnItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO));
-        purchaseReturn.setTotalTaxPrice(getSumValue(purchaseReturnItems, ErpPurchaseReturnItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO));
-        purchaseReturn.setTotalPrice(purchaseReturn.getTotalProductPrice().add(purchaseReturn.getTotalTaxPrice()));
-        // 璁$畻浼樻儬浠锋牸
-        if (purchaseReturn.getDiscountPercent() == null) {
-            purchaseReturn.setDiscountPercent(BigDecimal.ZERO);
-        }
-        purchaseReturn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(purchaseReturn.getTotalPrice(), purchaseReturn.getDiscountPercent()));
-        purchaseReturn.setTotalPrice(purchaseReturn.getTotalPrice().subtract(purchaseReturn.getDiscountPrice()).add(purchaseReturn.getOtherPrice()));
-    }
-
-    private void updatePurchaseOrderReturnCount(Long orderId) {
-        // 1.1 鏌ヨ閲囪喘璁㈠崟瀵瑰簲鐨勯噰璐嚭搴撳崟鍒楄〃
-        List<ErpPurchaseReturnDO> purchaseReturns = purchaseReturnMapper.selectListByOrderId(orderId);
-        // 1.2 鏌ヨ瀵瑰簲鐨勯噰璐鍗曢」鐨勯��璐ф暟閲�
-        Map<Long, BigDecimal> returnCountMap = purchaseReturnItemMapper.selectOrderItemCountSumMapByReturnIds(
-                convertList(purchaseReturns, ErpPurchaseReturnDO::getId));
-        // 2. 鏇存柊閲囪喘璁㈠崟鐨勫嚭搴撴暟閲�
-        purchaseOrderService.updatePurchaseOrderReturnCount(orderId, returnCountMap);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updatePurchaseReturnStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpPurchaseReturnDO purchaseReturn = validatePurchaseReturnExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (purchaseReturn.getStatus().equals(status)) {
-            throw exception(approve ? PURCHASE_RETURN_APPROVE_FAIL : PURCHASE_RETURN_PROCESS_FAIL);
-        }
-        // 1.3 鏍¢獙宸查��娆�
-        if (!approve && purchaseReturn.getRefundPrice().compareTo(BigDecimal.ZERO) > 0) {
-            throw exception(PURCHASE_RETURN_PROCESS_FAIL_EXISTS_REFUND);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = purchaseReturnMapper.updateByIdAndStatus(id, purchaseReturn.getStatus(),
-                new ErpPurchaseReturnDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? PURCHASE_RETURN_APPROVE_FAIL : PURCHASE_RETURN_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpPurchaseReturnItemDO> purchaseReturnItems = purchaseReturnItemMapper.selectListByReturnId(id);
-        Integer bizType = approve ? ErpStockRecordBizTypeEnum.PURCHASE_RETURN.getType()
-                : ErpStockRecordBizTypeEnum.PURCHASE_RETURN_CANCEL.getType();
-        purchaseReturnItems.forEach(purchaseReturnItem -> {
-            BigDecimal count = approve ? purchaseReturnItem.getCount().negate() : purchaseReturnItem.getCount();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    purchaseReturnItem.getProductId(), purchaseReturnItem.getWarehouseId(), count,
-                    bizType, purchaseReturnItem.getReturnId(), purchaseReturnItem.getId(), purchaseReturn.getNo()));
-        });
-    }
-
-    @Override
-    public void updatePurchaseReturnRefundPrice(Long id, BigDecimal refundPrice) {
-        ErpPurchaseReturnDO purchaseReturn = purchaseReturnMapper.selectById(id);
-        if (purchaseReturn.getRefundPrice().equals(refundPrice)) {
-            return;
-        }
-        if (refundPrice.compareTo(purchaseReturn.getTotalPrice()) > 0) {
-            throw exception(PURCHASE_RETURN_FAIL_REFUND_PRICE_EXCEED, refundPrice, purchaseReturn.getTotalPrice());
-        }
-        purchaseReturnMapper.updateById(new ErpPurchaseReturnDO().setId(id).setRefundPrice(refundPrice));
-    }
-
-    private List<ErpPurchaseReturnItemDO> validatePurchaseReturnItems(List<ErpPurchaseReturnSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpPurchaseReturnSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpPurchaseReturnItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseReturnItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
-            item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
-            if (item.getTotalPrice() == null) {
-                return;
-            }
-            if (item.getTaxPercent() != null) {
-                item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
-            }
-        }));
-    }
-
-    private void updatePurchaseReturnItemList(Long id, List<ErpPurchaseReturnItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpPurchaseReturnItemDO> oldList = purchaseReturnItemMapper.selectListByReturnId(id);
-        List<List<ErpPurchaseReturnItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setReturnId(id));
-            purchaseReturnItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            purchaseReturnItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            purchaseReturnItemMapper.deleteByIds(convertList(diffList.get(2), ErpPurchaseReturnItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deletePurchaseReturn(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpPurchaseReturnDO> purchaseReturns = purchaseReturnMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(purchaseReturns)) {
-            return;
-        }
-        purchaseReturns.forEach(purchaseReturn -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(purchaseReturn.getStatus())) {
-                throw exception(PURCHASE_RETURN_DELETE_FAIL_APPROVE, purchaseReturn.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        purchaseReturns.forEach(purchaseReturn -> {
-            // 2.1 鍒犻櫎璁㈠崟
-            purchaseReturnMapper.deleteById(purchaseReturn.getId());
-            // 2.2 鍒犻櫎璁㈠崟椤�
-            purchaseReturnItemMapper.deleteByReturnId(purchaseReturn.getId());
-
-            // 2.3 鏇存柊閲囪喘璁㈠崟鐨勫嚭搴撴暟閲�
-            updatePurchaseOrderReturnCount(purchaseReturn.getOrderId());
-        });
-
-    }
-
-    private ErpPurchaseReturnDO validatePurchaseReturnExists(Long id) {
-        ErpPurchaseReturnDO purchaseReturn = purchaseReturnMapper.selectById(id);
-        if (purchaseReturn == null) {
-            throw exception(PURCHASE_RETURN_NOT_EXISTS);
-        }
-        return purchaseReturn;
-    }
-
-    @Override
-    public ErpPurchaseReturnDO getPurchaseReturn(Long id) {
-        return purchaseReturnMapper.selectById(id);
-    }
-
-    @Override
-    public ErpPurchaseReturnDO validatePurchaseReturn(Long id) {
-        ErpPurchaseReturnDO purchaseReturn = getPurchaseReturn(id);
-        if (ObjectUtil.notEqual(purchaseReturn.getStatus(), ErpAuditStatus.APPROVE.getStatus())) {
-            throw exception(PURCHASE_RETURN_NOT_APPROVE);
-        }
-        return purchaseReturn;
-    }
-
-    @Override
-    public PageResult<ErpPurchaseReturnDO> getPurchaseReturnPage(ErpPurchaseReturnPageReqVO pageReqVO) {
-        return purchaseReturnMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 閲囪喘閫�璐ч」 ====================
-
-    @Override
-    public List<ErpPurchaseReturnItemDO> getPurchaseReturnItemListByReturnId(Long returnId) {
-        return purchaseReturnItemMapper.selectListByReturnId(returnId);
-    }
-
-    @Override
-    public List<ErpPurchaseReturnItemDO> getPurchaseReturnItemListByReturnIds(Collection<Long> returnIds) {
-        if (CollUtil.isEmpty(returnIds)) {
-            return Collections.emptyList();
-        }
-        return purchaseReturnItemMapper.selectListByReturnIds(returnIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java
index b715e27..e1c0781 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderService.java
@@ -121,4 +121,16 @@
      */
     List<ErpSaleOrderItemDO> getSaleOrderItemListByOrderIds(Collection<Long> orderIds);
 
+    /**
+     * 鏇存柊閿�鍞鍗曠殑鍑哄簱鐘舵��
+     *
+     * 鏍规嵁鏄庣粏鍑哄簱鏁伴噺鑷姩璁$畻璁㈠崟鐘舵�侊細
+     * - 鎵�鏈夋槑缁嗛兘瀹屾垚鍑哄簱 鈫� 鍏ㄩ儴鍑哄簱鐘舵��
+     * - 閮ㄥ垎鏄庣粏瀹屾垚鍑哄簱 鈫� 閮ㄥ垎鍑哄簱鐘舵��
+     * - 鏃犳槑缁嗗嚭搴� 鈫� 鏈嚭搴撶姸鎬�
+     *
+     * @param orderId 璁㈠崟缂栧彿
+     */
+    void updateSaleOrderOutStatus(Long orderId);
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
index 17c99a9..b9eddf9 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOrderServiceImpl.java
@@ -9,15 +9,14 @@
 import cn.iocoder.yudao.module.crm.api.contract.CrmContractApi;
 import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO;
 import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderItemMapper;
 import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper;
 import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
 import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
+import cn.iocoder.yudao.module.erp.enums.ErpSaleOrderOutStatusEnum;
 import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -33,8 +32,6 @@
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
 import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
 
 /**
  * ERP 閿�鍞鍗� Service 瀹炵幇绫�
@@ -53,8 +50,6 @@
     @Resource
     private ErpNoRedisDAO noRedisDAO;
 
-    @Resource
-    private ErpProductService productService;
     @Resource
     private CrmCustomerApi customerApi;
     @Resource
@@ -225,13 +220,8 @@
     }
 
     private List<ErpSaleOrderItemDO> validateSaleOrderItems(List<ErpSaleOrderSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpSaleOrderSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpSaleOrderItemDO 鍒楄〃
+        // 杞寲涓� ErpSaleOrderItemDO 鍒楄〃锛堜骇鍝侀獙璇佸凡绉婚櫎锛�
         return convertList(list, o -> BeanUtils.toBean(o, ErpSaleOrderItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
             item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
             if (item.getTotalPrice() == null) {
                 return;
@@ -272,7 +262,7 @@
             }
             if (outCount.compareTo(item.getCount()) > 0) {
                 throw exception(SALE_ORDER_ITEM_OUT_FAIL_PRODUCT_EXCEED,
-                        productService.getProduct(item.getProductId()).getName(), item.getCount());
+                        "浜у搧ID:" + item.getProductId(), item.getCount());
             }
             saleOrderItemMapper.updateById(new ErpSaleOrderItemDO().setId(item.getId()).setOutCount(outCount));
         });
@@ -292,7 +282,7 @@
             }
             if (returnCount.compareTo(item.getOutCount()) > 0) {
                 throw exception(SALE_ORDER_ITEM_RETURN_FAIL_OUT_EXCEED,
-                        productService.getProduct(item.getProductId()).getName(), item.getOutCount());
+                        "浜у搧ID:" + item.getProductId(), item.getOutCount());
             }
             saleOrderItemMapper.updateById(new ErpSaleOrderItemDO().setId(item.getId()).setReturnCount(returnCount));
         });
@@ -366,4 +356,51 @@
         return saleOrderItemMapper.selectListByOrderIds(orderIds);
     }
 
+    @Override
+    public void updateSaleOrderOutStatus(Long orderId) {
+        // 1. 鑾峰彇閿�鍞鍗�
+        ErpSaleOrderDO order = validateSaleOrderExists(orderId);
+        // 2. 鑾峰彇閿�鍞鍗曟槑缁�
+        List<ErpSaleOrderItemDO> items = saleOrderItemMapper.selectListByOrderId(orderId);
+        if (CollUtil.isEmpty(items)) {
+            return;
+        }
+        // 3. 璁$畻鍑哄簱鐘舵��
+        int outStatus = calculateOutStatus(items);
+        // 4. 鏇存柊閿�鍞鍗曞嚭搴撶姸鎬�
+        saleOrderMapper.updateById(new ErpSaleOrderDO()
+                .setId(orderId).setOutStatus(outStatus));
+    }
+
+    /**
+     * 璁$畻鍑哄簱鐘舵��
+     *
+     * @param items 閿�鍞鍗曟槑缁嗗垪琛�
+     * @return 鍑哄簱鐘舵��
+     */
+    private int calculateOutStatus(List<ErpSaleOrderItemDO> items) {
+        boolean allOut = true;
+        boolean anyOut = false;
+
+        for (ErpSaleOrderItemDO item : items) {
+            BigDecimal count = item.getCount() != null ? item.getCount() : BigDecimal.ZERO;
+            BigDecimal outCount = item.getOutCount() != null ? item.getOutCount() : BigDecimal.ZERO;
+
+            if (outCount.compareTo(BigDecimal.ZERO) > 0) {
+                anyOut = true;
+            }
+            if (outCount.compareTo(count) < 0) {
+                allOut = false;
+            }
+        }
+
+        if (allOut) {
+            return ErpSaleOrderOutStatusEnum.ALL_OUT.getStatus();
+        } else if (anyOut) {
+            return ErpSaleOrderOutStatusEnum.PART_OUT.getStatus();
+        } else {
+            return ErpSaleOrderOutStatusEnum.NOT_OUT.getStatus();
+        }
+    }
+
 }
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java
deleted file mode 100644
index 616f778..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.sale;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO;
-import jakarta.validation.Valid;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 閿�鍞嚭搴� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpSaleOutService {
-
-    /**
-     * 鍒涘缓閿�鍞嚭搴�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createSaleOut(@Valid ErpSaleOutSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊閿�鍞嚭搴�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateSaleOut(@Valid ErpSaleOutSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊閿�鍞嚭搴撶殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updateSaleOutStatus(Long id, Integer status);
-
-    /**
-     * 鏇存柊閿�鍞嚭搴撶殑鏀舵閲戦
-     *
-     * @param id 缂栧彿
-     * @param receiptPrice 鏀舵閲戦
-     */
-    void updateSaleInReceiptPrice(Long id, BigDecimal receiptPrice);
-
-    /**
-     * 鍒犻櫎閿�鍞嚭搴�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deleteSaleOut(List<Long> ids);
-
-    /**
-     * 鑾峰緱閿�鍞嚭搴�
-     *
-     * @param id 缂栧彿
-     * @return 閿�鍞嚭搴�
-     */
-    ErpSaleOutDO getSaleOut(Long id);
-
-    /**
-     * 鏍¢獙閿�鍞嚭搴擄紝宸茬粡瀹℃牳閫氳繃
-     *
-     * @param id 缂栧彿
-     * @return 閿�鍞嚭搴�
-     */
-    ErpSaleOutDO validateSaleOut(Long id);
-
-    /**
-     * 鑾峰緱閿�鍞嚭搴撳垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 閿�鍞嚭搴撳垎椤�
-     */
-    PageResult<ErpSaleOutDO> getSaleOutPage(ErpSaleOutPageReqVO pageReqVO);
-
-    // ==================== 閿�鍞嚭搴撻」 ====================
-
-    /**
-     * 鑾峰緱閿�鍞嚭搴撻」鍒楄〃
-     *
-     * @param outId 閿�鍞嚭搴撶紪鍙�
-     * @return 閿�鍞嚭搴撻」鍒楄〃
-     */
-    List<ErpSaleOutItemDO> getSaleOutItemListByOutId(Long outId);
-
-    /**
-     * 鑾峰緱閿�鍞嚭搴撻」 List
-     *
-     * @param outIds 閿�鍞嚭搴撶紪鍙锋暟缁�
-     * @return 閿�鍞嚭搴撻」 List
-     */
-    List<ErpSaleOutItemDO> getSaleOutItemListByOutIds(Collection<Long> outIds);
-
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java
deleted file mode 100644
index af646e1..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleOutServiceImpl.java
+++ /dev/null
@@ -1,389 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.sale;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.out.ErpSaleOutSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOutItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOutItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOutMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.product.mapping.ErpMdmMappingService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsSalesOutboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.stock.WmsStockApi;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 閿�鍞嚭搴� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-@Slf4j
-public class ErpSaleOutServiceImpl implements ErpSaleOutService {
-
-    @Resource
-    private ErpSaleOutMapper saleOutMapper;
-    @Resource
-    private ErpSaleOutItemMapper saleOutItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private ErpSaleOrderService saleOrderService;
-    @Resource
-    private ErpAccountService accountService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Resource
-    private WmsStockApi wmsStockApi;
-
-    @Resource
-    private ErpMdmMappingService mdmMappingService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createSaleOut(ErpSaleOutSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙閿�鍞鍗曞凡瀹℃牳
-        ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(createReqVO.getOrderId());
-        // 1.2 鏍¢獙鍑哄簱椤圭殑鏈夋晥鎬�
-        List<ErpSaleOutItemDO> saleOutItems = validateSaleOutItems(createReqVO.getItems());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(createReqVO.getAccountId());
-        // 1.4 鏍¢獙閿�鍞汉鍛�
-        if (createReqVO.getSaleUserId() != null) {
-            adminUserApi.validateUser(createReqVO.getSaleUserId());
-        }
-        // 1.5 鐢熸垚鍑哄簱鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_OUT_NO_PREFIX);
-        if (saleOutMapper.selectByNo(no) != null) {
-            throw exception(SALE_OUT_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆鍑哄簱
-        ErpSaleOutDO saleOut = BeanUtils.toBean(createReqVO, ErpSaleOutDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()))
-                .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId());
-        calculateTotalPrice(saleOut, saleOutItems);
-        saleOutMapper.insert(saleOut);
-        // 2.2 鎻掑叆鍑哄簱椤�
-        saleOutItems.forEach(o -> o.setOutId(saleOut.getId()));
-        saleOutItemMapper.insertBatch(saleOutItems);
-
-        // 3. 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-        updateSaleOrderOutCount(createReqVO.getOrderId());
-        return saleOut.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateSaleOut(ErpSaleOutSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpSaleOutDO saleOut = validateSaleOutExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(saleOut.getStatus())) {
-            throw exception(SALE_OUT_UPDATE_FAIL_APPROVE, saleOut.getNo());
-        }
-        // 1.2 鏍¢獙閿�鍞鍗曞凡瀹℃牳
-        ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(updateReqVO.getOrderId());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(updateReqVO.getAccountId());
-        // 1.4 鏍¢獙閿�鍞汉鍛�
-        if (updateReqVO.getSaleUserId() != null) {
-            adminUserApi.validateUser(updateReqVO.getSaleUserId());
-        }
-        // 1.5 鏍¢獙璁㈠崟椤圭殑鏈夋晥鎬�
-        List<ErpSaleOutItemDO> saleOutItems = validateSaleOutItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊鍑哄簱
-        ErpSaleOutDO updateObj = BeanUtils.toBean(updateReqVO, ErpSaleOutDO.class)
-                .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId());
-        calculateTotalPrice(updateObj, saleOutItems);
-        saleOutMapper.updateById(updateObj);
-        // 2.2 鏇存柊鍑哄簱椤�
-        updateSaleOutItemList(updateReqVO.getId(), saleOutItems);
-
-        // 3.1 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-        updateSaleOrderOutCount(updateObj.getOrderId());
-        // 3.2 娉ㄦ剰锛氬鏋滈攢鍞鍗曠紪鍙峰彉鏇翠簡锛岄渶瑕佹洿鏂扳�滆�佲�濋攢鍞鍗曠殑鍑哄簱鏁伴噺
-        if (ObjectUtil.notEqual(saleOut.getOrderId(), updateObj.getOrderId())) {
-            updateSaleOrderOutCount(saleOut.getOrderId());
-        }
-    }
-
-    private void calculateTotalPrice(ErpSaleOutDO saleOut, List<ErpSaleOutItemDO> saleOutItems) {
-        saleOut.setTotalCount(getSumValue(saleOutItems, ErpSaleOutItemDO::getCount, BigDecimal::add));
-        saleOut.setTotalProductPrice(getSumValue(saleOutItems, ErpSaleOutItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO));
-        saleOut.setTotalTaxPrice(getSumValue(saleOutItems, ErpSaleOutItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO));
-        saleOut.setTotalPrice(saleOut.getTotalProductPrice().add(saleOut.getTotalTaxPrice()));
-        // 璁$畻浼樻儬浠锋牸
-        if (saleOut.getDiscountPercent() == null) {
-            saleOut.setDiscountPercent(BigDecimal.ZERO);
-        }
-        saleOut.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleOut.getTotalPrice(), saleOut.getDiscountPercent()));
-        saleOut.setTotalPrice(saleOut.getTotalPrice().subtract(saleOut.getDiscountPrice().add(saleOut.getOtherPrice())));
-    }
-
-    private void updateSaleOrderOutCount(Long orderId) {
-        // 1.1 鏌ヨ閿�鍞鍗曞搴旂殑閿�鍞嚭搴撳崟鍒楄〃
-        List<ErpSaleOutDO> saleOuts = saleOutMapper.selectListByOrderId(orderId);
-        // 1.2 鏌ヨ瀵瑰簲鐨勯攢鍞鍗曢」鐨勫嚭搴撴暟閲�
-        Map<Long, BigDecimal> returnCountMap = saleOutItemMapper.selectOrderItemCountSumMapByOutIds(
-                convertList(saleOuts, ErpSaleOutDO::getId));
-        // 2. 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-        saleOrderService.updateSaleOrderOutCount(orderId, returnCountMap);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateSaleOutStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpSaleOutDO saleOut = validateSaleOutExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (saleOut.getStatus().equals(status)) {
-            throw exception(approve ? SALE_OUT_APPROVE_FAIL : SALE_OUT_PROCESS_FAIL);
-        }
-        // 1.3 鏍¢獙宸查��娆�
-        if (!approve && saleOut.getReceiptPrice().compareTo(BigDecimal.ZERO) > 0) {
-            throw exception(SALE_OUT_PROCESS_FAIL_EXISTS_RECEIPT);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = saleOutMapper.updateByIdAndStatus(id, saleOut.getStatus(),
-                new ErpSaleOutDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? SALE_OUT_APPROVE_FAIL : SALE_OUT_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpSaleOutItemDO> saleOutItems = saleOutItemMapper.selectListByOutId(id);
-        Integer bizType = approve ? ErpStockRecordBizTypeEnum.SALE_OUT.getType()
-                : ErpStockRecordBizTypeEnum.SALE_OUT_CANCEL.getType();
-        saleOutItems.forEach(saleOutItem -> {
-            BigDecimal count = approve ? saleOutItem.getCount().negate() : saleOutItem.getCount();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    saleOutItem.getProductId(), saleOutItem.getWarehouseId(), count,
-                    bizType, saleOutItem.getOutId(), saleOutItem.getId(), saleOut.getNo()));
-        });
-
-        // 4. 鍚屾 WMS 搴撳瓨锛圡ES 搴撳瓨锛�
-        if (approve) {
-            syncToWmsSalesOutbound(saleOut, saleOutItems);
-        }
-    }
-
-    /**
-     * 鍚屾閿�鍞嚭搴撳埌 WMS 搴撳瓨
-     */
-    private void syncToWmsSalesOutbound(ErpSaleOutDO saleOut, List<ErpSaleOutItemDO> saleOutItems) {
-        if (CollUtil.isEmpty(saleOutItems)) {
-            return;
-        }
-
-        log.info("[syncToWmsSalesOutbound] 寮�濮嬪悓姝ラ攢鍞嚭搴撳埌WMS锛宻aleOutId={}", saleOut.getId());
-
-        // 鏋勫缓鍑哄簱璇锋眰
-        WmsSalesOutboundReqDTO reqDTO = new WmsSalesOutboundReqDTO()
-                .setBizId(saleOut.getId())
-                .setBizCode(saleOut.getNo())
-                .setOutboundTime(LocalDateTime.now());
-
-        // 杞崲鏄庣粏椤�
-        List<WmsSalesOutboundReqDTO.Item> items = convertList(saleOutItems, item -> {
-            // ERP 浜у搧 ID -> MDM 鐗╂枡 ID
-            Long mdmItemId = mdmMappingService.getMdmItemId(item.getProductId());
-            // ERP 浠撳簱 ID -> MES 浠撳簱 ID
-            Long mesWarehouseId = mdmMappingService.getMesWarehouseId(item.getWarehouseId());
-
-            if (mdmItemId == null) {
-                log.warn("[syncToWmsSalesOutbound] 鏈壘鍒癕DM鐗╂枡鏄犲皠锛宔rpProductId={}", item.getProductId());
-                return null;
-            }
-            if (mesWarehouseId == null) {
-                log.warn("[syncToWmsSalesOutbound] 鏈壘鍒癕ES浠撳簱鏄犲皠锛宔rpWarehouseId={}", item.getWarehouseId());
-                return null;
-            }
-
-            return new WmsSalesOutboundReqDTO.Item()
-                    .setItemId(mdmItemId)
-                    .setWarehouseId(mesWarehouseId)
-                    .setQuantity(item.getCount())
-                    .setBizLineId(item.getId());
-        });
-
-        // 杩囨护鎺夋槧灏勫け璐ョ殑椤�
-        items = items.stream().filter(java.util.Objects::nonNull).toList();
-        if (CollUtil.isEmpty(items)) {
-            log.warn("[syncToWmsSalesOutbound] 鏃犳湁鏁堢殑鍑哄簱鏄庣粏锛岃烦杩嘩MS鍚屾");
-            return;
-        }
-
-        reqDTO.setItems(items);
-
-        try {
-            Long transactionId = wmsStockApi.salesOutbound(reqDTO);
-            log.info("[syncToWmsSalesOutbound] 鍚屾鎴愬姛锛宼ransactionId={}", transactionId);
-        } catch (Exception e) {
-            log.error("[syncToWmsSalesOutbound] 鍚屾澶辫触", e);
-        }
-    }
-
-    @Override
-    public void updateSaleInReceiptPrice(Long id, BigDecimal receiptPrice) {
-        ErpSaleOutDO saleOut = saleOutMapper.selectById(id);
-        if (saleOut.getReceiptPrice().equals(receiptPrice)) {
-            return;
-        }
-        if (receiptPrice.compareTo(saleOut.getTotalPrice()) > 0) {
-            throw exception(SALE_OUT_FAIL_RECEIPT_PRICE_EXCEED, receiptPrice,  saleOut.getTotalPrice());
-        }
-        saleOutMapper.updateById(new ErpSaleOutDO().setId(id).setReceiptPrice(receiptPrice));
-    }
-
-    private List<ErpSaleOutItemDO> validateSaleOutItems(List<ErpSaleOutSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpSaleOutSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpSaleOutItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpSaleOutItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
-            item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
-            if (item.getTotalPrice() == null) {
-                return;
-            }
-            if (item.getTaxPercent() != null) {
-                item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
-            }
-        }));
-    }
-
-    private void updateSaleOutItemList(Long id, List<ErpSaleOutItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpSaleOutItemDO> oldList = saleOutItemMapper.selectListByOutId(id);
-        List<List<ErpSaleOutItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setOutId(id));
-            saleOutItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            saleOutItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            saleOutItemMapper.deleteByIds(convertList(diffList.get(2), ErpSaleOutItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteSaleOut(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpSaleOutDO> saleOuts = saleOutMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(saleOuts)) {
-            return;
-        }
-        saleOuts.forEach(saleOut -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(saleOut.getStatus())) {
-                throw exception(SALE_OUT_DELETE_FAIL_APPROVE, saleOut.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        saleOuts.forEach(saleOut -> {
-            // 2.1 鍒犻櫎璁㈠崟
-            saleOutMapper.deleteById(saleOut.getId());
-            // 2.2 鍒犻櫎璁㈠崟椤�
-            saleOutItemMapper.deleteByOutId(saleOut.getId());
-
-            // 2.3 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-            updateSaleOrderOutCount(saleOut.getOrderId());
-        });
-
-    }
-
-    private ErpSaleOutDO validateSaleOutExists(Long id) {
-        ErpSaleOutDO saleOut = saleOutMapper.selectById(id);
-        if (saleOut == null) {
-            throw exception(SALE_OUT_NOT_EXISTS);
-        }
-        return saleOut;
-    }
-
-    @Override
-    public ErpSaleOutDO getSaleOut(Long id) {
-        return saleOutMapper.selectById(id);
-    }
-
-    @Override
-    public ErpSaleOutDO validateSaleOut(Long id) {
-        ErpSaleOutDO saleOut = validateSaleOutExists(id);
-        if (ObjectUtil.notEqual(saleOut.getStatus(), ErpAuditStatus.APPROVE.getStatus())) {
-            throw exception(SALE_OUT_NOT_APPROVE);
-        }
-        return saleOut;
-    }
-
-    @Override
-    public PageResult<ErpSaleOutDO> getSaleOutPage(ErpSaleOutPageReqVO pageReqVO) {
-        return saleOutMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 閿�鍞嚭搴撻」 ====================
-
-    @Override
-    public List<ErpSaleOutItemDO> getSaleOutItemListByOutId(Long outId) {
-        return saleOutItemMapper.selectListByOutId(outId);
-    }
-
-    @Override
-    public List<ErpSaleOutItemDO> getSaleOutItemListByOutIds(Collection<Long> outIds) {
-        if (CollUtil.isEmpty(outIds)) {
-            return Collections.emptyList();
-        }
-        return saleOutItemMapper.selectListByOutIds(outIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java
deleted file mode 100644
index bc192a1..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.sale;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
-import jakarta.validation.Valid;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 閿�鍞��璐� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpSaleReturnService {
-
-    /**
-     * 鍒涘缓閿�鍞��璐�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createSaleReturn(@Valid ErpSaleReturnSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊閿�鍞��璐�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateSaleReturn(@Valid ErpSaleReturnSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊閿�鍞��璐х殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updateSaleReturnStatus(Long id, Integer status);
-
-    /**
-     * 鏇存柊閿�鍞��璐х殑閫�娆鹃噾棰�
-     *
-     * @param id 缂栧彿
-     * @param refundPrice 閫�娆鹃噾棰�
-     */
-    void updateSaleReturnRefundPrice(Long id, BigDecimal refundPrice);
-
-    /**
-     * 鍒犻櫎閿�鍞��璐�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deleteSaleReturn(List<Long> ids);
-
-    /**
-     * 鑾峰緱閿�鍞��璐�
-     *
-     * @param id 缂栧彿
-     * @return 閿�鍞��璐�
-     */
-    ErpSaleReturnDO getSaleReturn(Long id);
-
-    /**
-     * 鏍¢獙閿�鍞��璐э紝宸茬粡瀹℃牳閫氳繃
-     *
-     * @param id 缂栧彿
-     * @return 閿�鍞��璐�
-     */
-    ErpSaleReturnDO validateSaleReturn(Long id);
-
-    /**
-     * 鑾峰緱閿�鍞��璐у垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 閿�鍞��璐у垎椤�
-     */
-    PageResult<ErpSaleReturnDO> getSaleReturnPage(ErpSaleReturnPageReqVO pageReqVO);
-
-    // ==================== 閿�鍞��璐ч」 ====================
-
-    /**
-     * 鑾峰緱閿�鍞��璐ч」鍒楄〃
-     *
-     * @param returnId 閿�鍞��璐х紪鍙�
-     * @return 閿�鍞��璐ч」鍒楄〃
-     */
-    List<ErpSaleReturnItemDO> getSaleReturnItemListByReturnId(Long returnId);
-
-    /**
-     * 鑾峰緱閿�鍞��璐ч」 List
-     *
-     * @param returnIds 閿�鍞��璐х紪鍙锋暟缁�
-     * @return 閿�鍞��璐ч」 List
-     */
-    List<ErpSaleReturnItemDO> getSaleReturnItemListByReturnIds(Collection<Long> returnIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java
deleted file mode 100644
index 6b3976c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpSaleReturnServiceImpl.java
+++ /dev/null
@@ -1,316 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.sale;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.returns.ErpSaleReturnSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleReturnItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleReturnItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleReturnMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 閿�鍞��璐� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpSaleReturnServiceImpl implements ErpSaleReturnService {
-
-    @Resource
-    private ErpSaleReturnMapper saleReturnMapper;
-    @Resource
-    private ErpSaleReturnItemMapper saleReturnItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private ErpSaleOrderService saleOrderService;
-    @Resource
-    private ErpAccountService accountService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createSaleReturn(ErpSaleReturnSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙閿�鍞鍗曞凡瀹℃牳
-        ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(createReqVO.getOrderId());
-        // 1.2 鏍¢獙閫�璐ч」鐨勬湁鏁堟��
-        List<ErpSaleReturnItemDO> saleReturnItems = validateSaleReturnItems(createReqVO.getItems());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(createReqVO.getAccountId());
-        // 1.4 鏍¢獙閿�鍞汉鍛�
-        if (createReqVO.getSaleUserId() != null) {
-            adminUserApi.validateUser(createReqVO.getSaleUserId());
-        }
-        // 1.5 鐢熸垚閫�璐у崟鍙凤紝骞舵牎楠屽敮涓�鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.SALE_RETURN_NO_PREFIX);
-        if (saleReturnMapper.selectByNo(no) != null) {
-            throw exception(SALE_RETURN_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆閫�璐�
-        ErpSaleReturnDO saleReturn = BeanUtils.toBean(createReqVO, ErpSaleReturnDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus()))
-                .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId());
-        calculateTotalPrice(saleReturn, saleReturnItems);
-        saleReturnMapper.insert(saleReturn);
-        // 2.2 鎻掑叆閫�璐ч」
-        saleReturnItems.forEach(o -> o.setReturnId(saleReturn.getId()));
-        saleReturnItemMapper.insertBatch(saleReturnItems);
-
-        // 3. 鏇存柊閿�鍞鍗曠殑閫�璐ф暟閲�
-        updateSaleOrderReturnCount(createReqVO.getOrderId());
-        return saleReturn.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateSaleReturn(ErpSaleReturnSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpSaleReturnDO saleReturn = validateSaleReturnExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(saleReturn.getStatus())) {
-            throw exception(SALE_RETURN_UPDATE_FAIL_APPROVE, saleReturn.getNo());
-        }
-        // 1.2 鏍¢獙閿�鍞鍗曞凡瀹℃牳
-        ErpSaleOrderDO saleOrder = saleOrderService.validateSaleOrder(updateReqVO.getOrderId());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        accountService.validateAccount(updateReqVO.getAccountId());
-        // 1.4 鏍¢獙閿�鍞汉鍛�
-        if (updateReqVO.getSaleUserId() != null) {
-            adminUserApi.validateUser(updateReqVO.getSaleUserId());
-        }
-        // 1.5 鏍¢獙璁㈠崟椤圭殑鏈夋晥鎬�
-        List<ErpSaleReturnItemDO> saleReturnItems = validateSaleReturnItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊閫�璐�
-        ErpSaleReturnDO updateObj = BeanUtils.toBean(updateReqVO, ErpSaleReturnDO.class)
-                .setOrderNo(saleOrder.getNo()).setCustomerId(saleOrder.getCustomerId());
-        calculateTotalPrice(updateObj, saleReturnItems);
-        saleReturnMapper.updateById(updateObj);
-        // 2.2 鏇存柊閫�璐ч」
-        updateSaleReturnItemList(updateReqVO.getId(), saleReturnItems);
-
-        // 3.1 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-        updateSaleOrderReturnCount(updateObj.getOrderId());
-        // 3.2 娉ㄦ剰锛氬鏋滈攢鍞鍗曠紪鍙峰彉鏇翠簡锛岄渶瑕佹洿鏂扳�滆�佲�濋攢鍞鍗曠殑鍑哄簱鏁伴噺
-        if (ObjectUtil.notEqual(saleReturn.getOrderId(), updateObj.getOrderId())) {
-            updateSaleOrderReturnCount(saleReturn.getOrderId());
-        }
-    }
-
-    private void calculateTotalPrice(ErpSaleReturnDO saleReturn, List<ErpSaleReturnItemDO> saleReturnItems) {
-        saleReturn.setTotalCount(getSumValue(saleReturnItems, ErpSaleReturnItemDO::getCount, BigDecimal::add));
-        saleReturn.setTotalProductPrice(getSumValue(saleReturnItems, ErpSaleReturnItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO));
-        saleReturn.setTotalTaxPrice(getSumValue(saleReturnItems, ErpSaleReturnItemDO::getTaxPrice, BigDecimal::add, BigDecimal.ZERO));
-        saleReturn.setTotalPrice(saleReturn.getTotalProductPrice().add(saleReturn.getTotalTaxPrice()));
-        // 璁$畻浼樻儬浠锋牸
-        if (saleReturn.getDiscountPercent() == null) {
-            saleReturn.setDiscountPercent(BigDecimal.ZERO);
-        }
-        saleReturn.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleReturn.getTotalPrice(), saleReturn.getDiscountPercent()));
-        saleReturn.setTotalPrice(saleReturn.getTotalPrice().subtract(saleReturn.getDiscountPrice().add(saleReturn.getOtherPrice())));
-    }
-
-    private void updateSaleOrderReturnCount(Long orderId) {
-        // 1.1 鏌ヨ閿�鍞鍗曞搴旂殑閿�鍞嚭搴撳崟鍒楄〃
-        List<ErpSaleReturnDO> saleReturns = saleReturnMapper.selectListByOrderId(orderId);
-        // 1.2 鏌ヨ瀵瑰簲鐨勯攢鍞鍗曢」鐨勯��璐ф暟閲�
-        Map<Long, BigDecimal> returnCountMap = saleReturnItemMapper.selectOrderItemCountSumMapByReturnIds(
-                convertList(saleReturns, ErpSaleReturnDO::getId));
-        // 2. 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-        saleOrderService.updateSaleOrderReturnCount(orderId, returnCountMap);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateSaleReturnStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpSaleReturnDO saleReturn = validateSaleReturnExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (saleReturn.getStatus().equals(status)) {
-            throw exception(approve ? SALE_RETURN_APPROVE_FAIL : SALE_RETURN_PROCESS_FAIL);
-        }
-        // 1.3 鏍¢獙宸查��娆�
-        if (!approve && saleReturn.getRefundPrice().compareTo(BigDecimal.ZERO) > 0) {
-            throw exception(SALE_RETURN_PROCESS_FAIL_EXISTS_REFUND);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = saleReturnMapper.updateByIdAndStatus(id, saleReturn.getStatus(),
-                new ErpSaleReturnDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? SALE_RETURN_APPROVE_FAIL : SALE_RETURN_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpSaleReturnItemDO> saleReturnItems = saleReturnItemMapper.selectListByReturnId(id);
-        Integer bizType = approve ? ErpStockRecordBizTypeEnum.SALE_RETURN.getType()
-                : ErpStockRecordBizTypeEnum.SALE_RETURN_CANCEL.getType();
-        saleReturnItems.forEach(saleReturnItem -> {
-            BigDecimal count = approve ? saleReturnItem.getCount() : saleReturnItem.getCount().negate();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    saleReturnItem.getProductId(), saleReturnItem.getWarehouseId(), count,
-                    bizType, saleReturnItem.getReturnId(), saleReturnItem.getId(), saleReturn.getNo()));
-        });
-    }
-
-    @Override
-    public void updateSaleReturnRefundPrice(Long id, BigDecimal refundPrice) {
-        ErpSaleReturnDO saleReturn = saleReturnMapper.selectById(id);
-        if (saleReturn.getRefundPrice().equals(refundPrice)) {
-            return;
-        }
-        if (refundPrice.compareTo(saleReturn.getTotalPrice()) > 0) {
-            throw exception(SALE_RETURN_FAIL_REFUND_PRICE_EXCEED, refundPrice, saleReturn.getTotalPrice());
-        }
-        saleReturnMapper.updateById(new ErpSaleReturnDO().setId(id).setRefundPrice(refundPrice));
-    }
-
-    private List<ErpSaleReturnItemDO> validateSaleReturnItems(List<ErpSaleReturnSaveReqVO.Item> list) {
-        // 1. 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpSaleReturnSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 2. 杞寲涓� ErpSaleReturnItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpSaleReturnItemDO.class, item -> {
-            item.setProductUnitId(productMap.get(item.getProductId()).getUnitId());
-            item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
-            if (item.getTotalPrice() == null) {
-                return;
-            }
-            if (item.getTaxPercent() != null) {
-                item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
-            }
-        }));
-    }
-
-    private void updateSaleReturnItemList(Long id, List<ErpSaleReturnItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpSaleReturnItemDO> oldList = saleReturnItemMapper.selectListByReturnId(id);
-        List<List<ErpSaleReturnItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setReturnId(id));
-            saleReturnItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            saleReturnItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            saleReturnItemMapper.deleteByIds(convertList(diffList.get(2), ErpSaleReturnItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteSaleReturn(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpSaleReturnDO> saleReturns = saleReturnMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(saleReturns)) {
-            return;
-        }
-        saleReturns.forEach(saleReturn -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(saleReturn.getStatus())) {
-                throw exception(SALE_RETURN_DELETE_FAIL_APPROVE, saleReturn.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        saleReturns.forEach(saleReturn -> {
-            // 2.1 鍒犻櫎璁㈠崟
-            saleReturnMapper.deleteById(saleReturn.getId());
-            // 2.2 鍒犻櫎璁㈠崟椤�
-            saleReturnItemMapper.deleteByReturnId(saleReturn.getId());
-
-            // 2.3 鏇存柊閿�鍞鍗曠殑鍑哄簱鏁伴噺
-            updateSaleOrderReturnCount(saleReturn.getOrderId());
-        });
-
-    }
-
-    private ErpSaleReturnDO validateSaleReturnExists(Long id) {
-        ErpSaleReturnDO saleReturn = saleReturnMapper.selectById(id);
-        if (saleReturn == null) {
-            throw exception(SALE_RETURN_NOT_EXISTS);
-        }
-        return saleReturn;
-    }
-
-    @Override
-    public ErpSaleReturnDO getSaleReturn(Long id) {
-        return saleReturnMapper.selectById(id);
-    }
-
-    @Override
-    public ErpSaleReturnDO validateSaleReturn(Long id) {
-        ErpSaleReturnDO saleReturn = validateSaleReturnExists(id);
-        if (ObjectUtil.notEqual(saleReturn.getStatus(), ErpAuditStatus.APPROVE.getStatus())) {
-            throw exception(SALE_RETURN_NOT_APPROVE);
-        }
-        return saleReturn;
-    }
-
-    @Override
-    public PageResult<ErpSaleReturnDO> getSaleReturnPage(ErpSaleReturnPageReqVO pageReqVO) {
-        return saleReturnMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 閿�鍞��璐ч」 ====================
-
-    @Override
-    public List<ErpSaleReturnItemDO> getSaleReturnItemListByReturnId(Long returnId) {
-        return saleReturnItemMapper.selectListByReturnId(returnId);
-    }
-
-    @Override
-    public List<ErpSaleReturnItemDO> getSaleReturnItemListByReturnIds(Collection<Long> returnIds) {
-        if (CollUtil.isEmpty(returnIds)) {
-            return Collections.emptyList();
-        }
-        return saleReturnItemMapper.selectListByReturnIds(returnIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java
deleted file mode 100644
index 2f8a0f9..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 搴撳瓨鐩樼偣鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpStockCheckService {
-
-    /**
-     * 鍒涘缓搴撳瓨鐩樼偣鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createStockCheck(@Valid ErpStockCheckSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊搴撳瓨鐩樼偣鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateStockCheck(@Valid ErpStockCheckSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊搴撳瓨鐩樼偣鍗曠殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updateStockCheckStatus(Long id, Integer status);
-
-    /**
-     * 鍒犻櫎搴撳瓨鐩樼偣鍗�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deleteStockCheck(List<Long> ids);
-
-    /**
-     * 鑾峰緱搴撳瓨鐩樼偣鍗�
-     *
-     * @param id 缂栧彿
-     * @return 搴撳瓨鐩樼偣鍗�
-     */
-    ErpStockCheckDO getStockCheck(Long id);
-
-    /**
-     * 鑾峰緱搴撳瓨鐩樼偣鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 搴撳瓨鐩樼偣鍗曞垎椤�
-     */
-    PageResult<ErpStockCheckDO> getStockCheckPage(ErpStockCheckPageReqVO pageReqVO);
-
-    // ==================== 鐩樼偣椤� ====================
-
-    /**
-     * 鑾峰緱搴撳瓨鐩樼偣鍗曢」鍒楄〃
-     *
-     * @param checkId 鐩樼偣缂栧彿
-     * @return 搴撳瓨鐩樼偣鍗曢」鍒楄〃
-     */
-    List<ErpStockCheckItemDO> getStockCheckItemListByCheckId(Long checkId);
-
-    /**
-     * 鑾峰緱搴撳瓨鐩樼偣鍗曢」 List
-     *
-     * @param checkIds 鐩樼偣缂栧彿鏁扮粍
-     * @return 搴撳瓨鐩樼偣鍗曢」 List
-     */
-    List<ErpStockCheckItemDO> getStockCheckItemListByCheckIds(Collection<Long> checkIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java
deleted file mode 100644
index bbe08ae..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockCheckServiceImpl.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockCheckItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockCheckMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 搴撳瓨鐩樼偣鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpStockCheckServiceImpl implements ErpStockCheckService {
-
-    @Resource
-    private ErpStockCheckMapper stockCheckMapper;
-    @Resource
-    private ErpStockCheckItemMapper stockCheckItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createStockCheck(ErpStockCheckSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙鐩樼偣椤圭殑鏈夋晥鎬�
-        List<ErpStockCheckItemDO> stockCheckItems = validateStockCheckItems(createReqVO.getItems());
-        // 1.2 鐢熸垚鐩樼偣鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_CHECK_NO_PREFIX);
-        if (stockCheckMapper.selectByNo(no) != null) {
-            throw exception(STOCK_CHECK_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆鐩樼偣鍗�
-        ErpStockCheckDO stockCheck = BeanUtils.toBean(createReqVO, ErpStockCheckDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())
-                .setTotalCount(getSumValue(stockCheckItems, ErpStockCheckItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockCheckItems, ErpStockCheckItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)));
-        stockCheckMapper.insert(stockCheck);
-        // 2.2 鎻掑叆鐩樼偣鍗曢」
-        stockCheckItems.forEach(o -> o.setCheckId(stockCheck.getId()));
-        stockCheckItemMapper.insertBatch(stockCheckItems);
-        return stockCheck.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockCheck(ErpStockCheckSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockCheckDO stockCheck = validateStockCheckExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(stockCheck.getStatus())) {
-            throw exception(STOCK_CHECK_UPDATE_FAIL_APPROVE, stockCheck.getNo());
-        }
-        // 1.2 鏍¢獙鐩樼偣椤圭殑鏈夋晥鎬�
-        List<ErpStockCheckItemDO> stockCheckItems = validateStockCheckItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊鐩樼偣鍗�
-        ErpStockCheckDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockCheckDO.class, in -> in
-                .setTotalCount(getSumValue(stockCheckItems, ErpStockCheckItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockCheckItems, ErpStockCheckItemDO::getTotalPrice, BigDecimal::add)));
-        stockCheckMapper.updateById(updateObj);
-        // 2.2 鏇存柊鐩樼偣鍗曢」
-        updateStockCheckItemList(updateReqVO.getId(), stockCheckItems);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockCheckStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockCheckDO stockCheck = validateStockCheckExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (stockCheck.getStatus().equals(status)) {
-            throw exception(approve ? STOCK_CHECK_APPROVE_FAIL : STOCK_CHECK_PROCESS_FAIL);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = stockCheckMapper.updateByIdAndStatus(id, stockCheck.getStatus(),
-                new ErpStockCheckDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? STOCK_CHECK_APPROVE_FAIL : STOCK_CHECK_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpStockCheckItemDO> stockCheckItems = stockCheckItemMapper.selectListByCheckId(id);
-        stockCheckItems.forEach(stockCheckItem -> {
-            // 娌℃湁鐩堜簭锛屼笉鐢ㄥ嚭鍏ュ簱
-            if (stockCheckItem.getCount().compareTo(BigDecimal.ZERO) == 0) {
-                return;
-            }
-            // 10锛�12锛�-2锛堬級
-            BigDecimal count = approve ? stockCheckItem.getCount(): stockCheckItem.getCount().negate();
-            Integer bizType;
-            if (approve) {
-                bizType = count.compareTo(BigDecimal.ZERO) > 0 ? ErpStockRecordBizTypeEnum.CHECK_MORE_IN.getType()
-                        : ErpStockRecordBizTypeEnum.CHECK_LESS_OUT.getType();
-            } else {
-                bizType = count.compareTo(BigDecimal.ZERO) > 0 ? ErpStockRecordBizTypeEnum.CHECK_MORE_IN_CANCEL.getType()
-                        : ErpStockRecordBizTypeEnum.CHECK_LESS_OUT_CANCEL.getType();
-            }
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    stockCheckItem.getProductId(), stockCheckItem.getWarehouseId(), count,
-                    bizType, stockCheckItem.getCheckId(), stockCheckItem.getId(), stockCheck.getNo()));
-        });
-    }
-
-    private List<ErpStockCheckItemDO> validateStockCheckItems(List<ErpStockCheckSaveReqVO.Item> list) {
-        // 1.1 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpStockCheckSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 1.2 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validWarehouseList(convertSet(list, ErpStockCheckSaveReqVO.Item::getWarehouseId));
-        // 2. 杞寲涓� ErpStockCheckItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpStockCheckItemDO.class, item -> item
-                .setProductUnitId(productMap.get(item.getProductId()).getUnitId())
-                .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
-    }
-
-    private void updateStockCheckItemList(Long id, List<ErpStockCheckItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpStockCheckItemDO> oldList = stockCheckItemMapper.selectListByCheckId(id);
-        List<List<ErpStockCheckItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setCheckId(id));
-            stockCheckItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            stockCheckItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            stockCheckItemMapper.deleteByIds(convertList(diffList.get(2), ErpStockCheckItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteStockCheck(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpStockCheckDO> stockChecks = stockCheckMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(stockChecks)) {
-            return;
-        }
-        stockChecks.forEach(stockCheck -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(stockCheck.getStatus())) {
-                throw exception(STOCK_CHECK_DELETE_FAIL_APPROVE, stockCheck.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        stockChecks.forEach(stockCheck -> {
-            // 2.1 鍒犻櫎鐩樼偣鍗�
-            stockCheckMapper.deleteById(stockCheck.getId());
-            // 2.2 鍒犻櫎鐩樼偣鍗曢」
-            stockCheckItemMapper.deleteByCheckId(stockCheck.getId());
-        });
-    }
-
-    private ErpStockCheckDO validateStockCheckExists(Long id) {
-        ErpStockCheckDO stockCheck = stockCheckMapper.selectById(id);
-        if (stockCheck == null) {
-            throw exception(STOCK_CHECK_NOT_EXISTS);
-        }
-        return stockCheck;
-    }
-
-    @Override
-    public ErpStockCheckDO getStockCheck(Long id) {
-        return stockCheckMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpStockCheckDO> getStockCheckPage(ErpStockCheckPageReqVO pageReqVO) {
-        return stockCheckMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 鐩樼偣椤� ====================
-
-    @Override
-    public List<ErpStockCheckItemDO> getStockCheckItemListByCheckId(Long checkId) {
-        return stockCheckItemMapper.selectListByCheckId(checkId);
-    }
-
-    @Override
-    public List<ErpStockCheckItemDO> getStockCheckItemListByCheckIds(Collection<Long> checkIds) {
-        if (CollUtil.isEmpty(checkIds)) {
-            return Collections.emptyList();
-        }
-        return stockCheckItemMapper.selectListByCheckIds(checkIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java
deleted file mode 100644
index 4e51545..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 鍏跺畠鍏ュ簱鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpStockInService {
-
-    /**
-     * 鍒涘缓鍏跺畠鍏ュ簱鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createStockIn(@Valid ErpStockInSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍏跺畠鍏ュ簱鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateStockIn(@Valid ErpStockInSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊鍏跺畠鍏ュ簱鍗曠殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updateStockInStatus(Long id, Integer status);
-
-    /**
-     * 鍒犻櫎鍏跺畠鍏ュ簱鍗�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deleteStockIn(List<Long> ids);
-
-    /**
-     * 鑾峰緱鍏跺畠鍏ュ簱鍗�
-     *
-     * @param id 缂栧彿
-     * @return 鍏跺畠鍏ュ簱鍗�
-     */
-    ErpStockInDO getStockIn(Long id);
-
-    /**
-     * 鑾峰緱鍏跺畠鍏ュ簱鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鍏跺畠鍏ュ簱鍗曞垎椤�
-     */
-    PageResult<ErpStockInDO> getStockInPage(ErpStockInPageReqVO pageReqVO);
-
-    // ==================== 鍏ュ簱椤� ====================
-
-    /**
-     * 鑾峰緱鍏跺畠鍏ュ簱鍗曢」鍒楄〃
-     *
-     * @param inId 鍏ュ簱缂栧彿
-     * @return 鍏跺畠鍏ュ簱鍗曢」鍒楄〃
-     */
-    List<ErpStockInItemDO> getStockInItemListByInId(Long inId);
-
-    /**
-     * 鑾峰緱鍏跺畠鍏ュ簱鍗曢」 List
-     *
-     * @param inIds 鍏ュ簱缂栧彿鏁扮粍
-     * @return 鍏跺畠鍏ュ簱鍗曢」 List
-     */
-    List<ErpStockInItemDO> getStockInItemListByInIds(Collection<Long> inIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java
deleted file mode 100644
index 38967de..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-/**
- * ERP 鍏跺畠鍏ュ簱鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpStockInServiceImpl implements ErpStockInService {
-
-    @Resource
-    private ErpStockInMapper stockInMapper;
-    @Resource
-    private ErpStockInItemMapper stockInItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-    @Resource
-    private ErpSupplierService supplierService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createStockIn(ErpStockInSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙鍏ュ簱椤圭殑鏈夋晥鎬�
-        List<ErpStockInItemDO> stockInItems = validateStockInItems(createReqVO.getItems());
-        // 1.2 鏍¢獙渚涘簲鍟�
-        supplierService.validateSupplier(createReqVO.getSupplierId());
-        // 1.3 鐢熸垚鍏ュ簱鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_IN_NO_PREFIX);
-        if (stockInMapper.selectByNo(no) != null) {
-            throw exception(STOCK_IN_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆鍏ュ簱鍗�
-        ErpStockInDO stockIn = BeanUtils.toBean(createReqVO, ErpStockInDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())
-                .setTotalCount(getSumValue(stockInItems, ErpStockInItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockInItems, ErpStockInItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)));
-        stockInMapper.insert(stockIn);
-        // 2.2 鎻掑叆鍏ュ簱鍗曢」
-        stockInItems.forEach(o -> o.setInId(stockIn.getId()));
-        stockInItemMapper.insertBatch(stockInItems);
-        return stockIn.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockIn(ErpStockInSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockInDO stockIn = validateStockInExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(stockIn.getStatus())) {
-            throw exception(STOCK_IN_UPDATE_FAIL_APPROVE, stockIn.getNo());
-        }
-        // 1.2 鏍¢獙渚涘簲鍟�
-        supplierService.validateSupplier(updateReqVO.getSupplierId());
-        // 1.3 鏍¢獙鍏ュ簱椤圭殑鏈夋晥鎬�
-        List<ErpStockInItemDO> stockInItems = validateStockInItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊鍏ュ簱鍗�
-        ErpStockInDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockInDO.class, in -> in
-                .setTotalCount(getSumValue(stockInItems, ErpStockInItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockInItems, ErpStockInItemDO::getTotalPrice, BigDecimal::add)));
-        stockInMapper.updateById(updateObj);
-        // 2.2 鏇存柊鍏ュ簱鍗曢」
-        updateStockInItemList(updateReqVO.getId(), stockInItems);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockInStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockInDO stockIn = validateStockInExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (stockIn.getStatus().equals(status)) {
-            throw exception(approve ? STOCK_IN_APPROVE_FAIL : STOCK_IN_PROCESS_FAIL);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = stockInMapper.updateByIdAndStatus(id, stockIn.getStatus(),
-                new ErpStockInDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? STOCK_IN_APPROVE_FAIL : STOCK_IN_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpStockInItemDO> stockInItems = stockInItemMapper.selectListByInId(id);
-        Integer bizType = approve ? ErpStockRecordBizTypeEnum.OTHER_IN.getType()
-                : ErpStockRecordBizTypeEnum.OTHER_IN_CANCEL.getType();
-        stockInItems.forEach(stockInItem -> {
-            BigDecimal count = approve ? stockInItem.getCount() : stockInItem.getCount().negate();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    stockInItem.getProductId(), stockInItem.getWarehouseId(), count,
-                    bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo()));
-        });
-    }
-
-    private List<ErpStockInItemDO> validateStockInItems(List<ErpStockInSaveReqVO.Item> list) {
-        // 1.1 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpStockInSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 1.2 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validWarehouseList(convertSet(
-                list, ErpStockInSaveReqVO.Item::getWarehouseId));
-        // 2. 杞寲涓� ErpStockInItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item
-                .setProductUnitId(productMap.get(item.getProductId()).getUnitId())
-                .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
-    }
-
-    private void updateStockInItemList(Long id, List<ErpStockInItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpStockInItemDO> oldList = stockInItemMapper.selectListByInId(id);
-        List<List<ErpStockInItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setInId(id));
-            stockInItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            stockInItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            stockInItemMapper.deleteByIds(convertList(diffList.get(2), ErpStockInItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteStockIn(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpStockInDO> stockIns = stockInMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(stockIns)) {
-            return;
-        }
-        stockIns.forEach(stockIn -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(stockIn.getStatus())) {
-                throw exception(STOCK_IN_DELETE_FAIL_APPROVE, stockIn.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        stockIns.forEach(stockIn -> {
-            // 2.1 鍒犻櫎鍏ュ簱鍗�
-            stockInMapper.deleteById(stockIn.getId());
-            // 2.2 鍒犻櫎鍏ュ簱鍗曢」
-            stockInItemMapper.deleteByInId(stockIn.getId());
-        });
-    }
-
-    private ErpStockInDO validateStockInExists(Long id) {
-        ErpStockInDO stockIn = stockInMapper.selectById(id);
-        if (stockIn == null) {
-            throw exception(STOCK_IN_NOT_EXISTS);
-        }
-        return stockIn;
-    }
-
-    @Override
-    public ErpStockInDO getStockIn(Long id) {
-        return stockInMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpStockInDO> getStockInPage(ErpStockInPageReqVO pageReqVO) {
-        return stockInMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 鍏ュ簱椤� ====================
-
-    @Override
-    public List<ErpStockInItemDO> getStockInItemListByInId(Long inId) {
-        return stockInItemMapper.selectListByInId(inId);
-    }
-
-    @Override
-    public List<ErpStockInItemDO> getStockInItemListByInIds(Collection<Long> inIds) {
-        if (CollUtil.isEmpty(inIds)) {
-            return Collections.emptyList();
-        }
-        return stockInItemMapper.selectListByInIds(inIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java
deleted file mode 100644
index 8af13a6..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpStockMoveService {
-
-    /**
-     * 鍒涘缓搴撳瓨璋冩嫧鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createStockMove(@Valid ErpStockMoveSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊搴撳瓨璋冩嫧鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateStockMove(@Valid ErpStockMoveSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊搴撳瓨璋冩嫧鍗曠殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updateStockMoveStatus(Long id, Integer status);
-
-    /**
-     * 鍒犻櫎搴撳瓨璋冩嫧鍗�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deleteStockMove(List<Long> ids);
-
-    /**
-     * 鑾峰緱搴撳瓨璋冩嫧鍗�
-     *
-     * @param id 缂栧彿
-     * @return 搴撳瓨璋冩嫧鍗�
-     */
-    ErpStockMoveDO getStockMove(Long id);
-
-    /**
-     * 鑾峰緱搴撳瓨璋冩嫧鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 搴撳瓨璋冩嫧鍗曞垎椤�
-     */
-    PageResult<ErpStockMoveDO> getStockMovePage(ErpStockMovePageReqVO pageReqVO);
-
-    // ==================== 璋冩嫧椤� ====================
-
-    /**
-     * 鑾峰緱搴撳瓨璋冩嫧鍗曢」鍒楄〃
-     *
-     * @param moveId 璋冩嫧缂栧彿
-     * @return 搴撳瓨璋冩嫧鍗曢」鍒楄〃
-     */
-    List<ErpStockMoveItemDO> getStockMoveItemListByMoveId(Long moveId);
-
-    /**
-     * 鑾峰緱搴撳瓨璋冩嫧鍗曢」 List
-     *
-     * @param moveIds 璋冩嫧缂栧彿鏁扮粍
-     * @return 搴撳瓨璋冩嫧鍗曢」 List
-     */
-    List<ErpStockMoveItemDO> getStockMoveItemListByMoveIds(Collection<Long> moveIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java
deleted file mode 100644
index f039227..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMovePageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.move.ErpStockMoveSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockMoveItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMoveItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMoveMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 搴撳瓨璋冩嫧鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpStockMoveServiceImpl implements ErpStockMoveService {
-
-    @Resource
-    private ErpStockMoveMapper stockMoveMapper;
-    @Resource
-    private ErpStockMoveItemMapper stockMoveItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createStockMove(ErpStockMoveSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙鍑哄簱椤圭殑鏈夋晥鎬�
-        List<ErpStockMoveItemDO> stockMoveItems = validateStockMoveItems(createReqVO.getItems());
-        // 1.2 鐢熸垚璋冩嫧鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_MOVE_NO_PREFIX);
-        if (stockMoveMapper.selectByNo(no) != null) {
-            throw exception(STOCK_MOVE_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆鍑哄簱鍗�
-        ErpStockMoveDO stockMove = BeanUtils.toBean(createReqVO, ErpStockMoveDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())
-                .setTotalCount(getSumValue(stockMoveItems, ErpStockMoveItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockMoveItems, ErpStockMoveItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)));
-        stockMoveMapper.insert(stockMove);
-        // 2.2 鎻掑叆鍑哄簱鍗曢」
-        stockMoveItems.forEach(o -> o.setMoveId(stockMove.getId()));
-        stockMoveItemMapper.insertBatch(stockMoveItems);
-        return stockMove.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockMove(ErpStockMoveSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockMoveDO stockMove = validateStockMoveExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(stockMove.getStatus())) {
-            throw exception(STOCK_MOVE_UPDATE_FAIL_APPROVE, stockMove.getNo());
-        }
-        // 1.2 鏍¢獙鍑哄簱椤圭殑鏈夋晥鎬�
-        List<ErpStockMoveItemDO> stockMoveItems = validateStockMoveItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊鍑哄簱鍗�
-        ErpStockMoveDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockMoveDO.class, in -> in
-                .setTotalCount(getSumValue(stockMoveItems, ErpStockMoveItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockMoveItems, ErpStockMoveItemDO::getTotalPrice, BigDecimal::add)));
-        stockMoveMapper.updateById(updateObj);
-        // 2.2 鏇存柊鍑哄簱鍗曢」
-        updateStockMoveItemList(updateReqVO.getId(), stockMoveItems);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockMoveStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockMoveDO stockMove = validateStockMoveExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (stockMove.getStatus().equals(status)) {
-            throw exception(approve ? STOCK_MOVE_APPROVE_FAIL : STOCK_MOVE_PROCESS_FAIL);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = stockMoveMapper.updateByIdAndStatus(id, stockMove.getStatus(),
-                new ErpStockMoveDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? STOCK_MOVE_APPROVE_FAIL : STOCK_MOVE_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpStockMoveItemDO> stockMoveItems = stockMoveItemMapper.selectListByMoveId(id);
-        Integer fromBizType = approve ? ErpStockRecordBizTypeEnum.MOVE_OUT.getType()
-                : ErpStockRecordBizTypeEnum.MOVE_OUT_CANCEL.getType();
-        Integer toBizType = approve ? ErpStockRecordBizTypeEnum.MOVE_IN.getType()
-                : ErpStockRecordBizTypeEnum.MOVE_IN_CANCEL.getType();
-        stockMoveItems.forEach(stockMoveItem -> {
-            BigDecimal fromCount = approve ? stockMoveItem.getCount().negate() : stockMoveItem.getCount();
-            BigDecimal toCount = approve ? stockMoveItem.getCount() : stockMoveItem.getCount().negate();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    stockMoveItem.getProductId(), stockMoveItem.getFromWarehouseId(), fromCount,
-                    fromBizType, stockMoveItem.getMoveId(), stockMoveItem.getId(), stockMove.getNo()));
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    stockMoveItem.getProductId(), stockMoveItem.getToWarehouseId(), toCount,
-                    toBizType, stockMoveItem.getMoveId(), stockMoveItem.getId(), stockMove.getNo()));
-        });
-    }
-
-    private List<ErpStockMoveItemDO> validateStockMoveItems(List<ErpStockMoveSaveReqVO.Item> list) {
-        // 1.1 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpStockMoveSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 1.2 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validWarehouseList(convertSetByFlatMap(list,
-                item -> Stream.of(item.getFromWarehouseId(),  item.getToWarehouseId())));
-        // 2. 杞寲涓� ErpStockMoveItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpStockMoveItemDO.class, item -> item
-                .setProductUnitId(productMap.get(item.getProductId()).getUnitId())
-                .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
-    }
-
-    private void updateStockMoveItemList(Long id, List<ErpStockMoveItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpStockMoveItemDO> oldList = stockMoveItemMapper.selectListByMoveId(id);
-        List<List<ErpStockMoveItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setMoveId(id));
-            stockMoveItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            stockMoveItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            stockMoveItemMapper.deleteByIds(convertList(diffList.get(2), ErpStockMoveItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteStockMove(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpStockMoveDO> stockMoves = stockMoveMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(stockMoves)) {
-            return;
-        }
-        stockMoves.forEach(stockMove -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(stockMove.getStatus())) {
-                throw exception(STOCK_MOVE_DELETE_FAIL_APPROVE, stockMove.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        stockMoves.forEach(stockMove -> {
-            // 2.1 鍒犻櫎鍑哄簱鍗�
-            stockMoveMapper.deleteById(stockMove.getId());
-            // 2.2 鍒犻櫎鍑哄簱鍗曢」
-            stockMoveItemMapper.deleteByMoveId(stockMove.getId());
-        });
-    }
-
-    private ErpStockMoveDO validateStockMoveExists(Long id) {
-        ErpStockMoveDO stockMove = stockMoveMapper.selectById(id);
-        if (stockMove == null) {
-            throw exception(STOCK_MOVE_NOT_EXISTS);
-        }
-        return stockMove;
-    }
-
-    @Override
-    public ErpStockMoveDO getStockMove(Long id) {
-        return stockMoveMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpStockMoveDO> getStockMovePage(ErpStockMovePageReqVO pageReqVO) {
-        return stockMoveMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 鍑哄簱椤� ====================
-
-    @Override
-    public List<ErpStockMoveItemDO> getStockMoveItemListByMoveId(Long moveId) {
-        return stockMoveItemMapper.selectListByMoveId(moveId);
-    }
-
-    @Override
-    public List<ErpStockMoveItemDO> getStockMoveItemListByMoveIds(Collection<Long> moveIds) {
-        if (CollUtil.isEmpty(moveIds)) {
-            return Collections.emptyList();
-        }
-        return stockMoveItemMapper.selectListByMoveIds(moveIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java
deleted file mode 100644
index 558fb69..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ERP 鍏跺畠鍑哄簱鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpStockOutService {
-
-    /**
-     * 鍒涘缓鍏跺畠鍑哄簱鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createStockOut(@Valid ErpStockOutSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍏跺畠鍑哄簱鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateStockOut(@Valid ErpStockOutSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊鍏跺畠鍑哄簱鍗曠殑鐘舵��
-     *
-     * @param id 缂栧彿
-     * @param status 鐘舵��
-     */
-    void updateStockOutStatus(Long id, Integer status);
-
-    /**
-     * 鍒犻櫎鍏跺畠鍑哄簱鍗�
-     *
-     * @param ids 缂栧彿鏁扮粍
-     */
-    void deleteStockOut(List<Long> ids);
-
-    /**
-     * 鑾峰緱鍏跺畠鍑哄簱鍗�
-     *
-     * @param id 缂栧彿
-     * @return 鍏跺畠鍑哄簱鍗�
-     */
-    ErpStockOutDO getStockOut(Long id);
-
-    /**
-     * 鑾峰緱鍏跺畠鍑哄簱鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鍏跺畠鍑哄簱鍗曞垎椤�
-     */
-    PageResult<ErpStockOutDO> getStockOutPage(ErpStockOutPageReqVO pageReqVO);
-
-    // ==================== 鍑哄簱椤� ====================
-
-    /**
-     * 鑾峰緱鍏跺畠鍑哄簱鍗曢」鍒楄〃
-     *
-     * @param outId 鍑哄簱缂栧彿
-     * @return 鍏跺畠鍑哄簱鍗曢」鍒楄〃
-     */
-    List<ErpStockOutItemDO> getStockOutItemListByOutId(Long outId);
-
-    /**
-     * 鑾峰緱鍏跺畠鍑哄簱鍗曢」 List
-     *
-     * @param outIds 鍑哄簱缂栧彿鏁扮粍
-     * @return 鍏跺畠鍑哄簱鍗曢」 List
-     */
-    List<ErpStockOutItemDO> getStockOutItemListByOutIds(Collection<Long> outIds);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java
deleted file mode 100644
index 5a229fc..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutItemMapper;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutMapper;
-import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
-import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
-import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-// TODO 鑺嬭壙锛氳褰曟搷浣滄棩蹇�
-
-/**
- * ERP 鍏跺畠鍑哄簱鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpStockOutServiceImpl implements ErpStockOutService {
-
-    @Resource
-    private ErpStockOutMapper stockOutMapper;
-    @Resource
-    private ErpStockOutItemMapper stockOutItemMapper;
-
-    @Resource
-    private ErpNoRedisDAO noRedisDAO;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-    @Resource
-    private ErpCustomerService customerService;
-    @Resource
-    private ErpStockRecordService stockRecordService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createStockOut(ErpStockOutSaveReqVO createReqVO) {
-        // 1.1 鏍¢獙鍑哄簱椤圭殑鏈夋晥鎬�
-        List<ErpStockOutItemDO> stockOutItems = validateStockOutItems(createReqVO.getItems());
-        // 1.2 鏍¢獙瀹㈡埛
-        customerService.validateCustomer(createReqVO.getCustomerId());
-        // 1.3 鐢熸垚鍑哄簱鍗曞彿锛屽苟鏍¢獙鍞竴鎬�
-        String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_OUT_NO_PREFIX);
-        if (stockOutMapper.selectByNo(no) != null) {
-            throw exception(STOCK_OUT_NO_EXISTS);
-        }
-
-        // 2.1 鎻掑叆鍑哄簱鍗�
-        ErpStockOutDO stockOut = BeanUtils.toBean(createReqVO, ErpStockOutDO.class, in -> in
-                .setNo(no).setStatus(ErpAuditStatus.PROCESS.getStatus())
-                .setTotalCount(getSumValue(stockOutItems, ErpStockOutItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockOutItems, ErpStockOutItemDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)));
-        stockOutMapper.insert(stockOut);
-        // 2.2 鎻掑叆鍑哄簱鍗曢」
-        stockOutItems.forEach(o -> o.setOutId(stockOut.getId()));
-        stockOutItemMapper.insertBatch(stockOutItems);
-        return stockOut.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockOut(ErpStockOutSaveReqVO updateReqVO) {
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockOutDO stockOut = validateStockOutExists(updateReqVO.getId());
-        if (ErpAuditStatus.APPROVE.getStatus().equals(stockOut.getStatus())) {
-            throw exception(STOCK_OUT_UPDATE_FAIL_APPROVE, stockOut.getNo());
-        }
-        // 1.2 鏍¢獙瀹㈡埛
-        customerService.validateCustomer(updateReqVO.getCustomerId());
-        // 1.3 鏍¢獙鍑哄簱椤圭殑鏈夋晥鎬�
-        List<ErpStockOutItemDO> stockOutItems = validateStockOutItems(updateReqVO.getItems());
-
-        // 2.1 鏇存柊鍑哄簱鍗�
-        ErpStockOutDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockOutDO.class, in -> in
-                .setTotalCount(getSumValue(stockOutItems, ErpStockOutItemDO::getCount, BigDecimal::add))
-                .setTotalPrice(getSumValue(stockOutItems, ErpStockOutItemDO::getTotalPrice, BigDecimal::add)));
-        stockOutMapper.updateById(updateObj);
-        // 2.2 鏇存柊鍑哄簱鍗曢」
-        updateStockOutItemList(updateReqVO.getId(), stockOutItems);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStockOutStatus(Long id, Integer status) {
-        boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status);
-        // 1.1 鏍¢獙瀛樺湪
-        ErpStockOutDO stockOut = validateStockOutExists(id);
-        // 1.2 鏍¢獙鐘舵��
-        if (stockOut.getStatus().equals(status)) {
-            throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL);
-        }
-
-        // 2. 鏇存柊鐘舵��
-        int updateCount = stockOutMapper.updateByIdAndStatus(id, stockOut.getStatus(),
-                new ErpStockOutDO().setStatus(status));
-        if (updateCount == 0) {
-            throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL);
-        }
-
-        // 3. 鍙樻洿搴撳瓨
-        List<ErpStockOutItemDO> stockOutItems = stockOutItemMapper.selectListByOutId(id);
-        Integer bizType = approve ? ErpStockRecordBizTypeEnum.OTHER_OUT.getType()
-                : ErpStockRecordBizTypeEnum.OTHER_OUT_CANCEL.getType();
-        stockOutItems.forEach(stockOutItem -> {
-            BigDecimal count = approve ? stockOutItem.getCount().negate() : stockOutItem.getCount();
-            stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
-                    stockOutItem.getProductId(), stockOutItem.getWarehouseId(), count,
-                    bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo()));
-        });
-    }
-
-    private List<ErpStockOutItemDO> validateStockOutItems(List<ErpStockOutSaveReqVO.Item> list) {
-        // 1.1 鏍¢獙浜у搧瀛樺湪
-        List<ErpProductDO> productList = productService.validProductList(
-                convertSet(list, ErpStockOutSaveReqVO.Item::getProductId));
-        Map<Long, ErpProductDO> productMap = convertMap(productList, ErpProductDO::getId);
-        // 1.2 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVO.Item::getWarehouseId));
-        // 2. 杞寲涓� ErpStockOutItemDO 鍒楄〃
-        return convertList(list, o -> BeanUtils.toBean(o, ErpStockOutItemDO.class, item -> item
-                .setProductUnitId(productMap.get(item.getProductId()).getUnitId())
-                .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
-    }
-
-    private void updateStockOutItemList(Long id, List<ErpStockOutItemDO> newList) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<ErpStockOutItemDO> oldList = stockOutItemMapper.selectListByOutId(id);
-        List<List<ErpStockOutItemDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> oldVal.getId().equals(newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            diffList.get(0).forEach(o -> o.setOutId(id));
-            stockOutItemMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            stockOutItemMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            stockOutItemMapper.deleteByIds(convertList(diffList.get(2), ErpStockOutItemDO::getId));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteStockOut(List<Long> ids) {
-        // 1. 鏍¢獙涓嶅浜庡凡瀹℃壒
-        List<ErpStockOutDO> stockOuts = stockOutMapper.selectByIds(ids);
-        if (CollUtil.isEmpty(stockOuts)) {
-            return;
-        }
-        stockOuts.forEach(stockOut -> {
-            if (ErpAuditStatus.APPROVE.getStatus().equals(stockOut.getStatus())) {
-                throw exception(STOCK_OUT_DELETE_FAIL_APPROVE, stockOut.getNo());
-            }
-        });
-
-        // 2. 閬嶅巻鍒犻櫎锛屽苟璁板綍鎿嶄綔鏃ュ織
-        stockOuts.forEach(stockOut -> {
-            // 2.1 鍒犻櫎鍑哄簱鍗�
-            stockOutMapper.deleteById(stockOut.getId());
-            // 2.2 鍒犻櫎鍑哄簱鍗曢」
-            stockOutItemMapper.deleteByOutId(stockOut.getId());
-        });
-    }
-
-    private ErpStockOutDO validateStockOutExists(Long id) {
-        ErpStockOutDO stockOut = stockOutMapper.selectById(id);
-        if (stockOut == null) {
-            throw exception(STOCK_OUT_NOT_EXISTS);
-        }
-        return stockOut;
-    }
-
-    @Override
-    public ErpStockOutDO getStockOut(Long id) {
-        return stockOutMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpStockOutDO> getStockOutPage(ErpStockOutPageReqVO pageReqVO) {
-        return stockOutMapper.selectPage(pageReqVO);
-    }
-
-    // ==================== 鍑哄簱椤� ====================
-
-    @Override
-    public List<ErpStockOutItemDO> getStockOutItemListByOutId(Long outId) {
-        return stockOutItemMapper.selectListByOutId(outId);
-    }
-
-    @Override
-    public List<ErpStockOutItemDO> getStockOutItemListByOutIds(Collection<Long> outIds) {
-        if (CollUtil.isEmpty(outIds)) {
-            return Collections.emptyList();
-        }
-        return stockOutItemMapper.selectListByOutIds(outIds);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java
deleted file mode 100644
index 506b992..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.validation.Valid;
-
-/**
- * ERP 浜у搧搴撳瓨鏄庣粏 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpStockRecordService {
-
-    /**
-     * 鑾峰緱浜у搧搴撳瓨鏄庣粏
-     *
-     * @param id 缂栧彿
-     * @return 浜у搧搴撳瓨鏄庣粏
-     */
-    ErpStockRecordDO getStockRecord(Long id);
-
-    /**
-     * 鑾峰緱浜у搧搴撳瓨鏄庣粏鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 浜у搧搴撳瓨鏄庣粏鍒嗛〉
-     */
-    PageResult<ErpStockRecordDO> getStockRecordPage(ErpStockRecordPageReqVO pageReqVO);
-
-    /**
-     * 鍒涘缓搴撳瓨鏄庣粏
-     *
-     * @param createReqBO 鍒涘缓搴撳瓨鏄庣粏 BO
-     */
-    void createStockRecord(@Valid ErpStockRecordCreateReqBO createReqBO);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java
deleted file mode 100644
index d84951c..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockRecordMapper;
-import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 浜у搧搴撳瓨鏄庣粏 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpStockRecordServiceImpl implements ErpStockRecordService {
-
-    @Resource
-    private ErpStockRecordMapper stockRecordMapper;
-
-    @Resource
-    private ErpStockService stockService;
-
-    @Override
-    public ErpStockRecordDO getStockRecord(Long id) {
-        return stockRecordMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<ErpStockRecordDO> getStockRecordPage(ErpStockRecordPageReqVO pageReqVO) {
-        return stockRecordMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createStockRecord(ErpStockRecordCreateReqBO createReqBO) {
-        // 1. 鏇存柊搴撳瓨
-        BigDecimal totalCount = stockService.updateStockCountIncrement(
-                createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount());
-        // 2. 鍒涘缓搴撳瓨鏄庣粏
-        ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class)
-                .setTotalCount(totalCount);
-        stockRecordMapper.insert(stockRecord);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java
deleted file mode 100644
index 63ad5fe..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-
-import java.math.BigDecimal;
-
-/**
- * ERP 浜у搧搴撳瓨 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpStockService {
-
-    /**
-     * 鑾峰緱浜у搧搴撳瓨
-     *
-     * @param id 缂栧彿
-     * @return 搴撳瓨
-     */
-    ErpStockDO getStock(Long id);
-
-    /**
-     * 鍩轰簬浜у搧 + 浠撳簱锛岃幏寰椾骇鍝佸簱瀛�
-     *
-     * @param productId 浜у搧缂栧彿
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 浜у搧搴撳瓨
-     */
-    ErpStockDO getStock(Long productId, Long warehouseId);
-
-    /**
-     * 鑾峰緱浜у搧搴撳瓨鏁伴噺
-     *
-     * 濡傛灉涓嶅瓨鍦ㄥ簱瀛樿褰曪紝鍒欒繑鍥� 0
-     *
-     * @param productId 浜у搧缂栧彿
-     * @return 浜у搧搴撳瓨鏁伴噺
-     */
-    BigDecimal getStockCount(Long productId);
-
-    /**
-     * 鑾峰緱浜у搧搴撳瓨鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 搴撳瓨鍒嗛〉
-     */
-    PageResult<ErpStockDO> getStockPage(ErpStockPageReqVO pageReqVO);
-
-    /**
-     * 澧為噺鏇存柊浜у搧搴撳瓨鏁伴噺
-     *
-     * @param productId 浜у搧缂栧彿
-     * @param warehouseId 浠撳簱缂栧彿
-     * @param count 澧為噺鏁伴噺锛氭鏁帮紝琛ㄧず澧炲姞锛涜礋鏁帮紝琛ㄧず鍑忓皯
-     * @return 鏇存柊鍚庣殑搴撳瓨
-     */
-    BigDecimal updateStockCountIncrement(Long productId, Long warehouseId, BigDecimal count);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java
deleted file mode 100644
index 6541170..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockServiceImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMapper;
-import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.STOCK_COUNT_NEGATIVE;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.STOCK_COUNT_NEGATIVE2;
-
-/**
- * ERP 浜у搧搴撳瓨 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpStockServiceImpl implements ErpStockService {
-
-    /**
-     * 鍏佽搴撳瓨涓鸿礋鏁�
-     *
-     * TODO 鑺嬭壙锛氬悗缁仛鎴� db 閰嶇疆
-     */
-    private static final Boolean NEGATIVE_STOCK_COUNT_ENABLE = false;
-
-    @Resource
-    private ErpProductService productService;
-    @Resource
-    private ErpWarehouseService warehouseService;
-
-    @Resource
-    private ErpStockMapper stockMapper;
-
-    @Override
-    public ErpStockDO getStock(Long id) {
-        return stockMapper.selectById(id);
-    }
-
-    @Override
-    public ErpStockDO getStock(Long productId, Long warehouseId) {
-        return stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId);
-    }
-
-    @Override
-    public BigDecimal getStockCount(Long productId) {
-        BigDecimal count = stockMapper.selectSumByProductId(productId);
-        return count != null ? count : BigDecimal.ZERO;
-    }
-
-    @Override
-    public PageResult<ErpStockDO> getStockPage(ErpStockPageReqVO pageReqVO) {
-        return stockMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public BigDecimal updateStockCountIncrement(Long productId, Long warehouseId, BigDecimal count) {
-        // 1.1 鏌ヨ褰撳墠搴撳瓨
-        ErpStockDO stock = stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId);
-        if (stock == null) {
-            stock = new ErpStockDO().setProductId(productId).setWarehouseId(warehouseId).setCount(BigDecimal.ZERO);
-            stockMapper.insert(stock);
-        }
-        // 1.2 鏍¢獙搴撳瓨鏄惁鍏呰冻
-        if (!NEGATIVE_STOCK_COUNT_ENABLE && stock.getCount().add(count).compareTo(BigDecimal.ZERO) < 0) {
-            throw exception(STOCK_COUNT_NEGATIVE, productService.getProduct(productId).getName(),
-                    warehouseService.getWarehouse(warehouseId).getName(), stock.getCount(), count);
-        }
-
-        // 2. 搴撳瓨鍙樻洿
-        int updateCount = stockMapper.updateCountIncrement(stock.getId(), count, NEGATIVE_STOCK_COUNT_ENABLE);
-        if (updateCount == 0) {
-            // 姝ゆ椂涓嶅ソ鍘绘煡璇㈡渶鏂板簱瀛橈紝鎵�浠ョ洿鎺ユ姏鍑鸿鎻愮ず锛屼笉鎻愪緵鍏蜂綋搴撳瓨鏁板瓧
-            throw exception(STOCK_COUNT_NEGATIVE2, productService.getProduct(productId).getName(),
-                    warehouseService.getWarehouse(warehouseId).getName());
-        }
-
-        // 3. 杩斿洖鏈�鏂板簱瀛�
-        return stock.getCount().add(count);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java
deleted file mode 100644
index 76f5ca2..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * ERP 浠撳簱 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface ErpWarehouseService {
-
-    /**
-     * 鍒涘缓浠撳簱
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createWarehouse(@Valid ErpWarehouseSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊ERP 浠撳簱
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateWarehouse(@Valid ErpWarehouseSaveReqVO updateReqVO);
-
-    /**
-     * 鏇存柊浠撳簱榛樿鐘舵��
-     *
-     * @param id     缂栧彿
-     * @param defaultStatus 榛樿鐘舵��
-     */
-    void updateWarehouseDefaultStatus(Long id, Boolean defaultStatus);
-
-    /**
-     * 鍒犻櫎浠撳簱
-     *
-     * @param id 缂栧彿
-     */
-    void deleteWarehouse(Long id);
-
-    /**
-     * 鑾峰緱浠撳簱
-     *
-     * @param id 缂栧彿
-     * @return 浠撳簱
-     */
-    ErpWarehouseDO getWarehouse(Long id);
-
-    /**
-     * 鏍¢獙浠撳簱鍒楄〃鐨勬湁鏁堟��
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浠撳簱鍒楄〃
-     */
-    List<ErpWarehouseDO> validWarehouseList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱鎸囧畾鐘舵�佺殑浠撳簱鍒楄〃
-     *
-     * @param status 鐘舵��
-     * @return 浠撳簱鍒楄〃
-     */
-    List<ErpWarehouseDO> getWarehouseListByStatus(Integer status);
-
-    /**
-     * 鑾峰緱浠撳簱鍒楄〃
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浠撳簱鍒楄〃
-     */
-    List<ErpWarehouseDO> getWarehouseList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱浠撳簱 Map
-     *
-     * @param ids 缂栧彿鏁扮粍
-     * @return 浠撳簱 Map
-     */
-    default Map<Long, ErpWarehouseDO> getWarehouseMap(Collection<Long> ids) {
-        return convertMap(getWarehouseList(ids), ErpWarehouseDO::getId);
-    }
-
-    /**
-     * 鑾峰緱浠撳簱鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 浠撳簱鍒嗛〉
-     */
-    PageResult<ErpWarehouseDO> getWarehousePage(ErpWarehousePageReqVO pageReqVO);
-
-}
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java
deleted file mode 100644
index 115a138..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseServiceImpl.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpWarehouseMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
-
-/**
- * ERP 浠撳簱 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class ErpWarehouseServiceImpl implements ErpWarehouseService {
-
-    @Resource
-    private ErpWarehouseMapper warehouseMapper;
-
-    @Override
-    public Long createWarehouse(ErpWarehouseSaveReqVO createReqVO) {
-        // 鎻掑叆
-        ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class);
-        warehouseMapper.insert(warehouse);
-        // 杩斿洖
-        return warehouse.getId();
-    }
-
-    @Override
-    public void updateWarehouse(ErpWarehouseSaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateWarehouseExists(updateReqVO.getId());
-        // 鏇存柊
-        ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class);
-        warehouseMapper.updateById(updateObj);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateWarehouseDefaultStatus(Long id, Boolean defaultStatus) {
-        // 1. 鏍¢獙瀛樺湪
-        validateWarehouseExists(id);
-
-        // 2.1 濡傛灉寮�鍚紝鍒欓渶瑕佸叧闂墍鏈夊叾瀹冪殑榛樿
-        if (defaultStatus) {
-            ErpWarehouseDO warehouse = warehouseMapper.selectByDefaultStatus();
-            if (warehouse != null) {
-                warehouseMapper.updateById(new ErpWarehouseDO().setId(warehouse.getId()).setDefaultStatus(false));
-            }
-        }
-        // 2.2 鏇存柊瀵瑰簲鐨勯粯璁ょ姸鎬�
-        warehouseMapper.updateById(new ErpWarehouseDO().setId(id).setDefaultStatus(defaultStatus));
-    }
-
-    @Override
-    public void deleteWarehouse(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateWarehouseExists(id);
-        // 鍒犻櫎
-        warehouseMapper.deleteById(id);
-    }
-
-    private void validateWarehouseExists(Long id) {
-        if (warehouseMapper.selectById(id) == null) {
-            throw exception(WAREHOUSE_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public ErpWarehouseDO getWarehouse(Long id) {
-        return warehouseMapper.selectById(id);
-    }
-
-    @Override
-    public List<ErpWarehouseDO> validWarehouseList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        List<ErpWarehouseDO> list = warehouseMapper.selectByIds(ids);
-        Map<Long, ErpWarehouseDO> warehouseMap = convertMap(list, ErpWarehouseDO::getId);
-        for (Long id : ids) {
-            ErpWarehouseDO warehouse = warehouseMap.get(id);
-            if (warehouseMap.get(id) == null) {
-                throw exception(WAREHOUSE_NOT_EXISTS);
-            }
-            if (CommonStatusEnum.isDisable(warehouse.getStatus())) {
-                throw exception(WAREHOUSE_NOT_ENABLE, warehouse.getName());
-            }
-        }
-        return list;
-    }
-
-    @Override
-    public List<ErpWarehouseDO> getWarehouseListByStatus(Integer status) {
-        return warehouseMapper.selectListByStatus(status);
-    }
-
-    @Override
-    public List<ErpWarehouseDO> getWarehouseList(Collection<Long> ids) {
-        return warehouseMapper.selectByIds(ids);
-    }
-
-    @Override
-    public PageResult<ErpWarehouseDO> getWarehousePage(ErpWarehousePageReqVO pageReqVO) {
-        return warehouseMapper.selectPage(pageReqVO);
-    }
-
-}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java
deleted file mode 100644
index 7006f10..0000000
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/bo/ErpStockRecordCreateReqBO.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package cn.iocoder.yudao.module.erp.service.stock.bo;
-
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-
-/**
- * 搴撳瓨鏄庣粏鐨勫垱寤� Request BO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class ErpStockRecordCreateReqBO {
-
-    /**
-     * 浜у搧缂栧彿
-     */
-    @NotNull(message = "浜у搧缂栧彿涓嶈兘涓虹┖")
-    private Long productId;
-    /**
-     * 浠撳簱缂栧彿
-     */
-    @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-    private Long warehouseId;
-    /**
-     * 鍑哄叆搴撴暟閲�
-     *
-     * 姝f暟锛岃〃绀哄叆搴擄紱璐熸暟锛岃〃绀哄嚭搴�
-     */
-    @NotNull(message = "鍑哄叆搴撴暟閲忎笉鑳戒负绌�")
-    private BigDecimal count;
-
-    /**
-     * 涓氬姟绫诲瀷
-     */
-    @NotNull(message = "涓氬姟绫诲瀷涓嶈兘涓虹┖")
-    private Integer bizType;
-    /**
-     * 涓氬姟缂栧彿
-     */
-    @NotNull(message = "涓氬姟缂栧彿涓嶈兘涓虹┖")
-    private Long bizId;
-    /**
-     * 涓氬姟椤圭紪鍙�
-     */
-    @NotNull(message = "涓氬姟椤圭紪鍙蜂笉鑳戒负绌�")
-    private Long bizItemId;
-    /**
-     * 涓氬姟鍗曞彿
-     */
-    @NotNull(message = "涓氬姟鍗曞彿涓嶈兘涓虹┖")
-    private String bizNo;
-
-}
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java
index f362ce9..179547e 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java
@@ -5,12 +5,11 @@
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationPageReqVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationSaveReqVO;
 import cn.iocoder.yudao.module.hrm.service.approval.HrmLeaveApplicationService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -36,8 +35,6 @@
 
     @Resource
     private HrmLeaveApplicationService leaveApplicationService;
-    @Resource
-    private AdminUserApi adminUserApi;
 
     @PostMapping("/create")
     @Operation(summary = "鍒涘缓璇峰亣鐢宠")
@@ -85,9 +82,8 @@
     @PreAuthorize("@ss.hasPermission('hrm:leave:submit')")
     public CommonResult<Boolean> submitLeaveApplication(@RequestParam("id") Long id,
                                                          @RequestParam("processDefinitionKey") String processDefinitionKey) {
-        // 鑾峰彇褰撳墠鐢ㄦ埛ID
-        AdminUserRespDTO user = adminUserApi.getUser(1L); // TODO: 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
-        leaveApplicationService.submitLeaveApplication(id, processDefinitionKey, user.getId());
+        Long userId = SecurityFrameworkUtils.getLoginUserId();
+        leaveApplicationService.submitLeaveApplication(id, processDefinitionKey, userId);
         return success(true);
     }
 
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmResignationApplicationController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmResignationApplicationController.java
index 2aa674f..d4261f8 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmResignationApplicationController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmResignationApplicationController.java
@@ -5,6 +5,7 @@
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationApplicationPageReqVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationApplicationRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmResignationApplicationSaveReqVO;
@@ -85,8 +86,8 @@
     @PreAuthorize("@ss.hasPermission('hrm:resignation:submit')")
     public CommonResult<Boolean> submitResignationApplication(@RequestParam("id") Long id,
                                                               @RequestParam("processDefinitionKey") String processDefinitionKey) {
-        AdminUserRespDTO user = adminUserApi.getUser(1L); // TODO: 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
-        resignationApplicationService.submitResignationApplication(id, processDefinitionKey, user.getId());
+        Long userId = SecurityFrameworkUtils.getLoginUserId();
+        resignationApplicationService.submitResignationApplication(id, processDefinitionKey, userId);
         return success(true);
     }
 
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmTransferApplicationController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmTransferApplicationController.java
index a700a2f..83cd690 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmTransferApplicationController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmTransferApplicationController.java
@@ -5,6 +5,7 @@
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmTransferApplicationPageReqVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmTransferApplicationRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmTransferApplicationSaveReqVO;
@@ -85,8 +86,8 @@
     @PreAuthorize("@ss.hasPermission('hrm:transfer:submit')")
     public CommonResult<Boolean> submitTransferApplication(@RequestParam("id") Long id,
                                                            @RequestParam("processDefinitionKey") String processDefinitionKey) {
-        AdminUserRespDTO user = adminUserApi.getUser(1L); // TODO: 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
-        transferApplicationService.submitTransferApplication(id, processDefinitionKey, user.getId());
+        Long userId = SecurityFrameworkUtils.getLoginUserId();
+        transferApplicationService.submitTransferApplication(id, processDefinitionKey, userId);
         return success(true);
     }
 
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/approval/HrmLeaveApplicationServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/approval/HrmLeaveApplicationServiceImpl.java
index 55ac560..e2f527c 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/approval/HrmLeaveApplicationServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/approval/HrmLeaveApplicationServiceImpl.java
@@ -4,6 +4,7 @@
 import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
@@ -91,8 +92,7 @@
     }
 
     private Long getCurrentUserId() {
-        // TODO: 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛ID
-        return 1L;
+        return SecurityFrameworkUtils.getLoginUserId();
     }
 
     private String generateUniqueNo() {
diff --git a/yudao-module-mes/pom.xml b/yudao-module-mes/pom.xml
index ac82f3e..74c0908 100644
--- a/yudao-module-mes/pom.xml
+++ b/yudao-module-mes/pom.xml
@@ -31,13 +31,6 @@
             <version>${revision}</version>
         </dependency>
 
-        <!-- WMS 浠撳偍鐗╂祦 API -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-wms-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
         <!-- BPM 宸ヤ綔娴� API -->
         <dependency>
             <groupId>cn.iocoder.boot</groupId>
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java
index 9e1b19a..acaa5e8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsStockApiImpl.java
@@ -2,6 +2,11 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsPurchaseInboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsSalesOutboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockDetailRespDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockQueryReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.stock.WmsStockApi;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
@@ -14,11 +19,6 @@
 import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
-import cn.iocoder.yudao.module.wms.api.dto.WmsPurchaseInboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsSalesOutboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsStockDetailRespDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsStockQueryReqDTO;
-import cn.iocoder.yudao.module.wms.api.stock.WmsStockApi;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java
index 629bd9e..1e35e1f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/WmsTransactionApiImpl.java
@@ -2,10 +2,10 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsTransactionCreateReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.transaction.WmsTransactionApi;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
-import cn.iocoder.yudao.module.wms.api.transaction.WmsTransactionApi;
-import cn.iocoder.yudao.module.wms.api.transaction.WmsTransactionCreateReqDTO;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java
new file mode 100644
index 0000000..b949723
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsPurchaseInboundReqDTO.java
@@ -0,0 +1,85 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * WMS 閲囪喘鍏ュ簱璇锋眰 DTO
+ */
+@Data
+public class WmsPurchaseInboundReqDTO {
+
+    /**
+     * 涓氬姟鍗曟嵁ID
+     */
+    private Long bizId;
+
+    /**
+     * 涓氬姟鍗曟嵁缂栫爜
+     */
+    private String bizCode;
+
+    /**
+     * 渚涘簲鍟咺D
+     */
+    private Long vendorId;
+
+    /**
+     * 鍏ュ簱鏃堕棿
+     */
+    private LocalDateTime receiptTime;
+
+    /**
+     * 鐗╂枡鏄庣粏鍒楄〃
+     */
+    private List<Item> items;
+
+    @Data
+    public static class Item {
+
+        /**
+         * 涓氬姟琛孖D
+         */
+        private Long bizLineId;
+
+        /**
+         * 鐗╂枡ID
+         */
+        private Long itemId;
+
+        /**
+         * 浠撳簱ID
+         */
+        private Long warehouseId;
+
+        /**
+         * 搴撲綅ID
+         */
+        private Long locationId;
+
+        /**
+         * 鍖哄煙ID
+         */
+        private Long areaId;
+
+        /**
+         * 鎵规ID
+         */
+        private Long batchId;
+
+        /**
+         * 鎵规缂栫爜
+         */
+        private String batchCode;
+
+        /**
+         * 鏁伴噺
+         */
+        private BigDecimal quantity;
+
+    }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java
new file mode 100644
index 0000000..8e10cf5
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsSalesOutboundReqDTO.java
@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * WMS 閿�鍞嚭搴撹姹� DTO
+ */
+@Data
+public class WmsSalesOutboundReqDTO {
+
+    /**
+     * 涓氬姟鍗曟嵁ID
+     */
+    private Long bizId;
+
+    /**
+     * 涓氬姟鍗曟嵁缂栫爜
+     */
+    private String bizCode;
+
+    /**
+     * 鍑哄簱鏃堕棿
+     */
+    private LocalDateTime outboundTime;
+
+    /**
+     * 鐗╂枡鏄庣粏鍒楄〃
+     */
+    private List<Item> items;
+
+    @Data
+    public static class Item {
+
+        /**
+         * 涓氬姟琛孖D
+         */
+        private Long bizLineId;
+
+        /**
+         * 鐗╂枡ID
+         */
+        private Long itemId;
+
+        /**
+         * 浠撳簱ID
+         */
+        private Long warehouseId;
+
+        /**
+         * 搴撲綅ID
+         */
+        private Long locationId;
+
+        /**
+         * 鍖哄煙ID
+         */
+        private Long areaId;
+
+        /**
+         * 鎵规ID
+         */
+        private Long batchId;
+
+        /**
+         * 鎵规缂栫爜
+         */
+        private String batchCode;
+
+        /**
+         * 鏁伴噺
+         */
+        private BigDecimal quantity;
+
+    }
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java
new file mode 100644
index 0000000..ac382ba
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockDetailRespDTO.java
@@ -0,0 +1,79 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * WMS 搴撳瓨鏄庣粏鍝嶅簲 DTO
+ */
+@Data
+public class WmsStockDetailRespDTO {
+
+    /**
+     * 涓婚敭
+     */
+    private Long id;
+
+    /**
+     * 鐗╂枡ID
+     */
+    private Long itemId;
+
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    private String itemCode;
+
+    /**
+     * 鐗╂枡鍚嶇О
+     */
+    private String itemName;
+
+    /**
+     * 浠撳簱ID
+     */
+    private Long warehouseId;
+
+    /**
+     * 浠撳簱鍚嶇О
+     */
+    private String warehouseName;
+
+    /**
+     * 搴撲綅ID
+     */
+    private Long locationId;
+
+    /**
+     * 鍖哄煙ID
+     */
+    private Long areaId;
+
+    /**
+     * 鎵规ID
+     */
+    private Long batchId;
+
+    /**
+     * 鎵规缂栫爜
+     */
+    private String batchCode;
+
+    /**
+     * 渚涘簲鍟咺D
+     */
+    private Long vendorId;
+
+    /**
+     * 鏁伴噺
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java
new file mode 100644
index 0000000..949a1d3
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsStockQueryReqDTO.java
@@ -0,0 +1,41 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+/**
+ * WMS 搴撳瓨鏌ヨ璇锋眰 DTO
+ */
+@Data
+public class WmsStockQueryReqDTO {
+
+    /**
+     * 鐗╂枡ID
+     */
+    private Long itemId;
+
+    /**
+     * 浠撳簱ID
+     */
+    private Long warehouseId;
+
+    /**
+     * 搴撲綅ID
+     */
+    private Long locationId;
+
+    /**
+     * 鍖哄煙ID
+     */
+    private Long areaId;
+
+    /**
+     * 鎵规ID
+     */
+    private Long batchId;
+
+    /**
+     * 渚涘簲鍟咺D
+     */
+    private Long vendorId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java
new file mode 100644
index 0000000..be06dfa
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/dto/WmsTransactionCreateReqDTO.java
@@ -0,0 +1,88 @@
+package cn.iocoder.yudao.module.mes.api.wms.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * WMS 搴撳瓨浜嬪姟鍒涘缓璇锋眰 DTO
+ */
+@Data
+public class WmsTransactionCreateReqDTO {
+
+    /**
+     * 浜嬪姟绫诲瀷锛圛N/OUT锛�
+     */
+    private String type;
+
+    /**
+     * 涓氬姟绫诲瀷
+     */
+    private String bizType;
+
+    /**
+     * 涓氬姟鍗曟嵁ID
+     */
+    private Long bizId;
+
+    /**
+     * 涓氬姟鍗曟嵁缂栫爜
+     */
+    private String bizCode;
+
+    /**
+     * 涓氬姟琛孖D
+     */
+    private Long bizLineId;
+
+    /**
+     * 鐗╂枡ID
+     */
+    private Long itemId;
+
+    /**
+     * 浠撳簱ID
+     */
+    private Long warehouseId;
+
+    /**
+     * 搴撲綅ID
+     */
+    private Long locationId;
+
+    /**
+     * 鍖哄煙ID
+     */
+    private Long areaId;
+
+    /**
+     * 鎵规ID
+     */
+    private Long batchId;
+
+    /**
+     * 鎵规缂栫爜
+     */
+    private String batchCode;
+
+    /**
+     * 渚涘簲鍟咺D
+     */
+    private Long vendorId;
+
+    /**
+     * 鏁伴噺锛堟鏁板叆搴擄紝璐熸暟鍑哄簱锛�
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 鍏ュ簱/鍑哄簱鏃堕棿
+     */
+    private java.time.LocalDateTime receiptTime;
+
+    /**
+     * 鏄惁宸插鏍�
+     */
+    private Boolean checkFlag;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java
new file mode 100644
index 0000000..148641b
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/stock/WmsStockApi.java
@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.mes.api.wms.stock;
+
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsPurchaseInboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsSalesOutboundReqDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockDetailRespDTO;
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsStockQueryReqDTO;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * WMS 搴撳瓨 API 鎺ュ彛
+ */
+public interface WmsStockApi {
+
+    /**
+     * 閲囪喘鍏ュ簱
+     *
+     * @param reqDTO 鍏ュ簱璇锋眰
+     * @return 浜嬪姟ID
+     */
+    Long purchaseInbound(WmsPurchaseInboundReqDTO reqDTO);
+
+    /**
+     * 閲囪喘閫�璐у嚭搴�
+     *
+     * @param reqDTO 鍑哄簱璇锋眰
+     * @return 浜嬪姟ID
+     */
+    Long purchaseReturnOutbound(WmsPurchaseInboundReqDTO reqDTO);
+
+    /**
+     * 閿�鍞嚭搴�
+     *
+     * @param reqDTO 鍑哄簱璇锋眰
+     * @return 浜嬪姟ID
+     */
+    Long salesOutbound(WmsSalesOutboundReqDTO reqDTO);
+
+    /**
+     * 閿�鍞��璐у叆搴�
+     *
+     * @param reqDTO 鍏ュ簱璇锋眰
+     * @return 浜嬪姟ID
+     */
+    Long salesReturnInbound(WmsSalesOutboundReqDTO reqDTO);
+
+    /**
+     * 鑾峰彇搴撳瓨鏁伴噺
+     *
+     * @param itemId 鐗╂枡ID
+     * @param warehouseId 浠撳簱ID
+     * @return 搴撳瓨鏁伴噺
+     */
+    BigDecimal getStockQuantity(Long itemId, Long warehouseId);
+
+    /**
+     * 鑾峰彇搴撳瓨鏄庣粏
+     *
+     * @param reqDTO 鏌ヨ璇锋眰
+     * @return 搴撳瓨鏄庣粏
+     */
+    WmsStockDetailRespDTO getStockDetail(WmsStockQueryReqDTO reqDTO);
+
+    /**
+     * 鑾峰彇搴撳瓨鏄庣粏鍒楄〃
+     *
+     * @param reqDTO 鏌ヨ璇锋眰
+     * @return 搴撳瓨鏄庣粏鍒楄〃
+     */
+    List<WmsStockDetailRespDTO> getStockDetailList(WmsStockQueryReqDTO reqDTO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java
new file mode 100644
index 0000000..d0e09d6
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/wms/transaction/WmsTransactionApi.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.mes.api.wms.transaction;
+
+import cn.iocoder.yudao.module.mes.api.wms.dto.WmsTransactionCreateReqDTO;
+
+import java.util.List;
+
+/**
+ * WMS 搴撳瓨浜嬪姟 API 鎺ュ彛
+ */
+public interface WmsTransactionApi {
+
+    /**
+     * 鍒涘缓搴撳瓨浜嬪姟
+     *
+     * @param reqDTO 浜嬪姟璇锋眰
+     * @return 浜嬪姟ID
+     */
+    Long createTransaction(WmsTransactionCreateReqDTO reqDTO);
+
+    /**
+     * 鎵归噺鍒涘缓搴撳瓨浜嬪姟
+     *
+     * @param reqDTOs 浜嬪姟璇锋眰鍒楄〃
+     */
+    void createTransactionBatch(List<WmsTransactionCreateReqDTO> reqDTOs);
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeController.java
index b8e4f89..38b54fe 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeController.java
@@ -15,6 +15,8 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeDO;
 import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
 import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeService;
+import cn.iocoder.yudao.module.erp.api.purchase.ErpPurchaseOrderApi;
+import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -44,6 +46,8 @@
     private MesWmArrivalNoticeService arrivalNoticeService;
     @Resource
     private MesMdVendorService vendorService;
+    @Resource
+    private ErpPurchaseOrderApi purchaseOrderApi;
 
     @PostMapping("/create")
     @Operation(summary = "鍒涘缓鍒拌揣閫氱煡鍗�")
@@ -111,6 +115,14 @@
         return success(true);
     }
 
+    @PostMapping("/generate-from-purchase-order")
+    @Operation(summary = "鏍规嵁閲囪喘璁㈠崟鐢熸垚鍒拌揣閫氱煡鍗�")
+    @Parameter(name = "purchaseOrderId", description = "閲囪喘璁㈠崟缂栧彿", required = true)
+    @PreAuthorize("@ss.hasPermission('mes:wm-arrival-notice:create')")
+    public CommonResult<Long> generateFromPurchaseOrder(@RequestParam("purchaseOrderId") Long purchaseOrderId) {
+        return success(arrivalNoticeService.generateArrivalNoticeFromPurchaseOrder(purchaseOrderId));
+    }
+
     // ==================== 鎷兼帴 VO ====================
 
     private List<MesWmArrivalNoticeRespVO> buildRespVOList(List<MesWmArrivalNoticeDO> list) {
@@ -120,10 +132,21 @@
         // 1. 鑾峰緱鍏宠仈鏁版嵁
         Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap(
                 convertSet(list, MesWmArrivalNoticeDO::getVendorId));
-        // 2. 鏋勫缓缁撴灉
+        // 2. 鑾峰緱閲囪喘璁㈠崟淇℃伅
+        List<Long> purchaseOrderIds = list.stream()
+                .map(MesWmArrivalNoticeDO::getPurchaseOrderId)
+                .filter(id -> id != null)
+                .distinct()
+                .toList();
+        Map<Long, ErpPurchaseOrderRespDTO> purchaseOrderMap = purchaseOrderApi.getPurchaseOrderList(purchaseOrderIds)
+                .getCheckedData().stream()
+                .collect(java.util.stream.Collectors.toMap(ErpPurchaseOrderRespDTO::getId, v -> v, (a, b) -> a));
+        // 3. 鏋勫缓缁撴灉
         return BeanUtils.toBean(list, MesWmArrivalNoticeRespVO.class, vo -> {
             MapUtils.findAndThen(vendorMap, vo.getVendorId(), vendor ->
                     vo.setVendorCode(vendor.getCode()).setVendorName(vendor.getName()));
+            MapUtils.findAndThen(purchaseOrderMap, vo.getPurchaseOrderId(), purchaseOrder ->
+                    vo.setPurchaseOrderNo(purchaseOrder.getNo()));
         });
     }
 
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticePageReqVO.java
index 90219af..4eb2e14 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticePageReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticePageReqVO.java
@@ -23,8 +23,8 @@
     @Schema(description = "閫氱煡鍗曞悕绉�", example = "閽㈡澘鍒拌揣")
     private String name;
 
-    @Schema(description = "閲囪喘璁㈠崟缂栧彿", example = "PO20260101")
-    private String purchaseOrderCode;
+    @Schema(description = "閲囪喘璁㈠崟缂栧彿", example = "1")
+    private Long purchaseOrderId;
 
     @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1")
     private Long vendorId;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeRespVO.java
index b264eb2..8cb6d16 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeRespVO.java
@@ -29,7 +29,7 @@
 
     @Schema(description = "閲囪喘璁㈠崟鍙�", example = "PO20260101")
     @ExcelProperty("閲囪喘璁㈠崟鍙�")
-    private String purchaseOrderCode;
+    private String purchaseOrderNo;
 
     @Schema(description = "渚涘簲鍟嗙紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long vendorId;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeSaveReqVO.java
index 1a494d5..1a08c85 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/MesWmArrivalNoticeSaveReqVO.java
@@ -25,7 +25,7 @@
     @Schema(description = "閲囪喘璁㈠崟缂栧彿", example = "1")
     private Long purchaseOrderId;
 
-    @Schema(description = "閲囪喘璁㈠崟鍙�", example = "PO20260101")
+    @Schema(description = "閲囪喘璁㈠崟缂栫爜", example = "PO20260101")
     private String purchaseOrderCode;
 
     @Schema(description = "渚涘簲鍟嗙紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@@ -39,7 +39,7 @@
     @Schema(description = "鑱旂郴浜�", example = "寮犱笁")
     private String contactName;
 
-    @Schema(description = "鑱旂郴鐢佃瘽", example = "13800138000")
+    @Schema(description = "鑱旂郴浜�", example = "13800138000")
     private String contactTelephone;
 
     @Schema(description = "澶囨敞", example = "澶囨敞")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineRespVO.java
index d534bb2..4cd40df 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineRespVO.java
@@ -16,6 +16,9 @@
     @Schema(description = "鍒拌揣閫氱煡鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long noticeId;
 
+    @Schema(description = "閲囪喘璁㈠崟琛岀紪鍙�", example = "1")
+    private Long purchaseOrderItemId;
+
     @Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long itemId;
 
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineSaveReqVO.java
index fee3106..3d2919f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/vo/line/MesWmArrivalNoticeLineSaveReqVO.java
@@ -18,6 +18,9 @@
     @NotNull(message = "鍒拌揣閫氱煡鍗曠紪鍙蜂笉鑳戒负绌�")
     private Long noticeId;
 
+    @Schema(description = "閲囪喘璁㈠崟琛岀紪鍙�", example = "1")
+    private Long purchaseOrderItemId;
+
     @Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "鐗╂枡缂栧彿涓嶈兘涓虹┖")
     private Long itemId;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptController.java
index c0ec167..247c35b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptController.java
@@ -146,6 +146,25 @@
         return success(true);
     }
 
+    @PostMapping("/generate-from-arrival-notice")
+    @Operation(summary = "鏍规嵁鍒拌揣閫氱煡鍗曠敓鎴愰噰璐叆搴撳崟")
+    @Parameter(name = "arrivalNoticeId", description = "鍒拌揣閫氱煡鍗曠紪鍙�", required = true)
+    @PreAuthorize("@ss.hasPermission('mes:wm-item-receipt:create')")
+    public CommonResult<Long> generateFromArrivalNotice(@RequestParam("arrivalNoticeId") Long arrivalNoticeId) {
+        return success(itemReceiptService.generateItemReceiptFromArrivalNotice(arrivalNoticeId));
+    }
+
+    @PutMapping("/submit-approval")
+    @Operation(summary = "鎻愪氦閲囪喘鍏ュ簱鍗曞鎵�")
+    @Parameter(name = "id", description = "鍏ュ簱鍗曠紪鍙�", required = true)
+    @Parameter(name = "processDefinitionKey", description = "娴佺▼瀹氫箟 Key", required = true)
+    @PreAuthorize("@ss.hasPermission('mes:wm-item-receipt:update')")
+    public CommonResult<Boolean> submitApproval(@RequestParam("id") Long id,
+                                                 @RequestParam("processDefinitionKey") String processDefinitionKey) {
+        itemReceiptService.submitItemReceiptApproval(id, processDefinitionKey);
+        return success(true);
+    }
+
     // ==================== 鎷兼帴 VO ====================
 
     private List<MesWmItemReceiptRespVO> buildRespVOList(List<MesWmItemReceiptDO> list) {
@@ -166,7 +185,7 @@
             MapUtils.findAndThen(iqcMap, vo.getIqcId(),
                     iqc -> vo.setIqcCode(iqc.getCode()));
             MapUtils.findAndThen(noticeMap, vo.getNoticeId(), notice ->
-                    vo.setNoticeCode(notice.getCode()).setPurchaseOrderCode(notice.getPurchaseOrderCode()));
+                    vo.setNoticeCode(notice.getCode()));
         });
     }
 
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/MesWmItemReceiptRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/MesWmItemReceiptRespVO.java
index da430a7..f5437af 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/MesWmItemReceiptRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/MesWmItemReceiptRespVO.java
@@ -57,6 +57,9 @@
     @ExcelProperty("鐘舵��")
     private Integer status;
 
+    @Schema(description = "BPM 娴佺▼瀹炰緥缂栧彿", example = "xxx")
+    private String processInstanceId;
+
     @Schema(description = "澶囨敞", example = "澶囨敞")
     @ExcelProperty("澶囨敞")
     private String remark;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineRespVO.java
index 98a8248..c05e7ae 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineRespVO.java
@@ -25,6 +25,9 @@
     @Schema(description = "鍒拌揣閫氱煡鍗曡缂栧彿", example = "1")
     private Long arrivalNoticeLineId;
 
+    @Schema(description = "閲囪喘璁㈠崟琛岀紪鍙�", example = "1")
+    private Long purchaseOrderItemId;
+
     @Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long itemId;
 
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineSaveReqVO.java
index 00f656b..e9b053b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/vo/line/MesWmItemReceiptLineSaveReqVO.java
@@ -22,6 +22,9 @@
     @Schema(description = "鍒拌揣閫氱煡鍗曡缂栧彿", example = "1")
     private Long arrivalNoticeLineId;
 
+    @Schema(description = "閲囪喘璁㈠崟琛岀紪鍙�", example = "1")
+    private Long purchaseOrderItemId;
+
     @Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "鐗╂枡缂栧彿涓嶈兘涓虹┖")
     private Long itemId;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeController.java
index 7b4a03f..07c0e03 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeController.java
@@ -111,6 +111,14 @@
         return success(true);
     }
 
+    @PostMapping("/generate-from-sale-order")
+    @Operation(summary = "浠庨攢鍞鍗曠敓鎴愬彂璐ч�氱煡鍗�")
+    @Parameter(name = "saleOrderId", description = "閿�鍞鍗旾D", required = true)
+    @PreAuthorize("@ss.hasPermission('mes:wm-sales-notice:create')")
+    public CommonResult<Long> generateFromSaleOrder(@RequestParam("saleOrderId") Long saleOrderId) {
+        return success(salesNoticeService.generateSalesNoticeFromSaleOrder(saleOrderId));
+    }
+
     // ==================== 鎷兼帴 VO ====================
 
     private List<MesWmSalesNoticeRespVO> buildRespVOList(List<MesWmSalesNoticeDO> list) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeRespVO.java
index 473de99..7d09503 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeRespVO.java
@@ -24,10 +24,6 @@
     @ExcelProperty("閫氱煡鍗曞悕绉�")
     private String name;
 
-    @Schema(description = "閿�鍞鍗曠紪鍙�", example = "SO202603010001")
-    @ExcelProperty("閿�鍞鍗曠紪鍙�")
-    private String salesOrderCode;
-
     @Schema(description = "瀹㈡埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long clientId;
 
@@ -39,6 +35,13 @@
     @ExcelProperty("瀹㈡埛鍚嶇О")
     private String clientName;
 
+    @Schema(description = "閿�鍞鍗旾D", example = "1")
+    private Long saleOrderId;
+
+    @Schema(description = "閿�鍞鍗曞彿", example = "SO202603010001")
+    @ExcelProperty("閿�鍞鍗曞彿")
+    private String saleOrderCode;
+
     @Schema(description = "鍙戣揣鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("鍙戣揣鏃ユ湡")
     private LocalDateTime salesDate;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeSaveReqVO.java
index b3ad25a..4ffa6e2 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeSaveReqVO.java
@@ -22,13 +22,16 @@
     @NotEmpty(message = "閫氱煡鍗曞悕绉颁笉鑳戒负绌�")
     private String name;
 
-    @Schema(description = "閿�鍞鍗曠紪鍙�", example = "SO202603010001")
-    private String salesOrderCode;
-
     @Schema(description = "瀹㈡埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "瀹㈡埛缂栧彿涓嶈兘涓虹┖")
     private Long clientId;
 
+    @Schema(description = "閿�鍞鍗旾D", example = "1")
+    private Long saleOrderId;
+
+    @Schema(description = "閿�鍞鍗曞彿", example = "SO202603010001")
+    private String saleOrderCode;
+
     @Schema(description = "鍙戣揣鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "鍙戣揣鏃ユ湡涓嶈兘涓虹┖")
     private LocalDateTime salesDate;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineRespVO.java
index be8b280..81e8091 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineRespVO.java
@@ -16,6 +16,9 @@
     @Schema(description = "鍙戣揣閫氱煡鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long noticeId;
 
+    @Schema(description = "閿�鍞鍗曟槑缁咺D", example = "1")
+    private Long saleOrderItemId;
+
     @Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long itemId;
 
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeDO.java
index b6bfa1d..0e8bfa8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeDO.java
@@ -44,9 +44,7 @@
      */
     private Long purchaseOrderId;
     /**
-     * 閲囪喘璁㈠崟鍙�
-     *
-     * 鍐椾綑鑷� ERP 閲囪喘璁㈠崟鐨� no 瀛楁
+     * 閲囪喘璁㈠崟缂栫爜锛堝啑浣欏瓧娈碉紝鐢ㄤ簬鏄剧ず锛�
      */
     private String purchaseOrderCode;
     /**
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeLineDO.java
index e3c14f6..81eb889 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeLineDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/arrivalnotice/MesWmArrivalNoticeLineDO.java
@@ -35,6 +35,12 @@
      */
     private Long noticeId;
     /**
+     * 閲囪喘璁㈠崟琛岀紪鍙�
+     *
+     * 鍏宠仈 ERP {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO#getId()}
+     */
+    private Long purchaseOrderItemId;
+    /**
      * 鐗╂枡缂栧彿
      *
      * 鍏宠仈 {@link MesMdItemDO#getId()}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDO.java
index 3b3e257..7bb7d4c 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDO.java
@@ -75,6 +75,14 @@
      */
     private Integer status;
     /**
+     * BPM 娴佺▼瀹炰緥缂栧彿
+     */
+    private String processInstanceId;
+    /**
+     * BPM 娴佺▼瀹氫箟 Key
+     */
+    private String processDefinitionKey;
+    /**
      * 澶囨敞
      */
     private String remark;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDetailDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDetailDO.java
index 3b37851..04c136d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDetailDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptDetailDO.java
@@ -49,6 +49,10 @@
      */
     private Long itemId;
     /**
+     * 搴撳瓨缂栧彿
+     */
+    private Long materialStockId;
+    /**
      * 涓婃灦鏁伴噺
      */
     private BigDecimal quantity;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptLineDO.java
index 3c3f65d..ae2d13e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptLineDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/itemreceipt/MesWmItemReceiptLineDO.java
@@ -43,6 +43,12 @@
      */
     private Long arrivalNoticeLineId;
     /**
+     * 閲囪喘璁㈠崟琛岀紪鍙�
+     *
+     * 鍏宠仈 ERP {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO#getId()}
+     */
+    private Long purchaseOrderItemId;
+    /**
      * 鐗╂枡缂栧彿
      *
      * 鍏宠仈 {@link MesMdItemDO#getId()}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java
index 41d1171..14f265f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java
@@ -47,6 +47,10 @@
      */
     private Long clientId;
     /**
+     * 閿�鍞鍗旾D
+     */
+    private Long saleOrderId;
+    /**
      * 閿�鍞鍗曞彿
      */
     private String salesOrderCode;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesLineDO.java
index ec0405f..7ad5335 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesLineDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesLineDO.java
@@ -42,6 +42,10 @@
      */
     private Long salesId;
     /**
+     * 閿�鍞鍗曟槑缁咺D
+     */
+    private Long saleOrderItemId;
+    /**
      * 鍙戣揣閫氱煡鍗曡ID
      *
      * 鍏宠仈 {@link MesWmSalesNoticeLineDO#getId()}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeDO.java
index f38280d..1281884 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeDO.java
@@ -47,6 +47,14 @@
      */
     private Long clientId;
     /**
+     * 閿�鍞鍗旾D
+     */
+    private Long saleOrderId;
+    /**
+     * 閿�鍞鍗曞彿
+     */
+    private String saleOrderCode;
+    /**
      * 鍙戣揣鏃ユ湡
      */
     private LocalDateTime salesDate;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeLineDO.java
index 7b033c1..651d238 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeLineDO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeLineDO.java
@@ -35,6 +35,10 @@
      */
     private Long noticeId;
     /**
+     * 閿�鍞鍗曟槑缁咺D
+     */
+    private Long saleOrderItemId;
+    /**
      * 鐗╂枡缂栧彿
      *
      * 鍏宠仈 {@link MesMdItemDO#getId()}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java
index 12dddc1..f4794dc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/arrivalnotice/MesWmArrivalNoticeMapper.java
@@ -17,7 +17,7 @@
         return selectPage(reqVO, new LambdaQueryWrapperX<MesWmArrivalNoticeDO>()
                 .likeIfPresent(MesWmArrivalNoticeDO::getCode, reqVO.getCode())
                 .likeIfPresent(MesWmArrivalNoticeDO::getName, reqVO.getName())
-                .likeIfPresent(MesWmArrivalNoticeDO::getPurchaseOrderCode, reqVO.getPurchaseOrderCode())
+                .eqIfPresent(MesWmArrivalNoticeDO::getPurchaseOrderId, reqVO.getPurchaseOrderId())
                 .eqIfPresent(MesWmArrivalNoticeDO::getVendorId, reqVO.getVendorId())
                 .betweenIfPresent(MesWmArrivalNoticeDO::getArrivalDate, reqVO.getArrivalDate())
                 .eqIfPresent(MesWmArrivalNoticeDO::getStatus, reqVO.getStatus())
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 eb3a23e..c64ae2a 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
@@ -460,6 +460,7 @@
     ErrorCode WM_ITEM_RECEIPT_STATUS_ERROR = new ErrorCode(1_040_705_005, "鍏ュ簱鍗曠姸鎬佷笉姝g‘");
     ErrorCode WM_ITEM_RECEIPT_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_705_006, "宸插畬鎴愭垨宸插彇娑堢殑鍏ュ簱鍗曚笉鍏佽鍙栨秷");
     ErrorCode WM_PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_040_705_007, "閲囪喘璁㈠崟涓嶅瓨鍦�");
+    ErrorCode WM_PURCHASE_ORDER_NO_ITEM = new ErrorCode(1_040_705_008, "閲囪喘璁㈠崟鏃犳槑缁嗘暟鎹�");
     ErrorCode WM_ITEM_RECEIPT_LINE_NOT_EXISTS = new ErrorCode(1_040_705_100, "閲囪喘鍏ュ簱鍗曡涓嶅瓨鍦�");
     ErrorCode WM_ITEM_RECEIPT_LINE_ARRIVAL_NOTICE_LINE_REQUIRED = new ErrorCode(1_040_705_101,
             "鍏ュ簱鍗曞叧鑱斾簡鍒拌揣閫氱煡鍗曪紝蹇呴』閫夋嫨鍒拌揣閫氱煡鍗曡");
@@ -684,6 +685,8 @@
     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_SALE_ORDER_NOT_EXISTS = new ErrorCode(1_040_720_013, "閿�鍞鍗曚笉瀛樺湪");
+    ErrorCode WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY = new ErrorCode(1_040_720_014, "閿�鍞鍗曟槑缁嗕负绌�");
 
     // ========== MES 浠撳簱绠$悊-鏉$爜閰嶇疆锛�1-040-730-000锛� ==========
     ErrorCode WM_BARCODE_CONFIG_NOT_EXISTS = new ErrorCode(1_040_730_000, "鏉$爜閰嶇疆涓嶅瓨鍦�");
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmSalesNoticeStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmSalesNoticeStatusEnum.java
index 01ab066..b977ae0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmSalesNoticeStatusEnum.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmSalesNoticeStatusEnum.java
@@ -27,8 +27,13 @@
      *
      * 瀵瑰簲 MesWmSalesNoticeService#submitSalesNotice 鏂规硶
      */
-    APPROVED(MesOrderStatusConstants.APPROVED, "寰呭嚭搴�");
-    // TODO @鑺嬭壙锛氥�愬榻愩�戞殏鏃舵棤鍚庣画娴佺▼锛岀湅鐪嬪悗缁鎬庝箞鏀寔涓嬨��
+    APPROVED(MesOrderStatusConstants.APPROVED, "寰呭嚭搴�"),
+    /**
+     * 宸插畬鎴�
+     *
+     * 瀵瑰簲 MesWmSalesNoticeService#finishSalesNotice 鏂规硶锛堝嚭搴撳畬鎴愬悗璋冪敤锛�
+     */
+    FINISHED(MesOrderStatusConstants.FINISHED, "宸插畬鎴�");
 
     public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesWmSalesNoticeStatusEnum::getStatus).toArray(Integer[]::new);
 
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineService.java
index eecdc8d..8d68a85 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineService.java
@@ -93,4 +93,11 @@
      */
     MesWmArrivalNoticeLineDO validateArrivalNoticeLineExists(Long lineId, Long noticeId);
 
+    /**
+     * 鏍规嵁閲囪喘璁㈠崟琛屽垱寤哄埌璐ч�氱煡鍗曡锛堝唴閮ㄦ柟娉曪紝涓嶆牎楠岋級
+     *
+     * @param line 鍒拌揣閫氱煡鍗曡
+     */
+    void createArrivalNoticeLineFromPurchaseOrderItem(MesWmArrivalNoticeLineDO line);
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java
index b8d84a9..3f1ae8b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java
@@ -139,4 +139,11 @@
         return line;
     }
 
+    @Override
+    public void createArrivalNoticeLineFromPurchaseOrderItem(MesWmArrivalNoticeLineDO line) {
+        // 鍐呴儴鏂规硶锛屼笉鍋氭牎楠岋紝鐩存帴鎻掑叆
+        initQualifiedQuantityIfNoIqc(line);
+        arrivalNoticeLineMapper.insert(line);
+    }
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java
index aaea87d..f7edbfa 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java
@@ -133,4 +133,12 @@
      */
     Long getArrivalNoticeCountByVendorId(Long vendorId);
 
+    /**
+     * 鏍规嵁閲囪喘璁㈠崟鐢熸垚鍒拌揣閫氱煡鍗�
+     *
+     * @param purchaseOrderId 閲囪喘璁㈠崟缂栧彿
+     * @return 鐢熸垚鐨勫埌璐ч�氱煡鍗曠紪鍙�
+     */
+    Long generateArrivalNoticeFromPurchaseOrder(Long purchaseOrderId);
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
index 32ea507..aac37da 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
@@ -13,6 +13,8 @@
 import cn.iocoder.yudao.module.mes.enums.wm.MesWmArrivalNoticeStatusEnum;
 import cn.iocoder.yudao.module.erp.api.purchase.ErpPurchaseOrderApi;
 import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderRespDTO;
+import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO;
+import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -46,6 +48,9 @@
     @Resource
     private ErpPurchaseOrderApi purchaseOrderApi;
 
+    @Resource
+    private MesMdItemService mdItemService;
+
     @Override
     public Long createArrivalNotice(MesWmArrivalNoticeSaveReqVO createReqVO) {
         // 鏍¢獙鏁版嵁
@@ -75,14 +80,12 @@
         validateCodeUnique(reqVO.getId(), reqVO.getCode());
         // 鏍¢獙渚涘簲鍟嗗瓨鍦ㄤ笖鍚敤
         vendorService.validateVendorExistsAndEnable(reqVO.getVendorId());
-        // 鏍¢獙閲囪喘璁㈠崟瀛樺湪锛屽苟鑷姩濉厖閲囪喘璁㈠崟鍙�
+        // 鏍¢獙閲囪喘璁㈠崟瀛樺湪
         if (reqVO.getPurchaseOrderId() != null) {
             ErpPurchaseOrderRespDTO purchaseOrder = purchaseOrderApi.getPurchaseOrder(reqVO.getPurchaseOrderId()).getCheckedData();
             if (purchaseOrder == null) {
                 throw exception(WM_PURCHASE_ORDER_NOT_EXISTS);
             }
-            // 鑷姩濉厖閲囪喘璁㈠崟鍙�
-            reqVO.setPurchaseOrderCode(purchaseOrder.getNo());
         }
     }
 
@@ -256,4 +259,55 @@
         return arrivalNoticeMapper.selectCountByVendorId(vendorId);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long generateArrivalNoticeFromPurchaseOrder(Long purchaseOrderId) {
+        // 1. 鑾峰彇閲囪喘璁㈠崟
+        ErpPurchaseOrderRespDTO purchaseOrder = purchaseOrderApi.getPurchaseOrder(purchaseOrderId).getCheckedData();
+        if (purchaseOrder == null) {
+            throw exception(WM_PURCHASE_ORDER_NOT_EXISTS);
+        }
+
+        // 2. 鑾峰彇閲囪喘璁㈠崟鏄庣粏
+        List<ErpPurchaseOrderItemRespDTO> items = purchaseOrderApi.getPurchaseOrderItemList(purchaseOrderId).getCheckedData();
+        if (CollUtil.isEmpty(items)) {
+            throw exception(WM_PURCHASE_ORDER_NO_ITEM);
+        }
+
+        // 3. 鐢熸垚鍒拌揣閫氱煡鍗曠紪鐮侊紙浣跨敤缂栫爜瑙勫垯鏈嶅姟锛�
+        String code = generateArrivalNoticeCode();
+
+        // 4. 鍒涘缓鍒拌揣閫氱煡鍗曚富琛�
+        MesWmArrivalNoticeDO notice = new MesWmArrivalNoticeDO();
+        notice.setCode(code);
+        notice.setName(purchaseOrder.getNo() + "鍒拌揣閫氱煡");
+        notice.setPurchaseOrderId(purchaseOrderId);
+        notice.setPurchaseOrderCode(purchaseOrder.getNo());
+        notice.setVendorId(purchaseOrder.getSupplierId());
+        notice.setStatus(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus());
+        arrivalNoticeMapper.insert(notice);
+
+        // 5. 閬嶅巻鏄庣粏鍒涘缓鍒拌揣閫氱煡鍗曡
+        for (ErpPurchaseOrderItemRespDTO item : items) {
+            MesWmArrivalNoticeLineDO line = new MesWmArrivalNoticeLineDO();
+            line.setNoticeId(notice.getId());
+            line.setPurchaseOrderItemId(item.getId());
+            // 娉ㄦ剰锛氳繖閲岄渶瑕佹牴鎹� ERP 浜у搧 ID 鏄犲皠鍒� MES 鐗╂枡 ID
+            // 瀹為檯椤圭洰涓渶瑕侀�氳繃鏄犲皠鏈嶅姟澶勭悊锛岃繖閲屾殏鏃剁暀绌鸿鐢ㄦ埛鎵嬪姩閫夋嫨
+            line.setArrivalQuantity(item.getCount() != null ? item.getCount().subtract(item.getInCount() != null ? item.getInCount() : BigDecimal.ZERO) : BigDecimal.ZERO);
+            line.setIqcCheckFlag(false); // 榛樿涓嶉渶瑕佹楠岋紝鐢ㄦ埛鍙慨鏀�
+            arrivalNoticeLineService.createArrivalNoticeLineFromPurchaseOrderItem(line);
+        }
+
+        return notice.getId();
+    }
+
+    /**
+     * 鐢熸垚鍒拌揣閫氱煡鍗曠紪鐮�
+     */
+    private String generateArrivalNoticeCode() {
+        // TODO: 浣跨敤缂栫爜瑙勫垯鏈嶅姟鐢熸垚缂栫爜
+        return "AN" + System.currentTimeMillis();
+    }
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineService.java
index 26a790b..1af3ad6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineService.java
@@ -66,4 +66,11 @@
      */
     void deleteItemReceiptLineByReceiptId(Long receiptId);
 
+    /**
+     * 鏍规嵁鍒拌揣閫氱煡鍗曡鍒涘缓鍏ュ簱鍗曡锛堝唴閮ㄦ柟娉曪紝涓嶆牎楠岋級
+     *
+     * @param line 鍏ュ簱鍗曡
+     */
+    void createItemReceiptLineFromArrivalNoticeLine(MesWmItemReceiptLineDO line);
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java
index cf906b6..6450597 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptLineServiceImpl.java
@@ -133,6 +133,12 @@
         itemReceiptLineMapper.deleteByReceiptId(receiptId);
     }
 
+    @Override
+    public void createItemReceiptLineFromArrivalNoticeLine(MesWmItemReceiptLineDO line) {
+        // 鍐呴儴鏂规硶锛屼笉鍋氭牎楠岋紝鐩存帴鎻掑叆
+        itemReceiptLineMapper.insert(line);
+    }
+
     /**
      * 鏍¢獙鍒拌揣閫氱煡鍗曡
      *
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptService.java
index eecab63..487d2b6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptService.java
@@ -124,4 +124,28 @@
         return convertMap(getItemReceiptList(ids), MesWmItemReceiptDO::getId);
     }
 
+    /**
+     * 鏍规嵁鍒拌揣閫氱煡鍗曠敓鎴愰噰璐叆搴撳崟
+     *
+     * @param arrivalNoticeId 鍒拌揣閫氱煡鍗曠紪鍙�
+     * @return 鐢熸垚鐨勯噰璐叆搴撳崟缂栧彿
+     */
+    Long generateItemReceiptFromArrivalNotice(Long arrivalNoticeId);
+
+    /**
+     * 鎻愪氦閲囪喘鍏ュ簱鍗曞鎵�
+     *
+     * @param id 鍏ュ簱鍗曠紪鍙�
+     * @param processDefinitionKey 娴佺▼瀹氫箟 Key
+     */
+    void submitItemReceiptApproval(Long id, String processDefinitionKey);
+
+    /**
+     * 鏇存柊閲囪喘鍏ュ簱鍗曞鎵圭姸鎬侊紙鐢� BPM Listener 鍥炶皟锛�
+     *
+     * @param id 鍏ュ簱鍗曠紪鍙�
+     * @param bpmResult BPM 瀹℃壒缁撴灉
+     */
+    void updateItemReceiptAuditStatus(Long id, Integer bpmResult);
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
index 0875cbd..662cc0a 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
@@ -16,16 +16,25 @@
 import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
 import cn.iocoder.yudao.module.mes.enums.wm.MesWmItemReceiptStatusEnum;
 import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
+import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
 import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
 import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService;
 import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeService;
+import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineService;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
+import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
+import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
+import cn.iocoder.yudao.module.erp.api.purchase.ErpPurchaseOrderApi;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
+import lombok.extern.slf4j.Slf4j;
 
 import java.math.BigDecimal;
 import java.util.Collection;
@@ -40,6 +49,7 @@
  */
 @Service
 @Validated
+@Slf4j
 public class MesWmItemReceiptServiceImpl implements MesWmItemReceiptService {
 
     @Resource
@@ -59,6 +69,15 @@
     private MesQcIqcService iqcService;
     @Resource
     private MesWmTransactionService wmTransactionService;
+
+    @Resource
+    private MesWmArrivalNoticeLineService arrivalNoticeLineService;
+
+    @Resource
+    private BpmProcessInstanceApi processInstanceApi;
+
+    @Resource
+    private ErpPurchaseOrderApi purchaseOrderApi;
 
     @Override
     public Long createItemReceipt(MesWmItemReceiptSaveReqVO createReqVO) {
@@ -188,6 +207,40 @@
         if (receipt.getNoticeId() != null) {
             arrivalNoticeService.finishArrivalNotice(receipt.getNoticeId());
         }
+
+        // 5. 鍥炲啓 ERP 閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
+        updateErpPurchaseOrderInCount(receipt);
+    }
+
+    /**
+     * 鍥炲啓 ERP 閲囪喘璁㈠崟鐨勫叆搴撴暟閲�
+     */
+    private void updateErpPurchaseOrderInCount(MesWmItemReceiptDO receipt) {
+        // 鑾峰彇鍏ュ簱鍗曡
+        List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(receipt.getId());
+        if (CollUtil.isEmpty(lines)) {
+            return;
+        }
+        // 鐢ㄤ簬瀛樺偍閲囪喘璁㈠崟 ID锛岄伩鍏嶉噸澶嶆洿鏂�
+        Long purchaseOrderId = null;
+        // 閬嶅巻琛岋紝鎸� purchaseOrderItemId 鏇存柊鍏ュ簱鏁伴噺
+        for (MesWmItemReceiptLineDO line : lines) {
+            if (line.getPurchaseOrderItemId() != null && line.getReceivedQuantity() != null) {
+                purchaseOrderApi.updateOrderItemInCount(line.getPurchaseOrderItemId(), line.getReceivedQuantity());
+                // 鑾峰彇閲囪喘璁㈠崟 ID锛堜粠绗竴涓湁鏁堢殑鏄庣粏椤硅幏鍙栵級
+                if (purchaseOrderId == null) {
+                    cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO itemDTO =
+                            purchaseOrderApi.getPurchaseOrderItem(line.getPurchaseOrderItemId()).getCheckedData();
+                    if (itemDTO != null && itemDTO.getOrderId() != null) {
+                        purchaseOrderId = itemDTO.getOrderId();
+                    }
+                }
+            }
+        }
+        // 鏇存柊閲囪喘璁㈠崟鐨勫叆搴撶姸鎬�
+        if (purchaseOrderId != null) {
+            purchaseOrderApi.updateOrderInStatus(purchaseOrderId);
+        }
     }
 
     private void createTransactionList(MesWmItemReceiptDO receipt) {
@@ -272,4 +325,115 @@
         return itemReceiptMapper.selectByIds(ids);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long generateItemReceiptFromArrivalNotice(Long arrivalNoticeId) {
+        // 1. 鏍¢獙鍒拌揣閫氱煡鍗曞瓨鍦ㄤ笖鐘舵�佷负寰呭叆搴�
+        MesWmArrivalNoticeDO notice = arrivalNoticeService.validateArrivalNoticeReadyForReceipt(arrivalNoticeId);
+
+        // 2. 鑾峰彇鍒拌揣閫氱煡鍗曡
+        List<MesWmArrivalNoticeLineDO> lines = arrivalNoticeLineService.getArrivalNoticeLineListByNoticeId(arrivalNoticeId);
+        if (CollUtil.isEmpty(lines)) {
+            throw exception(WM_ARRIVAL_NOTICE_NO_LINE);
+        }
+
+        // 3. 鐢熸垚鍏ュ簱鍗曠紪鐮�
+        String code = generateItemReceiptCode();
+
+        // 4. 鍒涘缓鍏ュ簱鍗曚富琛�
+        MesWmItemReceiptDO receipt = new MesWmItemReceiptDO();
+        receipt.setCode(code);
+        receipt.setName(notice.getName() + "鍏ュ簱鍗�");
+        receipt.setNoticeId(arrivalNoticeId);
+        receipt.setPurchaseOrderCode(notice.getPurchaseOrderCode());
+        receipt.setVendorId(notice.getVendorId());
+        receipt.setStatus(MesWmItemReceiptStatusEnum.PREPARE.getStatus());
+        itemReceiptMapper.insert(receipt);
+
+        // 5. 閬嶅巻琛屽垱寤哄叆搴撳崟琛�
+        for (MesWmArrivalNoticeLineDO noticeLine : lines) {
+            MesWmItemReceiptLineDO receiptLine = new MesWmItemReceiptLineDO();
+            receiptLine.setReceiptId(receipt.getId());
+            receiptLine.setArrivalNoticeLineId(noticeLine.getId());
+            receiptLine.setPurchaseOrderItemId(noticeLine.getPurchaseOrderItemId());
+            receiptLine.setItemId(noticeLine.getItemId());
+            // 浣跨敤鍚堟牸鏁伴噺锛堝鏋滄湁 IQC 鍒欐槸鍚堟牸鏁伴噺锛屽惁鍒欐槸鍒拌揣鏁伴噺锛�
+            receiptLine.setReceivedQuantity(noticeLine.getQualifiedQuantity() != null ? noticeLine.getQualifiedQuantity() : noticeLine.getArrivalQuantity());
+            itemReceiptLineService.createItemReceiptLineFromArrivalNoticeLine(receiptLine);
+        }
+
+        return receipt.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void submitItemReceiptApproval(Long id, String processDefinitionKey) {
+        // 1. 鏍¢獙瀛樺湪 + 鑽夌鐘舵��
+        validateItemReceiptExistsAndDraft(id);
+
+        // 2. 鍒涘缓 BPM 娴佺▼瀹炰緥
+        Long userId = getCurrentUserId();
+        String processInstanceId = processInstanceApi.createProcessInstance(userId,
+                new BpmProcessInstanceCreateReqDTO()
+                        .setProcessDefinitionKey(processDefinitionKey)
+                        .setBusinessKey(String.valueOf(id)));
+
+        // 3. 鏇存柊鍏ュ簱鍗曠姸鎬佷负瀹℃壒涓�
+        itemReceiptMapper.updateById(new MesWmItemReceiptDO()
+                .setId(id)
+                .setStatus(MesWmItemReceiptStatusEnum.APPROVING.getStatus())
+                .setProcessInstanceId(processInstanceId));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateItemReceiptAuditStatus(Long id, Integer bpmResult) {
+        // 1. 鏍¢獙瀛樺湪
+        MesWmItemReceiptDO receipt = validateItemReceiptExists(id);
+        if (!MesWmItemReceiptStatusEnum.APPROVING.getStatus().equals(receipt.getStatus())) {
+            log.warn("[updateItemReceiptAuditStatus] 鍏ュ簱鍗�({}) 涓嶅浜庡鎵逛腑鐘舵��", id);
+            return;
+        }
+
+        // 2. 鏍规嵁瀹℃壒缁撴灉鏇存柊鐘舵��
+        Integer newStatus = convertBpmResultToReceiptStatus(bpmResult);
+        if (newStatus != null) {
+            itemReceiptMapper.updateById(new MesWmItemReceiptDO()
+                    .setId(id).setStatus(newStatus));
+        }
+    }
+
+    /**
+     * 杞崲 BPM 瀹℃壒缁撴灉涓哄叆搴撳崟鐘舵��
+     */
+    private Integer convertBpmResultToReceiptStatus(Integer bpmResult) {
+        if (BpmTaskStatusEnum.APPROVE.getStatus().equals(bpmResult)) {
+            return MesWmItemReceiptStatusEnum.APPROVED.getStatus();
+        } else if (BpmTaskStatusEnum.REJECT.getStatus().equals(bpmResult)) {
+            return MesWmItemReceiptStatusEnum.PREPARE.getStatus();
+        } else if (BpmTaskStatusEnum.CANCEL.getStatus().equals(bpmResult)) {
+            return MesWmItemReceiptStatusEnum.CANCELED.getStatus();
+        }
+        return null;
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鐢ㄦ埛 ID
+     */
+    private Long getCurrentUserId() {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        if (authentication != null && authentication.getPrincipal() instanceof Long) {
+            return (Long) authentication.getPrincipal();
+        }
+        return 1L; // 榛樿鐢ㄦ埛
+    }
+
+    /**
+     * 鐢熸垚鍏ュ簱鍗曠紪鐮�
+     */
+    private String generateItemReceiptCode() {
+        // TODO: 浣跨敤缂栫爜瑙勫垯鏈嶅姟鐢熸垚缂栫爜
+        return "IR" + System.currentTimeMillis();
+    }
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/listener/MesWmItemReceiptStatusListener.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/listener/MesWmItemReceiptStatusListener.java
new file mode 100644
index 0000000..c88b0b9
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/listener/MesWmItemReceiptStatusListener.java
@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.mes.service.wm.itemreceipt.listener;
+
+import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.itemreceipt.MesWmItemReceiptMapper;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmItemReceiptStatusEnum;
+import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptService;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * 閲囪喘鍏ュ簱鍗� BPM 瀹℃壒鐘舵�佺洃鍚櫒
+ *
+ * 鐩戝惉 BPM 娴佺▼瀹炰緥鐘舵�佸彉鏇翠簨浠讹紝鏇存柊閲囪喘鍏ュ簱鍗曠殑瀹℃壒鐘舵��
+ */
+@Component
+@Slf4j
+public class MesWmItemReceiptStatusListener {
+
+    /**
+     * BPM 鍒嗙被缂栫爜锛氶噰璐叆搴撳鎵�
+     */
+    public static final String ITEM_RECEIPT_APPROVE_CATEGORY_CODE = "item_receipt_approve";
+
+    @Resource
+    private MesWmItemReceiptService itemReceiptService;
+
+    @Resource
+    private MesWmItemReceiptMapper itemReceiptMapper;
+
+    @EventListener
+    public void onApplicationEvent(BpmProcessInstanceStatusEvent event) {
+        // 1. 瑙f瀽涓氬姟涓婚敭
+        Long receiptId;
+        try {
+            receiptId = Long.parseLong(event.getBusinessKey());
+        } catch (NumberFormatException e) {
+            log.warn("[onApplicationEvent] 涓氬姟涓婚敭({}) 涓嶆槸鏈夋晥鐨勫叆搴撳崟缂栧彿", event.getBusinessKey());
+            return;
+        }
+
+        // 2. 鏍¢獙鍏ュ簱鍗曞瓨鍦�
+        MesWmItemReceiptDO receipt = itemReceiptMapper.selectById(receiptId);
+        if (receipt == null) {
+            log.warn("[onApplicationEvent] 鍏ュ簱鍗�({}) 涓嶅瓨鍦�", receiptId);
+            return;
+        }
+
+        // 3. 鏍¢獙鍏ュ簱鍗曠姸鎬佷负瀹℃壒涓�
+        if (!MesWmItemReceiptStatusEnum.APPROVING.getStatus().equals(receipt.getStatus())) {
+            log.warn("[onApplicationEvent] 鍏ュ簱鍗�({}) 涓嶅浜庡鎵逛腑鐘舵�侊紝褰撳墠鐘舵�侊細{}", receiptId, receipt.getStatus());
+            return;
+        }
+
+        // 4. 鏇存柊鍏ュ簱鍗曞鎵圭姸鎬�
+        itemReceiptService.updateItemReceiptAuditStatus(receiptId, event.getStatus());
+        log.info("[onApplicationEvent] 鍏ュ簱鍗�({}) 瀹℃壒鐘舵�佹洿鏂板畬鎴愶紝BPM 鐘舵�侊細{}", receiptId, event.getStatus());
+    }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
index a1cedf7..1694b78 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
@@ -24,6 +24,7 @@
 import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeService;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
 import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
+import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +61,9 @@
     private MesWmTransactionService wmTransactionService;
     @Resource
     private MesWmMaterialStockService materialStockService;
+
+    @Resource
+    private ErpSaleOrderApi saleOrderApi;
 
     @Override
     public Long createProductSales(MesWmProductSalesSaveReqVO createReqVO) {
@@ -229,6 +233,45 @@
         // 3. 鏇存柊鍑哄簱鍗曠姸鎬�
         productSalesMapper.updateById(new MesWmProductSalesDO()
                 .setId(id).setStatus(MesWmProductSalesStatusEnum.FINISHED.getStatus()));
+
+        // 4. 鏇存柊鍏宠仈鐨勫彂璐ч�氱煡鍗曠姸鎬�
+        if (sales.getNoticeId() != null) {
+            salesNoticeService.finishSalesNotice(sales.getNoticeId());
+        }
+
+        // 5. 鍥炲啓 ERP 閿�鍞鍗曠殑鍑哄簱鏁伴噺鍜岀姸鎬�
+        updateErpSaleOrderOutCount(sales);
+    }
+
+    /**
+     * 鍥炲啓 ERP 閿�鍞鍗曠殑鍑哄簱鏁伴噺鍜岀姸鎬�
+     */
+    private void updateErpSaleOrderOutCount(MesWmProductSalesDO sales) {
+        // 鑾峰彇鍑哄簱鍗曡
+        List<MesWmProductSalesLineDO> lines = productSalesLineService.getProductSalesLineListBySalesId(sales.getId());
+        if (CollUtil.isEmpty(lines)) {
+            return;
+        }
+        // 鐢ㄤ簬瀛樺偍閿�鍞鍗� ID锛岄伩鍏嶉噸澶嶆洿鏂�
+        Long saleOrderId = null;
+        // 閬嶅巻琛岋紝鎸� saleOrderItemId 鏇存柊鍑哄簱鏁伴噺
+        for (MesWmProductSalesLineDO line : lines) {
+            if (line.getSaleOrderItemId() != null && line.getQuantity() != null) {
+                saleOrderApi.updateOrderItemOutCount(line.getSaleOrderItemId(), line.getQuantity());
+                // 鑾峰彇閿�鍞鍗� ID锛堜粠绗竴涓湁鏁堢殑鏄庣粏椤硅幏鍙栵級
+                if (saleOrderId == null) {
+                    cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO itemDTO =
+                            saleOrderApi.getSaleOrderItem(line.getSaleOrderItemId()).getCheckedData();
+                    if (itemDTO != null && itemDTO.getOrderId() != null) {
+                        saleOrderId = itemDTO.getOrderId();
+                    }
+                }
+            }
+        }
+        // 鏇存柊閿�鍞鍗曠殑鍑哄簱鐘舵��
+        if (saleOrderId != null) {
+            saleOrderApi.updateOrderOutStatus(saleOrderId);
+        }
     }
 
     private void createTransactionList(MesWmProductSalesDO sales) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineService.java
index 70aec1d..1003b10 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineService.java
@@ -83,4 +83,11 @@
      */
     MesWmSalesNoticeLineDO validateSalesNoticeLineExists(Long lineId, Long noticeId);
 
+    /**
+     * 鍒涘缓鍙戣揣閫氱煡鍗曡锛堢洿鎺ヤ娇鐢� DO锛�
+     *
+     * @param line 琛� DO
+     */
+    void createSalesNoticeLine(MesWmSalesNoticeLineDO line);
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
index 04b8c37..a5f08ff 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
@@ -152,4 +152,9 @@
         }
     }
 
+    @Override
+    public void createSalesNoticeLine(MesWmSalesNoticeLineDO line) {
+        salesNoticeLineMapper.insert(line);
+    }
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeService.java
index 0a1d840..d952c79 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeService.java
@@ -88,4 +88,19 @@
         return convertMap(getSalesNoticeList(ids), MesWmSalesNoticeDO::getId);
     }
 
+    /**
+     * 浠庨攢鍞鍗曠敓鎴愬彂璐ч�氱煡鍗�
+     *
+     * @param saleOrderId 閿�鍞鍗旾D
+     * @return 鍙戣揣閫氱煡鍗旾D
+     */
+    Long generateSalesNoticeFromSaleOrder(Long saleOrderId);
+
+    /**
+     * 瀹屾垚鍙戣揣閫氱煡鍗曪紙鍑哄簱瀹屾垚鍚庤皟鐢級
+     *
+     * @param id 缂栧彿
+     */
+    void finishSalesNotice(Long id);
+
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
index 30a2777..9301bb6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
@@ -9,7 +9,11 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeMapper;
+import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
 import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
+import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderRespDTO;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -39,6 +43,11 @@
     private MesWmSalesNoticeLineService salesNoticeLineService;
     @Resource
     private MesMdClientService clientService;
+
+    @Resource
+    private ErpSaleOrderApi saleOrderApi;
+    @Resource
+    private MesMdAutoCodeRecordService autoCodeRecordService;
 
     @Override
     public Long createSalesNotice(MesWmSalesNoticeSaveReqVO createReqVO) {
@@ -149,4 +158,55 @@
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long generateSalesNoticeFromSaleOrder(Long saleOrderId) {
+        // 1. 鑾峰彇閿�鍞鍗曚俊鎭�
+        ErpSaleOrderRespDTO saleOrder = saleOrderApi.getSaleOrder(saleOrderId).getCheckedData();
+        if (saleOrder == null) {
+            throw exception(WM_SALES_NOTICE_SALE_ORDER_NOT_EXISTS);
+        }
+
+        // 2. 鑾峰彇閿�鍞鍗曟槑缁�
+        List<ErpSaleOrderItemRespDTO> saleOrderItems = saleOrderApi.getSaleOrderItemList(saleOrderId).getCheckedData();
+        if (CollUtil.isEmpty(saleOrderItems)) {
+            throw exception(WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY);
+        }
+
+        // 3. 鐢熸垚鍙戣揣閫氱煡鍗曠紪鐮�
+        String code = autoCodeRecordService.generateAutoCode("SALESNOTICE_CODE", null);
+
+        // 4. 鍒涘缓鍙戣揣閫氱煡鍗曚富琛�
+        MesWmSalesNoticeDO notice = new MesWmSalesNoticeDO();
+        notice.setCode(code);
+        notice.setName("閿�鍞鍗昜" + saleOrder.getNo() + "]鍙戣揣閫氱煡");
+        notice.setClientId(saleOrder.getCustomerId());
+        notice.setSaleOrderId(saleOrderId);
+        notice.setSaleOrderCode(saleOrder.getNo());
+        notice.setSalesDate(java.time.LocalDateTime.now());
+        notice.setStatus(PREPARE.getStatus());
+        salesNoticeMapper.insert(notice);
+
+        // 5. 閬嶅巻鏄庣粏鍒涘缓鍙戣揣閫氱煡鍗曡
+        for (ErpSaleOrderItemRespDTO saleOrderItem : saleOrderItems) {
+            MesWmSalesNoticeLineDO line = new MesWmSalesNoticeLineDO();
+            line.setNoticeId(notice.getId());
+            line.setSaleOrderItemId(saleOrderItem.getId());
+            line.setItemId(saleOrderItem.getProductId());
+            line.setQuantity(saleOrderItem.getCount());
+            salesNoticeLineService.createSalesNoticeLine(line);
+        }
+
+        return notice.getId();
+    }
+
+    @Override
+    public void finishSalesNotice(Long id) {
+        // 鏍¢獙瀛樺湪
+        MesWmSalesNoticeDO notice = validateSalesNoticeExists(id);
+        // 鏇存柊鐘舵�佷负宸插畬鎴�
+        salesNoticeMapper.updateById(new MesWmSalesNoticeDO()
+                .setId(id).setStatus(FINISHED.getStatus()));
+    }
+
 }
diff --git a/yudao-module-wms-api/pom.xml b/yudao-module-wms-api/pom.xml
deleted file mode 100644
index 2c00621..0000000
--- a/yudao-module-wms-api/pom.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>cn.iocoder.boot</groupId>
-        <artifactId>yudao</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>yudao-module-wms-api</artifactId>
-    <packaging>jar</packaging>
-
-    <name>${project.artifactId}</name>
-    <description>
-        wms 妯″潡涓嬶紝浠撳偍鐗╂祦鐨� API 鎺ュ彛瀹氫箟锛屼緵鍏朵粬妯″潡寮曠敤
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-common</artifactId>
-        </dependency>
-
-        <!-- Swagger 娉ㄨВ -->
-        <dependency>
-            <groupId>org.springdoc</groupId>
-            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-
-</project>
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsPurchaseInboundReqDTO.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsPurchaseInboundReqDTO.java
deleted file mode 100644
index bf35d46..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsPurchaseInboundReqDTO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * 閲囪喘鍏ュ簱璇锋眰 DTO
- */
-@Schema(description = "閲囪喘鍏ュ簱璇锋眰 DTO")
-@Data
-@Accessors(chain = true)
-public class WmsPurchaseInboundReqDTO {
-
-    @Schema(description = "涓氬姟ID(閲囪喘鍏ュ簱鍗旾D)", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "涓氬姟ID涓嶈兘涓虹┖")
-    private Long bizId;
-
-    @Schema(description = "涓氬姟鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "涓氬姟鍗曞彿涓嶈兘涓虹┖")
-    private String bizCode;
-
-    @Schema(description = "渚涘簲鍟咺D")
-    private Long vendorId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    private LocalDateTime receiptTime;
-
-    @Schema(description = "鍏ュ簱鏄庣粏", requiredMode = Schema.RequiredMode.REQUIRED)
-    @Valid
-    @NotEmpty(message = "鍏ュ簱鏄庣粏涓嶈兘涓虹┖")
-    private List<Item> items;
-
-    @Schema(description = "鍏ュ簱鏄庣粏椤�")
-    @Data
-    @Accessors(chain = true)
-    public static class Item {
-
-        @Schema(description = "鐗╂枡ID(MES鐗╂枡)", requiredMode = Schema.RequiredMode.REQUIRED)
-        @NotNull(message = "鐗╂枡ID涓嶈兘涓虹┖")
-        private Long itemId;
-
-        @Schema(description = "浠撳簱ID", requiredMode = Schema.RequiredMode.REQUIRED)
-        @NotNull(message = "浠撳簱ID涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "搴撳尯ID")
-        private Long locationId;
-
-        @Schema(description = "搴撲綅ID")
-        private Long areaId;
-
-        @Schema(description = "鎵规ID")
-        private Long batchId;
-
-        @Schema(description = "鎵规缂栫爜")
-        private String batchCode;
-
-        @Schema(description = "鍏ュ簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED)
-        @NotNull(message = "鍏ュ簱鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal quantity;
-
-        @Schema(description = "鏄庣粏琛孖D")
-        private Long bizLineId;
-    }
-}
\ No newline at end of file
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsSalesOutboundReqDTO.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsSalesOutboundReqDTO.java
deleted file mode 100644
index ed7cbcb..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsSalesOutboundReqDTO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * 閿�鍞嚭搴撹姹� DTO
- */
-@Schema(description = "閿�鍞嚭搴撹姹� DTO")
-@Data
-@Accessors(chain = true)
-public class WmsSalesOutboundReqDTO {
-
-    @Schema(description = "涓氬姟ID(閿�鍞嚭搴撳崟ID)", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "涓氬姟ID涓嶈兘涓虹┖")
-    private Long bizId;
-
-    @Schema(description = "涓氬姟鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "涓氬姟鍗曞彿涓嶈兘涓虹┖")
-    private String bizCode;
-
-    @Schema(description = "瀹㈡埛ID")
-    private Long clientId;
-
-    @Schema(description = "鍑哄簱鏃堕棿")
-    private LocalDateTime outboundTime;
-
-    @Schema(description = "鍑哄簱鏄庣粏", requiredMode = Schema.RequiredMode.REQUIRED)
-    @Valid
-    @NotEmpty(message = "鍑哄簱鏄庣粏涓嶈兘涓虹┖")
-    private List<Item> items;
-
-    @Schema(description = "鍑哄簱鏄庣粏椤�")
-    @Data
-    @Accessors(chain = true)
-    public static class Item {
-
-        @Schema(description = "鐗╂枡ID(MES鐗╂枡)", requiredMode = Schema.RequiredMode.REQUIRED)
-        @NotNull(message = "鐗╂枡ID涓嶈兘涓虹┖")
-        private Long itemId;
-
-        @Schema(description = "浠撳簱ID", requiredMode = Schema.RequiredMode.REQUIRED)
-        @NotNull(message = "浠撳簱ID涓嶈兘涓虹┖")
-        private Long warehouseId;
-
-        @Schema(description = "搴撳尯ID")
-        private Long locationId;
-
-        @Schema(description = "搴撲綅ID")
-        private Long areaId;
-
-        @Schema(description = "鎵规ID")
-        private Long batchId;
-
-        @Schema(description = "鎵规缂栫爜")
-        private String batchCode;
-
-        @Schema(description = "鍑哄簱鏁伴噺(璐熸暟)", requiredMode = Schema.RequiredMode.REQUIRED)
-        @NotNull(message = "鍑哄簱鏁伴噺涓嶈兘涓虹┖")
-        private BigDecimal quantity;
-
-        @Schema(description = "鏄庣粏琛孖D")
-        private Long bizLineId;
-    }
-}
\ No newline at end of file
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsStockDetailRespDTO.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsStockDetailRespDTO.java
deleted file mode 100644
index e2b61e8..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsStockDetailRespDTO.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 搴撳瓨鏄庣粏鍝嶅簲 DTO
- */
-@Schema(description = "搴撳瓨鏄庣粏鍝嶅簲 DTO")
-@Data
-@Accessors(chain = true)
-public class WmsStockDetailRespDTO {
-
-    @Schema(description = "搴撳瓨ID")
-    private Long id;
-
-    @Schema(description = "鐗╂枡ID")
-    private Long itemId;
-
-    @Schema(description = "鐗╂枡缂栫爜")
-    private String itemCode;
-
-    @Schema(description = "鐗╂枡鍚嶇О")
-    private String itemName;
-
-    @Schema(description = "浠撳簱ID")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О")
-    private String warehouseName;
-
-    @Schema(description = "搴撳尯ID")
-    private Long locationId;
-
-    @Schema(description = "搴撳尯鍚嶇О")
-    private String locationName;
-
-    @Schema(description = "搴撲綅ID")
-    private Long areaId;
-
-    @Schema(description = "搴撲綅鍚嶇О")
-    private String areaName;
-
-    @Schema(description = "鎵规ID")
-    private Long batchId;
-
-    @Schema(description = "鎵规缂栫爜")
-    private String batchCode;
-
-    @Schema(description = "渚涘簲鍟咺D")
-    private Long vendorId;
-
-    @Schema(description = "渚涘簲鍟嗗悕绉�")
-    private String vendorName;
-
-    @Schema(description = "搴撳瓨鏁伴噺")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    private LocalDateTime receiptTime;
-
-    @Schema(description = "鏄惁鍐荤粨")
-    private Boolean frozen;
-}
\ No newline at end of file
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsStockQueryReqDTO.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsStockQueryReqDTO.java
deleted file mode 100644
index 35851b7..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/dto/WmsStockQueryReqDTO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import jakarta.validation.constraints.NotNull;
-import java.math.BigDecimal;
-
-/**
- * 搴撳瓨鏌ヨ璇锋眰 DTO
- */
-@Schema(description = "搴撳瓨鏌ヨ璇锋眰 DTO")
-@Data
-@Accessors(chain = true)
-public class WmsStockQueryReqDTO {
-
-    @Schema(description = "鐗╂枡ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鐗╂枡ID涓嶈兘涓虹┖")
-    private Long itemId;
-
-    @Schema(description = "浠撳簱ID")
-    private Long warehouseId;
-
-    @Schema(description = "搴撳尯ID")
-    private Long locationId;
-
-    @Schema(description = "搴撲綅ID")
-    private Long areaId;
-
-    @Schema(description = "鎵规ID")
-    private Long batchId;
-
-    @Schema(description = "渚涘簲鍟咺D")
-    private Long vendorId;
-}
\ No newline at end of file
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/stock/WmsStockApi.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/stock/WmsStockApi.java
deleted file mode 100644
index 80f2bad..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/stock/WmsStockApi.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.stock;
-
-import cn.iocoder.yudao.module.wms.api.dto.WmsPurchaseInboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsSalesOutboundReqDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsStockDetailRespDTO;
-import cn.iocoder.yudao.module.wms.api.dto.WmsStockQueryReqDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-
-import jakarta.validation.Valid;
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * WMS 搴撳瓨 API 鎺ュ彛
- *
- * 鎻愪緵璺ㄦā鍧楀簱瀛樻搷浣滆兘鍔涳紝鍖呮嫭锛�
- * - 閲囪喘鍏ュ簱/閲囪喘閫�璐у嚭搴擄紙ERP閲囪喘妯″潡璋冪敤锛�
- * - 閿�鍞嚭搴�/閿�鍞��璐у叆搴擄紙ERP閿�鍞ā鍧楄皟鐢級
- * - 搴撳瓨鏌ヨ锛堥�氱敤鏌ヨ鎺ュ彛锛�
- */
-@Tag(name = "WMS 搴撳瓨 API")
-public interface WmsStockApi {
-
-    // ========== 閲囪喘鐩稿叧 ==========
-
-    @Operation(summary = "閲囪喘鍏ュ簱")
-    Long purchaseInbound(@Valid WmsPurchaseInboundReqDTO reqDTO);
-
-    @Operation(summary = "閲囪喘閫�璐у嚭搴�")
-    Long purchaseReturnOutbound(@Valid WmsPurchaseInboundReqDTO reqDTO);
-
-    // ========== 閿�鍞浉鍏� ==========
-
-    @Operation(summary = "閿�鍞嚭搴�")
-    Long salesOutbound(@Valid WmsSalesOutboundReqDTO reqDTO);
-
-    @Operation(summary = "閿�鍞��璐у叆搴�")
-    Long salesReturnInbound(@Valid WmsSalesOutboundReqDTO reqDTO);
-
-    // ========== 搴撳瓨鏌ヨ ==========
-
-    @Operation(summary = "鏌ヨ搴撳瓨鏁伴噺")
-    @Parameter(name = "itemId", description = "鐗╂枡ID", required = true)
-    @Parameter(name = "warehouseId", description = "浠撳簱ID", required = true)
-    BigDecimal getStockQuantity(Long itemId, Long warehouseId);
-
-    @Operation(summary = "鏌ヨ搴撳瓨鏄庣粏")
-    WmsStockDetailRespDTO getStockDetail(@Valid WmsStockQueryReqDTO reqDTO);
-
-    @Operation(summary = "鏌ヨ搴撳瓨鏄庣粏鍒楄〃")
-    List<WmsStockDetailRespDTO> getStockDetailList(@Valid WmsStockQueryReqDTO reqDTO);
-}
\ No newline at end of file
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/transaction/WmsTransactionApi.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/transaction/WmsTransactionApi.java
deleted file mode 100644
index 457e9af..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/transaction/WmsTransactionApi.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.transaction;
-
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-
-import jakarta.validation.Valid;
-import java.util.List;
-
-/**
- * WMS 搴撳瓨浜嬪姟 API 鎺ュ彛
- *
- * 鎻愪緵璺ㄦā鍧楀簱瀛樹簨鍔℃搷浣滆兘鍔涳紝鏀寔锛�
- * - 鍗曟潯浜嬪姟鍒涘缓
- * - 鎵归噺浜嬪姟鍒涘缓
- */
-@Tag(name = "WMS 搴撳瓨浜嬪姟 API")
-public interface WmsTransactionApi {
-
-    @Operation(summary = "鍒涘缓搴撳瓨浜嬪姟")
-    Long createTransaction(@Valid WmsTransactionCreateReqDTO reqDTO);
-
-    @Operation(summary = "鎵归噺鍒涘缓搴撳瓨浜嬪姟")
-    void createTransactionBatch(@Valid List<WmsTransactionCreateReqDTO> reqDTOs);
-}
\ No newline at end of file
diff --git a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/transaction/WmsTransactionCreateReqDTO.java b/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/transaction/WmsTransactionCreateReqDTO.java
deleted file mode 100644
index fd10ce9..0000000
--- a/yudao-module-wms-api/src/main/java/cn/iocoder/yudao/module/wms/api/transaction/WmsTransactionCreateReqDTO.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.iocoder.yudao.module.wms.api.transaction;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import jakarta.validation.constraints.NotNull;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 搴撳瓨浜嬪姟鍒涘缓璇锋眰 DTO
- */
-@Schema(description = "搴撳瓨浜嬪姟鍒涘缓璇锋眰 DTO")
-@Data
-@Accessors(chain = true)
-public class WmsTransactionCreateReqDTO {
-
-    @Schema(description = "浜嬪姟绫诲瀷(1-鍏ュ簱/2-鍑哄簱/3-璋冩嫧绉诲嚭/4-璋冩嫧绉诲叆/5-鐩樼泩/6-鐩樹簭)", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "浜嬪姟绫诲瀷涓嶈兘涓虹┖")
-    private Integer type;
-
-    @Schema(description = "涓氬姟绫诲瀷(110-閲囪喘鍏ュ簱/118-閿�鍞嚭搴撶瓑)", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "涓氬姟绫诲瀷涓嶈兘涓虹┖")
-    private Integer bizType;
-
-    @Schema(description = "涓氬姟ID")
-    private Long bizId;
-
-    @Schema(description = "涓氬姟鍗曞彿")
-    private String bizCode;
-
-    @Schema(description = "涓氬姟鏄庣粏琛孖D")
-    private Long bizLineId;
-
-    @Schema(description = "鐗╂枡ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鐗╂枡ID涓嶈兘涓虹┖")
-    private Long itemId;
-
-    @Schema(description = "浠撳簱ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "浠撳簱ID涓嶈兘涓虹┖")
-    private Long warehouseId;
-
-    @Schema(description = "搴撳尯ID")
-    private Long locationId;
-
-    @Schema(description = "搴撲綅ID")
-    private Long areaId;
-
-    @Schema(description = "鎵规ID")
-    private Long batchId;
-
-    @Schema(description = "鎵规缂栫爜")
-    private String batchCode;
-
-    @Schema(description = "渚涘簲鍟咺D")
-    private Long vendorId;
-
-    @Schema(description = "浜嬪姟鏁伴噺(鍏ュ簱姝f暟/鍑哄簱璐熸暟)", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "浜嬪姟鏁伴噺涓嶈兘涓虹┖")
-    private BigDecimal quantity;
-
-    @Schema(description = "浜嬪姟鏃堕棿")
-    private LocalDateTime transactionTime;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    private LocalDateTime receiptTime;
-
-    @Schema(description = "鍏宠仈浜嬪姟ID")
-    private Long relatedTransactionId;
-
-    @Schema(description = "鏄惁鏍¢獙搴撳瓨鍏呰冻(榛樿true锛屽嚭搴撴椂鏍¢獙)")
-    private Boolean checkFlag;
-}
\ No newline at end of file
diff --git a/yudao-module-wms/pom.xml b/yudao-module-wms/pom.xml
deleted file mode 100644
index 82adcc2..0000000
--- a/yudao-module-wms/pom.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>cn.iocoder.boot</groupId>
-        <artifactId>yudao</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>yudao-module-wms</artifactId>
-    <packaging>jar</packaging>
-
-    <name>${project.artifactId}</name>
-    <description>
-        wms 妯″潡涓嬶紝浠撳簱绠$悊绯荤粺锛圵arehouse Management System锛夈��
-        渚嬪璇达細浠撳簱銆佺墿鏂欍�佸簱瀛樸�佸叆搴撱�佸嚭搴撱�佺Щ搴撱�佺洏搴撶瓑绛�
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-system</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
-        <!-- MDM 涓绘暟鎹鐞� API -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-mdm</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
-        <!-- 涓氬姟缁勪欢 -->
-
-        <!-- Web 鐩稿叧 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-security</artifactId>
-        </dependency>
-
-        <!-- DB 鐩稿叧 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-mybatis</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-redis</artifactId>
-        </dependency>
-
-        <!-- 宸ュ叿绫荤浉鍏� -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-excel</artifactId>
-        </dependency>
-
-        <!-- Test 娴嬭瘯鐩稿叧 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-test</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/WmsHomeStatisticsController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/WmsHomeStatisticsController.java
deleted file mode 100644
index e9cbbef..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/WmsHomeStatisticsController.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.home;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeInventorySummaryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderSummaryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderTrendRespVO;
-import cn.iocoder.yudao.module.wms.service.home.WmsHomeStatisticsService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.validation.constraints.Max;
-import jakarta.validation.constraints.Min;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 棣栭〉缁熻")
-@RestController
-@RequestMapping("/wms/home-statistics")
-@Validated
-public class WmsHomeStatisticsController {
-
-    @Resource
-    private WmsHomeStatisticsService homeStatisticsService;
-
-    @GetMapping("/order-summary")
-    @Operation(summary = "鑾峰緱棣栭〉鍗曟嵁姹囨�荤粺璁�")
-    @Parameter(name = "warehouseId", description = "浠撳簱缂栧彿", example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:home:query')")
-    public CommonResult<List<WmsHomeOrderSummaryRespVO>> getOrderSummary(
-            @RequestParam(value = "warehouseId", required = false) Long warehouseId) {
-        return success(homeStatisticsService.getOrderSummary(warehouseId));
-    }
-
-    @GetMapping("/order-trend")
-    @Operation(summary = "鑾峰緱棣栭〉鍗曟嵁瓒嬪娍")
-    @Parameter(name = "days", description = "澶╂暟", example = "7")
-    @PreAuthorize("@ss.hasPermission('wms:home:query')")
-    public CommonResult<List<WmsHomeOrderTrendRespVO>> getOrderTrend(
-            @RequestParam(value = "days", defaultValue = "7") @Min(1) @Max(90) Integer days,
-            @RequestParam(value = "warehouseId", required = false) Long warehouseId) {
-        return success(homeStatisticsService.getOrderTrend(days, warehouseId));
-    }
-
-    @GetMapping("/inventory-summary")
-    @Operation(summary = "鑾峰緱棣栭〉搴撳瓨姹囨�荤粺璁�")
-    @Parameter(name = "warehouseId", description = "浠撳簱缂栧彿", example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:home:query')")
-    public CommonResult<WmsHomeInventorySummaryRespVO> getInventorySummary(
-            @RequestParam(value = "warehouseId", required = false) Long warehouseId,
-            @RequestParam(value = "goodsLimit", defaultValue = "5") @Min(1) @Max(20) Integer goodsLimit,
-            @RequestParam(value = "warehouseLimit", defaultValue = "8") @Min(1) @Max(20) Integer warehouseLimit) {
-        return success(homeStatisticsService.getInventorySummary(warehouseId, goodsLimit, warehouseLimit));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeInventorySummaryRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeInventorySummaryRespVO.java
deleted file mode 100644
index 18bb5c3..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeInventorySummaryRespVO.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.home.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 棣栭〉搴撳瓨姹囨�荤粺璁� Response VO")
-@Data
-public class WmsHomeInventorySummaryRespVO {
-
-    @Schema(description = "鎬诲簱瀛樻暟閲�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000.00")
-    private BigDecimal totalQuantity;
-
-    @Schema(description = "鍟嗗搧搴撳瓨鍗犳瘮鍒楄〃")
-    private List<ItemRank> goodsShareList;
-
-    @Schema(description = "浠撳簱搴撳瓨鍒嗗竷鍒楄〃")
-    private List<WarehouseRank> warehouseDistributionList;
-
-    @Schema(description = "绠$悊鍚庡彴 - WMS 棣栭〉鍟嗗搧搴撳瓨鎺掕 Response VO")
-    @Data
-    public static class ItemRank {
-
-        @Schema(description = "鍟嗗搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-        private Long id;
-
-        @Schema(description = "鍟嗗搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "A4 澶嶅嵃绾�")
-        private String name;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal quantity;
-
-    }
-
-    @Schema(description = "绠$悊鍚庡彴 - WMS 棣栭〉浠撳簱搴撳瓨鎺掕 Response VO")
-    @Data
-    public static class WarehouseRank {
-
-        @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-        private Long id;
-
-        @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "涓婃捣浠�")
-        private String name;
-
-        @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-        private BigDecimal quantity;
-
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderStatusRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderStatusRespVO.java
deleted file mode 100644
index 91b0fea..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderStatusRespVO.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.home.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 棣栭〉鍗曟嵁鐘舵�佺粺璁� Response VO")
-@Data
-public class WmsHomeOrderStatusRespVO {
-
-    @Schema(description = "鐘舵�佸��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    private Integer status;
-
-    @Schema(description = "鍗曟嵁鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "12")
-    private Long count;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderSummaryRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderSummaryRespVO.java
deleted file mode 100644
index adb34de..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderSummaryRespVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.home.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 棣栭〉鍗曟嵁姹囨�荤粺璁� Response VO")
-@Data
-public class WmsHomeOrderSummaryRespVO {
-
-    @Schema(description = "鍗曟嵁绫诲瀷", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Integer type;
-
-    @Schema(description = "鍗曟嵁鎬绘暟", requiredMode = Schema.RequiredMode.REQUIRED, example = "12")
-    private Long total;
-
-    @Schema(description = "鐘舵�佸垎甯�")
-    private List<WmsHomeOrderStatusRespVO> statuses;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderTrendRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderTrendRespVO.java
deleted file mode 100644
index 3ebb477..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/home/vo/WmsHomeOrderTrendRespVO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.home.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 棣栭〉鍗曟嵁瓒嬪娍 Response VO")
-@Data
-public class WmsHomeOrderTrendRespVO {
-
-    @Schema(description = "鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1778169600000")
-    private LocalDateTime time;
-
-    @Schema(description = "鍏ュ簱鍗曟暟閲�", requiredMode = Schema.RequiredMode.REQUIRED, example = "12")
-    private Long receiptCount;
-
-    @Schema(description = "鍑哄簱鍗曟暟閲�", requiredMode = Schema.RequiredMode.REQUIRED, example = "8")
-    private Long shipmentCount;
-
-    @Schema(description = "绉诲簱鍗曟暟閲�", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
-    private Long movementCount;
-
-    @Schema(description = "鐩樺簱鍗曟暟閲�", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    private Long checkCount;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/WmsInventoryController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/WmsInventoryController.java
deleted file mode 100644
index 5142e05..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/WmsInventoryController.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 搴撳瓨缁熻")
-@RestController
-@RequestMapping("/wms/inventory")
-@Validated
-public class WmsInventoryController {
-
-    @Resource
-    private WmsInventoryService inventoryService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱搴撳瓨缁熻鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('wms:inventory:query')")
-    public CommonResult<PageResult<WmsInventoryRespVO>> getInventoryPage(@Valid WmsInventoryPageReqVO pageReqVO) {
-        PageResult<WmsInventoryDO> pageResult = inventoryService.getInventoryPage(pageReqVO);
-        return success(new PageResult<>(buildInventoryRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "鑾峰緱搴撳瓨缁熻鍒楄〃")
-    @PreAuthorize("@ss.hasPermission('wms:inventory:query')")
-    public CommonResult<List<WmsInventoryRespVO>> getInventoryList(@Valid WmsInventoryListReqVO listReqVO) {
-        List<WmsInventoryDO> list = inventoryService.getInventoryList(listReqVO);
-        return success(buildInventoryRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsInventoryRespVO> buildInventoryRespVOList(List<WmsInventoryDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsInventoryDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsInventoryDO::getWarehouseId));
-        return BeanUtils.toBean(list, WmsInventoryRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/WmsInventoryHistoryController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/WmsInventoryHistoryController.java
deleted file mode 100644
index c7530bf..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/WmsInventoryHistoryController.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history.WmsInventoryHistoryPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history.WmsInventoryHistoryRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryHistoryService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 搴撳瓨娴佹按")
-@RestController
-@RequestMapping("/wms/inventory-history")
-@Validated
-public class WmsInventoryHistoryController {
-
-    @Resource
-    private WmsInventoryHistoryService inventoryHistoryService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱搴撳瓨娴佹按鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('wms:inventory-history:query')")
-    public CommonResult<PageResult<WmsInventoryHistoryRespVO>> getInventoryHistoryPage(
-            @Valid WmsInventoryHistoryPageReqVO pageReqVO) {
-        PageResult<WmsInventoryHistoryDO> pageResult = inventoryHistoryService.getInventoryHistoryPage(pageReqVO);
-        return success(new PageResult<>(buildInventoryHistoryRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsInventoryHistoryRespVO> buildInventoryHistoryRespVOList(List<WmsInventoryHistoryDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsInventoryHistoryDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsInventoryHistoryDO::getWarehouseId));
-        return BeanUtils.toBean(list, WmsInventoryHistoryRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryListReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryListReqVO.java
deleted file mode 100644
index e3deb8c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryListReqVO.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 搴撳瓨缁熻鍒楄〃 Request VO")
-@Data
-public class WmsInventoryListReqVO {
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-    private Long warehouseId;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryPageReqVO.java
deleted file mode 100644
index 4917a1e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryPageReqVO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 搴撳瓨缁熻鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsInventoryPageReqVO extends PageParam {
-
-    /**
-     * 鎸変粨搴撶淮搴︾粺璁�
-     */
-    public static final String TYPE_WAREHOUSE = "warehouse";
-
-    /**
-     * 鎸夊晢鍝佺淮搴︾粺璁�
-     */
-    public static final String TYPE_ITEM = "item";
-
-    @Schema(description = "缁熻缁村害", requiredMode = Schema.RequiredMode.REQUIRED, example = "warehouse")
-    @NotBlank(message = "缁熻缁村害涓嶈兘涓虹┖")
-    private String type;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "ITEM001")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧 SKU 缂栧彿", example = "1024")
-    private Long skuId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU001")
-    private String skuCode;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "2048")
-    private Long warehouseId;
-
-    @Schema(description = "鏈�灏忓簱瀛樻暟閲�", example = "0.01")
-    private BigDecimal minQuantity;
-
-    @Schema(description = "鏄惁鍙煡璇㈡搴撳瓨", example = "true")
-    private Boolean onlyPositiveQuantity;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryRespVO.java
deleted file mode 100644
index c5c3d34..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/WmsInventoryRespVO.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 搴撳瓨缁熻 Response VO")
-@Data
-public class WmsInventoryRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鍟嗗搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long itemId;
-    @Schema(description = "鍟嗗搧缂栫爜", example = "ITEM001")
-    private String itemCode;
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-    @Schema(description = "鍟嗗搧鍗曚綅", example = "绠�")
-    private String unit;
-
-    @Schema(description = "鍟嗗搧 SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")
-    private Long skuId;
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU001")
-    private String skuCode;
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "8192")
-    private Long warehouseId;
-    @Schema(description = "浠撳簱鍚嶇О", example = "鎴愬搧浠�")
-    private String warehouseName;
-
-    @Schema(description = "搴撳瓨鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    private BigDecimal quantity;
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryPageReqVO.java
deleted file mode 100644
index 23b42bc..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryPageReqVO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 搴撳瓨娴佹按鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsInventoryHistoryPageReqVO extends PageParam {
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "ITEM001")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧 SKU 缂栧彿", example = "1024")
-    private Long skuId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU001")
-    private String skuCode;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "2048")
-    private Long warehouseId;
-
-    @Schema(description = "鍗曟嵁鍙�", example = "RK202605110001")
-    private String orderNo;
-
-    @Schema(description = "鍗曟嵁绫诲瀷", example = "1")
-    private Integer orderType;
-
-    @Schema(description = "鎿嶄綔鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryRespVO.java
deleted file mode 100644
index 87c8725..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/inventory/vo/history/WmsInventoryHistoryRespVO.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 搴撳瓨娴佹按 Response VO")
-@Data
-public class WmsInventoryHistoryRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鍟嗗搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long itemId;
-    @Schema(description = "鍟嗗搧缂栫爜", example = "ITEM001")
-    private String itemCode;
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-    @Schema(description = "鍟嗗搧鍗曚綅", example = "绠�")
-    private String unit;
-
-    @Schema(description = "鍟嗗搧 SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")
-    private Long skuId;
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU001")
-    private String skuCode;
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "8192")
-    private Long warehouseId;
-    @Schema(description = "浠撳簱鍚嶇О", example = "鎴愬搧浠�")
-    private String warehouseName;
-
-    @Schema(description = "搴撳瓨鍙樺寲鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "10.00")
-    private BigDecimal quantity;
-    @Schema(description = "鍙樺寲鍓嶅簱瀛樻暟閲�", example = "90.00")
-    private BigDecimal beforeQuantity;
-    @Schema(description = "鍙樺寲鍚庡簱瀛樻暟閲�", example = "100.00")
-    private BigDecimal afterQuantity;
-    @Schema(description = "鍗曚环", example = "1000.00")
-    private BigDecimal price;
-    @Schema(description = "搴撳瓨鍙樺寲閲戦", example = "10000.00")
-    private BigDecimal totalPrice;
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-
-    @Schema(description = "鍗曟嵁缂栧彿", example = "1024")
-    private Long orderId;
-    @Schema(description = "鍗曟嵁鍙�", example = "RK202605110001")
-    private String orderNo;
-    @Schema(description = "鍗曟嵁绫诲瀷", example = "1")
-    private Integer orderType;
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemBrandController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemBrandController.java
deleted file mode 100644
index 6094e11..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemBrandController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemBrandService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍝佺墝")
-@RestController
-@RequestMapping("/wms/item-brand")
-@Validated
-public class WmsItemBrandController {
-
-    @Resource
-    private WmsItemBrandService brandService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍟嗗搧鍝佺墝")
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:create')")
-    public CommonResult<Long> createItemBrand(@Valid @RequestBody WmsItemBrandSaveReqVO createReqVO) {
-        return success(brandService.createItemBrand(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍟嗗搧鍝佺墝")
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:update')")
-    public CommonResult<Boolean> updateItemBrand(@Valid @RequestBody WmsItemBrandSaveReqVO updateReqVO) {
-        brandService.updateItemBrand(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍟嗗搧鍝佺墝")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:delete')")
-    public CommonResult<Boolean> deleteItemBrand(@RequestParam("id") Long id) {
-        brandService.deleteItemBrand(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍝佺墝")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:query')")
-    public CommonResult<WmsItemBrandRespVO> getItemBrand(@RequestParam("id") Long id) {
-        WmsItemBrandDO brand = brandService.getItemBrand(id);
-        return success(BeanUtils.toBean(brand, WmsItemBrandRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍝佺墝鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:query')")
-    public CommonResult<PageResult<WmsItemBrandRespVO>> getItemBrandPage(@Valid WmsItemBrandPageReqVO pageReqVO) {
-        PageResult<WmsItemBrandDO> pageResult = brandService.getItemBrandPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, WmsItemBrandRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍝佺墝绮剧畝鍒楄〃", description = "涓昏鐢ㄤ簬鍓嶇涓嬫媺")
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:query')")
-    public CommonResult<List<WmsItemBrandRespVO>> getItemBrandSimpleList() {
-        List<WmsItemBrandDO> list = brandService.getItemBrandList();
-        return success(BeanUtils.toBean(list, WmsItemBrandRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鍟嗗搧鍝佺墝 Excel")
-    @PreAuthorize("@ss.hasPermission('wms:item-brand:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportItemBrandExcel(@Valid WmsItemBrandPageReqVO pageReqVO,
-                                     HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsItemBrandDO> list = brandService.getItemBrandPage(pageReqVO).getList();
-        ExcelUtils.write(response, "鍟嗗搧鍝佺墝.xls", "鏁版嵁", WmsItemBrandRespVO.class,
-                BeanUtils.toBean(list, WmsItemBrandRespVO.class));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemCategoryController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemCategoryController.java
deleted file mode 100644
index d30edfa..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemCategoryController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategoryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategorySaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemCategoryDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemCategoryService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒嗙被")
-@RestController
-@RequestMapping("/wms/item-category")
-@Validated
-public class WmsItemCategoryController {
-
-    @Resource
-    private WmsItemCategoryService categoryService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍟嗗搧鍒嗙被")
-    @PreAuthorize("@ss.hasPermission('wms:item-category:create')")
-    public CommonResult<Long> createItemCategory(@Valid @RequestBody WmsItemCategorySaveReqVO createReqVO) {
-        return success(categoryService.createItemCategory(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍟嗗搧鍒嗙被")
-    @PreAuthorize("@ss.hasPermission('wms:item-category:update')")
-    public CommonResult<Boolean> updateItemCategory(@Valid @RequestBody WmsItemCategorySaveReqVO updateReqVO) {
-        categoryService.updateItemCategory(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍟嗗搧鍒嗙被")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:item-category:delete')")
-    public CommonResult<Boolean> deleteItemCategory(@RequestParam("id") Long id) {
-        categoryService.deleteItemCategory(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍒嗙被")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:item-category:query')")
-    public CommonResult<WmsItemCategoryRespVO> getItemCategory(@RequestParam("id") Long id) {
-        WmsItemCategoryDO category = categoryService.getItemCategory(id);
-        return success(BeanUtils.toBean(category, WmsItemCategoryRespVO.class));
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍒嗙被鍒楄〃")
-    @PreAuthorize("@ss.hasPermission('wms:item-category:query')")
-    public CommonResult<List<WmsItemCategoryRespVO>> getItemCategoryList(@Valid WmsItemCategoryListReqVO listReqVO) {
-        List<WmsItemCategoryDO> list = categoryService.getItemCategoryList(listReqVO);
-        return success(BeanUtils.toBean(list, WmsItemCategoryRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍒嗙被绮剧畝鍒楄〃", description = "涓昏鐢ㄤ簬鍓嶇涓嬫媺")
-    @PreAuthorize("@ss.hasPermission('wms:item-category:query')")
-    public CommonResult<List<WmsItemCategoryRespVO>> getItemCategorySimpleList() {
-        List<WmsItemCategoryDO> list = categoryService.getItemCategoryList(new WmsItemCategoryListReqVO());
-        return success(BeanUtils.toBean(list, WmsItemCategoryRespVO.class));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemController.java
deleted file mode 100644
index 86a8592..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemController.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemCategoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemBrandService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemCategoryService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍟嗗搧")
-@RestController
-@RequestMapping("/wms/item")
-@Validated
-public class WmsItemController {
-
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemCategoryService categoryService;
-    @Resource
-    private WmsItemBrandService brandService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍟嗗搧")
-    @PreAuthorize("@ss.hasPermission('wms:item:create')")
-    public CommonResult<Long> createItem(@Valid @RequestBody WmsItemSaveReqVO createReqVO) {
-        return success(itemService.createItem(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍟嗗搧")
-    @PreAuthorize("@ss.hasPermission('wms:item:update')")
-    public CommonResult<Boolean> updateItem(@Valid @RequestBody WmsItemSaveReqVO updateReqVO) {
-        itemService.updateItem(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍟嗗搧")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:item:delete')")
-    public CommonResult<Boolean> deleteItem(@RequestParam("id") Long id) {
-        itemService.deleteItem(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍟嗗搧")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:item:query')")
-    public CommonResult<WmsItemRespVO> getItem(@RequestParam("id") Long id) {
-        WmsItemDO item = itemService.getItem(id);
-        return success(buildItemRespVO(item));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍟嗗搧鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('wms:item:query')")
-    public CommonResult<PageResult<WmsItemRespVO>> getItemPage(@Valid WmsItemPageReqVO pageReqVO) {
-        PageResult<WmsItemDO> pageResult = itemService.getItemPage(pageReqVO);
-        return success(new PageResult<>(buildItemRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱鍟嗗搧绮剧畝鍒楄〃")
-    @PreAuthorize("@ss.hasPermission('wms:item:query')")
-    public CommonResult<List<WmsItemRespVO>> getItemSimpleList(@Valid WmsItemListReqVO listReqVO) {
-        List<WmsItemDO> list = itemService.getItemList(listReqVO);
-        return success(buildItemRespVOList(list));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鍟嗗搧 Excel")
-    @PreAuthorize("@ss.hasPermission('wms:item:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportItemExcel(@Valid WmsItemPageReqVO pageReqVO,
-                                HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsItemDO> list = itemService.getItemPage(pageReqVO).getList();
-        ExcelUtils.write(response, "鍟嗗搧.xls", "鏁版嵁", WmsItemRespVO.class,
-                buildItemRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private WmsItemRespVO buildItemRespVO(WmsItemDO item) {
-        if (item == null) {
-            return null;
-        }
-        return getFirst(buildItemRespVOList(Collections.singletonList(item)));
-    }
-
-    private List<WmsItemRespVO> buildItemRespVOList(List<WmsItemDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鏌ヨ鍏宠仈鏁版嵁
-        Map<Long, WmsItemCategoryDO> categoryMap = categoryService.getItemCategoryMap(
-                convertSet(list, WmsItemDO::getCategoryId));
-        Map<Long, WmsItemBrandDO> brandMap = brandService.getItemBrandMap(
-                convertSet(list, WmsItemDO::getBrandId));
-        Map<Long, List<WmsItemSkuDO>> skuMap = itemSkuService.getItemSkuMultiMap(
-                convertSet(list, WmsItemDO::getId));
-        // 鎷兼帴 VO
-        return BeanUtils.toBean(list, WmsItemRespVO.class, vo -> {
-            MapUtils.findAndThen(categoryMap, vo.getCategoryId(), category ->
-                    vo.setCategoryName(category.getName()));
-            MapUtils.findAndThen(brandMap, vo.getBrandId(), brand ->
-                    vo.setBrandName(brand.getName()));
-            vo.setSkus(BeanUtils.toBean(skuMap.getOrDefault(vo.getId(), Collections.emptyList()),
-                    WmsItemSkuRespVO.class));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemSkuController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemSkuController.java
deleted file mode 100644
index 5ece6f3..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/WmsItemSkuController.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemCategoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemBrandService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemCategoryService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-/**
- * WMS 鍟嗗搧 SKU Controller銆�
- *
- * <p>SKU 缁村害鐨勬煡璇㈠叆鍙o細寮圭獥 / 閫夋嫨鍣ㄥ満鏅娇鐢紝鎸� SKU 涓�琛屽睍寮�锛屾敮鎸佸晢鍝� / 鍝佺墝 / 鍒嗙被澶氳〃鑱旀煡绛涢�夈��
- * 澶嶇敤鍟嗗搧鏉冮檺 {@code wms:item:query}锛屼笉鍗曠嫭寤烘潈闄愮偣锛坙ite 涔熸槸鍟嗗搧/SKU 鍏辩敤 {@code wms:item:list}锛夈��
- *
- * <p>SKU 鐨勬柊澧� / 淇敼 / 鍒犻櫎浠嶉殢鍟嗗搧寮圭獥涓�骞剁淮鎶わ紝涓嶅湪鏈� Controller 鏆撮湶銆�
- */
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍟嗗搧 SKU")
-@RestController
-@RequestMapping("/wms/item-sku")
-@Validated
-public class WmsItemSkuController {
-
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemCategoryService categoryService;
-    @Resource
-    private WmsItemBrandService brandService;
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍟嗗搧 SKU 鍒嗛〉", description = "鎸� SKU 缁村害鍒嗛〉锛屾敮鎸佸晢鍝� / 鍝佺墝 / 鍒嗙被澶氳〃鑱旀煡绛涢��")
-    @PreAuthorize("@ss.hasPermission('wms:item:query')")
-    public CommonResult<PageResult<WmsItemSkuRespVO>> getItemSkuPage(@Valid WmsItemSkuPageReqVO pageReqVO) {
-        PageResult<WmsItemSkuDO> pageResult = itemSkuService.getItemSkuPage(pageReqVO);
-        return success(new PageResult<>(buildItemSkuRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsItemSkuRespVO> buildItemSkuRespVOList(List<WmsItemSkuDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鏌ヨ鍏宠仈鏁版嵁
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(list, WmsItemSkuDO::getItemId));
-        Map<Long, WmsItemCategoryDO> categoryMap = categoryService.getItemCategoryMap(
-                convertSet(itemMap.values(), WmsItemDO::getCategoryId));
-        Map<Long, WmsItemBrandDO> brandMap = brandService.getItemBrandMap(
-                convertSet(itemMap.values(), WmsItemDO::getBrandId));
-        // 鎷兼帴 VO
-        return BeanUtils.toBean(list, WmsItemSkuRespVO.class, vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
-            vo.setItemCode(item.getCode()).setItemName(item.getName()).setUnit(item.getUnit())
-                    .setCategoryId(item.getCategoryId()).setBrandId(item.getBrandId());
-            MapUtils.findAndThen(categoryMap, item.getCategoryId(), category ->
-                    vo.setCategoryName(category.getName()));
-            MapUtils.findAndThen(brandMap, item.getBrandId(), brand ->
-                    vo.setBrandName(brand.getName()));
-        }));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandPageReqVO.java
deleted file mode 100644
index 0e2d745..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandPageReqVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍝佺墝鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsItemBrandPageReqVO extends PageParam {
-
-    @Schema(description = "鍝佺墝缂栧彿", example = "B00000001")
-    private String code;
-
-    @Schema(description = "鍝佺墝鍚嶇О", example = "鍗庝负")
-    private String name;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandRespVO.java
deleted file mode 100644
index bc68efe..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandRespVO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍝佺墝 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsItemBrandRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍝佺墝缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "B00000001")
-    @ExcelProperty("鍝佺墝缂栧彿")
-    private String code;
-
-    @Schema(description = "鍝佺墝鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍗庝负")
-    @ExcelProperty("鍝佺墝鍚嶇О")
-    private String name;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandSaveReqVO.java
deleted file mode 100644
index 7090cf3..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/brand/WmsItemBrandSaveReqVO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍝佺墝鏂板/淇敼 Request VO")
-@Data
-public class WmsItemBrandSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "鍝佺墝缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "B00000001")
-    @NotEmpty(message = "鍝佺墝缂栧彿涓嶈兘涓虹┖")
-    @Size(max = 20, message = "鍝佺墝缂栧彿闀垮害涓嶈兘瓒呰繃 20 涓瓧绗�")
-    private String code;
-
-    @Schema(description = "鍝佺墝鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍗庝负")
-    @NotEmpty(message = "鍝佺墝鍚嶇О涓嶈兘涓虹┖")
-    @Size(max = 30, message = "鍝佺墝鍚嶇О闀垮害涓嶈兘瓒呰繃 30 涓瓧绗�")
-    private String name;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategoryListReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategoryListReqVO.java
deleted file mode 100644
index 274cad4..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategoryListReqVO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒嗙被鍒楄〃 Request VO")
-@Data
-public class WmsItemCategoryListReqVO {
-
-    @Schema(description = "鐖剁骇缂栧彿", example = "1")
-    private Long parentId;
-
-    @Schema(description = "鍒嗙被缂栧彿", example = "C00000001")
-    private String code;
-
-    @Schema(description = "鍒嗙被鍚嶇О", example = "鍘熸枡")
-    private String name;
-
-    @Schema(description = "鐘舵��", example = "0")
-    @InEnum(value = CommonStatusEnum.class, message = "鐘舵�佸繀椤绘槸 {value}")
-    private Integer status;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategoryRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategoryRespVO.java
deleted file mode 100644
index d629b98..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategoryRespVO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒嗙被 Response VO")
-@Data
-public class WmsItemCategoryRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鐖剁骇缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    private Long parentId;
-
-    @Schema(description = "鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "C00000001")
-    private String code;
-
-    @Schema(description = "鍒嗙被鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍘熸枡")
-    private String name;
-
-    @Schema(description = "鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Integer sort;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    private Integer status;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategorySaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategorySaveReqVO.java
deleted file mode 100644
index 8d0df22..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/category/WmsItemCategorySaveReqVO.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒嗙被鏂板/淇敼 Request VO")
-@Data
-public class WmsItemCategorySaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "鐖剁骇缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @NotNull(message = "鐖剁骇缂栧彿涓嶈兘涓虹┖")
-    private Long parentId;
-
-    @Schema(description = "鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "C00000001")
-    @NotEmpty(message = "鍒嗙被缂栧彿涓嶈兘涓虹┖")
-    @Size(max = 20, message = "鍒嗙被缂栧彿闀垮害涓嶈兘瓒呰繃 20 涓瓧绗�")
-    private String code;
-
-    @Schema(description = "鍒嗙被鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍘熸枡")
-    @NotEmpty(message = "鍒嗙被鍚嶇О涓嶈兘涓虹┖")
-    @Size(max = 30, message = "鍒嗙被鍚嶇О闀垮害涓嶈兘瓒呰繃 30 涓瓧绗�")
-    private String name;
-
-    @Schema(description = "鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "鎺掑簭涓嶈兘涓虹┖")
-    private Integer sort;
-
-    @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
-    @InEnum(value = CommonStatusEnum.class, message = "鐘舵�佸繀椤绘槸 {value}")
-    private Integer status;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemListReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemListReqVO.java
deleted file mode 100644
index 8dde808..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemListReqVO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒楄〃 Request VO")
-@Data
-public class WmsItemListReqVO {
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "ITEM001")
-    private String code;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "鍗庝负 nova flip")
-    private String name;
-
-    @Schema(description = "鍟嗗搧鍒嗙被缂栧彿", example = "1024")
-    private Long categoryId;
-
-    @Schema(description = "鍟嗗搧鍝佺墝缂栧彿", example = "2048")
-    private Long brandId;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemPageReqVO.java
deleted file mode 100644
index 5ae42c3..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemPageReqVO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsItemPageReqVO extends PageParam {
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "ITEM001")
-    private String code;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "鍗庝负 nova flip")
-    private String name;
-
-    @Schema(description = "鍟嗗搧鍒嗙被缂栧彿", example = "1024")
-    private Long categoryId;
-
-    @Schema(description = "鍟嗗搧鍝佺墝缂栧彿", example = "2048")
-    private Long brandId;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemRespVO.java
deleted file mode 100644
index d4e7416..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemRespVO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuRespVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsItemRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "ITEM001")
-    @ExcelProperty("鍟嗗搧缂栧彿")
-    private String code;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍗庝负 nova flip")
-    @ExcelProperty("鍟嗗搧鍚嶇О")
-    private String name;
-
-    @Schema(description = "鍟嗗搧鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Long categoryId;
-
-    @Schema(description = "鍟嗗搧鍒嗙被鍚嶇О", example = "鎵嬫満")
-    @ExcelProperty("鍟嗗搧鍒嗙被")
-    private String categoryName;
-
-    @Schema(description = "鍗曚綅", example = "鍙�")
-    @ExcelProperty("鍗曚綅")
-    private String unit;
-
-    @Schema(description = "鍟嗗搧鍝佺墝缂栧彿", example = "1")
-    private Long brandId;
-
-    @Schema(description = "鍟嗗搧鍝佺墝鍚嶇О", example = "鍗庝负")
-    @ExcelProperty("鍟嗗搧鍝佺墝")
-    private String brandName;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "瑙勬牸鍒楄〃")
-    private List<WmsItemSkuRespVO> skus;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemSaveReqVO.java
deleted file mode 100644
index 6b8cadf..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/item/WmsItemSaveReqVO.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item;
-
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuSaveReqVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧鍒涘缓/鏇存柊 Request VO")
-@Data
-public class WmsItemSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "鍟嗗搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "ITEM001")
-    @NotBlank(message = "鍟嗗搧缂栧彿涓嶈兘涓虹┖")
-    @Size(max = 20, message = "鍟嗗搧缂栧彿闀垮害涓嶈兘瓒呰繃 20 涓瓧绗�")
-    private String code;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍗庝负 nova flip")
-    @NotBlank(message = "鍟嗗搧鍚嶇О涓嶈兘涓虹┖")
-    @Size(max = 60, message = "鍟嗗搧鍚嶇О闀垮害涓嶈兘瓒呰繃 60 涓瓧绗�")
-    private String name;
-
-    @Schema(description = "鍟嗗搧鍒嗙被缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "鍟嗗搧鍒嗙被涓嶈兘涓虹┖")
-    private Long categoryId;
-
-    @Schema(description = "鍗曚綅", example = "鍙�")
-    @Size(max = 20, message = "鍗曚綅闀垮害涓嶈兘瓒呰繃 20 涓瓧绗�")
-    private String unit;
-
-    @Schema(description = "鍟嗗搧鍝佺墝缂栧彿", example = "1")
-    private Long brandId;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @Size(max = 255, message = "澶囨敞闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String remark;
-
-    @Schema(description = "瑙勬牸鍒楄〃")
-    @Valid
-    @NotEmpty(message = "鑷冲皯鍖呭惈涓�涓晢鍝佽鏍�")
-    private List<WmsItemSkuSaveReqVO> skus;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuPageReqVO.java
deleted file mode 100644
index c091ea8..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuPageReqVO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧 SKU 鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsItemSkuPageReqVO extends PageParam {
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "I00000001")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "鍗庝负 nova flip")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧鍒嗙被缂栧彿", example = "1")
-    private Long categoryId;
-
-    @Schema(description = "鍟嗗搧鍝佺墝缂栧彿", example = "1")
-    private Long brandId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "S00000001")
-    private String code;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "榛戣壊")
-    private String name;
-
-    @Schema(description = "鏉$爜", example = "12345678")
-    private String barCode;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuRespVO.java
deleted file mode 100644
index 8bd57aa..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuRespVO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧 SKU Response VO")
-@Data
-public class WmsItemSkuRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "瑙勬牸鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "榛戣壊")
-    private String name;
-
-    @Schema(description = "鍟嗗搧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Long itemId;
-
-    @Schema(description = "鍟嗗搧缂栫爜", example = "ITEM001")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "鍗庝负 nova flip")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧鍒嗙被缂栧彿", example = "1")
-    private Long categoryId;
-
-    @Schema(description = "鍟嗗搧鍒嗙被鍚嶇О", example = "鎵嬫満")
-    private String categoryName;
-
-    @Schema(description = "鍗曚綅", example = "鍙�")
-    private String unit;
-
-    @Schema(description = "鍟嗗搧鍝佺墝缂栧彿", example = "1")
-    private Long brandId;
-
-    @Schema(description = "鍟嗗搧鍝佺墝鍚嶇О", example = "鍗庝负")
-    private String brandName;
-
-    @Schema(description = "鏉$爜", example = "690000000001")
-    private String barCode;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU001")
-    private String code;
-
-    @Schema(description = "闀匡紝鍗曚綅 cm", example = "10.0")
-    private BigDecimal length;
-
-    @Schema(description = "瀹斤紝鍗曚綅 cm", example = "8.0")
-    private BigDecimal width;
-
-    @Schema(description = "楂橈紝鍗曚綅 cm", example = "1.0")
-    private BigDecimal height;
-
-    @Schema(description = "姣涢噸锛屽崟浣� kg", example = "1.000")
-    private BigDecimal grossWeight;
-
-    @Schema(description = "鍑�閲嶏紝鍗曚綅 kg", example = "0.900")
-    private BigDecimal netWeight;
-
-    @Schema(description = "鎴愭湰浠凤紝鍗曚綅鍏�", example = "5000.00")
-    private BigDecimal costPrice;
-
-    @Schema(description = "閿�鍞环锛屽崟浣嶅厓", example = "5288.00")
-    private BigDecimal sellingPrice;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuSaveReqVO.java
deleted file mode 100644
index 1a79dcb..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/item/vo/sku/WmsItemSkuSaveReqVO.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.DecimalMin;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍟嗗搧 SKU 鍒涘缓/鏇存柊 Request VO")
-@Data
-public class WmsItemSkuSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "瑙勬牸鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "榛戣壊")
-    @NotBlank(message = "瑙勬牸鍚嶇О涓嶈兘涓虹┖")
-    @Size(max = 255, message = "瑙勬牸鍚嶇О闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String name;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "1")
-    private Long itemId;
-
-    @Schema(description = "鏉$爜", example = "690000000001")
-    @Size(max = 64, message = "鏉$爜闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String barCode;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU001")
-    @Size(max = 64, message = "瑙勬牸缂栧彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String code;
-
-    @Schema(description = "闀匡紝鍗曚綅 cm", example = "10.0")
-    @DecimalMin(value = "0", message = "闀夸笉鑳藉皬浜� 0")
-    private BigDecimal length;
-
-    @Schema(description = "瀹斤紝鍗曚綅 cm", example = "8.0")
-    @DecimalMin(value = "0", message = "瀹戒笉鑳藉皬浜� 0")
-    private BigDecimal width;
-
-    @Schema(description = "楂橈紝鍗曚綅 cm", example = "1.0")
-    @DecimalMin(value = "0", message = "楂樹笉鑳藉皬浜� 0")
-    private BigDecimal height;
-
-    @Schema(description = "姣涢噸锛屽崟浣� kg", example = "1.000")
-    @DecimalMin(value = "0", message = "姣涢噸涓嶈兘灏忎簬 0")
-    private BigDecimal grossWeight;
-
-    @Schema(description = "鍑�閲嶏紝鍗曚綅 kg", example = "0.900")
-    @DecimalMin(value = "0", message = "鍑�閲嶄笉鑳藉皬浜� 0")
-    private BigDecimal netWeight;
-
-    @Schema(description = "鎴愭湰浠凤紝鍗曚綅鍏�", example = "5000.00")
-    @DecimalMin(value = "0", message = "鎴愭湰浠蜂笉鑳藉皬浜� 0")
-    private BigDecimal costPrice;
-
-    @Schema(description = "閿�鍞环锛屽崟浣嶅厓", example = "5288.00")
-    @DecimalMin(value = "0", message = "閿�鍞环涓嶈兘灏忎簬 0")
-    private BigDecimal sellingPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/WmsMerchantController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/WmsMerchantController.java
deleted file mode 100644
index 897f635..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/WmsMerchantController.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.merchant;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 寰�鏉ヤ紒涓�")
-@RestController
-@RequestMapping("/wms/merchant")
-@Validated
-public class WmsMerchantController {
-
-    @Resource
-    private WmsMerchantService merchantService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓寰�鏉ヤ紒涓�")
-    @PreAuthorize("@ss.hasPermission('wms:merchant:create')")
-    public CommonResult<Long> createMerchant(@Valid @RequestBody WmsMerchantSaveReqVO createReqVO) {
-        return success(merchantService.createMerchant(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊寰�鏉ヤ紒涓�")
-    @PreAuthorize("@ss.hasPermission('wms:merchant:update')")
-    public CommonResult<Boolean> updateMerchant(@Valid @RequestBody WmsMerchantSaveReqVO updateReqVO) {
-        merchantService.updateMerchant(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎寰�鏉ヤ紒涓�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:merchant:delete')")
-    public CommonResult<Boolean> deleteMerchant(@RequestParam("id") Long id) {
-        merchantService.deleteMerchant(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱寰�鏉ヤ紒涓�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:merchant:query')")
-    public CommonResult<WmsMerchantRespVO> getMerchant(@RequestParam("id") Long id) {
-        WmsMerchantDO merchant = merchantService.getMerchant(id);
-        return success(BeanUtils.toBean(merchant, WmsMerchantRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱寰�鏉ヤ紒涓氬垎椤�")
-    @PreAuthorize("@ss.hasPermission('wms:merchant:query')")
-    public CommonResult<PageResult<WmsMerchantRespVO>> getMerchantPage(@Valid WmsMerchantPageReqVO pageReqVO) {
-        PageResult<WmsMerchantDO> pageResult = merchantService.getMerchantPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, WmsMerchantRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱寰�鏉ヤ紒涓氱簿绠�鍒楄〃", description = "涓昏鐢ㄤ簬鍓嶇涓嬫媺")
-    @PreAuthorize("@ss.hasPermission('wms:merchant:query')")
-    public CommonResult<List<WmsMerchantRespVO>> getMerchantSimpleList(@Valid WmsMerchantListReqVO listReqVO) {
-        List<WmsMerchantDO> list = merchantService.getMerchantList(listReqVO);
-        return success(BeanUtils.toBean(list, WmsMerchantRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭寰�鏉ヤ紒涓� Excel")
-    @PreAuthorize("@ss.hasPermission('wms:merchant:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportMerchantExcel(@Valid WmsMerchantPageReqVO pageReqVO,
-                                    HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsMerchantDO> list = merchantService.getMerchantPage(pageReqVO).getList();
-        ExcelUtils.write(response, "寰�鏉ヤ紒涓�.xls", "鏁版嵁", WmsMerchantRespVO.class,
-                BeanUtils.toBean(list, WmsMerchantRespVO.class));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantListReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantListReqVO.java
deleted file mode 100644
index 287a1bc..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantListReqVO.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo;
-
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.md.WmsMerchantTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 寰�鏉ヤ紒涓氬垪琛� Request VO")
-@Data
-public class WmsMerchantListReqVO {
-
-    @Schema(description = "寰�鏉ヤ紒涓氱紪鍙�", example = "MER001")
-    private String code;
-
-    @Schema(description = "寰�鏉ヤ紒涓氬悕绉�", example = "鍗庝负")
-    private String name;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱被鍨�", example = "2")
-    @InEnum(value = WmsMerchantTypeEnum.class, message = "寰�鏉ヤ紒涓氱被鍨嬪繀椤绘槸 {value}")
-    private Integer type;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱被鍨嬫暟缁�", example = "2,3")
-    @InEnum(value = WmsMerchantTypeEnum.class, message = "寰�鏉ヤ紒涓氱被鍨嬪繀椤绘槸 {value}")
-    private List<Integer> types;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantPageReqVO.java
deleted file mode 100644
index eb71ab0..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantPageReqVO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.md.WmsMerchantTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 寰�鏉ヤ紒涓氬垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsMerchantPageReqVO extends PageParam {
-
-    @Schema(description = "寰�鏉ヤ紒涓氱紪鍙�", example = "MER001")
-    private String code;
-
-    @Schema(description = "寰�鏉ヤ紒涓氬悕绉�", example = "鍗庝负")
-    private String name;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱被鍨�", example = "2")
-    @InEnum(value = WmsMerchantTypeEnum.class, message = "寰�鏉ヤ紒涓氱被鍨嬪繀椤绘槸 {value}")
-    private Integer type;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱被鍨嬫暟缁�", example = "2,3")
-    @InEnum(value = WmsMerchantTypeEnum.class, message = "寰�鏉ヤ紒涓氱被鍨嬪繀椤绘槸 {value}")
-    private List<Integer> types;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantRespVO.java
deleted file mode 100644
index c88c876..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantRespVO.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 寰�鏉ヤ紒涓� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsMerchantRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "MER001")
-    @ExcelProperty("寰�鏉ヤ紒涓氱紪鍙�")
-    private String code;
-
-    @Schema(description = "寰�鏉ヤ紒涓氬悕绉�", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍗庝负")
-    @ExcelProperty("寰�鏉ヤ紒涓氬悕绉�")
-    private String name;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱被鍨�", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty(value = "寰�鏉ヤ紒涓氱被鍨�", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.MERCHANT_TYPE)
-    private Integer type;
-
-    @Schema(description = "绾у埆", example = "A")
-    @ExcelProperty("绾у埆")
-    private String level;
-
-    @Schema(description = "寮�鎴疯", example = "鎷涘晢閾惰")
-    private String bankName;
-
-    @Schema(description = "閾惰璐︽埛", example = "6225888888888888")
-    private String bankAccount;
-
-    @Schema(description = "鍦板潃", example = "娣卞湷甯傚崡灞卞尯")
-    private String address;
-
-    @Schema(description = "鎵嬫満鍙�", example = "15601691300")
-    private String mobile;
-
-    @Schema(description = "搴ф満鍙�", example = "0755-88888888")
-    private String telephone;
-
-    @Schema(description = "鑱旂郴浜�", example = "鐜嬩簲")
-    @ExcelProperty("鑱旂郴浜�")
-    private String contact;
-
-    @Schema(description = "Email", example = "wms@example.com")
-    private String email;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantSaveReqVO.java
deleted file mode 100644
index 5803a1d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/merchant/vo/WmsMerchantSaveReqVO.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo;
-
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.md.WmsMerchantTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 寰�鏉ヤ紒涓氬垱寤�/鏇存柊 Request VO")
-@Data
-public class WmsMerchantSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "MER001")
-    @NotBlank(message = "寰�鏉ヤ紒涓氱紪鍙蜂笉鑳戒负绌�")
-    @Size(max = 20, message = "寰�鏉ヤ紒涓氱紪鍙烽暱搴︿笉鑳借秴杩� 20 涓瓧绗�")
-    private String code;
-
-    @Schema(description = "寰�鏉ヤ紒涓氬悕绉�", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍗庝负")
-    @NotBlank(message = "寰�鏉ヤ紒涓氬悕绉颁笉鑳戒负绌�")
-    @Size(max = 60, message = "寰�鏉ヤ紒涓氬悕绉伴暱搴︿笉鑳借秴杩� 60 涓瓧绗�")
-    private String name;
-
-    @Schema(description = "寰�鏉ヤ紒涓氱被鍨�", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotNull(message = "寰�鏉ヤ紒涓氱被鍨嬩笉鑳戒负绌�")
-    @InEnum(value = WmsMerchantTypeEnum.class, message = "寰�鏉ヤ紒涓氱被鍨嬪繀椤绘槸 {value}")
-    private Integer type;
-
-    @Schema(description = "绾у埆", example = "A")
-    @Size(max = 10, message = "绾у埆闀垮害涓嶈兘瓒呰繃 10 涓瓧绗�")
-    private String level;
-
-    @Schema(description = "寮�鎴疯", example = "鎷涘晢閾惰")
-    @Size(max = 255, message = "寮�鎴疯闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String bankName;
-
-    @Schema(description = "閾惰璐︽埛", example = "6225888888888888")
-    @Size(max = 40, message = "閾惰璐︽埛闀垮害涓嶈兘瓒呰繃 40 涓瓧绗�")
-    private String bankAccount;
-
-    @Schema(description = "鍦板潃", example = "娣卞湷甯傚崡灞卞尯")
-    @Size(max = 200, message = "鍦板潃闀垮害涓嶈兘瓒呰繃 200 涓瓧绗�")
-    private String address;
-
-    @Schema(description = "鎵嬫満鍙�", example = "15601691300")
-    @Size(max = 13, message = "鎵嬫満鍙烽暱搴︿笉鑳借秴杩� 13 涓瓧绗�")
-    private String mobile;
-
-    @Schema(description = "搴ф満鍙�", example = "0755-88888888")
-    @Size(max = 13, message = "搴ф満鍙烽暱搴︿笉鑳借秴杩� 13 涓瓧绗�")
-    private String telephone;
-
-    @Schema(description = "鑱旂郴浜�", example = "鐜嬩簲")
-    @Size(max = 30, message = "鑱旂郴浜洪暱搴︿笉鑳借秴杩� 30 涓瓧绗�")
-    private String contact;
-
-    @Schema(description = "Email", example = "wms@example.com")
-    @Size(max = 50, message = "Email 闀垮害涓嶈兘瓒呰繃 50 涓瓧绗�")
-    private String email;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @Size(max = 255, message = "澶囨敞闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String remark;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/WmsWarehouseController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/WmsWarehouseController.java
deleted file mode 100644
index fcb1981..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/WmsWarehouseController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.warehouse;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehousePageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 浠撳簱")
-@RestController
-@RequestMapping("/wms/warehouse")
-@Validated
-public class WmsWarehouseController {
-
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓浠撳簱")
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:create')")
-    public CommonResult<Long> createWarehouse(@Valid @RequestBody WmsWarehouseSaveReqVO createReqVO) {
-        return success(warehouseService.createWarehouse(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊浠撳簱")
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:update')")
-    public CommonResult<Boolean> updateWarehouse(@Valid @RequestBody WmsWarehouseSaveReqVO updateReqVO) {
-        warehouseService.updateWarehouse(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎浠撳簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:delete')")
-    public CommonResult<Boolean> deleteWarehouse(@RequestParam("id") Long id) {
-        warehouseService.deleteWarehouse(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱浠撳簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:query')")
-    public CommonResult<WmsWarehouseRespVO> getWarehouse(@RequestParam("id") Long id) {
-        WmsWarehouseDO warehouse = warehouseService.getWarehouse(id);
-        return success(BeanUtils.toBean(warehouse, WmsWarehouseRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱浠撳簱鍒嗛〉")
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:query')")
-    public CommonResult<PageResult<WmsWarehouseRespVO>> getWarehousePage(@Valid WmsWarehousePageReqVO pageReqVO) {
-        PageResult<WmsWarehouseDO> pageResult = warehouseService.getWarehousePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, WmsWarehouseRespVO.class));
-    }
-
-    @GetMapping("/simple-list")
-    @Operation(summary = "鑾峰緱浠撳簱绮剧畝鍒楄〃", description = "涓昏鐢ㄤ簬鍓嶇涓嬫媺")
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:query')")
-    public CommonResult<List<WmsWarehouseRespVO>> getWarehouseSimpleList() {
-        List<WmsWarehouseDO> list = warehouseService.getWarehouseList();
-        return success(BeanUtils.toBean(list, WmsWarehouseRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭浠撳簱 Excel")
-    @PreAuthorize("@ss.hasPermission('wms:warehouse:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportWarehouseExcel(@Valid WmsWarehousePageReqVO pageReqVO,
-                                     HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsWarehouseDO> list = warehouseService.getWarehousePage(pageReqVO).getList();
-        ExcelUtils.write(response, "浠撳簱.xls", "鏁版嵁", WmsWarehouseRespVO.class,
-                BeanUtils.toBean(list, WmsWarehouseRespVO.class));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehousePageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehousePageReqVO.java
deleted file mode 100644
index 43fcf5c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehousePageReqVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 浠撳簱鍒嗛〉 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsWarehousePageReqVO extends PageParam {
-
-    @Schema(description = "浠撳簱缂栧彿", example = "WH001")
-    private String code;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍘熸枡浠�")
-    private String name;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehouseRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehouseRespVO.java
deleted file mode 100644
index 67c16bf..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehouseRespVO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 浠撳簱 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsWarehouseRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @ExcelProperty("缂栧彿")
-    private Long id;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "WH001")
-    @ExcelProperty("浠撳簱缂栧彿")
-    private String code;
-
-    @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍘熸枡浠�")
-    @ExcelProperty("浠撳簱鍚嶇О")
-    private String name;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @ExcelProperty("澶囨敞")
-    private String remark;
-
-    @Schema(description = "鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("鎺掑簭")
-    private Integer sort;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehouseSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehouseSaveReqVO.java
deleted file mode 100644
index cb2da87..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/md/warehouse/vo/WmsWarehouseSaveReqVO.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 浠撳簱鏂板/淇敼 Request VO")
-@Data
-public class WmsWarehouseSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "WH001")
-    @NotEmpty(message = "浠撳簱缂栧彿涓嶈兘涓虹┖")
-    @Size(max = 20, message = "浠撳簱缂栧彿闀垮害涓嶈兘瓒呰繃 20 涓瓧绗�")
-    private String code;
-
-    @Schema(description = "浠撳簱鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍘熸枡浠�")
-    @NotEmpty(message = "浠撳簱鍚嶇О涓嶈兘涓虹┖")
-    private String name;
-
-    @Schema(description = "鎺掑簭", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "鎺掑簭涓嶈兘涓虹┖")
-    private Integer sort;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/WmsCheckOrderController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/WmsCheckOrderController.java
deleted file mode 100644
index 9c0cd09..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/WmsCheckOrderController.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.NumberUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗�")
-@RestController
-@RequestMapping("/wms/check-order")
-@Validated
-public class WmsCheckOrderController {
-
-    @Resource
-    private WmsCheckOrderService checkOrderService;
-    @Resource
-    private WmsCheckOrderDetailService checkOrderDetailService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鐩樺簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:check-order:create')")
-    public CommonResult<Long> createCheckOrder(@Valid @RequestBody WmsCheckOrderSaveReqVO createReqVO) {
-        return success(checkOrderService.createCheckOrder(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鐩樺簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:check-order:update')")
-    public CommonResult<Boolean> updateCheckOrder(@Valid @RequestBody WmsCheckOrderSaveReqVO updateReqVO) {
-        checkOrderService.updateCheckOrder(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鐩樺簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:check-order:delete')")
-    public CommonResult<Boolean> deleteCheckOrder(@RequestParam("id") Long id) {
-        checkOrderService.deleteCheckOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/complete")
-    @Operation(summary = "瀹屾垚鐩樺簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:check-order:complete')")
-    public CommonResult<Boolean> completeCheckOrder(@RequestParam("id") Long id) {
-        checkOrderService.completeCheckOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/cancel")
-    @Operation(summary = "浣滃簾鐩樺簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:check-order:cancel')")
-    public CommonResult<Boolean> cancelCheckOrder(@RequestParam("id") Long id) {
-        checkOrderService.cancelCheckOrder(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鐩樺簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:check-order:query')")
-    public CommonResult<WmsCheckOrderRespVO> getCheckOrder(@RequestParam("id") Long id) {
-        WmsCheckOrderDO order = checkOrderService.getCheckOrder(id);
-        if (order == null) {
-            return success(null);
-        }
-        // 鑾峰緱鐩樺簱鍗曠殑鏄庣粏鍒楄〃
-        List<WmsCheckOrderDetailDO> detailList = checkOrderDetailService.getCheckOrderDetailList(id);
-        // 鎷兼帴缁撴灉杩斿洖
-        WmsCheckOrderRespVO respVO = buildCheckOrderRespVO(order)
-                .setDetails(buildCheckOrderDetailRespVOList(detailList));
-        return success(respVO);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鐩樺簱鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('wms:check-order:query')")
-    public CommonResult<PageResult<WmsCheckOrderRespVO>> getCheckOrderPage(@Valid WmsCheckOrderPageReqVO pageReqVO) {
-        PageResult<WmsCheckOrderDO> pageResult = checkOrderService.getCheckOrderPage(pageReqVO);
-        return success(new PageResult<>(buildCheckOrderRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鐩樺簱鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('wms:check-order:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportCheckOrderExcel(@Valid WmsCheckOrderPageReqVO pageReqVO,
-                                      HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsCheckOrderDO> list = checkOrderService.getCheckOrderPage(pageReqVO).getList();
-        ExcelUtils.write(response, "鐩樺簱鍗�.xls", "鏁版嵁", WmsCheckOrderRespVO.class,
-                buildCheckOrderRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private WmsCheckOrderRespVO buildCheckOrderRespVO(WmsCheckOrderDO order) {
-        if (order == null) {
-            return null;
-        }
-        List<WmsCheckOrderRespVO> list = buildCheckOrderRespVOList(Collections.singletonList(order));
-        return CollUtil.getFirst(list);
-    }
-
-    private List<WmsCheckOrderRespVO> buildCheckOrderRespVOList(List<WmsCheckOrderDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勪粨搴撱�佺敤鎴风瓑鏁版嵁
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSet(list, WmsCheckOrderDO::getWarehouseId));
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(list,
-                order -> Stream.of(parseUserId(order.getCreator()), parseUserId(order.getUpdater()))));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsCheckOrderRespVO.class, vo -> {
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getCreator()), user -> vo.setCreatorName(user.getNickname()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getUpdater()), user -> vo.setUpdaterName(user.getNickname()));
-        });
-    }
-
-    private Long parseUserId(String userId) {
-        return NumberUtil.parseLong(userId, null);
-    }
-
-    private List<WmsCheckOrderDetailRespVO> buildCheckOrderDetailRespVOList(List<WmsCheckOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勫晢鍝併�丼KU銆佷粨搴撶瓑鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsCheckOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsCheckOrderDetailDO::getWarehouseId));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsCheckOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/WmsCheckOrderDetailController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/WmsCheckOrderDetailController.java
deleted file mode 100644
index 2519825..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/WmsCheckOrderDetailController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderDetailService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗曟槑缁�")
-@RestController
-@RequestMapping("/wms/check-order-detail")
-@Validated
-public class WmsCheckOrderDetailController {
-
-    @Resource
-    private WmsCheckOrderDetailService checkOrderDetailService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @GetMapping("/list-by-order-id")
-    @Operation(summary = "鑾峰緱鐩樺簱鍗曟槑缁嗗垪琛�")
-    @Parameter(name = "orderId", description = "鐩樺簱鍗曠紪鍙�", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:check-order:query')")
-    public CommonResult<List<WmsCheckOrderDetailRespVO>> getCheckOrderDetailListByOrderId(
-            @RequestParam("orderId") Long orderId) {
-        List<WmsCheckOrderDetailDO> list = checkOrderDetailService.getCheckOrderDetailList(orderId);
-        return success(buildCheckOrderDetailRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsCheckOrderDetailRespVO> buildCheckOrderDetailRespVOList(List<WmsCheckOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鏌ヨ鍏宠仈鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsCheckOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsCheckOrderDetailDO::getWarehouseId));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsCheckOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/detail/WmsCheckOrderDetailRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/detail/WmsCheckOrderDetailRespVO.java
deleted file mode 100644
index 399caa3..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/detail/WmsCheckOrderDetailRespVO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗曟槑缁� Response VO")
-@Data
-public class WmsCheckOrderDetailRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鐩樺簱鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long orderId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "2048")
-    private Long itemId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "SPU-APPLE")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧鍗曚綅", example = "绠�")
-    private String unit;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long skuId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU-APPLE-10KG")
-    private String skuCode;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    private String warehouseName;
-
-    @Schema(description = "搴撳瓨缂栧彿", example = "1024")
-    private Long inventoryId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    private LocalDateTime receiptTime;
-
-    @Schema(description = "璐﹂潰鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    private BigDecimal quantity;
-
-    @Schema(description = "瀹炵洏鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "98.00")
-    private BigDecimal checkQuantity;
-
-    @Schema(description = "鍗曚环", example = "1000.00")
-    private BigDecimal price;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/detail/WmsCheckOrderDetailSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/detail/WmsCheckOrderDetailSaveReqVO.java
deleted file mode 100644
index 709ddba..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/detail/WmsCheckOrderDetailSaveReqVO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.DecimalMin;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗曟槑缁嗕繚瀛� Request VO")
-@Data
-public class WmsCheckOrderDetailSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "SKU 涓嶈兘涓虹┖")
-    private Long skuId;
-
-    @Schema(description = "搴撳瓨缂栧彿", example = "1024")
-    private Long inventoryId;
-
-    @Schema(description = "鍏ュ簱鏃堕棿")
-    private LocalDateTime receiptTime;
-
-    @Schema(description = "璐﹂潰鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @NotNull(message = "璐﹂潰鏁伴噺涓嶈兘涓虹┖")
-    @DecimalMin(value = "0", message = "璐﹂潰鏁伴噺涓嶈兘灏忎簬 0")
-    private BigDecimal quantity;
-
-    @Schema(description = "瀹炵洏鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "98.00")
-    @NotNull(message = "瀹炵洏鏁伴噺涓嶈兘涓虹┖")
-    @DecimalMin(value = "0", message = "瀹炵洏鏁伴噺涓嶈兘灏忎簬 0")
-    private BigDecimal checkQuantity;
-
-    @Schema(description = "鍗曚环", example = "1000.00")
-    @DecimalMin(value = "0", message = "鍗曚环涓嶈兘灏忎簬 0")
-    private BigDecimal price;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderPageReqVO.java
deleted file mode 100644
index 2182fc6..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderPageReqVO.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsCheckOrderPageReqVO extends PageParam {
-
-    @Schema(description = "鐩樺簱鍗曞彿", example = "PK202605110001")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鐘舵��", example = "0")
-    @InEnum(WmsOrderStatusEnum.class)
-    private Integer status;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] orderTime;
-
-    @Schema(description = "鏈�灏忕泩浜忔暟閲�", example = "-10.00")
-    private BigDecimal totalQuantityMin;
-
-    @Schema(description = "鏈�澶х泩浜忔暟閲�", example = "100.00")
-    private BigDecimal totalQuantityMax;
-
-    @Schema(description = "鏈�灏忔�婚噾棰�", example = "1.00")
-    private BigDecimal totalPriceMin;
-
-    @Schema(description = "鏈�澶ф�婚噾棰�", example = "1000.00")
-    private BigDecimal totalPriceMax;
-
-    @Schema(description = "鏈�灏忓疄闄呴噾棰�", example = "1.00")
-    private BigDecimal actualPriceMin;
-
-    @Schema(description = "鏈�澶у疄闄呴噾棰�", example = "1000.00")
-    private BigDecimal actualPriceMax;
-
-    @Schema(description = "鍒涘缓鐢ㄦ埛", example = "1")
-    private String creator;
-
-    @Schema(description = "鏇存柊鐢ㄦ埛", example = "1")
-    private String updater;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "鏇存柊鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] updateTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderRespVO.java
deleted file mode 100644
index 962de82..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderRespVO.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsCheckOrderRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鐩樺簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "PK202605110001")
-    @ExcelProperty("鐩樺簱鍗曞彿")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍗曟嵁鏃ユ湡")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "鐩樺簱鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty(value = "鐩樺簱鐘舵��", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.ORDER_STATUS)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    @ExcelProperty("浠撳簱")
-    private String warehouseName;
-
-    @Schema(description = "鐩堜簭鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @ExcelProperty("鐩堜簭鏁伴噺")
-    private BigDecimal totalQuantity;
-
-    @Schema(description = "鎬婚噾棰濓紙璐﹂潰閲戦锛�", example = "1000.00")
-    @ExcelProperty("鎬婚噾棰�")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "瀹為檯閲戦", example = "980.00")
-    @ExcelProperty("瀹為檯閲戦")
-    private BigDecimal actualPrice;
-
-    @Schema(description = "鐩樺簱鏄庣粏")
-    private List<WmsCheckOrderDetailRespVO> details;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍒涘缓鑰�", example = "1")
-    private String creator;
-    @Schema(description = "鍒涘缓鑰呭悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鏇存柊鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime updateTime;
-
-    @Schema(description = "鏇存柊鑰�", example = "1")
-    private String updater;
-    @Schema(description = "鏇存柊鑰呭悕绉�", example = "鑺嬮亾")
-    private String updaterName;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderSaveReqVO.java
deleted file mode 100644
index 21660ce..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/check/vo/order/WmsCheckOrderSaveReqVO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order;
-
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailSaveReqVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鐩樺簱鍗曚繚瀛� Request VO")
-@Data
-public class WmsCheckOrderSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "鐩樺簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "PK202605110001")
-    @NotBlank(message = "鐩樺簱鍗曞彿涓嶈兘涓虹┖")
-    @Size(max = 64, message = "鐩樺簱鍗曞彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍗曟嵁鏃ユ湡涓嶈兘涓虹┖")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @Size(max = 255, message = "澶囨敞闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String remark;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "浠撳簱涓嶈兘涓虹┖")
-    private Long warehouseId;
-
-    @Schema(description = "鐩樺簱鏄庣粏")
-    @Valid
-    private List<WmsCheckOrderDetailSaveReqVO> details;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/WmsMovementOrderController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/WmsMovementOrderController.java
deleted file mode 100644
index d993392..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/WmsMovementOrderController.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.NumberUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 绉诲簱鍗�")
-@RestController
-@RequestMapping("/wms/movement-order")
-@Validated
-public class WmsMovementOrderController {
-
-    @Resource
-    private WmsMovementOrderService movementOrderService;
-    @Resource
-    private WmsMovementOrderDetailService movementOrderDetailService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓绉诲簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:create')")
-    public CommonResult<Long> createMovementOrder(@Valid @RequestBody WmsMovementOrderSaveReqVO createReqVO) {
-        return success(movementOrderService.createMovementOrder(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊绉诲簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:update')")
-    public CommonResult<Boolean> updateMovementOrder(@Valid @RequestBody WmsMovementOrderSaveReqVO updateReqVO) {
-        movementOrderService.updateMovementOrder(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎绉诲簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:delete')")
-    public CommonResult<Boolean> deleteMovementOrder(@RequestParam("id") Long id) {
-        movementOrderService.deleteMovementOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/complete")
-    @Operation(summary = "瀹屾垚绉诲簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:complete')")
-    public CommonResult<Boolean> completeMovementOrder(@RequestParam("id") Long id) {
-        movementOrderService.completeMovementOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/cancel")
-    @Operation(summary = "浣滃簾绉诲簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:cancel')")
-    public CommonResult<Boolean> cancelMovementOrder(@RequestParam("id") Long id) {
-        movementOrderService.cancelMovementOrder(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱绉诲簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:query')")
-    public CommonResult<WmsMovementOrderRespVO> getMovementOrder(@RequestParam("id") Long id) {
-        WmsMovementOrderDO order = movementOrderService.getMovementOrder(id);
-        if (order == null) {
-            return success(null);
-        }
-        // 鑾峰緱绉诲簱鍗曠殑鏄庣粏鍒楄〃
-        List<WmsMovementOrderDetailDO> detailList = movementOrderDetailService.getMovementOrderDetailList(id);
-        // 鎷兼帴缁撴灉杩斿洖
-        WmsMovementOrderRespVO respVO = buildMovementOrderRespVO(order)
-                .setDetails(buildMovementOrderDetailRespVOList(detailList));
-        return success(respVO);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱绉诲簱鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:query')")
-    public CommonResult<PageResult<WmsMovementOrderRespVO>> getMovementOrderPage(
-            @Valid WmsMovementOrderPageReqVO pageReqVO) {
-        PageResult<WmsMovementOrderDO> pageResult = movementOrderService.getMovementOrderPage(pageReqVO);
-        return success(new PageResult<>(buildMovementOrderRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭绉诲簱鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportMovementOrderExcel(@Valid WmsMovementOrderPageReqVO pageReqVO,
-                                         HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsMovementOrderDO> list = movementOrderService.getMovementOrderPage(pageReqVO).getList();
-        ExcelUtils.write(response, "绉诲簱鍗�.xls", "鏁版嵁", WmsMovementOrderRespVO.class,
-                buildMovementOrderRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private WmsMovementOrderRespVO buildMovementOrderRespVO(WmsMovementOrderDO order) {
-        if (order == null) {
-            return null;
-        }
-        List<WmsMovementOrderRespVO> list = buildMovementOrderRespVOList(Collections.singletonList(order));
-        return CollUtil.getFirst(list);
-    }
-
-    private List<WmsMovementOrderRespVO> buildMovementOrderRespVOList(List<WmsMovementOrderDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勪粨搴撱�佺敤鎴风瓑鏁版嵁
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSetByFlatMap(list,
-                order -> Stream.of(order.getSourceWarehouseId(), order.getTargetWarehouseId())));
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(list,
-                order -> Stream.of(parseUserId(order.getCreator()), parseUserId(order.getUpdater()))));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsMovementOrderRespVO.class, vo -> {
-            MapUtils.findAndThen(warehouseMap, vo.getSourceWarehouseId(),
-                    warehouse -> vo.setSourceWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(warehouseMap, vo.getTargetWarehouseId(),
-                    warehouse -> vo.setTargetWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getCreator()), user -> vo.setCreatorName(user.getNickname()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getUpdater()), user -> vo.setUpdaterName(user.getNickname()));
-        });
-    }
-
-    private Long parseUserId(String userId) {
-        return NumberUtil.parseLong(userId, null);
-    }
-
-    private List<WmsMovementOrderDetailRespVO> buildMovementOrderDetailRespVOList(List<WmsMovementOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勫晢鍝併�丼KU銆佷粨搴撶瓑鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsMovementOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSetByFlatMap(list,
-                detail -> Stream.of(detail.getSourceWarehouseId(), detail.getTargetWarehouseId())));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsMovementOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getSourceWarehouseId(),
-                    warehouse -> vo.setSourceWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(warehouseMap, vo.getTargetWarehouseId(),
-                    warehouse -> vo.setTargetWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/WmsMovementOrderDetailController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/WmsMovementOrderDetailController.java
deleted file mode 100644
index 092a367..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/WmsMovementOrderDetailController.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderDetailService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 绉诲簱鍗曟槑缁�")
-@RestController
-@RequestMapping("/wms/movement-order-detail")
-@Validated
-public class WmsMovementOrderDetailController {
-
-    @Resource
-    private WmsMovementOrderDetailService movementOrderDetailService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @GetMapping("/list-by-order-id")
-    @Operation(summary = "鑾峰緱绉诲簱鍗曟槑缁嗗垪琛�")
-    @Parameter(name = "orderId", description = "绉诲簱鍗曠紪鍙�", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:movement-order:query')")
-    public CommonResult<List<WmsMovementOrderDetailRespVO>> getMovementOrderDetailListByOrderId(
-            @RequestParam("orderId") Long orderId) {
-        List<WmsMovementOrderDetailDO> list = movementOrderDetailService.getMovementOrderDetailList(orderId);
-        return success(buildMovementOrderDetailRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsMovementOrderDetailRespVO> buildMovementOrderDetailRespVOList(List<WmsMovementOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鏌ヨ鍏宠仈鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsMovementOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSetByFlatMap(list,
-                detail -> Stream.of(detail.getSourceWarehouseId(), detail.getTargetWarehouseId())));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsMovementOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getSourceWarehouseId(),
-                    warehouse -> vo.setSourceWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(warehouseMap, vo.getTargetWarehouseId(),
-                    warehouse -> vo.setTargetWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailRespVO.java
deleted file mode 100644
index 5136534..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailRespVO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 绉诲簱鍗曟槑缁� Response VO")
-@Data
-public class WmsMovementOrderDetailRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "绉诲簱鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long orderId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "2048")
-    private Long itemId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "SPU-APPLE")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧鍗曚綅", example = "绠�")
-    private String unit;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long skuId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU-APPLE-10KG")
-    private String skuCode;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "鏉ユ簮浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long sourceWarehouseId;
-
-    @Schema(description = "鏉ユ簮浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    private String sourceWarehouseName;
-
-    @Schema(description = "鐩爣浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long targetWarehouseId;
-
-    @Schema(description = "鐩爣浠撳簱鍚嶇О", example = "涓婃捣浠�")
-    private String targetWarehouseName;
-
-    @Schema(description = "绉诲簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍗曚环", example = "100.00")
-    private BigDecimal price;
-
-    @Schema(description = "琛岄噾棰�", example = "1000.00")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailSaveReqVO.java
deleted file mode 100644
index 28b412e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/detail/WmsMovementOrderDetailSaveReqVO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.DecimalMin;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 绉诲簱鍗曟槑缁嗕繚瀛� Request VO")
-@Data
-public class WmsMovementOrderDetailSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "SKU 涓嶈兘涓虹┖")
-    private Long skuId;
-
-    @Schema(description = "绉诲簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @NotNull(message = "绉诲簱鏁伴噺涓嶈兘涓虹┖")
-    @DecimalMin(value = "0", inclusive = false, message = "绉诲簱鏁伴噺蹇呴』澶т簬 0")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍗曚环", example = "100.00")
-    @DecimalMin(value = "0", message = "鍗曚环涓嶈兘灏忎簬 0")
-    private BigDecimal price;
-
-    @Schema(description = "琛岄噾棰�", example = "1000.00")
-    @DecimalMin(value = "0", message = "琛岄噾棰濅笉鑳藉皬浜� 0")
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderPageReqVO.java
deleted file mode 100644
index c59bc11..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderPageReqVO.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 绉诲簱鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsMovementOrderPageReqVO extends PageParam {
-
-    @Schema(description = "绉诲簱鍗曞彿", example = "YK202605110001")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鐘舵��", example = "0")
-    @InEnum(WmsOrderStatusEnum.class)
-    private Integer status;
-
-    @Schema(description = "鏉ユ簮浠撳簱缂栧彿", example = "1024")
-    private Long sourceWarehouseId;
-
-    @Schema(description = "鐩爣浠撳簱缂栧彿", example = "2048")
-    private Long targetWarehouseId;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] orderTime;
-
-    @Schema(description = "鏈�灏忔暟閲�", example = "1.00")
-    private BigDecimal totalQuantityMin;
-
-    @Schema(description = "鏈�澶ф暟閲�", example = "100.00")
-    private BigDecimal totalQuantityMax;
-
-    @Schema(description = "鏈�灏忔�婚噾棰�", example = "1.00")
-    private BigDecimal totalPriceMin;
-
-    @Schema(description = "鏈�澶ф�婚噾棰�", example = "1000.00")
-    private BigDecimal totalPriceMax;
-
-    @Schema(description = "鍒涘缓鐢ㄦ埛", example = "1")
-    private String creator;
-
-    @Schema(description = "鏇存柊鐢ㄦ埛", example = "1")
-    private String updater;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "鏇存柊鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] updateTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderRespVO.java
deleted file mode 100644
index ecad02e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderRespVO.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 绉诲簱鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsMovementOrderRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "绉诲簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "YK202605110001")
-    @ExcelProperty("绉诲簱鍗曞彿")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍗曟嵁鏃ユ湡")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "绉诲簱鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty(value = "绉诲簱鐘舵��", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.ORDER_STATUS)
-    private Integer status;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-
-    @Schema(description = "鏉ユ簮浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long sourceWarehouseId;
-
-    @Schema(description = "鏉ユ簮浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    @ExcelProperty("鏉ユ簮浠撳簱")
-    private String sourceWarehouseName;
-
-    @Schema(description = "鐩爣浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long targetWarehouseId;
-
-    @Schema(description = "鐩爣浠撳簱鍚嶇О", example = "涓婃捣浠�")
-    @ExcelProperty("鐩爣浠撳簱")
-    private String targetWarehouseName;
-
-    @Schema(description = "绉诲簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @ExcelProperty("绉诲簱鏁伴噺")
-    private BigDecimal totalQuantity;
-
-    @Schema(description = "鎬婚噾棰�", example = "1000.00")
-    @ExcelProperty("鎬婚噾棰�")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "绉诲簱鏄庣粏")
-    private List<WmsMovementOrderDetailRespVO> details;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍒涘缓鑰�", example = "1")
-    private String creator;
-    @Schema(description = "鍒涘缓鑰呭悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鏇存柊鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime updateTime;
-
-    @Schema(description = "鏇存柊鑰�", example = "1")
-    private String updater;
-    @Schema(description = "鏇存柊鑰呭悕绉�", example = "鑺嬮亾")
-    private String updaterName;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderSaveReqVO.java
deleted file mode 100644
index 982d30d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/movement/vo/order/WmsMovementOrderSaveReqVO.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order;
-
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailSaveReqVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 绉诲簱鍗曚繚瀛� Request VO")
-@Data
-public class WmsMovementOrderSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "绉诲簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "YK202605110001")
-    @NotBlank(message = "绉诲簱鍗曞彿涓嶈兘涓虹┖")
-    @Size(max = 64, message = "绉诲簱鍗曞彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍗曟嵁鏃ユ湡涓嶈兘涓虹┖")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @Size(max = 255, message = "澶囨敞闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String remark;
-
-    @Schema(description = "鏉ユ簮浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "鏉ユ簮浠撳簱涓嶈兘涓虹┖")
-    private Long sourceWarehouseId;
-
-    @Schema(description = "鐩爣浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "鐩爣浠撳簱涓嶈兘涓虹┖")
-    private Long targetWarehouseId;
-
-    @Schema(description = "绉诲簱鏄庣粏")
-    @Valid
-    private List<WmsMovementOrderDetailSaveReqVO> details;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/WmsReceiptOrderController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/WmsReceiptOrderController.java
deleted file mode 100644
index c1a2fe6..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/WmsReceiptOrderController.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.NumberUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗�")
-@RestController
-@RequestMapping("/wms/receipt-order")
-@Validated
-public class WmsReceiptOrderController {
-
-    @Resource
-    private WmsReceiptOrderService receiptOrderService;
-    @Resource
-    private WmsReceiptOrderDetailService receiptOrderDetailService;
-    @Resource
-    private WmsMerchantService merchantService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍏ュ簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:create')")
-    public CommonResult<Long> createReceiptOrder(@Valid @RequestBody WmsReceiptOrderSaveReqVO createReqVO) {
-        return success(receiptOrderService.createReceiptOrder(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍏ュ簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:update')")
-    public CommonResult<Boolean> updateReceiptOrder(@Valid @RequestBody WmsReceiptOrderSaveReqVO updateReqVO) {
-        receiptOrderService.updateReceiptOrder(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍏ュ簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:delete')")
-    public CommonResult<Boolean> deleteReceiptOrder(@RequestParam("id") Long id) {
-        receiptOrderService.deleteReceiptOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/complete")
-    @Operation(summary = "瀹屾垚鍏ュ簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:complete')")
-    public CommonResult<Boolean> completeReceiptOrder(@RequestParam("id") Long id) {
-        receiptOrderService.completeReceiptOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/cancel")
-    @Operation(summary = "浣滃簾鍏ュ簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:cancel')")
-    public CommonResult<Boolean> cancelReceiptOrder(@RequestParam("id") Long id) {
-        receiptOrderService.cancelReceiptOrder(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍏ュ簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:query')")
-    public CommonResult<WmsReceiptOrderRespVO> getReceiptOrder(@RequestParam("id") Long id) {
-        WmsReceiptOrderDO order = receiptOrderService.getReceiptOrder(id);
-        if (order == null) {
-            return success(null);
-        }
-        // 鑾峰緱鍏ュ簱鍗曠殑鏄庣粏鍒楄〃
-        List<WmsReceiptOrderDetailDO> detailList = receiptOrderDetailService.getReceiptOrderDetailList(id);
-        // 鎷兼帴缁撴灉杩斿洖
-        WmsReceiptOrderRespVO respVO = buildReceiptOrderRespVO(order)
-                .setDetails(buildReceiptOrderDetailRespVOList(detailList));
-        return success(respVO);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍏ュ簱鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:query')")
-    public CommonResult<PageResult<WmsReceiptOrderRespVO>> getReceiptOrderPage(@Valid WmsReceiptOrderPageReqVO pageReqVO) {
-        PageResult<WmsReceiptOrderDO> pageResult = receiptOrderService.getReceiptOrderPage(pageReqVO);
-        return success(new PageResult<>(buildReceiptOrderRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鍏ュ簱鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportReceiptOrderExcel(@Valid WmsReceiptOrderPageReqVO pageReqVO,
-                                        HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsReceiptOrderDO> list = receiptOrderService.getReceiptOrderPage(pageReqVO).getList();
-        ExcelUtils.write(response, "鍏ュ簱鍗�.xls", "鏁版嵁", WmsReceiptOrderRespVO.class,
-                buildReceiptOrderRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private WmsReceiptOrderRespVO buildReceiptOrderRespVO(WmsReceiptOrderDO order) {
-        if (order == null) {
-            return null;
-        }
-        List<WmsReceiptOrderRespVO> list = buildReceiptOrderRespVOList(Collections.singletonList(order));
-        return CollUtil.getFirst(list);
-    }
-
-    private List<WmsReceiptOrderRespVO> buildReceiptOrderRespVOList(List<WmsReceiptOrderDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勫晢鎴枫�佷粨搴撱�佺敤鎴风瓑鏁版嵁
-        Map<Long, WmsMerchantDO> merchantMap = merchantService.getMerchantMap(convertSet(list, WmsReceiptOrderDO::getMerchantId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSet(list, WmsReceiptOrderDO::getWarehouseId));
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(list,
-                order -> Stream.of(parseUserId(order.getCreator()), parseUserId(order.getUpdater()))));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsReceiptOrderRespVO.class, vo -> {
-            MapUtils.findAndThen(merchantMap, vo.getMerchantId(), merchant -> vo.setMerchantName(merchant.getName()));
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getCreator()), user -> vo.setCreatorName(user.getNickname()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getUpdater()), user -> vo.setUpdaterName(user.getNickname()));
-        });
-    }
-
-    private Long parseUserId(String userId) {
-        return NumberUtil.parseLong(userId, null);
-    }
-
-    private List<WmsReceiptOrderDetailRespVO> buildReceiptOrderDetailRespVOList(List<WmsReceiptOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勫晢鍝併�丼KU銆佷粨搴撶瓑鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsReceiptOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsReceiptOrderDetailDO::getWarehouseId));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsReceiptOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/WmsReceiptOrderDetailController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/WmsReceiptOrderDetailController.java
deleted file mode 100644
index d443feb..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/WmsReceiptOrderDetailController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderDetailService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗曟槑缁�")
-@RestController
-@RequestMapping("/wms/receipt-order-detail")
-@Validated
-public class WmsReceiptOrderDetailController {
-
-    @Resource
-    private WmsReceiptOrderDetailService receiptOrderDetailService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @GetMapping("/list-by-order-id")
-    @Operation(summary = "鑾峰緱鍏ュ簱鍗曟槑缁嗗垪琛�")
-    @Parameter(name = "orderId", description = "鍏ュ簱鍗曠紪鍙�", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:receipt-order:query')")
-    public CommonResult<List<WmsReceiptOrderDetailRespVO>> getReceiptOrderDetailListByOrderId(
-            @RequestParam("orderId") Long orderId) {
-        List<WmsReceiptOrderDetailDO> list = receiptOrderDetailService.getReceiptOrderDetailList(orderId);
-        return success(buildReceiptOrderDetailRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsReceiptOrderDetailRespVO> buildReceiptOrderDetailRespVOList(List<WmsReceiptOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鏌ヨ鍏宠仈鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsReceiptOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsReceiptOrderDetailDO::getWarehouseId));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsReceiptOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailRespVO.java
deleted file mode 100644
index 4c72b93..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailRespVO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗曟槑缁� Response VO")
-@Data
-public class WmsReceiptOrderDetailRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鍏ュ簱鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long orderId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "2048")
-    private Long itemId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "SPU-APPLE")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧鍗曚綅", example = "绠�")
-    private String unit;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long skuId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU-APPLE-10KG")
-    private String skuCode;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    private String warehouseName;
-
-    @Schema(description = "鍏ュ簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍗曚环", example = "1000.00")
-    private BigDecimal price;
-
-    @Schema(description = "琛岄噾棰�", example = "1500.00")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailSaveReqVO.java
deleted file mode 100644
index a74cc90..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/detail/WmsReceiptOrderDetailSaveReqVO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.DecimalMin;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗曟槑缁嗕繚瀛� Request VO")
-@Data
-public class WmsReceiptOrderDetailSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "SKU 涓嶈兘涓虹┖")
-    private Long skuId;
-
-    @Schema(description = "鍏ュ簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @NotNull(message = "鍏ュ簱鏁伴噺涓嶈兘涓虹┖")
-    @DecimalMin(value = "0", inclusive = false, message = "鍏ュ簱鏁伴噺蹇呴』澶т簬 0")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍗曚环", example = "1000.00")
-    @DecimalMin(value = "0", message = "鍗曚环涓嶈兘灏忎簬 0")
-    private BigDecimal price;
-
-    @Schema(description = "琛岄噾棰�", example = "1500.00")
-    @DecimalMin(value = "0", message = "琛岄噾棰濅笉鑳藉皬浜� 0")
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderPageReqVO.java
deleted file mode 100644
index 351d150..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderPageReqVO.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsReceiptOrderTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsReceiptOrderPageReqVO extends PageParam {
-
-    @Schema(description = "鍏ュ簱鍗曞彿", example = "RK202605110001")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鐘舵��", example = "0")
-    @InEnum(WmsOrderStatusEnum.class)
-    private Integer status;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1024")
-    private Long merchantId;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] orderTime;
-
-    @Schema(description = "鏈�灏忔暟閲�", example = "1.00")
-    private BigDecimal totalQuantityMin;
-
-    @Schema(description = "鏈�澶ф暟閲�", example = "100.00")
-    private BigDecimal totalQuantityMax;
-
-    @Schema(description = "鏈�灏忔�婚噾棰�", example = "1.00")
-    private BigDecimal totalPriceMin;
-
-    @Schema(description = "鏈�澶ф�婚噾棰�", example = "1000.00")
-    private BigDecimal totalPriceMax;
-
-    @Schema(description = "鍏ュ簱绫诲瀷", example = "101")
-    @InEnum(WmsReceiptOrderTypeEnum.class)
-    private Integer type;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "PO202605110001")
-    private String bizOrderNo;
-
-    @Schema(description = "鍒涘缓鐢ㄦ埛", example = "1")
-    private String creator;
-
-    @Schema(description = "鏇存柊鐢ㄦ埛", example = "1")
-    private String updater;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "鏇存柊鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] updateTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderRespVO.java
deleted file mode 100644
index 24d3b04..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderRespVO.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsReceiptOrderRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鍏ュ簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "RK202605110001")
-    @ExcelProperty("鍏ュ簱鍗曞彿")
-    private String no;
-
-    @Schema(description = "鍏ュ簱绫诲瀷", requiredMode = Schema.RequiredMode.REQUIRED, example = "101")
-    @ExcelProperty(value = "鍏ュ簱绫诲瀷", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.RECEIPT_ORDER_TYPE)
-    private Integer type;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍗曟嵁鏃ユ湡")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "鍏ュ簱鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty(value = "鍏ュ簱鐘舵��", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.ORDER_STATUS)
-    private Integer status;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "PO202605110001")
-    @ExcelProperty("涓氬姟鍗曞彿")
-    private String bizOrderNo;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1024")
-    private Long merchantId;
-
-    @Schema(description = "渚涘簲鍟嗗悕绉�", example = "鏌愭煇鍏徃")
-    @ExcelProperty("渚涘簲鍟�")
-    private String merchantName;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    @ExcelProperty("浠撳簱")
-    private String warehouseName;
-
-    @Schema(description = "鍏ュ簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @ExcelProperty("鍏ュ簱鏁伴噺")
-    private BigDecimal totalQuantity;
-
-    @Schema(description = "鎬婚噾棰�", example = "1000.00")
-    @ExcelProperty("鎬婚噾棰�")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鍏ュ簱鏄庣粏")
-    private List<WmsReceiptOrderDetailRespVO> details;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍒涘缓鑰�", example = "1")
-    private String creator;
-    @Schema(description = "鍒涘缓鑰呭悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鏇存柊鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime updateTime;
-
-    @Schema(description = "鏇存柊鑰�", example = "1")
-    private String updater;
-    @Schema(description = "鏇存柊鑰呭悕绉�", example = "鑺嬮亾")
-    private String updaterName;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderSaveReqVO.java
deleted file mode 100644
index b8619fc..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/receipt/vo/order/WmsReceiptOrderSaveReqVO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order;
-
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.enums.order.WmsReceiptOrderTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍏ュ簱鍗曚繚瀛� Request VO")
-@Data
-public class WmsReceiptOrderSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "鍏ュ簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "RK202605110001")
-    @NotBlank(message = "鍏ュ簱鍗曞彿涓嶈兘涓虹┖")
-    @Size(max = 64, message = "鍏ュ簱鍗曞彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String no;
-
-    @Schema(description = "鍏ュ簱绫诲瀷", requiredMode = Schema.RequiredMode.REQUIRED, example = "101")
-    @NotNull(message = "鍏ュ簱绫诲瀷涓嶈兘涓虹┖")
-    @InEnum(WmsReceiptOrderTypeEnum.class)
-    private Integer type;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍗曟嵁鏃ユ湡涓嶈兘涓虹┖")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "PO202605110001")
-    @Size(max = 64, message = "涓氬姟鍗曞彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String bizOrderNo;
-
-    @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1024")
-    private Long merchantId;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @Size(max = 255, message = "澶囨敞闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String remark;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "浠撳簱涓嶈兘涓虹┖")
-    private Long warehouseId;
-
-    @Schema(description = "鍏ュ簱鏄庣粏")
-    @Valid
-    private List<WmsReceiptOrderDetailSaveReqVO> details;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/WmsShipmentOrderController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/WmsShipmentOrderController.java
deleted file mode 100644
index 65e9153..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/WmsShipmentOrderController.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.NumberUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗�")
-@RestController
-@RequestMapping("/wms/shipment-order")
-@Validated
-public class WmsShipmentOrderController {
-
-    @Resource
-    private WmsShipmentOrderService shipmentOrderService;
-    @Resource
-    private WmsShipmentOrderDetailService shipmentOrderDetailService;
-    @Resource
-    private WmsMerchantService merchantService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Resource
-    private AdminUserApi adminUserApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "鍒涘缓鍑哄簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:create')")
-    public CommonResult<Long> createShipmentOrder(@Valid @RequestBody WmsShipmentOrderSaveReqVO createReqVO) {
-        return success(shipmentOrderService.createShipmentOrder(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "鏇存柊鍑哄簱鍗�")
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:update')")
-    public CommonResult<Boolean> updateShipmentOrder(@Valid @RequestBody WmsShipmentOrderSaveReqVO updateReqVO) {
-        shipmentOrderService.updateShipmentOrder(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "鍒犻櫎鍑哄簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:delete')")
-    public CommonResult<Boolean> deleteShipmentOrder(@RequestParam("id") Long id) {
-        shipmentOrderService.deleteShipmentOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/complete")
-    @Operation(summary = "瀹屾垚鍑哄簱")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:complete')")
-    public CommonResult<Boolean> completeShipmentOrder(@RequestParam("id") Long id) {
-        shipmentOrderService.completeShipmentOrder(id);
-        return success(true);
-    }
-
-    @PutMapping("/cancel")
-    @Operation(summary = "浣滃簾鍑哄簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true)
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:cancel')")
-    public CommonResult<Boolean> cancelShipmentOrder(@RequestParam("id") Long id) {
-        shipmentOrderService.cancelShipmentOrder(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "鑾峰緱鍑哄簱鍗�")
-    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:query')")
-    public CommonResult<WmsShipmentOrderRespVO> getShipmentOrder(@RequestParam("id") Long id) {
-        WmsShipmentOrderDO order = shipmentOrderService.getShipmentOrder(id);
-        if (order == null) {
-            return success(null);
-        }
-        // 鑾峰緱鍑哄簱鍗曠殑鏄庣粏鍒楄〃
-        List<WmsShipmentOrderDetailDO> detailList = shipmentOrderDetailService.getShipmentOrderDetailList(id);
-        // 鎷兼帴缁撴灉杩斿洖
-        WmsShipmentOrderRespVO respVO = buildShipmentOrderRespVO(order)
-                .setDetails(buildShipmentOrderDetailRespVOList(detailList));
-        return success(respVO);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "鑾峰緱鍑哄簱鍗曞垎椤�")
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:query')")
-    public CommonResult<PageResult<WmsShipmentOrderRespVO>> getShipmentOrderPage(@Valid WmsShipmentOrderPageReqVO pageReqVO) {
-        PageResult<WmsShipmentOrderDO> pageResult = shipmentOrderService.getShipmentOrderPage(pageReqVO);
-        return success(new PageResult<>(buildShipmentOrderRespVOList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "瀵煎嚭鍑哄簱鍗� Excel")
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportShipmentOrderExcel(@Valid WmsShipmentOrderPageReqVO pageReqVO,
-                                        HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WmsShipmentOrderDO> list = shipmentOrderService.getShipmentOrderPage(pageReqVO).getList();
-        ExcelUtils.write(response, "鍑哄簱鍗�.xls", "鏁版嵁", WmsShipmentOrderRespVO.class,
-                buildShipmentOrderRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private WmsShipmentOrderRespVO buildShipmentOrderRespVO(WmsShipmentOrderDO order) {
-        if (order == null) {
-            return null;
-        }
-        List<WmsShipmentOrderRespVO> list = buildShipmentOrderRespVOList(Collections.singletonList(order));
-        return CollUtil.getFirst(list);
-    }
-
-    private List<WmsShipmentOrderRespVO> buildShipmentOrderRespVOList(List<WmsShipmentOrderDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勫晢鎴枫�佷粨搴撱�佺敤鎴风瓑鏁版嵁
-        Map<Long, WmsMerchantDO> merchantMap = merchantService.getMerchantMap(convertSet(list, WmsShipmentOrderDO::getMerchantId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSet(list, WmsShipmentOrderDO::getWarehouseId));
-        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(list,
-                order -> Stream.of(parseUserId(order.getCreator()), parseUserId(order.getUpdater()))));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsShipmentOrderRespVO.class, vo -> {
-            MapUtils.findAndThen(merchantMap, vo.getMerchantId(), merchant -> vo.setMerchantName(merchant.getName()));
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getCreator()), user -> vo.setCreatorName(user.getNickname()));
-            MapUtils.findAndThen(userMap, parseUserId(vo.getUpdater()), user -> vo.setUpdaterName(user.getNickname()));
-        });
-    }
-
-    private Long parseUserId(String userId) {
-        return NumberUtil.parseLong(userId, null);
-    }
-
-    private List<WmsShipmentOrderDetailRespVO> buildShipmentOrderDetailRespVOList(List<WmsShipmentOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鑾峰彇鐩稿叧鐨勫晢鍝併�丼KU銆佷粨搴撶瓑鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsShipmentOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsShipmentOrderDetailDO::getWarehouseId));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsShipmentOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/WmsShipmentOrderDetailController.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/WmsShipmentOrderDetailController.java
deleted file mode 100644
index f9cd14d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/WmsShipmentOrderDetailController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderDetailService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-
-@Tag(name = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗曟槑缁�")
-@RestController
-@RequestMapping("/wms/shipment-order-detail")
-@Validated
-public class WmsShipmentOrderDetailController {
-
-    @Resource
-    private WmsShipmentOrderDetailService shipmentOrderDetailService;
-    @Resource
-    private WmsItemService itemService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @GetMapping("/list-by-order-id")
-    @Operation(summary = "鑾峰緱鍑哄簱鍗曟槑缁嗗垪琛�")
-    @Parameter(name = "orderId", description = "鍑哄簱鍗曠紪鍙�", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('wms:shipment-order:query')")
-    public CommonResult<List<WmsShipmentOrderDetailRespVO>> getShipmentOrderDetailListByOrderId(
-            @RequestParam("orderId") Long orderId) {
-        List<WmsShipmentOrderDetailDO> list = shipmentOrderDetailService.getShipmentOrderDetailList(orderId);
-        return success(buildShipmentOrderDetailRespVOList(list));
-    }
-
-    // ==================== 鎷兼帴 VO ====================
-
-    private List<WmsShipmentOrderDetailRespVO> buildShipmentOrderDetailRespVOList(List<WmsShipmentOrderDetailDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return Collections.emptyList();
-        }
-        // 鏌ヨ鍏宠仈鏁版嵁
-        Map<Long, WmsItemSkuDO> skuMap = itemSkuService.getItemSkuMap(convertSet(list, WmsShipmentOrderDetailDO::getSkuId));
-        Map<Long, WmsItemDO> itemMap = itemService.getItemMap(convertSet(skuMap.values(), WmsItemSkuDO::getItemId));
-        Map<Long, WmsWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
-                convertSet(list, WmsShipmentOrderDetailDO::getWarehouseId));
-        // 鎷兼帴鏁版嵁
-        return BeanUtils.toBean(list, WmsShipmentOrderDetailRespVO.class, vo -> {
-            MapUtils.findAndThen(skuMap, vo.getSkuId(), sku -> {
-                vo.setSkuCode(sku.getCode()).setSkuName(sku.getName()).setItemId(sku.getItemId());
-                MapUtils.findAndThen(itemMap, sku.getItemId(), item -> vo.setItemCode(item.getCode())
-                        .setItemName(item.getName()).setUnit(item.getUnit()));
-            });
-            MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName()));
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailRespVO.java
deleted file mode 100644
index 80e9538..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailRespVO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗曟槑缁� Response VO")
-@Data
-public class WmsShipmentOrderDetailRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鍑哄簱鍗曠紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long orderId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "2048")
-    private Long itemId;
-
-    @Schema(description = "鍟嗗搧缂栧彿", example = "SPU-APPLE")
-    private String itemCode;
-
-    @Schema(description = "鍟嗗搧鍚嶇О", example = "绾㈠瘜澹嫻鏋�")
-    private String itemName;
-
-    @Schema(description = "鍟嗗搧鍗曚綅", example = "绠�")
-    private String unit;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    private Long skuId;
-
-    @Schema(description = "瑙勬牸缂栧彿", example = "SKU-APPLE-10KG")
-    private String skuCode;
-
-    @Schema(description = "瑙勬牸鍚嶇О", example = "10kg 绠辫")
-    private String skuName;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    private String warehouseName;
-
-    @Schema(description = "鍑哄簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍗曚环", example = "100.00")
-    private BigDecimal price;
-
-    @Schema(description = "琛岄噾棰�", example = "1000.00")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailSaveReqVO.java
deleted file mode 100644
index be8a8ba..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/detail/WmsShipmentOrderDetailSaveReqVO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.DecimalMin;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗曟槑缁嗕繚瀛� Request VO")
-@Data
-public class WmsShipmentOrderDetailSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "SKU 缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "SKU 涓嶈兘涓虹┖")
-    private Long skuId;
-
-    @Schema(description = "鍑哄簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @NotNull(message = "鍑哄簱鏁伴噺涓嶈兘涓虹┖")
-    @DecimalMin(value = "0", inclusive = false, message = "鍑哄簱鏁伴噺蹇呴』澶т簬 0")
-    private BigDecimal quantity;
-
-    @Schema(description = "鍗曚环", example = "100.00")
-    @DecimalMin(value = "0", message = "鍗曚环涓嶈兘灏忎簬 0")
-    private BigDecimal price;
-
-    @Schema(description = "琛岄噾棰�", example = "1000.00")
-    @DecimalMin(value = "0", message = "琛岄噾棰濅笉鑳藉皬浜� 0")
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderPageReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderPageReqVO.java
deleted file mode 100644
index 2a9f058..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderPageReqVO.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsShipmentOrderTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗曞垎椤� Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class WmsShipmentOrderPageReqVO extends PageParam {
-
-    @Schema(description = "鍑哄簱鍗曞彿", example = "CK202605110001")
-    private String no;
-
-    @Schema(description = "鍗曟嵁鐘舵��", example = "0")
-    @InEnum(WmsOrderStatusEnum.class)
-    private Integer status;
-
-    @Schema(description = "浠撳簱缂栧彿", example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "1024")
-    private Long merchantId;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] orderTime;
-
-    @Schema(description = "鏈�灏忔暟閲�", example = "1.00")
-    private BigDecimal totalQuantityMin;
-
-    @Schema(description = "鏈�澶ф暟閲�", example = "100.00")
-    private BigDecimal totalQuantityMax;
-
-    @Schema(description = "鏈�灏忔�婚噾棰�", example = "1.00")
-    private BigDecimal totalPriceMin;
-
-    @Schema(description = "鏈�澶ф�婚噾棰�", example = "1000.00")
-    private BigDecimal totalPriceMax;
-
-    @Schema(description = "鍑哄簱绫诲瀷", example = "201")
-    @InEnum(WmsShipmentOrderTypeEnum.class)
-    private Integer type;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "SO202605110001")
-    private String bizOrderNo;
-
-    @Schema(description = "鍒涘缓鐢ㄦ埛", example = "1")
-    private String creator;
-
-    @Schema(description = "鏇存柊鐢ㄦ埛", example = "1")
-    private String updater;
-
-    @Schema(description = "鍒涘缓鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "鏇存柊鏃堕棿")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] updateTime;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderRespVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderRespVO.java
deleted file mode 100644
index b391c1d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderRespVO.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order;
-
-import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
-import cn.idev.excel.annotation.ExcelProperty;
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailRespVO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗� Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class WmsShipmentOrderRespVO {
-
-    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long id;
-
-    @Schema(description = "鍑哄簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "CK202605110001")
-    @ExcelProperty("鍑哄簱鍗曞彿")
-    private String no;
-
-    @Schema(description = "鍑哄簱绫诲瀷", requiredMode = Schema.RequiredMode.REQUIRED, example = "201")
-    @ExcelProperty(value = "鍑哄簱绫诲瀷", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.SHIPMENT_ORDER_TYPE)
-    private Integer type;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍗曟嵁鏃ユ湡")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "鍑哄簱鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty(value = "鍑哄簱鐘舵��", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.ORDER_STATUS)
-    private Integer status;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "SO202605110001")
-    @ExcelProperty("涓氬姟鍗曞彿")
-    private String bizOrderNo;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "1024")
-    private Long merchantId;
-
-    @Schema(description = "瀹㈡埛鍚嶇О", example = "鏌愭煇鍏徃")
-    @ExcelProperty("瀹㈡埛")
-    private String merchantName;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    private String remark;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Long warehouseId;
-
-    @Schema(description = "浠撳簱鍚嶇О", example = "鍖椾含浠�")
-    @ExcelProperty("浠撳簱")
-    private String warehouseName;
-
-    @Schema(description = "鍑哄簱鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
-    @ExcelProperty("鍑哄簱鏁伴噺")
-    private BigDecimal totalQuantity;
-
-    @Schema(description = "鎬婚噾棰�", example = "1000.00")
-    @ExcelProperty("鎬婚噾棰�")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鍑哄簱鏄庣粏")
-    private List<WmsShipmentOrderDetailRespVO> details;
-
-    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @Schema(description = "鍒涘缓鑰�", example = "1")
-    private String creator;
-    @Schema(description = "鍒涘缓鑰呭悕绉�", example = "鑺嬮亾")
-    private String creatorName;
-
-    @Schema(description = "鏇存柊鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime updateTime;
-
-    @Schema(description = "鏇存柊鑰�", example = "1")
-    private String updater;
-    @Schema(description = "鏇存柊鑰呭悕绉�", example = "鑺嬮亾")
-    private String updaterName;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderSaveReqVO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderSaveReqVO.java
deleted file mode 100644
index 232b92d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/order/shipment/vo/order/WmsShipmentOrderSaveReqVO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order;
-
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.enums.order.WmsShipmentOrderTypeEnum;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "绠$悊鍚庡彴 - WMS 鍑哄簱鍗曚繚瀛� Request VO")
-@Data
-public class WmsShipmentOrderSaveReqVO {
-
-    @Schema(description = "缂栧彿", example = "1024")
-    private Long id;
-
-    @Schema(description = "鍑哄簱鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "CK202605110001")
-    @NotBlank(message = "鍑哄簱鍗曞彿涓嶈兘涓虹┖")
-    @Size(max = 64, message = "鍑哄簱鍗曞彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String no;
-
-    @Schema(description = "鍑哄簱绫诲瀷", requiredMode = Schema.RequiredMode.REQUIRED, example = "201")
-    @NotNull(message = "鍑哄簱绫诲瀷涓嶈兘涓虹┖")
-    @InEnum(WmsShipmentOrderTypeEnum.class)
-    private Integer type;
-
-    @Schema(description = "鍗曟嵁鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "鍗曟嵁鏃ユ湡涓嶈兘涓虹┖")
-    private LocalDateTime orderTime;
-
-    @Schema(description = "涓氬姟鍗曞彿", example = "SO202605110001")
-    @Size(max = 64, message = "涓氬姟鍗曞彿闀垮害涓嶈兘瓒呰繃 64 涓瓧绗�")
-    private String bizOrderNo;
-
-    @Schema(description = "瀹㈡埛缂栧彿", example = "1024")
-    private Long merchantId;
-
-    @Schema(description = "澶囨敞", example = "澶囨敞")
-    @Size(max = 255, message = "澶囨敞闀垮害涓嶈兘瓒呰繃 255 涓瓧绗�")
-    private String remark;
-
-    @Schema(description = "浠撳簱缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "浠撳簱涓嶈兘涓虹┖")
-    private Long warehouseId;
-
-    @Schema(description = "鍑哄簱鏄庣粏")
-    @Valid
-    private List<WmsShipmentOrderDetailSaveReqVO> details;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/package-info.java
deleted file mode 100644
index 7f2a55f..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/admin/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * WMS 绠$悊鍚庡彴 API
- */
-package cn.iocoder.yudao.module.wms.controller.admin;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/package-info.java
deleted file mode 100644
index c75d9df..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/controller/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * 鎻愪緵 RESTful API 缁欏墠绔細
- * 1. admin 鍖咃細鎻愪緵缁欑鐞嗗悗鍙� yudao-ui-admin 鍓嶇椤圭洰
- * 2. app 鍖咃細鎻愪緵缁欑敤鎴� APP yudao-ui-app 鍓嶇椤圭洰锛屽畠鐨� Controller 鍜� VO 閮借娣诲姞 App 鍓嶇紑锛岀敤浜庡拰绠$悊鍚庡彴杩涜鍖哄垎
- */
-package cn.iocoder.yudao.module.wms.controller;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryDO.java
deleted file mode 100644
index 577af72..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryDO.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.inventory;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * WMS 搴撳瓨 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_inventory")
-@KeySequence("wms_inventory_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsInventoryDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍟嗗搧 SKU 缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemSkuDO#getId()}
-     */
-    private Long skuId;
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 搴撳瓨鏁伴噺
-     */
-    private BigDecimal quantity;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryHistoryDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryHistoryDO.java
deleted file mode 100644
index 224940a..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/inventory/WmsInventoryHistoryDO.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.inventory;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * WMS 搴撳瓨娴佹按 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_inventory_history")
-@KeySequence("wms_inventory_history_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsInventoryHistoryDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-
-    // ========= 搴撳瓨缁村害鐩稿叧瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 鍟嗗搧 SKU 缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemSkuDO#getId()}
-     */
-    private Long skuId;
-    /**
-     * 搴撳瓨鍙樺寲鏁伴噺
-     */
-    private BigDecimal quantity;
-    /**
-     * 鍙樺寲鍓嶅簱瀛樻暟閲�
-     */
-    private BigDecimal beforeQuantity;
-    /**
-     * 鍙樺寲鍚庡簱瀛樻暟閲�
-     */
-    private BigDecimal afterQuantity;
-
-    // ========= 鍗曚环澶囨敞鐩稿叧瀛楁 =========
-
-    /**
-     * 鍗曚环
-     */
-    private BigDecimal price;
-    /**
-     * 搴撳瓨鍙樺寲閲戦
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-    // ========= 鏉ユ簮鍗曟嵁鐩稿叧瀛楁 =========
-
-    /**
-     * 鍗曟嵁缂栧彿
-     */
-    private Long orderId;
-    /**
-     * 鍗曟嵁鍙�
-     */
-    private String orderNo;
-    /**
-     * 鍗曟嵁绫诲瀷
-     *
-     * 鏋氫妇 {@link WmsOrderTypeEnum#getType()}
-     */
-    private Integer orderType;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemBrandDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemBrandDO.java
deleted file mode 100644
index ab41e05..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemBrandDO.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.md.item;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * WMS 鍟嗗搧鍝佺墝 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_item_brand")
-@KeySequence("wms_item_brand_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsItemBrandDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍝佺墝缂栧彿
-     */
-    private String code;
-    /**
-     * 鍝佺墝鍚嶇О
-     */
-    private String name;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemCategoryDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemCategoryDO.java
deleted file mode 100644
index ded9228..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemCategoryDO.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.md.item;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * WMS 鍟嗗搧鍒嗙被 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_item_category")
-@KeySequence("wms_item_category_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsItemCategoryDO extends BaseDO {
-
-    /**
-     * 鐖剁骇缂栧彿 - 鏍硅妭鐐�
-     */
-    public static final Long PARENT_ID_ROOT = 0L;
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鐖剁骇缂栧彿
-     *
-     * 鍏宠仈 {@link #id}
-     */
-    private Long parentId;
-    /**
-     * 鍒嗙被缂栧彿
-     */
-    private String code;
-    /**
-     * 鍒嗙被鍚嶇О
-     */
-    private String name;
-    /**
-     * 鎺掑簭
-     */
-    private Integer sort;
-    /**
-     * 鐘舵��
-     *
-     * 鏋氫妇 {@link CommonStatusEnum}
-     */
-    private Integer status;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemDO.java
deleted file mode 100644
index 9a14d3a..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemDO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.md.item;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * WMS 鍟嗗搧 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_item")
-@KeySequence("wms_item_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsItemDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍟嗗搧缂栧彿
-     */
-    private String code;
-    /**
-     * 鍟嗗搧鍚嶇О
-     */
-    private String name;
-    /**
-     * 鍗曚綅
-     */
-    private String unit;
-    /**
-     * 鍟嗗搧鍒嗙被缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemCategoryDO#getId()}
-     */
-    private Long categoryId;
-    /**
-     * 鍟嗗搧鍝佺墝缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemBrandDO#getId()}
-     */
-    private Long brandId;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemSkuDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemSkuDO.java
deleted file mode 100644
index 7236b49..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/item/WmsItemSkuDO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.md.item;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * WMS 鍟嗗搧 SKU DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_item_sku")
-@KeySequence("wms_item_sku_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsItemSkuDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 瑙勬牸鍚嶇О
-     */
-    private String name;
-    /**
-     * 鍟嗗搧缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemDO#getId()}
-     */
-    private Long itemId;
-    /**
-     * 鏉$爜
-     */
-    private String barCode;
-    /**
-     * 瑙勬牸缂栧彿
-     */
-    private String code;
-
-    /**
-     * 闀匡紝鍗曚綅 cm
-     */
-    private BigDecimal length;
-    /**
-     * 瀹斤紝鍗曚綅 cm
-     */
-    private BigDecimal width;
-    /**
-     * 楂橈紝鍗曚綅 cm
-     */
-    private BigDecimal height;
-
-    /**
-     * 姣涢噸锛屽崟浣� kg
-     */
-    private BigDecimal grossWeight;
-    /**
-     * 鍑�閲嶏紝鍗曚綅 kg
-     */
-    private BigDecimal netWeight;
-
-    /**
-     * 鎴愭湰浠凤紝鍗曚綅鍏�
-     */
-    private BigDecimal costPrice;
-    /**
-     * 閿�鍞环锛屽崟浣嶅厓
-     */
-    private BigDecimal sellingPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/merchant/WmsMerchantDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/merchant/WmsMerchantDO.java
deleted file mode 100644
index 60b4c4d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/merchant/WmsMerchantDO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.enums.md.WmsMerchantTypeEnum;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * WMS 寰�鏉ヤ紒涓� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_merchant")
-@KeySequence("wms_merchant_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsMerchantDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 寰�鏉ヤ紒涓氱紪鍙�
-     */
-    private String code;
-    /**
-     * 寰�鏉ヤ紒涓氬悕绉�
-     */
-    private String name;
-    /**
-     * 寰�鏉ヤ紒涓氱被鍨�
-     *
-     * 鏋氫妇 {@link WmsMerchantTypeEnum}
-     */
-    private Integer type;
-    /**
-     * 绾у埆
-     */
-    private String level;
-    /**
-     * 寮�鎴疯
-     */
-    private String bankName;
-    /**
-     * 閾惰璐︽埛
-     */
-    private String bankAccount;
-    /**
-     * 鍦板潃
-     */
-    private String address;
-    /**
-     * 鎵嬫満鍙�
-     */
-    private String mobile;
-    /**
-     * 搴ф満鍙�
-     */
-    private String telephone;
-    /**
-     * 鑱旂郴浜�
-     */
-    private String contact;
-    /**
-     * Email
-     */
-    private String email;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/warehouse/WmsWarehouseDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/warehouse/WmsWarehouseDO.java
deleted file mode 100644
index e73c112..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/md/warehouse/WmsWarehouseDO.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * WMS 浠撳簱 DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_warehouse")
-@KeySequence("wms_warehouse_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsWarehouseDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 浠撳簱缂栧彿
-     */
-    private String code;
-    /**
-     * 鍚嶇О
-     */
-    private String name;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-    /**
-     * 鎺掑簭
-     */
-    private Integer sort;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDO.java
deleted file mode 100644
index 7ebe50a..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDO.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.check;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * WMS 鐩樺簱鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_check_order")
-@KeySequence("wms_check_order_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsCheckOrderDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鐩樺簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 鍗曟嵁鏃ユ湡
-     */
-    private LocalDateTime orderTime;
-    /**
-     * 鐩樺簱鐘舵��
-     *
-     * 瀛楀吀 {@link DictTypeConstants#ORDER_STATUS}
-     */
-    private Integer status;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-    // ========= 浠撳簱瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-
-    // ========= 姹囨�婚噾棰濆瓧娈� =========
-
-    /**
-     * 鐩堜簭鏁伴噺锛堝疄鐩樻暟閲� - 璐﹂潰鏁伴噺锛�
-     */
-    private BigDecimal totalQuantity;
-    /**
-     * 鎬婚噾棰濓紙璐﹂潰鏁伴噺 * 鍗曚环锛�
-     */
-    private BigDecimal totalPrice;
-    /**
-     * 瀹為檯閲戦锛堝疄鐩樻暟閲� * 鍗曚环锛�
-     */
-    private BigDecimal actualPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDetailDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDetailDO.java
deleted file mode 100644
index 56f3553..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/check/WmsCheckOrderDetailDO.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.check;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * WMS 鐩樺簱鍗曟槑缁� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_check_order_detail")
-@KeySequence("wms_check_order_detail_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsCheckOrderDetailDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    // ========= 鍗曟嵁鍟嗗搧瀛楁 =========
-
-    /**
-     * 鐩樺簱鍗曠紪鍙�
-     *
-     * 鍏宠仈 {@link WmsCheckOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 鍟嗗搧 SKU 缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemSkuDO#getId()}
-     */
-    private Long skuId;
-
-    // ========= 浠撳簱瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-    /**
-     * 搴撳瓨缂栧彿
-     *
-     * 鍏宠仈 {@link WmsInventoryDO#getId()}
-     */
-    private Long inventoryId;
-
-    /**
-     * 鍏ュ簱鏃堕棿
-     */
-    private LocalDateTime receiptTime;
-
-    // ========= 鏁伴噺閲戦瀛楁 =========
-
-    /**
-     * 璐﹂潰鏁伴噺
-     */
-    private BigDecimal quantity;
-    /**
-     * 瀹炵洏鏁伴噺
-     */
-    private BigDecimal checkQuantity;
-    /**
-     * 鍗曚环
-     */
-    private BigDecimal price;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDO.java
deleted file mode 100644
index 6286409..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDO.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.movement;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * WMS 绉诲簱鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_movement_order")
-@KeySequence("wms_movement_order_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsMovementOrderDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 绉诲簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 鍗曟嵁鏃ユ湡
-     */
-    private LocalDateTime orderTime;
-    /**
-     * 绉诲簱鐘舵��
-     *
-     * 瀛楀吀 {@link DictTypeConstants#ORDER_STATUS}
-     */
-    private Integer status;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-    // ========= 鏉ユ簮浠撳簱瀛楁 =========
-
-    /**
-     * 鏉ユ簮浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long sourceWarehouseId;
-
-    // ========= 鐩爣浠撳簱瀛楁 =========
-
-    /**
-     * 鐩爣浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long targetWarehouseId;
-
-    // ========= 姹囨�婚噾棰濆瓧娈� =========
-
-    /**
-     * 鎬绘暟閲�
-     */
-    private BigDecimal totalQuantity;
-    /**
-     * 鎬婚噾棰�
-     */
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDetailDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDetailDO.java
deleted file mode 100644
index e9e9d2f..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/movement/WmsMovementOrderDetailDO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.movement;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * WMS 绉诲簱鍗曟槑缁� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_movement_order_detail")
-@KeySequence("wms_movement_order_detail_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsMovementOrderDetailDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    // ========= 鍗曟嵁鍟嗗搧瀛楁 =========
-
-    /**
-     * 绉诲簱鍗曠紪鍙�
-     *
-     * 鍏宠仈 {@link WmsMovementOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 鍟嗗搧 SKU 缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemSkuDO#getId()}
-     */
-    private Long skuId;
-
-    // ========= 鏉ユ簮浠撳簱瀛楁 =========
-
-    /**
-     * 鏉ユ簮浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long sourceWarehouseId;
-
-    // ========= 鐩爣浠撳簱瀛楁 =========
-
-    /**
-     * 鐩爣浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long targetWarehouseId;
-
-    // ========= 鏁伴噺閲戦瀛楁 =========
-
-    /**
-     * 绉诲簱鏁伴噺
-     */
-    private BigDecimal quantity;
-    /**
-     * 鍗曚环
-     */
-    private BigDecimal price;
-    /**
-     * 琛岄噾棰濓紙鏁伴噺 * 鍗曚环锛�
-     */
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDO.java
deleted file mode 100644
index 86458cf..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDO.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import cn.iocoder.yudao.module.wms.enums.order.WmsReceiptOrderTypeEnum;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * WMS 鍏ュ簱鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_receipt_order")
-@KeySequence("wms_receipt_order_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsReceiptOrderDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍏ュ簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 鍏ュ簱绫诲瀷
-     *
-     * 鏋氫妇 {@link WmsReceiptOrderTypeEnum}
-     * 瀛楀吀 {@link DictTypeConstants#RECEIPT_ORDER_TYPE}
-     */
-    private Integer type;
-    /**
-     * 鍗曟嵁鏃ユ湡
-     */
-    private LocalDateTime orderTime;
-    /**
-     * 鍏ュ簱鐘舵��
-     *
-     * 瀛楀吀 {@link DictTypeConstants#ORDER_STATUS}
-     */
-    private Integer status;
-    /**
-     * 涓氬姟璁㈠崟鍙�
-     */
-    private String bizOrderNo;
-    /**
-     * 渚涘簲鍟嗙紪鍙�
-     *
-     * 鍏宠仈 {@link WmsMerchantDO#getId()}
-     */
-    private Long merchantId;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-    // ========= 浠撳簱瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-
-    // ========= 姹囨�婚噾棰濆瓧娈� =========
-
-    /**
-     * 鎬绘暟閲�
-     */
-    private BigDecimal totalQuantity;
-    /**
-     * 鎬婚噾棰�
-     */
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDetailDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDetailDO.java
deleted file mode 100644
index 6920d36..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/receipt/WmsReceiptOrderDetailDO.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * WMS 鍏ュ簱鍗曟槑缁� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_receipt_order_detail")
-@KeySequence("wms_receipt_order_detail_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsReceiptOrderDetailDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    // ========= 鍗曟嵁鍟嗗搧瀛楁 =========
-
-    /**
-     * 鍏ュ簱鍗曠紪鍙�
-     *
-     * 鍏宠仈 {@link WmsReceiptOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 鍟嗗搧 SKU 缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemSkuDO#getId()}
-     */
-    private Long skuId;
-
-    // ========= 浠撳簱瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-
-    // ========= 鏁伴噺閲戦瀛楁 =========
-
-    /**
-     * 鍏ュ簱鏁伴噺
-     */
-    private BigDecimal quantity;
-    /**
-     * 鍗曚环
-     */
-    private BigDecimal price;
-    /**
-     * 琛岄噾棰濓紙鏁伴噺 * 鍗曚环锛�
-     */
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDO.java
deleted file mode 100644
index d2e3e4a..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDO.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.enums.DictTypeConstants;
-import cn.iocoder.yudao.module.wms.enums.order.WmsShipmentOrderTypeEnum;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * WMS 鍑哄簱鍗� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_shipment_order")
-@KeySequence("wms_shipment_order_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsShipmentOrderDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    /**
-     * 鍑哄簱鍗曞彿
-     */
-    private String no;
-    /**
-     * 鍑哄簱绫诲瀷
-     *
-     * 鏋氫妇 {@link WmsShipmentOrderTypeEnum}
-     * 瀛楀吀 {@link DictTypeConstants#SHIPMENT_ORDER_TYPE}
-     */
-    private Integer type;
-    /**
-     * 鍗曟嵁鏃ユ湡
-     */
-    private LocalDateTime orderTime;
-    /**
-     * 鍑哄簱鐘舵��
-     *
-     * 瀛楀吀 {@link DictTypeConstants#ORDER_STATUS}
-     */
-    private Integer status;
-    /**
-     * 涓氬姟璁㈠崟鍙�
-     */
-    private String bizOrderNo;
-    /**
-     * 瀹㈡埛缂栧彿
-     *
-     * 鍏宠仈 {@link WmsMerchantDO#getId()}
-     */
-    private Long merchantId;
-    /**
-     * 澶囨敞
-     */
-    private String remark;
-
-    // ========= 浠撳簱瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-
-    // ========= 姹囨�婚噾棰濆瓧娈� =========
-
-    /**
-     * 鎬绘暟閲�
-     */
-    private BigDecimal totalQuantity;
-    /**
-     * 鎬婚噾棰�
-     */
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDetailDO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDetailDO.java
deleted file mode 100644
index fdcb67e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/dataobject/order/shipment/WmsShipmentOrderDetailDO.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * WMS 鍑哄簱鍗曟槑缁� DO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@TableName("wms_shipment_order_detail")
-@KeySequence("wms_shipment_order_detail_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class WmsShipmentOrderDetailDO extends BaseDO {
-
-    /**
-     * 涓婚敭缂栧彿
-     */
-    @TableId
-    private Long id;
-    // ========= 鍗曟嵁鍟嗗搧瀛楁 =========
-
-    /**
-     * 鍑哄簱鍗曠紪鍙�
-     *
-     * 鍏宠仈 {@link WmsShipmentOrderDO#getId()}
-     */
-    private Long orderId;
-    /**
-     * 鍟嗗搧 SKU 缂栧彿
-     *
-     * 鍏宠仈 {@link WmsItemSkuDO#getId()}
-     */
-    private Long skuId;
-
-    // ========= 浠撳簱瀛楁 =========
-
-    /**
-     * 浠撳簱缂栧彿
-     *
-     * 鍏宠仈 {@link WmsWarehouseDO#getId()}
-     */
-    private Long warehouseId;
-
-    // ========= 鏁伴噺閲戦瀛楁 =========
-
-    /**
-     * 鍑哄簱鏁伴噺
-     */
-    private BigDecimal quantity;
-    /**
-     * 鍗曚环
-     */
-    private BigDecimal price;
-    /**
-     * 琛岄噾棰濓紙鏁伴噺 * 鍗曚环锛�
-     */
-    private BigDecimal totalPrice;
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/home/WmsHomeStatisticsMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/home/WmsHomeStatisticsMapper.java
deleted file mode 100644
index b752e42..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/home/WmsHomeStatisticsMapper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.home;
-
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-
-/**
- * WMS 棣栭〉缁熻 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsHomeStatisticsMapper {
-
-    /**
-     * 鎸夊崟鎹被鍨嬪拰鐘舵�佺粺璁″崟鎹暟閲�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return [{ "orderType": 1, "status": 0, "count": 5 }, ...]
-     */
-    List<Map<String, Object>> selectOrderCountGroupByTypeAndStatus(@Param("warehouseId") Long warehouseId);
-
-    /**
-     * 鎸夊ぉ鑱氬悎鍗曟嵁鏁伴噺
-     *
-     * @param beginTime >= 寮�濮嬫椂闂�
-     * @param endTime < 缁撴潫鏃堕棿
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return [{ "date": "2026-05-14", "orderType": 1, "count": 5 }, ...]
-     */
-    List<Map<String, Object>> selectDailyOrderTrend(@Param("beginTime") LocalDateTime beginTime,
-                                                    @Param("endTime") LocalDateTime endTime,
-                                                    @Param("warehouseId") Long warehouseId);
-
-    /**
-     * 缁熻搴撳瓨鎬绘暟閲�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 搴撳瓨鎬绘暟閲�
-     */
-    BigDecimal selectInventoryTotalQuantity(@Param("warehouseId") Long warehouseId);
-
-    /**
-     * 鎸夊晢鍝佺粺璁″簱瀛樻暟閲忔帓琛�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @param limit 鏁伴噺闄愬埗
-     * @return [{ "id": 1, "name": "A4 澶嶅嵃绾�", "quantity": 100 }, ...]
-     */
-    List<Map<String, Object>> selectInventoryItemRank(@Param("warehouseId") Long warehouseId,
-                                                      @Param("limit") Integer limit);
-
-    /**
-     * 鎸変粨搴撶粺璁″簱瀛樻暟閲忔帓琛�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @param limit 鏁伴噺闄愬埗
-     * @return [{ "id": 1, "name": "涓婃捣浠�", "quantity": 100 }, ...]
-     */
-    List<Map<String, Object>> selectInventoryWarehouseRank(@Param("warehouseId") Long warehouseId,
-                                                           @Param("limit") Integer limit);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/inventory/WmsInventoryHistoryMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/inventory/WmsInventoryHistoryMapper.java
deleted file mode 100644
index 196980d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/inventory/WmsInventoryHistoryMapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.inventory;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history.WmsInventoryHistoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * WMS 搴撳瓨娴佹按 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsInventoryHistoryMapper extends BaseMapperX<WmsInventoryHistoryDO> {
-
-    default PageResult<WmsInventoryHistoryDO> selectPage(WmsInventoryHistoryPageReqVO reqVO) {
-        MPJLambdaWrapperX<WmsInventoryHistoryDO> query = new MPJLambdaWrapperX<WmsInventoryHistoryDO>()
-                .selectAll(WmsInventoryHistoryDO.class)
-                .leftJoin(WmsItemSkuDO.class, WmsItemSkuDO::getId, WmsInventoryHistoryDO::getSkuId)
-                .leftJoin(WmsItemDO.class, WmsItemDO::getId, WmsItemSkuDO::getItemId)
-                .likeIfPresent(WmsItemDO::getCode, reqVO.getItemCode())
-                .likeIfPresent(WmsItemDO::getName, reqVO.getItemName())
-                .eqIfPresent(WmsInventoryHistoryDO::getSkuId, reqVO.getSkuId())
-                .likeIfPresent(WmsItemSkuDO::getCode, reqVO.getSkuCode())
-                .likeIfPresent(WmsItemSkuDO::getName, reqVO.getSkuName())
-                .eqIfPresent(WmsInventoryHistoryDO::getWarehouseId, reqVO.getWarehouseId())
-                .eqIfPresent(WmsInventoryHistoryDO::getOrderNo, reqVO.getOrderNo())
-                .eqIfPresent(WmsInventoryHistoryDO::getOrderType, reqVO.getOrderType())
-                .betweenIfPresent(WmsInventoryHistoryDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(WmsInventoryHistoryDO::getCreateTime)
-                .orderByDesc(WmsInventoryHistoryDO::getId);
-        return selectJoinPage(reqVO, WmsInventoryHistoryDO.class, query);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/inventory/WmsInventoryMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/inventory/WmsInventoryMapper.java
deleted file mode 100644
index bc9b074..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/inventory/WmsInventoryMapper.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.inventory;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * WMS 搴撳瓨 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsInventoryMapper extends BaseMapperX<WmsInventoryDO> {
-
-    default PageResult<WmsInventoryDO> selectPage(WmsInventoryPageReqVO reqVO) {
-        MPJLambdaWrapperX<WmsInventoryDO> query = new MPJLambdaWrapperX<WmsInventoryDO>()
-                .selectAll(WmsInventoryDO.class)
-                .innerJoin(WmsItemSkuDO.class, WmsItemSkuDO::getId, WmsInventoryDO::getSkuId)
-                .innerJoin(WmsItemDO.class, WmsItemDO::getId, WmsItemSkuDO::getItemId)
-                .likeIfPresent(WmsItemDO::getCode, reqVO.getItemCode())
-                .likeIfPresent(WmsItemDO::getName, reqVO.getItemName())
-                .eqIfPresent(WmsInventoryDO::getSkuId, reqVO.getSkuId())
-                .likeIfPresent(WmsItemSkuDO::getCode, reqVO.getSkuCode())
-                .likeIfPresent(WmsItemSkuDO::getName, reqVO.getSkuName())
-                .eqIfPresent(WmsInventoryDO::getWarehouseId, reqVO.getWarehouseId())
-                .geIfPresent(WmsInventoryDO::getQuantity, reqVO.getMinQuantity());
-        if (Boolean.TRUE.equals(reqVO.getOnlyPositiveQuantity())) {
-            query.gt(WmsInventoryDO::getQuantity, BigDecimal.ZERO);
-        }
-        appendDimensionOrder(query, reqVO.getType());
-        return selectJoinPage(reqVO, WmsInventoryDO.class, query);
-    }
-
-    default Long selectCountBySkuId(Long skuId) {
-        return selectCount(WmsInventoryDO::getSkuId, skuId);
-    }
-
-    default Long selectCountByWarehouseId(Long warehouseId) {
-        return selectCount(WmsInventoryDO::getWarehouseId, warehouseId);
-    }
-
-    default List<WmsInventoryDO> selectList(WmsInventoryListReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<WmsInventoryDO>()
-                .eq(WmsInventoryDO::getWarehouseId, reqVO.getWarehouseId())
-                .orderByAsc(WmsInventoryDO::getSkuId)
-                .orderByAsc(WmsInventoryDO::getId));
-    }
-
-    default WmsInventoryDO selectBySkuIdAndWarehouseId(Long skuId, Long warehouseId) {
-        return selectOne(WmsInventoryDO::getSkuId, skuId,
-                WmsInventoryDO::getWarehouseId, warehouseId);
-    }
-
-    default WmsInventoryDO selectByIdForUpdate(Long id) {
-        return selectOne(new LambdaQueryWrapperX<WmsInventoryDO>()
-                .eq(WmsInventoryDO::getId, id)
-                .last("FOR UPDATE"));
-    }
-
-    /**
-     * 鏍规嵁澶氫釜鍞竴閿紝鎵归噺鏌ヨ搴撳瓨鍒楄〃
-     *
-     * @param keys 鍞竴閿垪琛細鐢� SKU 缂栧彿 + 浠撳簱缂栧彿缁勬垚
-     * @return 搴撳瓨鍒楄〃
-     */
-    default List<WmsInventoryDO> selectListByKeys(Collection<WmsInventoryDO> keys) {
-        if (CollUtil.isEmpty(keys)) {
-            return Collections.emptyList();
-        }
-        return selectList(new LambdaQueryWrapperX<WmsInventoryDO>()
-                .and(query -> {
-                    boolean first = true;
-                    for (WmsInventoryDO key : keys) {
-                        if (!first) {
-                            query.or();
-                        }
-                        query.eq(WmsInventoryDO::getSkuId, key.getSkuId())
-                                .eq(WmsInventoryDO::getWarehouseId, key.getWarehouseId());
-                        first = false;
-                    }
-                }));
-    }
-
-    default List<WmsInventoryDO> selectListByIdsForUpdate(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        return selectList(new LambdaQueryWrapperX<WmsInventoryDO>()
-                .in(WmsInventoryDO::getId, ids)
-                .last("FOR UPDATE"));
-    }
-
-    static void appendDimensionOrder(MPJLambdaWrapperX<WmsInventoryDO> query, String type) {
-        if (StrUtil.equals(WmsInventoryPageReqVO.TYPE_WAREHOUSE, type)) {
-            query.orderByAsc(WmsInventoryDO::getWarehouseId)
-                    .orderByAsc(WmsItemSkuDO::getItemId)
-                    .orderByAsc(WmsInventoryDO::getSkuId)
-                    .orderByAsc(WmsInventoryDO::getId);
-            return;
-        }
-        if (StrUtil.equals(WmsInventoryPageReqVO.TYPE_ITEM, type)) {
-            query.orderByAsc(WmsItemSkuDO::getItemId)
-                    .orderByAsc(WmsInventoryDO::getSkuId)
-                    .orderByAsc(WmsInventoryDO::getWarehouseId)
-                    .orderByAsc(WmsInventoryDO::getId);
-            return;
-        }
-        throw new IllegalArgumentException("鏈煡搴撳瓨缁熻缁村害锛�" + type);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemBrandMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemBrandMapper.java
deleted file mode 100644
index ffb9418..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemBrandMapper.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.md.item;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * WMS 鍟嗗搧鍝佺墝 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsItemBrandMapper extends BaseMapperX<WmsItemBrandDO> {
-
-    default PageResult<WmsItemBrandDO> selectPage(WmsItemBrandPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsItemBrandDO>()
-                .likeIfPresent(WmsItemBrandDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsItemBrandDO::getName, reqVO.getName())
-                .orderByDesc(WmsItemBrandDO::getId));
-    }
-
-    default WmsItemBrandDO selectByCode(String code) {
-        return selectOne(WmsItemBrandDO::getCode, code);
-    }
-
-    default WmsItemBrandDO selectByName(String name) {
-        return selectOne(WmsItemBrandDO::getName, name);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemCategoryMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemCategoryMapper.java
deleted file mode 100644
index f95bc30..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemCategoryMapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.md.item;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategoryListReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemCategoryDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鍟嗗搧鍒嗙被 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsItemCategoryMapper extends BaseMapperX<WmsItemCategoryDO> {
-
-    default List<WmsItemCategoryDO> selectList(WmsItemCategoryListReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<WmsItemCategoryDO>()
-                .eqIfPresent(WmsItemCategoryDO::getParentId, reqVO.getParentId())
-                .likeIfPresent(WmsItemCategoryDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsItemCategoryDO::getName, reqVO.getName())
-                .eqIfPresent(WmsItemCategoryDO::getStatus, reqVO.getStatus())
-                .orderByAsc(WmsItemCategoryDO::getSort)
-                .orderByAsc(WmsItemCategoryDO::getId));
-    }
-
-    default WmsItemCategoryDO selectByParentIdAndName(Long parentId, String name) {
-        return selectOne(WmsItemCategoryDO::getParentId, parentId, WmsItemCategoryDO::getName, name);
-    }
-
-    default WmsItemCategoryDO selectByCode(String code) {
-        return selectOne(WmsItemCategoryDO::getCode, code);
-    }
-
-    default List<WmsItemCategoryDO> selectListByParentIds(Collection<Long> parentIds) {
-        return selectList(new LambdaQueryWrapperX<WmsItemCategoryDO>()
-                .in(WmsItemCategoryDO::getParentId, parentIds)
-                .orderByAsc(WmsItemCategoryDO::getSort)
-                .orderByAsc(WmsItemCategoryDO::getId));
-    }
-
-    default Long selectCountByParentId(Long parentId) {
-        return selectCount(WmsItemCategoryDO::getParentId, parentId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemMapper.java
deleted file mode 100644
index 2645ed0..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemMapper.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.md.item;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鍟嗗搧 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsItemMapper extends BaseMapperX<WmsItemDO> {
-
-    default PageResult<WmsItemDO> selectPage(WmsItemPageReqVO reqVO, Collection<Long> categoryIds) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsItemDO>()
-                .likeIfPresent(WmsItemDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsItemDO::getName, reqVO.getName())
-                .inIfPresent(WmsItemDO::getCategoryId, categoryIds)
-                .eqIfPresent(WmsItemDO::getBrandId, reqVO.getBrandId())
-                .betweenIfPresent(WmsItemDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(WmsItemDO::getId));
-    }
-
-    default List<WmsItemDO> selectList(WmsItemListReqVO reqVO, Collection<Long> categoryIds) {
-        return selectList(new LambdaQueryWrapperX<WmsItemDO>()
-                .likeIfPresent(WmsItemDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsItemDO::getName, reqVO.getName())
-                .inIfPresent(WmsItemDO::getCategoryId, categoryIds)
-                .eqIfPresent(WmsItemDO::getBrandId, reqVO.getBrandId())
-                .betweenIfPresent(WmsItemDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(WmsItemDO::getId));
-    }
-
-    default WmsItemDO selectByName(String name) {
-        return selectOne(WmsItemDO::getName, name);
-    }
-
-    default WmsItemDO selectByCode(String code) {
-        return selectOne(WmsItemDO::getCode, code);
-    }
-
-    default Long selectCountByCategoryId(Long categoryId) {
-        return selectCount(WmsItemDO::getCategoryId, categoryId);
-    }
-
-    default Long selectCountByBrandId(Long brandId) {
-        return selectCount(WmsItemDO::getBrandId, brandId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemSkuMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemSkuMapper.java
deleted file mode 100644
index 1a0d528..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/item/WmsItemSkuMapper.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * WMS 鍟嗗搧 SKU Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsItemSkuMapper extends BaseMapperX<WmsItemSkuDO> {
-
-    /**
-     * 鎸� SKU 缁村害鍒嗛〉鏌ヨ锛屾敮鎸佸晢鍝� / 鍝佺墝 / 鍒嗙被澶氳〃鑱旀煡绛涢�夈��
-     *
-     * 浣跨敤 {@link MPJLambdaWrapperX} 鏇夸唬 lite 鐨勬墜鍐� XML JOIN锛堣 lite
-     * {@code ItemSkuMapper.selectByBo}锛夛紝鑼冨紡鍙傜収鏈ā鍧� {@code WmsInventoryMapper.selectPage}銆�
-     */
-    default PageResult<WmsItemSkuDO> selectPage(WmsItemSkuPageReqVO reqVO) {
-        MPJLambdaWrapperX<WmsItemSkuDO> query = new MPJLambdaWrapperX<WmsItemSkuDO>()
-                .selectAll(WmsItemSkuDO.class)
-                .innerJoin(WmsItemDO.class, WmsItemDO::getId, WmsItemSkuDO::getItemId)
-                .likeIfPresent(WmsItemDO::getCode, reqVO.getItemCode())
-                .likeIfPresent(WmsItemDO::getName, reqVO.getItemName())
-                .eqIfPresent(WmsItemDO::getCategoryId, reqVO.getCategoryId())
-                .eqIfPresent(WmsItemDO::getBrandId, reqVO.getBrandId())
-                .likeIfPresent(WmsItemSkuDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsItemSkuDO::getName, reqVO.getName())
-                .likeIfPresent(WmsItemSkuDO::getBarCode, reqVO.getBarCode())
-                .orderByDesc(WmsItemSkuDO::getId);
-        return selectJoinPage(reqVO, WmsItemSkuDO.class, query);
-    }
-
-    default List<WmsItemSkuDO> selectListByItemId(Long itemId) {
-        return selectList(new LambdaQueryWrapperX<WmsItemSkuDO>()
-                .eq(WmsItemSkuDO::getItemId, itemId)
-                .orderByAsc(WmsItemSkuDO::getId));
-    }
-
-    default List<WmsItemSkuDO> selectListByItemIds(Collection<Long> itemIds) {
-        if (CollUtil.isEmpty(itemIds)) {
-            return Collections.emptyList();
-        }
-        return selectList(new LambdaQueryWrapperX<WmsItemSkuDO>()
-                .inIfPresent(WmsItemSkuDO::getItemId, itemIds)
-                .orderByAsc(WmsItemSkuDO::getId));
-    }
-
-    default List<WmsItemSkuDO> selectList(Collection<Long> itemIds, String code, String name) {
-        if (itemIds != null && CollUtil.isEmpty(itemIds)) {
-            return Collections.emptyList();
-        }
-        return selectList(new LambdaQueryWrapperX<WmsItemSkuDO>()
-                .inIfPresent(WmsItemSkuDO::getItemId, itemIds)
-                .likeIfPresent(WmsItemSkuDO::getCode, code)
-                .likeIfPresent(WmsItemSkuDO::getName, name)
-                .orderByAsc(WmsItemSkuDO::getId));
-    }
-
-    default void deleteByItemId(Long itemId) {
-        delete(WmsItemSkuDO::getItemId, itemId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/merchant/WmsMerchantMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/merchant/WmsMerchantMapper.java
deleted file mode 100644
index efc79f1..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/merchant/WmsMerchantMapper.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.md.merchant;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * WMS 寰�鏉ヤ紒涓� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsMerchantMapper extends BaseMapperX<WmsMerchantDO> {
-
-    default PageResult<WmsMerchantDO> selectPage(WmsMerchantPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsMerchantDO>()
-                .eqIfPresent(WmsMerchantDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsMerchantDO::getName, reqVO.getName())
-                .eqIfPresent(WmsMerchantDO::getType, reqVO.getType())
-                .inIfPresent(WmsMerchantDO::getType, reqVO.getTypes())
-                .orderByDesc(WmsMerchantDO::getId));
-    }
-
-    default List<WmsMerchantDO> selectList(WmsMerchantListReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<WmsMerchantDO>()
-                .eqIfPresent(WmsMerchantDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsMerchantDO::getName, reqVO.getName())
-                .eqIfPresent(WmsMerchantDO::getType, reqVO.getType())
-                .inIfPresent(WmsMerchantDO::getType, reqVO.getTypes())
-                .orderByDesc(WmsMerchantDO::getId));
-    }
-
-    default WmsMerchantDO selectByCode(String code) {
-        return selectOne(WmsMerchantDO::getCode, code);
-    }
-
-    default WmsMerchantDO selectByName(String name) {
-        return selectOne(WmsMerchantDO::getName, name);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/warehouse/WmsWarehouseMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/warehouse/WmsWarehouseMapper.java
deleted file mode 100644
index ff4fe46..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/md/warehouse/WmsWarehouseMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.md.warehouse;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehousePageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * WMS 浠撳簱 Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsWarehouseMapper extends BaseMapperX<WmsWarehouseDO> {
-
-    default PageResult<WmsWarehouseDO> selectPage(WmsWarehousePageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsWarehouseDO>()
-                .eqIfPresent(WmsWarehouseDO::getCode, reqVO.getCode())
-                .likeIfPresent(WmsWarehouseDO::getName, reqVO.getName())
-                .orderByAsc(WmsWarehouseDO::getSort)
-                .orderByDesc(WmsWarehouseDO::getId));
-    }
-
-    default WmsWarehouseDO selectByCode(String code) {
-        return selectOne(WmsWarehouseDO::getCode, code);
-    }
-
-    default WmsWarehouseDO selectByName(String name) {
-        return selectOne(WmsWarehouseDO::getName, name);
-    }
-
-    default List<WmsWarehouseDO> selectSimpleList() {
-        return selectList(new LambdaQueryWrapperX<WmsWarehouseDO>()
-                .orderByAsc(WmsWarehouseDO::getSort)
-                .orderByDesc(WmsWarehouseDO::getId));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/check/WmsCheckOrderDetailMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/check/WmsCheckOrderDetailMapper.java
deleted file mode 100644
index f2cd892..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/check/WmsCheckOrderDetailMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.check;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鐩樺簱鍗曟槑缁� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsCheckOrderDetailMapper extends BaseMapperX<WmsCheckOrderDetailDO> {
-
-    default List<WmsCheckOrderDetailDO> selectListByOrderId(Long orderId) {
-        return selectList(WmsCheckOrderDetailDO::getOrderId, orderId);
-    }
-
-    default List<WmsCheckOrderDetailDO> selectListByOrderIds(Collection<Long> orderIds) {
-        return selectList(new LambdaQueryWrapperX<WmsCheckOrderDetailDO>()
-                .inIfPresent(WmsCheckOrderDetailDO::getOrderId, orderIds)
-                .orderByAsc(WmsCheckOrderDetailDO::getOrderId)
-                .orderByAsc(WmsCheckOrderDetailDO::getId));
-    }
-
-    default void deleteByOrderId(Long orderId) {
-        delete(WmsCheckOrderDetailDO::getOrderId, orderId);
-    }
-
-    default Long selectCountBySkuId(Long skuId) {
-        return selectCount(WmsCheckOrderDetailDO::getSkuId, skuId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/check/WmsCheckOrderMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/check/WmsCheckOrderMapper.java
deleted file mode 100644
index 9871e76..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/check/WmsCheckOrderMapper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.check;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDO;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * WMS 鐩樺簱鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsCheckOrderMapper extends BaseMapperX<WmsCheckOrderDO> {
-
-    default PageResult<WmsCheckOrderDO> selectPage(WmsCheckOrderPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsCheckOrderDO>()
-                .likeIfPresent(WmsCheckOrderDO::getNo, reqVO.getNo())
-                .eqIfPresent(WmsCheckOrderDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(WmsCheckOrderDO::getWarehouseId, reqVO.getWarehouseId())
-                .betweenIfPresent(WmsCheckOrderDO::getOrderTime, reqVO.getOrderTime())
-                .geIfPresent(WmsCheckOrderDO::getTotalQuantity, reqVO.getTotalQuantityMin())
-                .leIfPresent(WmsCheckOrderDO::getTotalQuantity, reqVO.getTotalQuantityMax())
-                .geIfPresent(WmsCheckOrderDO::getTotalPrice, reqVO.getTotalPriceMin())
-                .leIfPresent(WmsCheckOrderDO::getTotalPrice, reqVO.getTotalPriceMax())
-                .geIfPresent(WmsCheckOrderDO::getActualPrice, reqVO.getActualPriceMin())
-                .leIfPresent(WmsCheckOrderDO::getActualPrice, reqVO.getActualPriceMax())
-                .eqIfPresent(WmsCheckOrderDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(WmsCheckOrderDO::getUpdater, reqVO.getUpdater())
-                .betweenIfPresent(WmsCheckOrderDO::getCreateTime, reqVO.getCreateTime())
-                .betweenIfPresent(WmsCheckOrderDO::getUpdateTime, reqVO.getUpdateTime())
-                .orderByDesc(WmsCheckOrderDO::getId));
-    }
-
-    default WmsCheckOrderDO selectByNo(String no) {
-        return selectOne(WmsCheckOrderDO::getNo, no);
-    }
-
-    default Long selectCountByWarehouseId(Long warehouseId) {
-        return selectCount(WmsCheckOrderDO::getWarehouseId, warehouseId);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, WmsCheckOrderDO updateObj) {
-        return update(updateObj, new LambdaQueryWrapper<WmsCheckOrderDO>()
-                .eq(WmsCheckOrderDO::getId, id)
-                .eq(WmsCheckOrderDO::getStatus, status));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/movement/WmsMovementOrderDetailMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/movement/WmsMovementOrderDetailMapper.java
deleted file mode 100644
index 4e7eb3a..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/movement/WmsMovementOrderDetailMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.movement;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 绉诲簱鍗曟槑缁� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsMovementOrderDetailMapper extends BaseMapperX<WmsMovementOrderDetailDO> {
-
-    default List<WmsMovementOrderDetailDO> selectListByOrderId(Long orderId) {
-        return selectList(WmsMovementOrderDetailDO::getOrderId, orderId);
-    }
-
-    default List<WmsMovementOrderDetailDO> selectListByOrderIds(Collection<Long> orderIds) {
-        return selectList(new LambdaQueryWrapperX<WmsMovementOrderDetailDO>()
-                .inIfPresent(WmsMovementOrderDetailDO::getOrderId, orderIds)
-                .orderByAsc(WmsMovementOrderDetailDO::getOrderId)
-                .orderByAsc(WmsMovementOrderDetailDO::getId));
-    }
-
-    default void deleteByOrderId(Long orderId) {
-        delete(WmsMovementOrderDetailDO::getOrderId, orderId);
-    }
-
-    default Long selectCountBySkuId(Long skuId) {
-        return selectCount(WmsMovementOrderDetailDO::getSkuId, skuId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/movement/WmsMovementOrderMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/movement/WmsMovementOrderMapper.java
deleted file mode 100644
index 3375902..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/movement/WmsMovementOrderMapper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.movement;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDO;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * WMS 绉诲簱鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsMovementOrderMapper extends BaseMapperX<WmsMovementOrderDO> {
-
-    default PageResult<WmsMovementOrderDO> selectPage(WmsMovementOrderPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsMovementOrderDO>()
-                .likeIfPresent(WmsMovementOrderDO::getNo, reqVO.getNo())
-                .eqIfPresent(WmsMovementOrderDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(WmsMovementOrderDO::getSourceWarehouseId, reqVO.getSourceWarehouseId())
-                .eqIfPresent(WmsMovementOrderDO::getTargetWarehouseId, reqVO.getTargetWarehouseId())
-                .betweenIfPresent(WmsMovementOrderDO::getOrderTime, reqVO.getOrderTime())
-                .geIfPresent(WmsMovementOrderDO::getTotalQuantity, reqVO.getTotalQuantityMin())
-                .leIfPresent(WmsMovementOrderDO::getTotalQuantity, reqVO.getTotalQuantityMax())
-                .geIfPresent(WmsMovementOrderDO::getTotalPrice, reqVO.getTotalPriceMin())
-                .leIfPresent(WmsMovementOrderDO::getTotalPrice, reqVO.getTotalPriceMax())
-                .eqIfPresent(WmsMovementOrderDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(WmsMovementOrderDO::getUpdater, reqVO.getUpdater())
-                .betweenIfPresent(WmsMovementOrderDO::getCreateTime, reqVO.getCreateTime())
-                .betweenIfPresent(WmsMovementOrderDO::getUpdateTime, reqVO.getUpdateTime())
-                .orderByDesc(WmsMovementOrderDO::getId));
-    }
-
-    default WmsMovementOrderDO selectByNo(String no) {
-        return selectOne(WmsMovementOrderDO::getNo, no);
-    }
-
-    default Long selectCountByWarehouseId(Long warehouseId) {
-        return selectCount(new LambdaQueryWrapperX<WmsMovementOrderDO>()
-                .and(query -> query.eq(WmsMovementOrderDO::getSourceWarehouseId, warehouseId)
-                        .or().eq(WmsMovementOrderDO::getTargetWarehouseId, warehouseId)));
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, WmsMovementOrderDO updateObj) {
-        return update(updateObj, new LambdaQueryWrapper<WmsMovementOrderDO>()
-                .eq(WmsMovementOrderDO::getId, id)
-                .eq(WmsMovementOrderDO::getStatus, status));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderDetailMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderDetailMapper.java
deleted file mode 100644
index b3ce109..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderDetailMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.receipt;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鍏ュ簱鍗曟槑缁� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsReceiptOrderDetailMapper extends BaseMapperX<WmsReceiptOrderDetailDO> {
-
-    default List<WmsReceiptOrderDetailDO> selectListByOrderId(Long orderId) {
-        return selectList(WmsReceiptOrderDetailDO::getOrderId, orderId);
-    }
-
-    default List<WmsReceiptOrderDetailDO> selectListByOrderIds(Collection<Long> orderIds) {
-        return selectList(new LambdaQueryWrapperX<WmsReceiptOrderDetailDO>()
-                .inIfPresent(WmsReceiptOrderDetailDO::getOrderId, orderIds)
-                .orderByAsc(WmsReceiptOrderDetailDO::getOrderId)
-                .orderByAsc(WmsReceiptOrderDetailDO::getId));
-    }
-
-    default void deleteByOrderId(Long orderId) {
-        delete(WmsReceiptOrderDetailDO::getOrderId, orderId);
-    }
-
-    default Long selectCountBySkuId(Long skuId) {
-        return selectCount(WmsReceiptOrderDetailDO::getSkuId, skuId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderMapper.java
deleted file mode 100644
index 550e6e2..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/receipt/WmsReceiptOrderMapper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.receipt;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * WMS 鍏ュ簱鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsReceiptOrderMapper extends BaseMapperX<WmsReceiptOrderDO> {
-
-    default PageResult<WmsReceiptOrderDO> selectPage(WmsReceiptOrderPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsReceiptOrderDO>()
-                .likeIfPresent(WmsReceiptOrderDO::getNo, reqVO.getNo())
-                .eqIfPresent(WmsReceiptOrderDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(WmsReceiptOrderDO::getWarehouseId, reqVO.getWarehouseId())
-                .eqIfPresent(WmsReceiptOrderDO::getMerchantId, reqVO.getMerchantId())
-                .betweenIfPresent(WmsReceiptOrderDO::getOrderTime, reqVO.getOrderTime())
-                .geIfPresent(WmsReceiptOrderDO::getTotalQuantity, reqVO.getTotalQuantityMin())
-                .leIfPresent(WmsReceiptOrderDO::getTotalQuantity, reqVO.getTotalQuantityMax())
-                .geIfPresent(WmsReceiptOrderDO::getTotalPrice, reqVO.getTotalPriceMin())
-                .leIfPresent(WmsReceiptOrderDO::getTotalPrice, reqVO.getTotalPriceMax())
-                .eqIfPresent(WmsReceiptOrderDO::getType, reqVO.getType())
-                .likeIfPresent(WmsReceiptOrderDO::getBizOrderNo, reqVO.getBizOrderNo())
-                .eqIfPresent(WmsReceiptOrderDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(WmsReceiptOrderDO::getUpdater, reqVO.getUpdater())
-                .betweenIfPresent(WmsReceiptOrderDO::getCreateTime, reqVO.getCreateTime())
-                .betweenIfPresent(WmsReceiptOrderDO::getUpdateTime, reqVO.getUpdateTime())
-                .orderByDesc(WmsReceiptOrderDO::getId));
-    }
-
-    default WmsReceiptOrderDO selectByNo(String no) {
-        return selectOne(WmsReceiptOrderDO::getNo, no);
-    }
-
-    default Long selectCountByMerchantId(Long merchantId) {
-        return selectCount(WmsReceiptOrderDO::getMerchantId, merchantId);
-    }
-
-    default Long selectCountByWarehouseId(Long warehouseId) {
-        return selectCount(WmsReceiptOrderDO::getWarehouseId, warehouseId);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, WmsReceiptOrderDO updateObj) {
-        return update(updateObj, new LambdaQueryWrapper<WmsReceiptOrderDO>()
-                .eq(WmsReceiptOrderDO::getId, id)
-                .eq(WmsReceiptOrderDO::getStatus, status));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/shipment/WmsShipmentOrderDetailMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/shipment/WmsShipmentOrderDetailMapper.java
deleted file mode 100644
index d59df25..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/shipment/WmsShipmentOrderDetailMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.shipment;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鍑哄簱鍗曟槑缁� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsShipmentOrderDetailMapper extends BaseMapperX<WmsShipmentOrderDetailDO> {
-
-    default List<WmsShipmentOrderDetailDO> selectListByOrderId(Long orderId) {
-        return selectList(WmsShipmentOrderDetailDO::getOrderId, orderId);
-    }
-
-    default List<WmsShipmentOrderDetailDO> selectListByOrderIds(Collection<Long> orderIds) {
-        return selectList(new LambdaQueryWrapperX<WmsShipmentOrderDetailDO>()
-                .inIfPresent(WmsShipmentOrderDetailDO::getOrderId, orderIds)
-                .orderByAsc(WmsShipmentOrderDetailDO::getOrderId)
-                .orderByAsc(WmsShipmentOrderDetailDO::getId));
-    }
-
-    default void deleteByOrderId(Long orderId) {
-        delete(WmsShipmentOrderDetailDO::getOrderId, orderId);
-    }
-
-    default Long selectCountBySkuId(Long skuId) {
-        return selectCount(WmsShipmentOrderDetailDO::getSkuId, skuId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/shipment/WmsShipmentOrderMapper.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/shipment/WmsShipmentOrderMapper.java
deleted file mode 100644
index f14df68..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/dal/mysql/order/shipment/WmsShipmentOrderMapper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package cn.iocoder.yudao.module.wms.dal.mysql.order.shipment;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDO;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * WMS 鍑哄簱鍗� Mapper
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Mapper
-public interface WmsShipmentOrderMapper extends BaseMapperX<WmsShipmentOrderDO> {
-
-    default PageResult<WmsShipmentOrderDO> selectPage(WmsShipmentOrderPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<WmsShipmentOrderDO>()
-                .likeIfPresent(WmsShipmentOrderDO::getNo, reqVO.getNo())
-                .eqIfPresent(WmsShipmentOrderDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(WmsShipmentOrderDO::getWarehouseId, reqVO.getWarehouseId())
-                .eqIfPresent(WmsShipmentOrderDO::getMerchantId, reqVO.getMerchantId())
-                .betweenIfPresent(WmsShipmentOrderDO::getOrderTime, reqVO.getOrderTime())
-                .geIfPresent(WmsShipmentOrderDO::getTotalQuantity, reqVO.getTotalQuantityMin())
-                .leIfPresent(WmsShipmentOrderDO::getTotalQuantity, reqVO.getTotalQuantityMax())
-                .geIfPresent(WmsShipmentOrderDO::getTotalPrice, reqVO.getTotalPriceMin())
-                .leIfPresent(WmsShipmentOrderDO::getTotalPrice, reqVO.getTotalPriceMax())
-                .eqIfPresent(WmsShipmentOrderDO::getType, reqVO.getType())
-                .likeIfPresent(WmsShipmentOrderDO::getBizOrderNo, reqVO.getBizOrderNo())
-                .eqIfPresent(WmsShipmentOrderDO::getCreator, reqVO.getCreator())
-                .eqIfPresent(WmsShipmentOrderDO::getUpdater, reqVO.getUpdater())
-                .betweenIfPresent(WmsShipmentOrderDO::getCreateTime, reqVO.getCreateTime())
-                .betweenIfPresent(WmsShipmentOrderDO::getUpdateTime, reqVO.getUpdateTime())
-                .orderByDesc(WmsShipmentOrderDO::getId));
-    }
-
-    default WmsShipmentOrderDO selectByNo(String no) {
-        return selectOne(WmsShipmentOrderDO::getNo, no);
-    }
-
-    default Long selectCountByMerchantId(Long merchantId) {
-        return selectCount(WmsShipmentOrderDO::getMerchantId, merchantId);
-    }
-
-    default Long selectCountByWarehouseId(Long warehouseId) {
-        return selectCount(WmsShipmentOrderDO::getWarehouseId, warehouseId);
-    }
-
-    default int updateByIdAndStatus(Long id, Integer status, WmsShipmentOrderDO updateObj) {
-        return update(updateObj, new LambdaQueryWrapper<WmsShipmentOrderDO>()
-                .eq(WmsShipmentOrderDO::getId, id)
-                .eq(WmsShipmentOrderDO::getStatus, status));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/DictTypeConstants.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/DictTypeConstants.java
deleted file mode 100644
index e854bc5..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/DictTypeConstants.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums;
-
-/**
- * WMS 瀛楀吀绫诲瀷甯搁噺
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface DictTypeConstants {
-
-    String MERCHANT_TYPE = "merchant_type";
-    String ORDER_STATUS = "wms_order_status";
-    String ORDER_TYPE = "wms_order_type";
-    String RECEIPT_ORDER_TYPE = "wms_receipt_order_type";
-    String SHIPMENT_ORDER_TYPE = "wms_shipment_order_type";
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/ErrorCodeConstants.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/ErrorCodeConstants.java
deleted file mode 100644
index 2175627..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/ErrorCodeConstants.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums;
-
-import cn.iocoder.yudao.framework.common.exception.ErrorCode;
-
-/**
- * WMS 閿欒鐮佹灇涓剧被
- * <p>
- * wms 绯荤粺锛屼娇鐢� 1-060-000-000 娈�
- */
-public interface ErrorCodeConstants {
-
-    // ========== WMS 鍩虹鏁版嵁-浠撳簱 1-060-100-000 ==========
-    ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_060_100_000, "浠撳簱涓嶅瓨鍦�");
-    ErrorCode WAREHOUSE_NAME_DUPLICATE = new ErrorCode(1_060_100_001, "浠撳簱鍚嶇О閲嶅");
-    ErrorCode WAREHOUSE_CODE_DUPLICATE = new ErrorCode(1_060_100_002, "浠撳簱缂栧彿閲嶅");
-    ErrorCode WAREHOUSE_HAS_ORDER = new ErrorCode(1_060_100_004, "鍒犻櫎澶辫触锛佷粨搴撳凡琚珄}浣跨敤锛�");
-    ErrorCode WAREHOUSE_HAS_INVENTORY = new ErrorCode(1_060_100_005, "鍒犻櫎澶辫触锛佷粨搴撳凡瀛樺湪搴撳瓨浣欓锛�");
-
-    // ========== WMS 鍩虹鏁版嵁-鍟嗗搧鍒嗙被 1-060-102-000 ==========
-    ErrorCode ITEM_CATEGORY_NOT_EXISTS = new ErrorCode(1_060_102_000, "鍟嗗搧鍒嗙被涓嶅瓨鍦�");
-    ErrorCode ITEM_CATEGORY_NAME_DUPLICATE = new ErrorCode(1_060_102_001, "鍟嗗搧鍒嗙被鍚嶇О閲嶅");
-    ErrorCode ITEM_CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1_060_102_002, "鐖跺晢鍝佸垎绫讳笉瀛樺湪");
-    ErrorCode ITEM_CATEGORY_PARENT_ERROR = new ErrorCode(1_060_102_003, "涓嶈兘璁剧疆鑷繁涓虹埗鍟嗗搧鍒嗙被");
-    ErrorCode ITEM_CATEGORY_PARENT_IS_CHILD = new ErrorCode(1_060_102_004, "涓嶈兘璁剧疆鑷繁鐨勫瓙鍟嗗搧鍒嗙被涓虹埗鍟嗗搧鍒嗙被");
-    ErrorCode ITEM_CATEGORY_HAS_CHILDREN = new ErrorCode(1_060_102_005, "鍒犻櫎澶辫触锛佽鍏堝垹闄よ鍒嗙被涓嬬殑瀛愬垎绫伙紒");
-    ErrorCode ITEM_CATEGORY_HAS_ITEM = new ErrorCode(1_060_102_006, "鍒犻櫎澶辫触锛佸垎绫诲凡琚晢鍝佷娇鐢紒");
-    ErrorCode ITEM_CATEGORY_CODE_DUPLICATE = new ErrorCode(1_060_102_007, "鍟嗗搧鍒嗙被缂栧彿閲嶅");
-
-    // ========== WMS 鍩虹鏁版嵁-鍟嗗搧鍝佺墝 1-060-103-000 ==========
-    ErrorCode ITEM_BRAND_NOT_EXISTS = new ErrorCode(1_060_103_000, "鍟嗗搧鍝佺墝涓嶅瓨鍦�");
-    ErrorCode ITEM_BRAND_HAS_ITEM = new ErrorCode(1_060_103_001, "鍒犻櫎澶辫触锛佸搧鐗屽凡琚晢鍝佷娇鐢紒");
-    ErrorCode ITEM_BRAND_CODE_DUPLICATE = new ErrorCode(1_060_103_002, "鍟嗗搧鍝佺墝缂栧彿閲嶅");
-    ErrorCode ITEM_BRAND_NAME_DUPLICATE = new ErrorCode(1_060_103_003, "鍟嗗搧鍝佺墝鍚嶇О閲嶅");
-
-    // ========== WMS 鍩虹鏁版嵁-鍟嗗搧 1-060-104-000 ==========
-    ErrorCode ITEM_NOT_EXISTS = new ErrorCode(1_060_104_000, "鍟嗗搧涓嶅瓨鍦�");
-    ErrorCode ITEM_NAME_DUPLICATE = new ErrorCode(1_060_104_001, "鍟嗗搧鍚嶇О閲嶅");
-    ErrorCode ITEM_CODE_DUPLICATE = new ErrorCode(1_060_104_007, "鍟嗗搧缂栧彿閲嶅");
-    ErrorCode ITEM_SKU_REQUIRED = new ErrorCode(1_060_104_002, "鑷冲皯鍖呭惈涓�涓晢鍝佽鏍�");
-    ErrorCode ITEM_SKU_NAME_DUPLICATE = new ErrorCode(1_060_104_003, "鍟嗗搧瑙勬牸鍚嶇О銆恵}銆戦噸澶�");
-    ErrorCode ITEM_SKU_NOT_EXISTS = new ErrorCode(1_060_104_004, "鍟嗗搧瑙勬牸涓嶅瓨鍦�");
-    ErrorCode ITEM_SKU_HAS_INVENTORY = new ErrorCode(1_060_104_005, "鍒犻櫎澶辫触锛佸晢鍝佽鏍笺�恵}銆戝凡琚簱瀛樹笟鍔′娇鐢紒");
-    ErrorCode ITEM_SKU_HAS_ORDER = new ErrorCode(1_060_104_006, "鍒犻櫎澶辫触锛佸晢鍝佽鏍笺�恵}銆戝凡琚珄}浣跨敤锛�");
-
-    // ========== WMS 鍩虹鏁版嵁-寰�鏉ヤ紒涓� 1-060-105-000 ==========
-    ErrorCode MERCHANT_NOT_EXISTS = new ErrorCode(1_060_105_000, "寰�鏉ヤ紒涓氫笉瀛樺湪");
-    ErrorCode MERCHANT_NOT_SUPPLIER = new ErrorCode(1_060_105_001, "寰�鏉ヤ紒涓氬繀椤绘槸渚涘簲鍟嗘垨瀹㈡埛/渚涘簲鍟嗙被鍨�");
-    ErrorCode MERCHANT_NOT_CUSTOMER = new ErrorCode(1_060_105_002, "寰�鏉ヤ紒涓氬繀椤绘槸瀹㈡埛鎴栧鎴�/渚涘簲鍟嗙被鍨�");
-    ErrorCode MERCHANT_HAS_ORDER = new ErrorCode(1_060_105_003, "鍒犻櫎澶辫触锛佸線鏉ヤ紒涓氬凡琚珄}浣跨敤锛�");
-    ErrorCode MERCHANT_CODE_DUPLICATE = new ErrorCode(1_060_105_004, "寰�鏉ヤ紒涓氱紪鍙烽噸澶�");
-    ErrorCode MERCHANT_NAME_DUPLICATE = new ErrorCode(1_060_105_005, "寰�鏉ヤ紒涓氬悕绉伴噸澶�");
-
-    // ========== WMS 鍏ュ簱鍗� 1-060-200-000 ==========
-    ErrorCode RECEIPT_ORDER_NOT_EXISTS = new ErrorCode(1_060_200_000, "鍏ュ簱鍗曚笉瀛樺湪");
-    ErrorCode RECEIPT_ORDER_NO_DUPLICATE = new ErrorCode(1_060_200_001, "鍏ュ簱鍗曞彿閲嶅");
-    ErrorCode RECEIPT_ORDER_STATUS_NOT_PREPARE = new ErrorCode(1_060_200_002, "鍏ュ簱鍗曠姸鎬佷笉鏄崏绋匡紝涓嶈兘鎿嶄綔");
-    ErrorCode RECEIPT_ORDER_DETAIL_REQUIRED = new ErrorCode(1_060_200_003, "鍏ュ簱鍗曡嚦灏戝寘鍚竴鏉℃槑缁�");
-    ErrorCode RECEIPT_ORDER_STATUS_NOT_DELETABLE = new ErrorCode(1_060_200_005, "鍏ュ簱鍗曠姸鎬佷笉鏄崏绋挎垨宸蹭綔搴燂紝涓嶈兘鍒犻櫎");
-    ErrorCode RECEIPT_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_060_200_007, "鍏ュ簱鍗曟槑缁嗕笉瀛樺湪");
-
-    // ========== WMS 鍑哄簱鍗� 1-060-201-000 ==========
-    ErrorCode SHIPMENT_ORDER_NOT_EXISTS = new ErrorCode(1_060_201_000, "鍑哄簱鍗曚笉瀛樺湪");
-    ErrorCode SHIPMENT_ORDER_NO_DUPLICATE = new ErrorCode(1_060_201_001, "鍑哄簱鍗曞彿閲嶅");
-    ErrorCode SHIPMENT_ORDER_STATUS_NOT_PREPARE = new ErrorCode(1_060_201_002, "鍑哄簱鍗曠姸鎬佷笉鏄崏绋匡紝涓嶈兘鎿嶄綔");
-    ErrorCode SHIPMENT_ORDER_DETAIL_REQUIRED = new ErrorCode(1_060_201_003, "鍑哄簱鍗曡嚦灏戝寘鍚竴鏉℃槑缁�");
-    ErrorCode SHIPMENT_ORDER_STATUS_NOT_DELETABLE = new ErrorCode(1_060_201_005, "鍑哄簱鍗曠姸鎬佷笉鏄崏绋挎垨宸蹭綔搴燂紝涓嶈兘鍒犻櫎");
-    ErrorCode SHIPMENT_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_060_201_007, "鍑哄簱鍗曟槑缁嗕笉瀛樺湪");
-
-    // ========== WMS 绉诲簱鍗� 1-060-202-000 ==========
-    ErrorCode MOVEMENT_ORDER_NOT_EXISTS = new ErrorCode(1_060_202_000, "绉诲簱鍗曚笉瀛樺湪");
-    ErrorCode MOVEMENT_ORDER_NO_DUPLICATE = new ErrorCode(1_060_202_001, "绉诲簱鍗曞彿閲嶅");
-    ErrorCode MOVEMENT_ORDER_STATUS_NOT_PREPARE = new ErrorCode(1_060_202_002, "绉诲簱鍗曠姸鎬佷笉鏄崏绋匡紝涓嶈兘鎿嶄綔");
-    ErrorCode MOVEMENT_ORDER_DETAIL_REQUIRED = new ErrorCode(1_060_202_003, "绉诲簱鍗曡嚦灏戝寘鍚竴鏉℃槑缁�");
-    ErrorCode MOVEMENT_ORDER_STATUS_NOT_DELETABLE = new ErrorCode(1_060_202_005, "绉诲簱鍗曠姸鎬佷笉鏄崏绋挎垨宸蹭綔搴燂紝涓嶈兘鍒犻櫎");
-    ErrorCode MOVEMENT_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_060_202_006, "绉诲簱鍗曟槑缁嗕笉瀛樺湪");
-    ErrorCode MOVEMENT_ORDER_WAREHOUSE_SAME = new ErrorCode(1_060_202_007, "鏉ユ簮浠撳簱鍜岀洰鏍囦粨搴撲笉鑳界浉鍚�");
-
-    // ========== WMS 鐩樺簱鍗� 1-060-203-000 ==========
-    ErrorCode CHECK_ORDER_NOT_EXISTS = new ErrorCode(1_060_203_000, "鐩樺簱鍗曚笉瀛樺湪");
-    ErrorCode CHECK_ORDER_NO_DUPLICATE = new ErrorCode(1_060_203_001, "鐩樺簱鍗曞彿閲嶅");
-    ErrorCode CHECK_ORDER_STATUS_NOT_PREPARE = new ErrorCode(1_060_203_002, "鐩樺簱鍗曠姸鎬佷笉鏄崏绋匡紝涓嶈兘鎿嶄綔");
-    ErrorCode CHECK_ORDER_DETAIL_REQUIRED = new ErrorCode(1_060_203_003, "鐩樺簱鍗曡嚦灏戝寘鍚竴鏉℃槑缁�");
-    ErrorCode CHECK_ORDER_STATUS_NOT_DELETABLE = new ErrorCode(1_060_203_005, "鐩樺簱鍗曠姸鎬佷笉鏄崏绋挎垨宸蹭綔搴燂紝涓嶈兘鍒犻櫎");
-    ErrorCode CHECK_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_060_203_006, "鐩樺簱鍗曟槑缁嗕笉瀛樺湪");
-    ErrorCode CHECK_ORDER_INVENTORY_CHANGED = new ErrorCode(1_060_203_007, "鐩樺簱鍗曞簱瀛樺凡鍙樺寲锛岃閲嶆柊鍔犺浇搴撳瓨鍚庡啀瀹屾垚");
-
-    // ========== WMS 搴撳瓨 1-060-300-000 ==========
-    ErrorCode INVENTORY_QUANTITY_NOT_ENOUGH = new ErrorCode(1_060_300_000,
-            "搴撳瓨涓嶈冻锛屽晢鍝侊細{}锛屽晢鍝佽鏍硷細{}锛屼粨搴擄細{}锛屽綋鍓嶅簱瀛橈細{}锛屽彉鏇存暟閲忥細{}");
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/md/WmsMerchantTypeEnum.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/md/WmsMerchantTypeEnum.java
deleted file mode 100644
index b6924e4..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/md/WmsMerchantTypeEnum.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums.md;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * WMS 寰�鏉ヤ紒涓氱被鍨嬫灇涓�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Getter
-@AllArgsConstructor
-public enum WmsMerchantTypeEnum implements ArrayValuable<Integer> {
-
-    CUSTOMER(1, "瀹㈡埛"),
-    SUPPLIER(2, "渚涘簲鍟�"),
-    CUSTOMER_SUPPLIER(3, "瀹㈡埛/渚涘簲鍟�");
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(WmsMerchantTypeEnum::getType).toArray(Integer[]::new);
-
-    /**
-     * 绫诲瀷
-     */
-    private final Integer type;
-    /**
-     * 鍚嶇О
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderStatusEnum.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderStatusEnum.java
deleted file mode 100644
index 065655b..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderStatusEnum.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums.order;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * WMS 鍗曟嵁鐘舵�佹灇涓�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Getter
-@AllArgsConstructor
-public enum WmsOrderStatusEnum implements ArrayValuable<Integer> {
-
-    PREPARE(0, "鑽夌"),
-    FINISHED(4, "宸插畬鎴�"),
-    CANCELED(5, "宸蹭綔搴�");
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(WmsOrderStatusEnum::getStatus)
-            .toArray(Integer[]::new);
-
-    /**
-     * 鐘舵��
-     */
-    private final Integer status;
-    /**
-     * 鍚嶇О
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderTypeConstants.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderTypeConstants.java
deleted file mode 100644
index 3f9017d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderTypeConstants.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums.order;
-
-/**
- * WMS 鍗曟嵁涓氬姟绫诲瀷甯搁噺
- *
- * 闆嗕腑绠$悊涓氬姟绫诲瀷鏋氫妇鐨勭紪鍙凤紝鎸変笟鍔″煙鍒嗘銆�
- * 鍚勬灇涓剧被寮曠敤姝ゅ甯搁噺锛岄伩鍏嶇‖缂栫爜鏁板瓧銆傦紙涔熼伩鍏嶅啿绐侊紒锛侊紒锛�
- *
- * @author 鑺嬮亾婧愮爜
- */
-public final class WmsOrderTypeConstants {
-
-    private WmsOrderTypeConstants() {}
-
-    // ========== 鍏ュ簱鍗曠被鍨� [100, 200) ==========
-
-    public static final int RECEIPT_PRODUCTION = 100; // 鐢熶骇鍏ュ簱锛歐msReceiptOrderDO
-    public static final int RECEIPT_PURCHASE = 101; // 閲囪喘鍏ュ簱锛歐msReceiptOrderDO
-    public static final int RECEIPT_RETURN = 102; // 閫�璐у叆搴擄細WmsReceiptOrderDO
-    public static final int RECEIPT_GIVE_BACK = 103; // 褰掕繕鍏ュ簱锛歐msReceiptOrderDO
-
-    // ========== 鍑哄簱鍗曠被鍨� [200, 300) ==========
-
-    public static final int SHIPMENT_RETURN = 200; // 閫�璐у嚭搴擄細WmsShipmentOrderDO
-    public static final int SHIPMENT_SALE = 201; // 閿�鍞嚭搴擄細WmsShipmentOrderDO
-    public static final int SHIPMENT_PRODUCTION = 202; // 鐢熶骇鍑哄簱锛歐msShipmentOrderDO
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderTypeEnum.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderTypeEnum.java
deleted file mode 100644
index 701f713..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsOrderTypeEnum.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums.order;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * WMS 鍗曟嵁绫诲瀷鏋氫妇
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Getter
-@AllArgsConstructor
-public enum WmsOrderTypeEnum implements ArrayValuable<Integer> {
-
-    RECEIPT(1, "鍏ュ簱鍗�"),
-    SHIPMENT(2, "鍑哄簱鍗�"),
-    MOVEMENT(3, "绉诲簱鍗�"),
-    CHECK(4, "鐩樺簱鍗�");
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(WmsOrderTypeEnum::getType).toArray(Integer[]::new);
-
-    /**
-     * 绫诲瀷
-     */
-    private final Integer type;
-    /**
-     * 鍚嶇О
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsReceiptOrderTypeEnum.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsReceiptOrderTypeEnum.java
deleted file mode 100644
index 1ac21f4..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsReceiptOrderTypeEnum.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums.order;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * WMS 鍏ュ簱鍗曠被鍨嬫灇涓�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Getter
-@AllArgsConstructor
-public enum WmsReceiptOrderTypeEnum implements ArrayValuable<Integer> {
-
-    PRODUCTION(WmsOrderTypeConstants.RECEIPT_PRODUCTION, "鐢熶骇鍏ュ簱"),
-    PURCHASE(WmsOrderTypeConstants.RECEIPT_PURCHASE, "閲囪喘鍏ュ簱"),
-    RETURN(WmsOrderTypeConstants.RECEIPT_RETURN, "閫�璐у叆搴�"),
-    GIVE_BACK(WmsOrderTypeConstants.RECEIPT_GIVE_BACK, "褰掕繕鍏ュ簱");
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(WmsReceiptOrderTypeEnum::getType).toArray(Integer[]::new);
-
-    /**
-     * 绫诲瀷
-     */
-    private final Integer type;
-    /**
-     * 鍚嶇О
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsShipmentOrderTypeEnum.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsShipmentOrderTypeEnum.java
deleted file mode 100644
index 79545f1..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/enums/order/WmsShipmentOrderTypeEnum.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.wms.enums.order;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * WMS 鍑哄簱鍗曠被鍨嬫灇涓�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Getter
-@AllArgsConstructor
-public enum WmsShipmentOrderTypeEnum implements ArrayValuable<Integer> {
-
-    RETURN(WmsOrderTypeConstants.SHIPMENT_RETURN, "閫�璐у嚭搴�"),
-    SALE(WmsOrderTypeConstants.SHIPMENT_SALE, "閿�鍞嚭搴�"),
-    PRODUCTION(WmsOrderTypeConstants.SHIPMENT_PRODUCTION, "鐢熶骇鍑哄簱");
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(WmsShipmentOrderTypeEnum::getType).toArray(Integer[]::new);
-
-    /**
-     * 绫诲瀷
-     */
-    private final Integer type;
-    /**
-     * 鍚嶇О
-     */
-    private final String name;
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/package-info.java
deleted file mode 100644
index 115397b..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * 灞炰簬 WMS 妯″潡鐨� framework 灏佽
- *
- * @author 鑺嬮亾婧愮爜
- */
-package cn.iocoder.yudao.module.wms.framework;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/config/WmsWebConfiguration.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/config/WmsWebConfiguration.java
deleted file mode 100644
index 37c7571..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/config/WmsWebConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.iocoder.yudao.module.wms.framework.web.config;
-
-import cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration;
-import org.springdoc.core.models.GroupedOpenApi;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * WMS 妯″潡鐨� web 缁勪欢鐨� Configuration
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Configuration(proxyBeanMethods = false)
-public class WmsWebConfiguration {
-
-    /**
-     * WMS 妯″潡鐨� API 鍒嗙粍
-     */
-    @Bean
-    public GroupedOpenApi wmsGroupedOpenApi() {
-        return YudaoSwaggerAutoConfiguration.buildGroupedOpenApi("wms");
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/package-info.java
deleted file mode 100644
index 13cb703..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/framework/web/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * WMS 妯″潡鐨� web 閰嶇疆
- */
-package cn.iocoder.yudao.module.wms.framework.web;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/package-info.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/package-info.java
deleted file mode 100644
index 099e22c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/package-info.java
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * wms 鍖呬笅锛屼粨搴撶鐞嗙郴缁燂紙Warehouse Management System锛�
- * 渚嬪璇达細浠撳簱銆佺墿鏂欍�佸簱瀛樸�佸叆搴撱�佸嚭搴撱�佺Щ搴撱�佺洏搴撶瓑绛�
- *
- * 1. Controller URL锛氫互 /wms/ 寮�澶达紝閬垮厤鍜屽叾瀹� Module 鍐茬獊
- * 2. DataObject 琛ㄥ悕锛氫互 wms_ 寮�澶达紝鏂逛究鍦ㄦ暟鎹簱涓尯鍒�
- *
- * 娉ㄦ剰锛岀敱浜� WMS 妯″潡涓嬶紝瀹规槗鍜屽叾瀹冩ā鍧楅噸鍚嶏紝鎵�浠ョ被鍚嶉兘鍔犺浇 Wms 鐨勫墠缂�~
- */
-package cn.iocoder.yudao.module.wms;
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsService.java
deleted file mode 100644
index 75015ef..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsService.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.home;
-
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeInventorySummaryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderSummaryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderTrendRespVO;
-
-import java.util.List;
-
-/**
- * WMS 棣栭〉缁熻 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsHomeStatisticsService {
-
-    /**
-     * 鑾峰緱鍗曟嵁姹囨�荤粺璁�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 鍗曟嵁姹囨�荤粺璁�
-     */
-    List<WmsHomeOrderSummaryRespVO> getOrderSummary(Long warehouseId);
-
-    /**
-     * 鑾峰緱鍗曟嵁瓒嬪娍锛屾寜鏃ユ湡缁熻鍏ュ簱銆佸嚭搴撱�佺Щ搴撱�佺洏搴撳崟鎹暟閲忋��
-     *
-     * @param days 鏈�杩戝ぉ鏁帮紝鍖呭惈浠婂ぉ
-     * @param warehouseId 浠撳簱缂栧彿锛屼负绌烘椂缁熻鍏ㄩ儴浠撳簱
-     * @return 鍗曟嵁瓒嬪娍
-     */
-    List<WmsHomeOrderTrendRespVO> getOrderTrend(Integer days, Long warehouseId);
-
-    /**
-     * 鑾峰緱搴撳瓨姹囨�荤粺璁�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @param goodsLimit 鍟嗗搧鎺掕鏁伴噺
-     * @param warehouseLimit 浠撳簱鎺掕鏁伴噺
-     * @return 搴撳瓨姹囨�荤粺璁�
-     */
-    WmsHomeInventorySummaryRespVO getInventorySummary(Long warehouseId, Integer goodsLimit, Integer warehouseLimit);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java
deleted file mode 100644
index 8aa2926..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/home/WmsHomeStatisticsServiceImpl.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.home;
-
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeInventorySummaryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderStatusRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderSummaryRespVO;
-import cn.iocoder.yudao.module.wms.controller.admin.home.vo.WmsHomeOrderTrendRespVO;
-import cn.iocoder.yudao.module.wms.dal.mysql.home.WmsHomeStatisticsMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue;
-import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.getBigDecimal;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.getDateList;
-
-/**
- * WMS 棣栭〉缁熻 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-public class WmsHomeStatisticsServiceImpl implements WmsHomeStatisticsService {
-
-    @Resource
-    private WmsHomeStatisticsMapper homeStatisticsMapper;
-    @Resource
-    private WmsWarehouseService warehouseService;
-
-    @Override
-    public List<WmsHomeOrderSummaryRespVO> getOrderSummary(Long warehouseId) {
-        validateWarehouseIfPresent(warehouseId);
-        // 鏌ヨ鍗曟嵁鏁伴噺
-        List<Map<String, Object>> stats = homeStatisticsMapper.selectOrderCountGroupByTypeAndStatus(warehouseId);
-        // 鎸夌収鍗曟嵁绫诲瀷 + 鍗曟嵁鐘舵�佸垎缁�
-        return convertList(WmsOrderTypeEnum.values(), orderTypeEnum -> {
-            List<WmsHomeOrderStatusRespVO> statuses = convertList(WmsOrderStatusEnum.values(), statusEnum ->
-                    new WmsHomeOrderStatusRespVO().setStatus(statusEnum.getStatus())
-                            .setCount(getOrderCount(stats, orderTypeEnum.getType(), statusEnum.getStatus())));
-            Long total = getSumValue(statuses, WmsHomeOrderStatusRespVO::getCount, Long::sum, 0L);
-            return new WmsHomeOrderSummaryRespVO().setType(orderTypeEnum.getType()).setTotal(total).setStatuses(statuses);
-        });
-    }
-
-    @Override
-    public List<WmsHomeOrderTrendRespVO> getOrderTrend(Integer days, Long warehouseId) {
-        validateWarehouseIfPresent(warehouseId);
-        // 缁熻鍖洪棿涓� [浠婂ぉ - days + 1, 鏄庡ぉ)锛屼繚璇佹渶杩� days 澶╁寘鍚粖澶┿��
-        LocalDate endDate = LocalDate.now().plusDays(1);
-        LocalDate startDate = endDate.minusDays(days);
-        LocalDateTime beginTime = startDate.atStartOfDay();
-        LocalDateTime endTime = endDate.atStartOfDay();
-        // 鏌ヨ姣忓ぉ鐨勫崟鎹暟閲�
-        List<Map<String, Object>> dbData = homeStatisticsMapper.selectDailyOrderTrend(beginTime, endTime, warehouseId);
-        Map<String, Map<Integer, Long>> dateMap = new LinkedHashMap<>();
-        for (Map<String, Object> row : dbData) {
-            String date = MapUtil.getStr(row, "date");
-            Integer orderType = MapUtil.getInt(row, "orderType");
-            Long count = MapUtil.getLong(row, "count", 0L);
-            dateMap.computeIfAbsent(date, key -> new HashMap<>()).put(orderType, count);
-        }
-        // 鏋勯�犵粨鏋滐紝淇濊瘉姣忓ぉ閮芥湁鏁版嵁
-        return convertList(getDateList(startDate, days), d -> {
-            String dateStr = DatePattern.NORM_DATE_FORMATTER.format(d);
-            Map<Integer, Long> row = dateMap.getOrDefault(dateStr, Collections.emptyMap());
-            return new WmsHomeOrderTrendRespVO().setTime(d.atStartOfDay())
-                    .setReceiptCount(row.getOrDefault(WmsOrderTypeEnum.RECEIPT.getType(), 0L))
-                    .setShipmentCount(row.getOrDefault(WmsOrderTypeEnum.SHIPMENT.getType(), 0L))
-                    .setMovementCount(row.getOrDefault(WmsOrderTypeEnum.MOVEMENT.getType(), 0L))
-                    .setCheckCount(row.getOrDefault(WmsOrderTypeEnum.CHECK.getType(), 0L));
-        });
-    }
-
-    @Override
-    public WmsHomeInventorySummaryRespVO getInventorySummary(Long warehouseId, Integer goodsLimit, Integer warehouseLimit) {
-        validateWarehouseIfPresent(warehouseId);
-        BigDecimal totalQuantity = ObjectUtil.defaultIfNull(homeStatisticsMapper.selectInventoryTotalQuantity(warehouseId), BigDecimal.ZERO);
-        List<Map<String, Object>> itemRows = homeStatisticsMapper.selectInventoryItemRank(warehouseId, goodsLimit);
-        List<Map<String, Object>> warehouseRows = homeStatisticsMapper.selectInventoryWarehouseRank(warehouseId, warehouseLimit);
-        return new WmsHomeInventorySummaryRespVO().setTotalQuantity(totalQuantity)
-                .setGoodsShareList(buildInventoryItemRankList(itemRows))
-                .setWarehouseDistributionList(buildInventoryWarehouseRankList(warehouseRows));
-    }
-
-    // ==================== 宸ュ叿鏂规硶 ====================
-
-    /**
-     * 浠撳簱缂栧彿闈炵┖鏃讹紝鏍¢獙浠撳簱鏄惁瀛樺湪锛岄伩鍏嶅墠绔浼犱换鎰� id 鐩存帴钀藉埌 SQL銆�
-     */
-    private void validateWarehouseIfPresent(Long warehouseId) {
-        if (warehouseId != null) {
-            warehouseService.validateWarehouseExists(warehouseId);
-        }
-    }
-
-    private long getOrderCount(List<Map<String, Object>> stats, Integer orderType, Integer status) {
-        for (Map<String, Object> stat : stats) {
-            if (ObjectUtil.equal(MapUtil.getInt(stat, "orderType"), orderType)
-                    && ObjectUtil.equal(MapUtil.getInt(stat, "status"), status)) {
-                return MapUtil.getLong(stat, "count", 0L);
-            }
-        }
-        return 0L;
-    }
-
-    private List<WmsHomeInventorySummaryRespVO.ItemRank> buildInventoryItemRankList(List<Map<String, Object>> rows) {
-        return convertList(rows, row -> new WmsHomeInventorySummaryRespVO.ItemRank()
-                .setId(ObjectUtil.defaultIfNull(MapUtil.getLong(row, "id"), MapUtil.getLong(row, "itemId")))
-                .setName(ObjectUtil.defaultIfNull(MapUtil.getStr(row, "name"), MapUtil.getStr(row, "itemName")))
-                .setQuantity(getBigDecimal(row, "quantity", BigDecimal.ZERO)));
-    }
-
-    private List<WmsHomeInventorySummaryRespVO.WarehouseRank> buildInventoryWarehouseRankList(List<Map<String, Object>> rows) {
-        return convertList(rows, row -> new WmsHomeInventorySummaryRespVO.WarehouseRank()
-                .setId(ObjectUtil.defaultIfNull(MapUtil.getLong(row, "id"), MapUtil.getLong(row, "warehouseId")))
-                .setName(ObjectUtil.defaultIfNull(MapUtil.getStr(row, "name"), MapUtil.getStr(row, "warehouseName")))
-                .setQuantity(getBigDecimal(row, "quantity", BigDecimal.ZERO)));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryHistoryService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryHistoryService.java
deleted file mode 100644
index ef2bc2c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryHistoryService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history.WmsInventoryHistoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
-
-import java.util.List;
-
-/**
- * WMS 搴撳瓨娴佹按 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsInventoryHistoryService {
-
-    /**
-     * 鑾峰緱搴撳瓨娴佹按鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 搴撳瓨娴佹按鍒嗛〉
-     */
-    PageResult<WmsInventoryHistoryDO> getInventoryHistoryPage(WmsInventoryHistoryPageReqVO pageReqVO);
-
-    /**
-     * 鍒涘缓搴撳瓨娴佹按鍒楄〃
-     *
-     * @param list 搴撳瓨娴佹按鍒楄〃
-     */
-    void createInventoryHistoryList(List<WmsInventoryHistoryDO> list);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryHistoryServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryHistoryServiceImpl.java
deleted file mode 100644
index 5feef50..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryHistoryServiceImpl.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.history.WmsInventoryHistoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.inventory.WmsInventoryHistoryMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.List;
-
-/**
- * WMS 搴撳瓨娴佹按 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsInventoryHistoryServiceImpl implements WmsInventoryHistoryService {
-
-    @Resource
-    private WmsInventoryHistoryMapper inventoryHistoryMapper;
-
-    @Override
-    public PageResult<WmsInventoryHistoryDO> getInventoryHistoryPage(WmsInventoryHistoryPageReqVO pageReqVO) {
-        return inventoryHistoryMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createInventoryHistoryList(List<WmsInventoryHistoryDO> list) {
-        if (CollUtil.isEmpty(list)) {
-            return;
-        }
-        inventoryHistoryMapper.insertBatch(list);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryService.java
deleted file mode 100644
index 8eb2c5d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryCheckReqDTO;
-
-import java.util.List;
-
-/**
- * WMS 搴撳瓨 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsInventoryService {
-
-    /**
-     * 鑾峰緱搴撳瓨缁熻鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 搴撳瓨缁熻鍒嗛〉
-     */
-    PageResult<WmsInventoryDO> getInventoryPage(WmsInventoryPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱搴撳瓨浣欓鍒楄〃
-     *
-     * @param listReqVO 鍒楄〃鏌ヨ
-     * @return 搴撳瓨浣欓鍒楄〃
-     */
-    List<WmsInventoryDO> getInventoryList(WmsInventoryListReqVO listReqVO);
-
-    /**
-     * 鑾峰緱鎸囧畾 SKU 鐨勫簱瀛樻暟閲�
-     *
-     * @param skuId SKU 缂栧彿
-     * @return 搴撳瓨鏁伴噺
-     */
-    long getInventoryCountBySkuId(Long skuId);
-
-    /**
-     * 鑾峰緱鎸囧畾浠撳簱鐨勫簱瀛樻暟閲�
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 搴撳瓨鏁伴噺
-     */
-    long getInventoryCountByWarehouseId(Long warehouseId);
-
-    /**
-     * 鐩樼偣搴撳瓨
-     *
-     * @param reqDTO 鐩樼偣搴撳瓨璇锋眰
-     */
-    void checkInventory(WmsInventoryCheckReqDTO reqDTO);
-
-    /**
-     * 鍙樻洿搴撳瓨
-     *
-     * @param reqDTO 搴撳瓨鍙樻洿璇锋眰
-     */
-    void changeInventory(WmsInventoryChangeReqDTO reqDTO);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
deleted file mode 100644
index 3ff81ad..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImpl.java
+++ /dev/null
@@ -1,297 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.lang.Tuple;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.exception.ServiceException;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.inventory.WmsInventoryMapper;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryCheckReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 搴撳瓨 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-@Slf4j
-public class WmsInventoryServiceImpl implements WmsInventoryService {
-
-    @Resource
-    private WmsInventoryMapper inventoryMapper;
-
-    @Resource
-    private WmsInventoryHistoryService inventoryHistoryService;
-
-    @Resource
-    private WmsItemSkuService itemSkuService;
-    @Resource
-    private WmsItemService itemService;
-
-    @Override
-    public PageResult<WmsInventoryDO> getInventoryPage(WmsInventoryPageReqVO pageReqVO) {
-        return inventoryMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<WmsInventoryDO> getInventoryList(WmsInventoryListReqVO listReqVO) {
-        return inventoryMapper.selectList(listReqVO);
-    }
-
-    @Override
-    public long getInventoryCountBySkuId(Long skuId) {
-        return inventoryMapper.selectCountBySkuId(skuId);
-    }
-
-    @Override
-    public long getInventoryCountByWarehouseId(Long warehouseId) {
-        return inventoryMapper.selectCountByWarehouseId(warehouseId);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void checkInventory(WmsInventoryCheckReqDTO reqDTO) {
-        if (reqDTO == null || CollUtil.isEmpty(reqDTO.getItems())) {
-            return;
-        }
-
-        // 1. 閫愭潯澶嶆牳璐﹂潰搴撳瓨锛屽苟璁$畻搴撳瓨璋冩暣鍜屽簱瀛樻祦姘�
-        List<WmsInventoryDO> updateInventories = new ArrayList<>(reqDTO.getItems().size());
-        List<WmsInventoryHistoryDO> histories = new ArrayList<>(reqDTO.getItems().size());
-        for (WmsInventoryCheckReqDTO.Item item : reqDTO.getItems()) {
-            // 1.1 閿佸畾鎴栧垱寤哄簱瀛樹綑棰濊
-            WmsInventoryDO inventory = getOrCreateCheckInventory(item);
-            // 1.2 鏃犵泩浜忔椂涓嶆洿鏂板簱瀛橈紝涔熶笉鐢熸垚搴撳瓨娴佹按
-            BigDecimal beforeQuantity = inventory.getQuantity();
-            BigDecimal afterQuantity = item.getCheckQuantity();
-            if (beforeQuantity.compareTo(afterQuantity) == 0) {
-                continue;
-            }
-            updateInventories.add(new WmsInventoryDO().setId(inventory.getId()).setQuantity(afterQuantity));
-            histories.add(buildInventoryHistory(reqDTO, item, beforeQuantity, afterQuantity));
-        }
-
-        // 2.1 鎵归噺鏇存柊搴撳瓨浣欓
-        if (CollUtil.isNotEmpty(updateInventories)) {
-            inventoryMapper.updateBatch(updateInventories);
-        }
-        // 2.2 鎵归噺鍐欏叆搴撳瓨娴佹按
-        if (CollUtil.isNotEmpty(histories)) {
-            inventoryHistoryService.createInventoryHistoryList(histories);
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void changeInventory(WmsInventoryChangeReqDTO reqDTO) {
-        if (reqDTO == null || CollUtil.isEmpty(reqDTO.getItems())) {
-            return;
-        }
-
-        // 1. 琛ラ綈骞堕攣瀹氭湰娆℃秹鍙婄殑搴撳瓨浣欓琛岋紝鍐嶈绠楀簱瀛樺彉鏇�
-        Map<WmsInventoryChangeReqDTO.Item, Tuple> resultMap = changeInventoryList(reqDTO.getItems());
-
-        // 2. 鎵归噺鍐欏叆搴撳瓨娴佹按
-        List<WmsInventoryHistoryDO> histories = new ArrayList<>(reqDTO.getItems().size());
-        for (WmsInventoryChangeReqDTO.Item item : reqDTO.getItems()) {
-            histories.add(buildInventoryHistory(reqDTO, item, resultMap.get(item)));
-        }
-        inventoryHistoryService.createInventoryHistoryList(histories);
-    }
-
-    /**
-     * 鎵归噺鍙樻洿搴撳瓨浣欓
-     *
-     * 1. 搴撳瓨琛屾寜 ID 鎵归噺鍔犻攣
-     * 2. 搴撳瓨鍙樻洿鍏堝湪鍐呭瓨璁$畻骞舵牎楠岋紝鍏ㄩ儴閫氳繃鍚庢壒閲忚鐩栧簱瀛樻暟閲忋��
-     *
-     * @param items 搴撳瓨鍙樻洿鏄庣粏鍒楄〃
-     * @return 姣忔潯鍙樻洿鏄庣粏瀵瑰簲鐨勫彉鏇村墠鏁伴噺銆佸彉鏇村悗鏁伴噺
-     */
-    private Map<WmsInventoryChangeReqDTO.Item, Tuple> changeInventoryList(List<WmsInventoryChangeReqDTO.Item> items) {
-        // 1.1 鍒涘缓鎴栭攣瀹氬簱瀛樿
-        List<WmsInventoryDO> inventories = getOrCreateInventoryList(items);
-        // 1.2 閿佸畾搴撳瓨锛氶伩鍏� quantity 鍙樻洿鏃剁殑骞跺彂闂锛屽鑷� quantity 鍓嶅悗璁$畻涓嶅
-        inventories = inventoryMapper.selectListByIdsForUpdate(convertSet(inventories, WmsInventoryDO::getId));
-
-        // 2.1 鏍¢獙搴撳瓨鍏呰冻
-        Map<WmsInventoryChangeReqDTO.Item, Tuple> resultMap = new IdentityHashMap<>(items.size());
-        for (WmsInventoryChangeReqDTO.Item item : items) {
-            WmsInventoryDO inventory = findInventory(inventories, item);
-            if (inventory == null) {
-                throw new IllegalStateException("搴撳瓨琛屼笉瀛樺湪锛宻kuId=" + item.getSkuId()
-                        + ", warehouseId=" + item.getWarehouseId());
-            }
-            BigDecimal beforeQuantity = inventory.getQuantity();
-            BigDecimal afterQuantity = beforeQuantity.add(item.getQuantity());
-            if (afterQuantity.compareTo(BigDecimal.ZERO) < 0) {
-                throw buildInventoryQuantityNotEnoughException(item, beforeQuantity);
-            }
-            inventory.setQuantity(afterQuantity);
-            resultMap.put(item, new Tuple(beforeQuantity, afterQuantity));
-        }
-        // 2.2 鎵归噺鏇存柊搴撳瓨鏁伴噺锛堝姞閿佸畨鍏級
-        if (CollUtil.isNotEmpty(inventories)) {
-            inventoryMapper.updateBatch(convertList(inventories, inventory ->
-                    new WmsInventoryDO().setId(inventory.getId()).setQuantity(inventory.getQuantity())));
-        }
-        return resultMap;
-    }
-
-    private List<WmsInventoryDO> getOrCreateInventoryList(List<WmsInventoryChangeReqDTO.Item> items) {
-        // 1.1 鍏堟寜搴撳瓨缁村害鍦ㄥ唴瀛樺幓閲嶏紝閬垮厤鍚屼竴鎵规槑缁嗛噸澶嶆煡璇㈡垨閲嶅琛ヨ
-        List<WmsInventoryDO> inventoryDimensions = new ArrayList<>(items.size());
-        for (WmsInventoryChangeReqDTO.Item item : items) {
-            if (findInventory(inventoryDimensions, item) == null) {
-                inventoryDimensions.add(new WmsInventoryDO().setSkuId(item.getSkuId())
-                        .setWarehouseId(item.getWarehouseId()));
-            }
-        }
-        // 1.2 鎵归噺鏌ヨ宸插瓨鍦ㄧ殑搴撳瓨琛岋紙杩欓噷涓嶅姞閿侊紝鍚庣画缁熶竴鎸夊簱瀛� ID 鎵归噺鍔犻攣锛�
-        List<WmsInventoryDO> inventories = inventoryMapper.selectListByKeys(inventoryDimensions);
-
-        // 2.1 瀵规瘮搴撳瓨缁村害锛屾壘鍑烘暟鎹簱涓繕涓嶅瓨鍦ㄧ殑搴撳瓨琛�
-        List<WmsInventoryDO> missingInventories = new ArrayList<>(inventoryDimensions.size());
-        for (WmsInventoryDO inventoryDimension : inventoryDimensions) {
-            if (findInventory(inventories, inventoryDimension) == null) {
-                missingInventories.add(inventoryDimension);
-            }
-        }
-        // 2.2 濡傛灉搴撳瓨琛岄兘宸插瓨鍦紝鐩存帴杩斿洖寰呭姞閿佸簱瀛樺垪琛�
-        if (CollUtil.isEmpty(missingInventories)) {
-            return inventories;
-        }
-        // 2.3 瀵圭己澶卞簱瀛樿鎵ц鍒涘缓锛涘苟鍙戝啿绐佹椂锛屽唴閮ㄤ細鎸夊敮涓�绱㈠紩鍥炴煡宸插垱寤虹殑搴撳瓨琛�
-        inventories.addAll(createMissingInventoryList(missingInventories));
-        return inventories;
-    }
-
-    private List<WmsInventoryDO> createMissingInventoryList(List<WmsInventoryDO> missingInventories) {
-        List<WmsInventoryDO> createdInventories = new ArrayList<>(missingInventories.size());
-        for (WmsInventoryDO missingInventory : missingInventories) {
-            WmsInventoryDO inventory = new WmsInventoryDO().setSkuId(missingInventory.getSkuId())
-                    .setWarehouseId(missingInventory.getWarehouseId())
-                    .setQuantity(BigDecimal.ZERO);
-            try {
-                inventoryMapper.insert(inventory);
-            } catch (DuplicateKeyException ex) {
-                inventory = inventoryMapper.selectBySkuIdAndWarehouseId(
-                        missingInventory.getSkuId(), missingInventory.getWarehouseId());
-                log.warn("[createMissingInventoryList][missingInventory({}) 鎻掑叆搴撳瓨琛屽啿绐侊紝鍥炴煡宸叉湁搴撳瓨琛宂", missingInventory);
-                if (inventory == null) {
-                    throw ex;
-                }
-            }
-            createdInventories.add(inventory);
-        }
-        return createdInventories;
-    }
-
-    private WmsInventoryHistoryDO buildInventoryHistory(WmsInventoryChangeReqDTO reqDTO,
-                                                       WmsInventoryChangeReqDTO.Item item,
-                                                       Tuple result) {
-        return new WmsInventoryHistoryDO()
-                .setWarehouseId(item.getWarehouseId()).setSkuId(item.getSkuId())
-                .setQuantity(item.getQuantity()).setBeforeQuantity(result.get(0)).setAfterQuantity(result.get(1))
-                .setPrice(item.getPrice()).setTotalPrice(item.getTotalPrice()).setRemark(item.getRemark())
-                .setOrderId(reqDTO.getOrderId()).setOrderNo(reqDTO.getOrderNo()).setOrderType(reqDTO.getOrderType());
-    }
-
-    private WmsInventoryHistoryDO buildInventoryHistory(WmsInventoryCheckReqDTO reqDTO,
-                                                       WmsInventoryCheckReqDTO.Item item,
-                                                       BigDecimal beforeQuantity,
-                                                       BigDecimal afterQuantity) {
-        BigDecimal quantity = afterQuantity.subtract(beforeQuantity);
-        return new WmsInventoryHistoryDO().setWarehouseId(item.getWarehouseId()).setSkuId(item.getSkuId())
-                .setQuantity(quantity).setBeforeQuantity(beforeQuantity).setAfterQuantity(afterQuantity)
-                .setPrice(item.getPrice()).setTotalPrice(MoneyUtils.priceMultiply(item.getPrice(), quantity))
-                .setOrderId(reqDTO.getOrderId()).setOrderNo(reqDTO.getOrderNo()).setOrderType(reqDTO.getOrderType())
-                .setRemark(item.getRemark());
-    }
-
-    private WmsInventoryDO getOrCreateCheckInventory(WmsInventoryCheckReqDTO.Item item) {
-        if (item.getInventoryId() == null) {
-            return createCheckInventory(item);
-        }
-        WmsInventoryDO inventory = inventoryMapper.selectByIdForUpdate(item.getInventoryId());
-        if (inventory == null || !isSameInventory(inventory, item)
-                || inventory.getQuantity().compareTo(item.getQuantity()) != 0) {
-            throw exception(CHECK_ORDER_INVENTORY_CHANGED);
-        }
-        return inventory;
-    }
-
-    private WmsInventoryDO createCheckInventory(WmsInventoryCheckReqDTO.Item item) {
-        WmsInventoryDO inventory = new WmsInventoryDO()
-                .setSkuId(item.getSkuId()).setWarehouseId(item.getWarehouseId())
-                .setQuantity(item.getCheckQuantity());
-        try {
-            inventoryMapper.insert(inventory);
-        } catch (DuplicateKeyException ex) {
-            throw exception(CHECK_ORDER_INVENTORY_CHANGED);
-        }
-        // 鍐呭瓨涓噸缃负 0锛岃涓诲惊鐜寜 0 -> checkQuantity 鐢熸垚鐩樺簱娴佹按
-        inventory.setQuantity(BigDecimal.ZERO);
-        return inventory;
-    }
-
-    private static WmsInventoryDO findInventory(List<WmsInventoryDO> inventories, WmsInventoryChangeReqDTO.Item item) {
-        return CollUtil.findOne(inventories, inventory -> isSameInventory(inventory, item));
-    }
-
-    private static WmsInventoryDO findInventory(List<WmsInventoryDO> inventories, WmsInventoryDO key) {
-        return CollUtil.findOne(inventories, inventory -> isSameInventory(inventory, key));
-    }
-
-    private static boolean isSameInventory(WmsInventoryDO inventory, WmsInventoryChangeReqDTO.Item item) {
-        return ObjectUtil.equal(inventory.getSkuId(), item.getSkuId())
-                && ObjectUtil.equal(inventory.getWarehouseId(), item.getWarehouseId());
-    }
-
-    private static boolean isSameInventory(WmsInventoryDO inventory, WmsInventoryCheckReqDTO.Item item) {
-        return ObjectUtil.equal(inventory.getSkuId(), item.getSkuId())
-                && ObjectUtil.equal(inventory.getWarehouseId(), item.getWarehouseId());
-    }
-
-    private static boolean isSameInventory(WmsInventoryDO inventory, WmsInventoryDO key) {
-        return ObjectUtil.equal(inventory.getSkuId(), key.getSkuId())
-                && ObjectUtil.equal(inventory.getWarehouseId(), key.getWarehouseId());
-    }
-
-    private ServiceException buildInventoryQuantityNotEnoughException(WmsInventoryChangeReqDTO.Item item,
-                                                                      BigDecimal beforeQuantity) {
-        WmsItemSkuDO skuDO = itemSkuService.validateItemSkuExists(item.getSkuId());
-        WmsItemDO itemDO = itemService.validateItemExists(skuDO.getItemId());
-        return exception(INVENTORY_QUANTITY_NOT_ENOUGH, itemDO.getName(), skuDO.getName(),
-                item.getWarehouseId(), beforeQuantity, item.getQuantity());
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryChangeReqDTO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryChangeReqDTO.java
deleted file mode 100644
index 79636a6..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryChangeReqDTO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory.dto;
-
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * WMS 搴撳瓨鍙樻洿璇锋眰 DTO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Data
-public class WmsInventoryChangeReqDTO {
-
-    /**
-     * 鍗曟嵁缂栧彿
-     */
-    private Long orderId;
-    /**
-     * 鍗曟嵁鍙�
-     */
-    private String orderNo;
-    /**
-     * 鍗曟嵁绫诲瀷
-     *
-     * 鏋氫妇 {@link WmsOrderTypeEnum#getType()}
-     */
-    private Integer orderType;
-
-    /**
-     * 搴撳瓨鍙樻洿鏄庣粏
-     */
-    private List<Item> items;
-
-    /**
-     * WMS 搴撳瓨鍙樻洿鏄庣粏
-     */
-    @Data
-    public static class Item {
-
-        /**
-         * SKU 缂栧彿
-         */
-        private Long skuId;
-        /**
-         * 浠撳簱缂栧彿
-         */
-        private Long warehouseId;
-        /**
-         * 鍙樻洿鏁伴噺
-         */
-        private BigDecimal quantity;
-
-        // ========= 鍗曚环澶囨敞鐩稿叧瀛楁 =========
-
-        /**
-         * 鍗曚环
-         */
-        private BigDecimal price;
-        /**
-         * 搴撳瓨鍙樺寲閲戦
-         */
-        private BigDecimal totalPrice;
-        /**
-         * 澶囨敞
-         */
-        private String remark;
-
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryCheckReqDTO.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryCheckReqDTO.java
deleted file mode 100644
index f7a93e2..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/inventory/dto/WmsInventoryCheckReqDTO.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory.dto;
-
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * WMS 搴撳瓨鐩樼偣璇锋眰 DTO
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Data
-public class WmsInventoryCheckReqDTO {
-
-    /**
-     * 鍗曟嵁缂栧彿
-     */
-    private Long orderId;
-    /**
-     * 鍗曟嵁鍙�
-     */
-    private String orderNo;
-    /**
-     * 鍗曟嵁绫诲瀷
-     *
-     * 鏋氫妇 {@link WmsOrderTypeEnum#getType()}
-     */
-    private Integer orderType;
-
-    /**
-     * 搴撳瓨鐩樼偣鏄庣粏
-     */
-    private List<Item> items;
-
-    /**
-     * WMS 搴撳瓨鐩樼偣鏄庣粏
-     */
-    @Data
-    public static class Item {
-
-        /**
-         * 搴撳瓨缂栧彿
-         */
-        private Long inventoryId;
-        /**
-         * SKU 缂栧彿
-         */
-        private Long skuId;
-        /**
-         * 浠撳簱缂栧彿
-         */
-        private Long warehouseId;
-        /**
-         * 璐﹂潰鏁伴噺
-         */
-        private BigDecimal quantity;
-        /**
-         * 瀹炵洏鏁伴噺
-         */
-        private BigDecimal checkQuantity;
-
-        // ========= 鍗曚环澶囨敞鐩稿叧瀛楁 =========
-
-        /**
-         * 鍗曚环
-         */
-        private BigDecimal price;
-        /**
-         * 澶囨敞
-         */
-        private String remark;
-
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandService.java
deleted file mode 100644
index 9ca393d..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandService.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * WMS 鍟嗗搧鍝佺墝 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsItemBrandService {
-
-    /**
-     * 鍒涘缓鍟嗗搧鍝佺墝
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createItemBrand(@Valid WmsItemBrandSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍟嗗搧鍝佺墝
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateItemBrand(@Valid WmsItemBrandSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎鍟嗗搧鍝佺墝
-     *
-     * @param id 缂栧彿
-     */
-    void deleteItemBrand(Long id);
-
-    /**
-     * 鏍¢獙鍟嗗搧鍝佺墝瀛樺湪
-     *
-     * @param id 缂栧彿
-     * @return 鍟嗗搧鍝佺墝
-     */
-    WmsItemBrandDO validateItemBrandExists(Long id);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍝佺墝
-     *
-     * @param id 缂栧彿
-     * @return 鍟嗗搧鍝佺墝
-     */
-    WmsItemBrandDO getItemBrand(Long id);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍝佺墝鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鍟嗗搧鍝佺墝鍒嗛〉
-     */
-    PageResult<WmsItemBrandDO> getItemBrandPage(WmsItemBrandPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍝佺墝鍒楄〃
-     *
-     * @return 鍟嗗搧鍝佺墝鍒楄〃
-     */
-    List<WmsItemBrandDO> getItemBrandList();
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀晢鍝佸搧鐗屽垪琛�
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 鍟嗗搧鍝佺墝鍒楄〃
-     */
-    List<WmsItemBrandDO> getItemBrandList(Collection<Long> ids);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀晢鍝佸搧鐗� Map
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 鍟嗗搧鍝佺墝 Map
-     */
-    default Map<Long, WmsItemBrandDO> getItemBrandMap(Collection<Long> ids) {
-        return convertMap(getItemBrandList(ids), WmsItemBrandDO::getId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandServiceImpl.java
deleted file mode 100644
index 051bd9c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandServiceImpl.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemBrandMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.ITEM_BRAND_CODE_DUPLICATE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.ITEM_BRAND_HAS_ITEM;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.ITEM_BRAND_NAME_DUPLICATE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.ITEM_BRAND_NOT_EXISTS;
-
-/**
- * WMS 鍟嗗搧鍝佺墝 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsItemBrandServiceImpl implements WmsItemBrandService {
-
-    @Resource
-    private WmsItemBrandMapper brandMapper;
-    @Resource
-    private WmsItemService itemService;
-
-    @Override
-    public Long createItemBrand(WmsItemBrandSaveReqVO createReqVO) {
-        validateBrandSaveData(null, createReqVO);
-
-        // 鏂板
-        WmsItemBrandDO brand = BeanUtils.toBean(createReqVO, WmsItemBrandDO.class);
-        brandMapper.insert(brand);
-        return brand.getId();
-    }
-
-    @Override
-    public void updateItemBrand(WmsItemBrandSaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateItemBrandExists(updateReqVO.getId());
-        validateBrandSaveData(updateReqVO.getId(), updateReqVO);
-
-        // 鏇存柊
-        WmsItemBrandDO updateObj = BeanUtils.toBean(updateReqVO, WmsItemBrandDO.class);
-        brandMapper.updateById(updateObj);
-    }
-
-    private void validateBrandSaveData(Long id, WmsItemBrandSaveReqVO reqVO) {
-        validateBrandCodeUnique(id, reqVO.getCode());
-        validateBrandNameUnique(id, reqVO.getName());
-    }
-
-    private void validateBrandCodeUnique(Long id, String code) {
-        WmsItemBrandDO brand = brandMapper.selectByCode(code);
-        if (brand == null) {
-            return;
-        }
-        // 濡傛灉 id 涓虹┖锛岃鏄庢柊澧烇紱鍜屾暟鎹簱宸叉湁 code 閲嶅
-        if (id == null) {
-            throw exception(ITEM_BRAND_CODE_DUPLICATE);
-        }
-        if (ObjectUtil.notEqual(brand.getId(), id)) {
-            throw exception(ITEM_BRAND_CODE_DUPLICATE);
-        }
-    }
-
-    private void validateBrandNameUnique(Long id, String name) {
-        WmsItemBrandDO brand = brandMapper.selectByName(name);
-        if (brand == null) {
-            return;
-        }
-        if (id == null) {
-            throw exception(ITEM_BRAND_NAME_DUPLICATE);
-        }
-        if (ObjectUtil.notEqual(brand.getId(), id)) {
-            throw exception(ITEM_BRAND_NAME_DUPLICATE);
-        }
-    }
-
-    @Override
-    public void deleteItemBrand(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateItemBrandExists(id);
-        // 鏍¢獙鍝佺墝涓嬩笉瀛樺湪鍟嗗搧
-        if (itemService.getItemCountByBrandId(id) > 0) {
-            throw exception(ITEM_BRAND_HAS_ITEM);
-        }
-
-        // 鍒犻櫎
-        brandMapper.deleteById(id);
-    }
-
-    @Override
-    public WmsItemBrandDO validateItemBrandExists(Long id) {
-        WmsItemBrandDO brand = brandMapper.selectById(id);
-        if (brand == null) {
-            throw exception(ITEM_BRAND_NOT_EXISTS);
-        }
-        return brand;
-    }
-
-    @Override
-    public WmsItemBrandDO getItemBrand(Long id) {
-        return brandMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsItemBrandDO> getItemBrandPage(WmsItemBrandPageReqVO pageReqVO) {
-        return brandMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<WmsItemBrandDO> getItemBrandList() {
-        return brandMapper.selectList();
-    }
-
-    @Override
-    public List<WmsItemBrandDO> getItemBrandList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        return brandMapper.selectByIds(ids);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemCategoryService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemCategoryService.java
deleted file mode 100644
index a036d7e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemCategoryService.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategorySaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemCategoryDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * WMS 鍟嗗搧鍒嗙被 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsItemCategoryService {
-
-    /**
-     * 鍒涘缓鍟嗗搧鍒嗙被
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createItemCategory(@Valid WmsItemCategorySaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍟嗗搧鍒嗙被
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateItemCategory(@Valid WmsItemCategorySaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎鍟嗗搧鍒嗙被
-     *
-     * @param id 缂栧彿
-     */
-    void deleteItemCategory(Long id);
-
-    /**
-     * 鏍¢獙鍟嗗搧鍒嗙被瀛樺湪
-     *
-     * @param id 缂栧彿
-     * @return 鍟嗗搧鍒嗙被
-     */
-    WmsItemCategoryDO validateItemCategoryExists(Long id);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍒嗙被
-     *
-     * @param id 缂栧彿
-     * @return 鍟嗗搧鍒嗙被
-     */
-    WmsItemCategoryDO getItemCategory(Long id);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍒嗙被鍒楄〃
-     *
-     * @param listReqVO 鏌ヨ鏉′欢
-     * @return 鍟嗗搧鍒嗙被鍒楄〃
-     */
-    List<WmsItemCategoryDO> getItemCategoryList(WmsItemCategoryListReqVO listReqVO);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀晢鍝佸垎绫诲垪琛�
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 鍟嗗搧鍒嗙被鍒楄〃
-     */
-    List<WmsItemCategoryDO> getItemCategoryList(Collection<Long> ids);
-
-    /**
-     * 鑾峰緱鎸囧畾鍟嗗搧鍒嗙被鍙婂叾鎵�鏈夊瓙鍒嗙被缂栧彿闆嗗悎
-     *
-     * @param id 鍟嗗搧鍒嗙被缂栧彿
-     * @return 鍟嗗搧鍒嗙被缂栧彿闆嗗悎锛涘綋 id 涓虹┖鏃讹紝杩斿洖 null
-     */
-    Set<Long> getSelfAndChildItemCategoryIdList(Long id);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀晢鍝佸垎绫� Map
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 鍟嗗搧鍒嗙被 Map
-     */
-    default Map<Long, WmsItemCategoryDO> getItemCategoryMap(Collection<Long> ids) {
-        return convertMap(getItemCategoryList(ids), WmsItemCategoryDO::getId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemCategoryServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemCategoryServiceImpl.java
deleted file mode 100644
index 0f63fdb..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemCategoryServiceImpl.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategoryListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.category.WmsItemCategorySaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemCategoryDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemCategoryMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍟嗗搧鍒嗙被 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsItemCategoryServiceImpl implements WmsItemCategoryService {
-
-    @Resource
-    private WmsItemCategoryMapper categoryMapper;
-
-    @Resource
-    private WmsItemService itemService;
-
-    @Override
-    public Long createItemCategory(WmsItemCategorySaveReqVO createReqVO) {
-        // 鏍¢獙鏁版嵁
-        validateCategorySaveData(createReqVO);
-
-        // 鎻掑叆
-        WmsItemCategoryDO category = BeanUtils.toBean(createReqVO, WmsItemCategoryDO.class);
-        categoryMapper.insert(category);
-        return category.getId();
-    }
-
-    @Override
-    public void updateItemCategory(WmsItemCategorySaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateItemCategoryExists(updateReqVO.getId());
-        // 鏍¢獙鏁版嵁
-        validateCategorySaveData(updateReqVO);
-
-        // 鏇存柊
-        WmsItemCategoryDO updateObj = BeanUtils.toBean(updateReqVO, WmsItemCategoryDO.class);
-        categoryMapper.updateById(updateObj);
-    }
-
-    private void validateCategorySaveData(WmsItemCategorySaveReqVO reqVO) {
-        validateCategoryCodeUnique(reqVO.getId(), reqVO.getCode());
-        validateCategoryNameUnique(reqVO.getId(), reqVO.getParentId(), reqVO.getName());
-        validateParentCategory(reqVO.getId(), reqVO.getParentId());
-    }
-
-    private void validateCategoryCodeUnique(Long id, String code) {
-        WmsItemCategoryDO category = categoryMapper.selectByCode(code);
-        if (category == null) {
-            return;
-        }
-        // 濡傛灉 id 涓虹┖锛岃鏄庢柊澧烇紱鍜屾暟鎹簱宸叉湁 code 閲嶅
-        if (id == null) {
-            throw exception(ITEM_CATEGORY_CODE_DUPLICATE);
-        }
-        if (ObjectUtil.notEqual(category.getId(), id)) {
-            throw exception(ITEM_CATEGORY_CODE_DUPLICATE);
-        }
-    }
-
-    private void validateCategoryNameUnique(Long id, Long parentId, String name) {
-        WmsItemCategoryDO category = categoryMapper.selectByParentIdAndName(parentId, name);
-        if (category == null) {
-            return;
-        }
-        // 濡傛灉 id 涓虹┖锛岃鏄庝笉鐢ㄦ瘮杈冩槸鍚︿负鐩稿悓 id 鐨勫晢鍝佸垎绫�
-        if (id == null) {
-            throw exception(ITEM_CATEGORY_NAME_DUPLICATE);
-        }
-        if (ObjectUtil.notEqual(category.getId(), id)) {
-            throw exception(ITEM_CATEGORY_NAME_DUPLICATE);
-        }
-    }
-
-    private void validateParentCategory(Long id, Long parentId) {
-        if (parentId == null || WmsItemCategoryDO.PARENT_ID_ROOT.equals(parentId)) {
-            return;
-        }
-        // 1. 涓嶈兘璁剧疆鑷繁涓虹埗鍒嗙被
-        if (ObjectUtil.equal(parentId, id)) {
-            throw exception(ITEM_CATEGORY_PARENT_ERROR);
-        }
-        // 2. 鐖跺垎绫讳笉瀛樺湪
-        WmsItemCategoryDO parentCategory = categoryMapper.selectById(parentId);
-        if (parentCategory == null) {
-            throw exception(ITEM_CATEGORY_PARENT_NOT_EXISTS);
-        }
-        // 3. 閫掑綊鏍¢獙鐖跺垎绫伙紝濡傛灉鐖跺垎绫绘槸鑷繁鐨勫瓙鍒嗙被锛屽垯鎶ラ敊锛岄伩鍏嶅舰鎴愮幆璺�
-        if (id == null) { // id 涓虹┖锛岃鏄庢柊澧烇紝涓嶉渶瑕佽�冭檻鐜矾
-            return;
-        }
-        for (int i = 0; i < Short.MAX_VALUE; i++) {
-            // 3.1 鏍¢獙鐜矾
-            parentId = parentCategory.getParentId();
-            if (ObjectUtil.equal(id, parentId)) {
-                throw exception(ITEM_CATEGORY_PARENT_IS_CHILD);
-            }
-            // 3.2 缁х画閫掑綊涓婄骇鐖跺垎绫�
-            if (parentId == null || WmsItemCategoryDO.PARENT_ID_ROOT.equals(parentId)) {
-                break;
-            }
-            parentCategory = categoryMapper.selectById(parentId);
-            if (parentCategory == null) {
-                break;
-            }
-        }
-    }
-
-    @Override
-    public void deleteItemCategory(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateItemCategoryExists(id);
-        // 鏈夊瓙鍒嗙被涓嶈兘鍒�
-        if (categoryMapper.selectCountByParentId(id) > 0) {
-            throw exception(ITEM_CATEGORY_HAS_CHILDREN);
-        }
-        // 鏍¢獙鍒嗙被涓嬩笉瀛樺湪鍟嗗搧
-        if (itemService.getItemCountByCategoryId(id) > 0) {
-            throw exception(ITEM_CATEGORY_HAS_ITEM);
-        }
-
-        // 鍒犻櫎
-        categoryMapper.deleteById(id);
-    }
-
-    @Override
-    public WmsItemCategoryDO validateItemCategoryExists(Long id) {
-        WmsItemCategoryDO category = categoryMapper.selectById(id);
-        if (category == null) {
-            throw exception(ITEM_CATEGORY_NOT_EXISTS);
-        }
-        return category;
-    }
-
-    @Override
-    public WmsItemCategoryDO getItemCategory(Long id) {
-        return categoryMapper.selectById(id);
-    }
-
-    @Override
-    public List<WmsItemCategoryDO> getItemCategoryList(WmsItemCategoryListReqVO listReqVO) {
-        return categoryMapper.selectList(listReqVO);
-    }
-
-    @Override
-    public List<WmsItemCategoryDO> getItemCategoryList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        return categoryMapper.selectByIds(ids);
-    }
-
-    @Override
-    public Set<Long> getSelfAndChildItemCategoryIdList(Long id) {
-        if (id == null) {
-            return null;
-        }
-        Set<Long> ids = new HashSet<>();
-        ids.add(id);
-        Collection<Long> parentIds = Collections.singleton(id);
-        for (int i = 0; i < Short.MAX_VALUE; i++) {
-            List<WmsItemCategoryDO> children = categoryMapper.selectListByParentIds(parentIds);
-            if (CollUtil.isEmpty(children)) {
-                break;
-            }
-            ids.addAll(convertSet(children, WmsItemCategoryDO::getId));
-            parentIds = convertSet(children, WmsItemCategoryDO::getId);
-        }
-        return ids;
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemService.java
deleted file mode 100644
index c748829..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemService.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * WMS 鍟嗗搧 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsItemService {
-
-    /**
-     * 鍒涘缓鍟嗗搧
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createItem(@Valid WmsItemSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍟嗗搧
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateItem(@Valid WmsItemSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎鍟嗗搧
-     *
-     * @param id 缂栧彿
-     */
-    void deleteItem(Long id);
-
-    /**
-     * 鏍¢獙鍟嗗搧瀛樺湪
-     *
-     * @param id 缂栧彿
-     * @return 鍟嗗搧
-     */
-    WmsItemDO validateItemExists(Long id);
-
-    /**
-     * 鑾峰緱鍟嗗搧
-     *
-     * @param id 缂栧彿
-     * @return 鍟嗗搧
-     */
-    WmsItemDO getItem(Long id);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鍟嗗搧鍒嗛〉
-     */
-    PageResult<WmsItemDO> getItemPage(WmsItemPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鍟嗗搧鍒楄〃
-     *
-     * @param listReqVO 鏌ヨ鏉′欢
-     * @return 鍟嗗搧鍒楄〃
-     */
-    List<WmsItemDO> getItemList(WmsItemListReqVO listReqVO);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀晢鍝佸垪琛�
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 鍟嗗搧鍒楄〃
-     */
-    List<WmsItemDO> getItemList(Collection<Long> ids);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀晢鍝� Map
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 鍟嗗搧 Map
-     */
-    default Map<Long, WmsItemDO> getItemMap(Collection<Long> ids) {
-        return convertMap(getItemList(ids), WmsItemDO::getId);
-    }
-
-    /**
-     * 鑾峰緱鎸囧畾鍟嗗搧鍒嗙被涓嬬殑鍟嗗搧鏁伴噺
-     *
-     * @param categoryId 鍟嗗搧鍒嗙被缂栧彿
-     * @return 鍟嗗搧鏁伴噺
-     */
-    long getItemCountByCategoryId(Long categoryId);
-
-    /**
-     * 鑾峰緱鎸囧畾鍟嗗搧鍝佺墝涓嬬殑鍟嗗搧鏁伴噺
-     *
-     * @param brandId 鍟嗗搧鍝佺墝缂栧彿
-     * @return 鍟嗗搧鏁伴噺
-     */
-    long getItemCountByBrandId(Long brandId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java
deleted file mode 100644
index 5ded7db..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
-import cn.iocoder.yudao.module.mdm.enums.MdmItemTypeEnum;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemMapper;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍟嗗搧 Service 瀹炵幇绫�
- *
- * 鏀归�犺鏄庯細鍟嗗搧鍩虹鏁版嵁浠� MDM 妯″潡鑾峰彇锛坕temType=1 鐗╂枡绫诲瀷锛�
- * WMS 鐗规湁鍔熻兘锛圫KU銆佸簱瀛樼瓑锛変粛淇濈暀 WMS 绠$悊
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsItemServiceImpl implements WmsItemService {
-
-    @Resource
-    private WmsItemMapper itemMapper;
-
-    @Resource
-    private MdmItemApi mdmItemApi;
-
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsItemCategoryService categoryService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsItemBrandService brandService;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createItem(WmsItemSaveReqVO createReqVO) {
-        // 鏍¢獙鏁版嵁
-        validateItemSaveData(createReqVO);
-
-        // 鎻掑叆鍟嗗搧锛堟殏鏃朵繚鐣欏師閫昏緫锛屽悗缁彲瀹屽叏杩佺Щ鍒� MDM锛�
-        WmsItemDO item = BeanUtils.toBean(createReqVO, WmsItemDO.class);
-        itemMapper.insert(item);
-        // 鎻掑叆 SKU
-        itemSkuService.createItemSkuList(item.getId(), createReqVO.getSkus());
-        return item.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateItem(WmsItemSaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateItemExists(updateReqVO.getId());
-        // 鏍¢獙鏁版嵁
-        validateItemSaveData(updateReqVO);
-
-        // 鏇存柊鍟嗗搧锛堟殏鏃朵繚鐣欏師閫昏緫锛�
-        WmsItemDO updateObj = BeanUtils.toBean(updateReqVO, WmsItemDO.class);
-        itemMapper.updateById(updateObj);
-        // 鏇存柊 SKU
-        itemSkuService.updateItemSkuList(updateReqVO.getId(), updateReqVO.getSkus());
-    }
-
-    private void validateItemSaveData(WmsItemSaveReqVO reqVO) {
-        // 鏍¢獙鍟嗗搧缂栧彿鍞竴
-        validateItemCodeUnique(reqVO.getId(), reqVO.getCode());
-        // 鏍¢獙鍟嗗搧鍚嶇О鍞竴
-        validateItemNameUnique(reqVO.getId(), reqVO.getName());
-        // 鏍¢獙鍟嗗搧鍒嗙被瀛樺湪
-        validateCategoryExists(reqVO.getCategoryId());
-        // 鏍¢獙鍟嗗搧鍝佺墝瀛樺湪
-        validateBrandExists(reqVO.getBrandId());
-    }
-
-    private void validateItemCodeUnique(Long id, String code) {
-        // 妫�鏌� MDM 涓紪鐮佸敮涓�鎬�
-        MdmItemRespDTO item = mdmItemApi.getItemByCode(code).getCheckedData();
-        if (item != null && ObjectUtil.notEqual(item.getId(), id)) {
-            throw exception(ITEM_CODE_DUPLICATE);
-        }
-    }
-
-    private void validateItemNameUnique(Long id, String name) {
-        WmsItemDO item = itemMapper.selectByName(name);
-        if (item == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(item.getId(), id)) {
-            throw exception(ITEM_NAME_DUPLICATE);
-        }
-    }
-
-    private void validateCategoryExists(Long categoryId) {
-        categoryService.validateItemCategoryExists(categoryId);
-    }
-
-    private void validateBrandExists(Long brandId) {
-        if (brandId == null) {
-            return;
-        }
-        brandService.validateItemBrandExists(brandId);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteItem(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateItemExists(id);
-
-        // 鍒犻櫎鍟嗗搧鍜� SKU
-        itemSkuService.deleteItemSkuListByItemId(id);
-        itemMapper.deleteById(id);
-    }
-
-    @Override
-    public WmsItemDO validateItemExists(Long id) {
-        // 浠� MDM 鏍¢獙鐗╂枡瀛樺湪
-        MdmItemRespDTO item = mdmItemApi.validateItemExists(id).getCheckedData();
-        if (item == null) {
-            // 濡傛灉 MDM 涓笉瀛樺湪锛屾鏌ユ湰鍦拌〃
-            WmsItemDO localItem = itemMapper.selectById(id);
-            if (localItem == null) {
-                throw exception(ITEM_NOT_EXISTS);
-            }
-            return localItem;
-        }
-        return convertToWmsItem(item);
-    }
-
-    @Override
-    public WmsItemDO getItem(Long id) {
-        // 浠� MDM 鑾峰彇鐗╂枡鏁版嵁锛堟敞鎰� WMS ID 鍋忕Щ 30000锛�
-        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
-        if (item == null) {
-            // 濡傛灉 MDM 涓笉瀛樺湪锛屾煡璇㈡湰鍦拌〃
-            return itemMapper.selectById(id);
-        }
-        return convertToWmsItem(item);
-    }
-
-    @Override
-    public PageResult<WmsItemDO> getItemPage(WmsItemPageReqVO pageReqVO) {
-        // 浠� MDM 鑾峰彇鐗╂枡鍒嗛〉鏁版嵁锛坕temType=1 鐗╂枡绫诲瀷锛�
-        cn.iocoder.yudao.framework.common.pojo.PageResult<MdmItemRespDTO> mdmPageResult =
-                mdmItemApi.getItemPage(MdmItemTypeEnum.MATERIAL.getType(), null,
-                        pageReqVO.getPageNo(), pageReqVO.getPageSize()).getCheckedData();
-
-        // 杞崲涓� WMS 鍟嗗搧 DO
-        List<WmsItemDO> list = new ArrayList<>();
-        for (MdmItemRespDTO item : mdmPageResult.getList()) {
-            list.add(convertToWmsItem(item));
-        }
-        return new PageResult<>(list, mdmPageResult.getTotal());
-    }
-
-    @Override
-    public List<WmsItemDO> getItemList(WmsItemListReqVO listReqVO) {
-        // 浠� MDM 鑾峰彇鐗╂枡鍒楄〃锛坕temType=1 鐗╂枡绫诲瀷锛�
-        List<MdmItemRespDTO> items = mdmItemApi.getItemListByStatus(null).getCheckedData();
-
-        List<WmsItemDO> result = new ArrayList<>();
-        for (MdmItemRespDTO item : items) {
-            // 鍙繑鍥炵墿鏂欑被鍨�
-            if (MdmItemTypeEnum.MATERIAL.getType().equals(item.getItemType())) {
-                result.add(convertToWmsItem(item));
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public List<WmsItemDO> getItemList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        // 浠� MDM 鑾峰彇鐗╂枡鍒楄〃
-        List<MdmItemRespDTO> items = mdmItemApi.getItemList(ids).getCheckedData();
-        List<WmsItemDO> result = new ArrayList<>();
-        for (MdmItemRespDTO item : items) {
-            result.add(convertToWmsItem(item));
-        }
-        return result;
-    }
-
-    /**
-     * 灏� MDM 鐗╂枡杞崲涓� WMS 鍟嗗搧 DO
-     */
-    private WmsItemDO convertToWmsItem(MdmItemRespDTO item) {
-        WmsItemDO wmsItem = new WmsItemDO();
-        wmsItem.setId(item.getId());
-        wmsItem.setCode(item.getCode());
-        wmsItem.setName(item.getName());
-        // MDM categoryId 鏄犲皠鍒� WMS categoryId锛堟敞鎰� ID 鍋忕Щ锛�
-        wmsItem.setCategoryId(item.getCategoryId() != null ? item.getCategoryId() - 20000 : null);
-        wmsItem.setBrandId(item.getBrandId());
-        // 鍗曚綅鍚嶇О闇�瑕佷粠 MDM 鍗曚綅琛ㄨ幏鍙栵紝杩欓噷鏆傛椂鐣欑┖
-        wmsItem.setRemark(item.getRemark());
-        return wmsItem;
-    }
-
-    @Override
-    public long getItemCountByCategoryId(Long categoryId) {
-        // 浠� MDM 鑾峰彇鍒嗙被鐗╂枡鏁伴噺锛堟敞鎰� ID 鍋忕Щ锛�
-        return mdmItemApi.getItemCountByCategoryId(categoryId + 20000).getCheckedData();
-    }
-
-    @Override
-    public long getItemCountByBrandId(Long brandId) {
-        // 浠� MDM 鑾峰彇鍝佺墝鐗╂枡鏁伴噺
-        // 娉ㄦ剰锛歁DM 鐩墠娌℃湁鎸夊搧鐗岀粺璁$殑 API锛屾殏鏃惰繑鍥炴湰鍦版暟鎹�
-        return itemMapper.selectCountByBrandId(brandId);
-    }
-
-}
\ No newline at end of file
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemSkuService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemSkuService.java
deleted file mode 100644
index 456742c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemSkuService.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
-
-/**
- * WMS 鍟嗗搧 SKU Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsItemSkuService {
-
-    /**
-     * 鍒涘缓鍟嗗搧 SKU 鍒楄〃
-     *
-     * @param itemId 鍟嗗搧缂栧彿
-     * @param skus SKU 鍒楄〃
-     */
-    void createItemSkuList(Long itemId, @Valid List<WmsItemSkuSaveReqVO> skus);
-
-    /**
-     * 鏇存柊鍟嗗搧 SKU 鍒楄〃
-     *
-     * @param itemId 鍟嗗搧缂栧彿
-     * @param skus SKU 鍒楄〃
-     */
-    void updateItemSkuList(Long itemId, @Valid List<WmsItemSkuSaveReqVO> skus);
-
-    /**
-     * 鎸夊晢鍝佺紪鍙峰垹闄� SKU 鍒楄〃
-     *
-     * @param itemId 鍟嗗搧缂栧彿
-     */
-    void deleteItemSkuListByItemId(Long itemId);
-
-    /**
-     * 鏍¢獙 SKU 瀛樺湪
-     *
-     * @param id 缂栧彿
-     * @return SKU
-     */
-    WmsItemSkuDO validateItemSkuExists(Long id);
-
-    /**
-     * 鎸夊晢鍝佺紪鍙疯幏寰� SKU 鍒楄〃
-     *
-     * @param itemId 鍟嗗搧缂栧彿
-     * @return SKU 鍒楄〃
-     */
-    List<WmsItemSkuDO> getItemSkuList(Long itemId);
-
-    /**
-     * 鎸夊晢鍝佺紪鍙烽泦鍚堣幏寰� SKU 鍒楄〃
-     *
-     * @param itemIds 鍟嗗搧缂栧彿闆嗗悎
-     * @return SKU 鍒楄〃
-     */
-    List<WmsItemSkuDO> getItemSkuList(Collection<Long> itemIds);
-
-    /**
-     * 鑾峰緱 SKU 鍒楄〃
-     *
-     * @param itemIds 鍟嗗搧缂栧彿闆嗗悎
-     * @param code SKU 缂栧彿
-     * @param name SKU 鍚嶇О
-     * @return SKU 鍒楄〃
-     */
-    List<WmsItemSkuDO> getItemSkuList(Collection<Long> itemIds, String code, String name);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰� SKU 鍒楄〃
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return SKU 鍒楄〃
-     */
-    List<WmsItemSkuDO> getItemSkuListByIds(Collection<Long> ids);
-
-    /**
-     * 鎸� SKU 缁村害鍒嗛〉鏌ヨ锛屾敮鎸佸晢鍝� / 鍝佺墝 / 鍒嗙被澶氳〃鑱旀煡绛涢�夈��
-     *
-     * @param pageReqVO 鍒嗛〉涓庣瓫閫夋潯浠�
-     * @return SKU 鍒嗛〉缁撴灉
-     */
-    PageResult<WmsItemSkuDO> getItemSkuPage(WmsItemSkuPageReqVO pageReqVO);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰� SKU Map
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return SKU Map
-     */
-    default Map<Long, WmsItemSkuDO> getItemSkuMap(Collection<Long> ids) {
-        return convertMap(getItemSkuListByIds(ids), WmsItemSkuDO::getId);
-    }
-
-    /**
-     * 鎸夊晢鍝佺紪鍙烽泦鍚堣幏寰� SKU MultiMap
-     *
-     * @param itemIds 鍟嗗搧缂栧彿闆嗗悎
-     * @return 鍟嗗搧缂栧彿涓� SKU 鍒楄〃鐨勬槧灏�
-     */
-    default Map<Long, List<WmsItemSkuDO>> getItemSkuMultiMap(Collection<Long> itemIds) {
-        return convertMultiMap(getItemSkuList(itemIds), WmsItemSkuDO::getItemId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemSkuServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemSkuServiceImpl.java
deleted file mode 100644
index 8306fc0..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemSkuServiceImpl.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemSkuMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderDetailService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderDetailService;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍟嗗搧 SKU Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsItemSkuServiceImpl implements WmsItemSkuService {
-
-    @Resource
-    private WmsItemSkuMapper itemSkuMapper;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsInventoryService inventoryService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsReceiptOrderDetailService receiptOrderDetailService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsShipmentOrderDetailService shipmentOrderDetailService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsMovementOrderDetailService movementOrderDetailService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsCheckOrderDetailService checkOrderDetailService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createItemSkuList(Long itemId, List<WmsItemSkuSaveReqVO> skus) {
-        validateItemSkuList(skus);
-        List<WmsItemSkuDO> list = BeanUtils.toBean(skus, WmsItemSkuDO.class, sku ->
-                sku.setItemId(itemId).setId(null)); // id 鐢辨暟鎹簱鑷鍒嗛厤锛岄伩鍏嶅墠绔鎿嶄綔
-        itemSkuMapper.insertBatch(list);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateItemSkuList(Long itemId, List<WmsItemSkuSaveReqVO> skus) {
-        validateItemSkuList(skus);
-
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<WmsItemSkuDO> oldList = itemSkuMapper.selectListByItemId(itemId);
-        List<WmsItemSkuDO> newList = BeanUtils.toBean(skus, WmsItemSkuDO.class);
-        List<List<WmsItemSkuDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            List<Long> deleteSkuIds = convertList(diffList.get(2), WmsItemSkuDO::getId);
-            // 鏍¢獙 SKU 鏄惁琚娇鐢�
-            validateItemSkuUnused(diffList.get(2));
-            // 鍒犻櫎 SKU
-            itemSkuMapper.deleteByIds(deleteSkuIds);
-        }
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            // 鏂板鍦烘櫙涓嬪拷鐣ュ墠绔浼犵殑 SKU id锛氱粺涓�缃� null锛岀敱鏁版嵁搴撹嚜澧炲垎閰�
-            diffList.get(0).forEach(sku -> {
-                sku.setItemId(itemId);
-                sku.setId(null);
-            });
-            itemSkuMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            diffList.get(1).forEach(sku -> sku.setItemId(itemId));
-            itemSkuMapper.updateBatch(diffList.get(1));
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteItemSkuListByItemId(Long itemId) {
-        // 鏍¢獙 SKU 鏄惁琚娇鐢�
-        List<WmsItemSkuDO> skus = itemSkuMapper.selectListByItemId(itemId);
-        validateItemSkuUnused(skus);
-        // 鍒犻櫎 SKU
-        itemSkuMapper.deleteByItemId(itemId);
-    }
-
-    @Override
-    public WmsItemSkuDO validateItemSkuExists(Long id) {
-        WmsItemSkuDO sku = itemSkuMapper.selectById(id);
-        if (sku == null) {
-            throw exception(ITEM_SKU_NOT_EXISTS);
-        }
-        return sku;
-    }
-
-    @Override
-    public List<WmsItemSkuDO> getItemSkuList(Long itemId) {
-        return itemSkuMapper.selectListByItemId(itemId);
-    }
-
-    @Override
-    public List<WmsItemSkuDO> getItemSkuList(Collection<Long> itemIds) {
-        return itemSkuMapper.selectListByItemIds(itemIds);
-    }
-
-    @Override
-    public List<WmsItemSkuDO> getItemSkuList(Collection<Long> itemIds, String code, String name) {
-        return itemSkuMapper.selectList(itemIds, code, name);
-    }
-
-    @Override
-    public List<WmsItemSkuDO> getItemSkuListByIds(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return ListUtil.of();
-        }
-        return itemSkuMapper.selectByIds(ids);
-    }
-
-    @Override
-    public PageResult<WmsItemSkuDO> getItemSkuPage(WmsItemSkuPageReqVO pageReqVO) {
-        return itemSkuMapper.selectPage(pageReqVO);
-    }
-
-    private void validateItemSkuList(List<WmsItemSkuSaveReqVO> skus) {
-        // 鏍¢獙鑷冲皯瀛樺湪涓�涓晢鍝� SKU
-        if (CollUtil.isEmpty(skus)) {
-            throw exception(ITEM_SKU_REQUIRED);
-        }
-        // 鏍¢獙 SKU 鍚嶇О涓嶉噸澶�
-        Set<String> names = new HashSet<>();
-        for (WmsItemSkuSaveReqVO sku : skus) {
-            if (!names.add(sku.getName())) {
-                throw exception(ITEM_SKU_NAME_DUPLICATE, sku.getName());
-            }
-        }
-    }
-
-    private void validateItemSkuUnused(List<WmsItemSkuDO> skus) {
-        if (CollUtil.isEmpty(skus)) {
-            return;
-        }
-        for (WmsItemSkuDO sku : skus) {
-            validateItemSkuOrderUnused(sku);
-            if (inventoryService.getInventoryCountBySkuId(sku.getId()) > 0) {
-                throw exception(ITEM_SKU_HAS_INVENTORY, sku.getName());
-            }
-        }
-    }
-
-    private void validateItemSkuOrderUnused(WmsItemSkuDO sku) {
-        if (receiptOrderDetailService.getReceiptOrderDetailCountBySkuId(sku.getId()) > 0) {
-            throw exception(ITEM_SKU_HAS_ORDER, sku.getName(), WmsOrderTypeEnum.RECEIPT.getName());
-        }
-        if (shipmentOrderDetailService.getShipmentOrderDetailCountBySkuId(sku.getId()) > 0) {
-            throw exception(ITEM_SKU_HAS_ORDER, sku.getName(), WmsOrderTypeEnum.SHIPMENT.getName());
-        }
-        if (movementOrderDetailService.getMovementOrderDetailCountBySkuId(sku.getId()) > 0) {
-            throw exception(ITEM_SKU_HAS_ORDER, sku.getName(), WmsOrderTypeEnum.MOVEMENT.getName());
-        }
-        if (checkOrderDetailService.getCheckOrderDetailCountBySkuId(sku.getId()) > 0) {
-            throw exception(ITEM_SKU_HAS_ORDER, sku.getName(), WmsOrderTypeEnum.CHECK.getName());
-        }
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/merchant/WmsMerchantService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/merchant/WmsMerchantService.java
deleted file mode 100644
index aa77e26..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/merchant/WmsMerchantService.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.merchant;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * WMS 寰�鏉ヤ紒涓� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsMerchantService {
-
-    /**
-     * 鍒涘缓寰�鏉ヤ紒涓�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createMerchant(@Valid WmsMerchantSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊寰�鏉ヤ紒涓�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateMerchant(@Valid WmsMerchantSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎寰�鏉ヤ紒涓�
-     *
-     * @param id 缂栧彿
-     */
-    void deleteMerchant(Long id);
-
-    /**
-     * 鏍¢獙寰�鏉ヤ紒涓氬瓨鍦�
-     *
-     * @param id 缂栧彿
-     * @return 寰�鏉ヤ紒涓�
-     */
-    WmsMerchantDO validateMerchantExists(Long id);
-
-    /**
-     * 鏍¢獙渚涘簲鍟嗗瓨鍦�
-     *
-     * @param id 缂栧彿
-     * @return 寰�鏉ヤ紒涓�
-     */
-    @SuppressWarnings("UnusedReturnValue")
-    WmsMerchantDO validateSupplierMerchantExists(Long id);
-
-    /**
-     * 鏍¢獙瀹㈡埛瀛樺湪
-     *
-     * @param id 缂栧彿
-     * @return 寰�鏉ヤ紒涓�
-     */
-    @SuppressWarnings("UnusedReturnValue")
-    WmsMerchantDO validateCustomerMerchantExists(Long id);
-
-    /**
-     * 鑾峰緱寰�鏉ヤ紒涓�
-     *
-     * @param id 缂栧彿
-     * @return 寰�鏉ヤ紒涓�
-     */
-    WmsMerchantDO getMerchant(Long id);
-
-    /**
-     * 鑾峰緱寰�鏉ヤ紒涓氬垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 寰�鏉ヤ紒涓氬垎椤�
-     */
-    PageResult<WmsMerchantDO> getMerchantPage(WmsMerchantPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱寰�鏉ヤ紒涓氬垪琛�
-     *
-     * @param listReqVO 鏌ヨ鏉′欢
-     * @return 寰�鏉ヤ紒涓氬垪琛�
-     */
-    List<WmsMerchantDO> getMerchantList(WmsMerchantListReqVO listReqVO);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀線鏉ヤ紒涓氬垪琛�
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 寰�鏉ヤ紒涓氬垪琛�
-     */
-    List<WmsMerchantDO> getMerchantList(Collection<Long> ids);
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰楀線鏉ヤ紒涓� Map
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 寰�鏉ヤ紒涓� Map
-     */
-    default Map<Long, WmsMerchantDO> getMerchantMap(Collection<Long> ids) {
-        return convertMap(getMerchantList(ids), WmsMerchantDO::getId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/merchant/WmsMerchantServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/merchant/WmsMerchantServiceImpl.java
deleted file mode 100644
index 8b4acdd..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/merchant/WmsMerchantServiceImpl.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.merchant;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantListReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.merchant.vo.WmsMerchantSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.merchant.WmsMerchantDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.merchant.WmsMerchantMapper;
-import cn.iocoder.yudao.module.wms.enums.md.WmsMerchantTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderService;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 寰�鏉ヤ紒涓� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsMerchantServiceImpl implements WmsMerchantService {
-
-    @Resource
-    private WmsMerchantMapper merchantMapper;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsReceiptOrderService receiptOrderService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsShipmentOrderService shipmentOrderService;
-
-    @Override
-    public Long createMerchant(WmsMerchantSaveReqVO createReqVO) {
-        validateMerchantSaveData(null, createReqVO);
-
-        // 鏂板
-        WmsMerchantDO merchant = BeanUtils.toBean(createReqVO, WmsMerchantDO.class);
-        merchantMapper.insert(merchant);
-        return merchant.getId();
-    }
-
-    @Override
-    public void updateMerchant(WmsMerchantSaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateMerchantExists(updateReqVO.getId());
-        validateMerchantSaveData(updateReqVO.getId(), updateReqVO);
-
-        // 鏇存柊
-        WmsMerchantDO updateObj = BeanUtils.toBean(updateReqVO, WmsMerchantDO.class);
-        merchantMapper.updateById(updateObj);
-    }
-
-    private void validateMerchantSaveData(Long id, WmsMerchantSaveReqVO reqVO) {
-        // 鏍¢獙 code 鍞竴
-        validateMerchantCodeUnique(id, reqVO.getCode());
-        // 鏍¢獙 name 鍞竴
-        validateMerchantNameUnique(id, reqVO.getName());
-    }
-
-    private void validateMerchantCodeUnique(Long id, String code) {
-        WmsMerchantDO merchant = merchantMapper.selectByCode(code);
-        if (merchant == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(merchant.getId(), id)) {
-            throw exception(MERCHANT_CODE_DUPLICATE);
-        }
-    }
-
-    private void validateMerchantNameUnique(Long id, String name) {
-        WmsMerchantDO merchant = merchantMapper.selectByName(name);
-        if (merchant == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(merchant.getId(), id)) {
-            throw exception(MERCHANT_NAME_DUPLICATE);
-        }
-    }
-
-    @Override
-    public void deleteMerchant(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateMerchantExists(id);
-        // 鏍¢獙鏈鍗曟嵁浣跨敤
-        validateMerchantUnused(id);
-
-        // 鍒犻櫎
-        merchantMapper.deleteById(id);
-    }
-
-    private void validateMerchantUnused(Long id) {
-        if (receiptOrderService.getReceiptOrderCountByMerchantId(id) > 0) {
-            throw exception(MERCHANT_HAS_ORDER, WmsOrderTypeEnum.RECEIPT.getName());
-        }
-        if (shipmentOrderService.getShipmentOrderCountByMerchantId(id) > 0) {
-            throw exception(MERCHANT_HAS_ORDER, WmsOrderTypeEnum.SHIPMENT.getName());
-        }
-    }
-
-    @Override
-    public WmsMerchantDO validateMerchantExists(Long id) {
-        WmsMerchantDO merchant = merchantMapper.selectById(id);
-        if (merchant == null) {
-            throw exception(MERCHANT_NOT_EXISTS);
-        }
-        return merchant;
-    }
-
-    @Override
-    public WmsMerchantDO validateSupplierMerchantExists(Long id) {
-        WmsMerchantDO merchant = validateMerchantExists(id);
-        if (ObjectUtil.notEqual(merchant.getType(), WmsMerchantTypeEnum.SUPPLIER.getType())
-                && ObjectUtil.notEqual(merchant.getType(), WmsMerchantTypeEnum.CUSTOMER_SUPPLIER.getType())) {
-            throw exception(MERCHANT_NOT_SUPPLIER);
-        }
-        return merchant;
-    }
-
-    @Override
-    public WmsMerchantDO validateCustomerMerchantExists(Long id) {
-        WmsMerchantDO merchant = validateMerchantExists(id);
-        if (ObjectUtil.notEqual(merchant.getType(), WmsMerchantTypeEnum.CUSTOMER.getType())
-                && ObjectUtil.notEqual(merchant.getType(), WmsMerchantTypeEnum.CUSTOMER_SUPPLIER.getType())) {
-            throw exception(MERCHANT_NOT_CUSTOMER);
-        }
-        return merchant;
-    }
-
-    @Override
-    public WmsMerchantDO getMerchant(Long id) {
-        return merchantMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsMerchantDO> getMerchantPage(WmsMerchantPageReqVO pageReqVO) {
-        return merchantMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<WmsMerchantDO> getMerchantList(WmsMerchantListReqVO listReqVO) {
-        return merchantMapper.selectList(listReqVO);
-    }
-
-    @Override
-    public List<WmsMerchantDO> getMerchantList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return ListUtil.of();
-        }
-        return merchantMapper.selectByIds(ids);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseService.java
deleted file mode 100644
index dd73e75..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseService.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.warehouse;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehousePageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import jakarta.validation.Valid;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
-/**
- * WMS 浠撳簱 Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsWarehouseService {
-
-    /**
-     * 鍒涘缓浠撳簱
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createWarehouse(@Valid WmsWarehouseSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊浠撳簱
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateWarehouse(@Valid WmsWarehouseSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎浠撳簱
-     *
-     * @param id 缂栧彿
-     */
-    void deleteWarehouse(Long id);
-
-    /**
-     * 鏍¢獙浠撳簱瀛樺湪
-     *
-     * @param id 缂栧彿
-     * @return 浠撳簱
-     */
-    WmsWarehouseDO validateWarehouseExists(Long id);
-
-    /**
-     * 鑾峰緱浠撳簱
-     *
-     * @param id 缂栧彿
-     * @return 浠撳簱
-     */
-    WmsWarehouseDO getWarehouse(Long id);
-
-    /**
-     * 鑾峰緱浠撳簱鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 浠撳簱鍒嗛〉
-     */
-    PageResult<WmsWarehouseDO> getWarehousePage(WmsWarehousePageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱浠撳簱鍒楄〃
-     *
-     * @return 浠撳簱鍒楄〃
-     */
-    List<WmsWarehouseDO> getWarehouseList();
-
-    /**
-     * 鎸夌紪鍙烽泦鍚堣幏寰椾粨搴撳垪琛�
-     *
-     * @param ids 缂栧彿闆嗗悎
-     * @return 浠撳簱鍒楄〃
-     */
-    List<WmsWarehouseDO> getWarehouseList(Collection<Long> ids);
-
-    default Map<Long, WmsWarehouseDO> getWarehouseMap(Collection<Long> ids) {
-        return convertMap(getWarehouseList(ids), WmsWarehouseDO::getId);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java
deleted file mode 100644
index cdcb69e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.warehouse;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehousePageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.warehouse.WmsWarehouseMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderService;
-import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderService;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderService;
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 浠撳簱 Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsWarehouseServiceImpl implements WmsWarehouseService {
-
-    @Resource
-    private WmsWarehouseMapper warehouseMapper;
-
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsInventoryService inventoryService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsReceiptOrderService receiptOrderService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsShipmentOrderService shipmentOrderService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsMovementOrderService movementOrderService;
-    @Resource
-    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
-    private WmsCheckOrderService checkOrderService;
-
-    @Override
-    public Long createWarehouse(WmsWarehouseSaveReqVO createReqVO) {
-        // 鏍¢獙鏁版嵁
-        validateWarehouseSaveData(createReqVO);
-
-        // 鎻掑叆
-        WmsWarehouseDO warehouse = BeanUtils.toBean(createReqVO, WmsWarehouseDO.class);
-        warehouseMapper.insert(warehouse);
-        return warehouse.getId();
-    }
-
-    @Override
-    public void updateWarehouse(WmsWarehouseSaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateWarehouseExists(updateReqVO.getId());
-        // 鏍¢獙鏁版嵁
-        validateWarehouseSaveData(updateReqVO);
-
-        // 鏇存柊
-        WmsWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, WmsWarehouseDO.class);
-        warehouseMapper.updateById(updateObj);
-    }
-
-    private void validateWarehouseSaveData(WmsWarehouseSaveReqVO reqVO) {
-        validateWarehouseNameUnique(reqVO.getId(), reqVO.getName());
-        validateWarehouseCodeUnique(reqVO.getId(), reqVO.getCode());
-    }
-
-    private void validateWarehouseNameUnique(Long id, String name) {
-        WmsWarehouseDO warehouse = warehouseMapper.selectByName(name);
-        if (warehouse == null) {
-            return;
-        }
-        if (ObjUtil.notEqual(warehouse.getId(), id)) {
-            throw exception(WAREHOUSE_NAME_DUPLICATE);
-        }
-    }
-
-    private void validateWarehouseCodeUnique(Long id, String code) {
-        WmsWarehouseDO warehouse = warehouseMapper.selectByCode(code);
-        if (warehouse == null) {
-            return;
-        }
-        if (ObjUtil.notEqual(warehouse.getId(), id)) {
-            throw exception(WAREHOUSE_CODE_DUPLICATE);
-        }
-    }
-
-    @Override
-    public void deleteWarehouse(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateWarehouseExists(id);
-        // 鏍¢獙鏈鍗曟嵁浣跨敤
-        validateWarehouseUnused(id);
-
-        // 鍒犻櫎
-        warehouseMapper.deleteById(id);
-    }
-
-    private void validateWarehouseUnused(Long id) {
-        if (inventoryService.getInventoryCountByWarehouseId(id) > 0) {
-            throw exception(WAREHOUSE_HAS_INVENTORY);
-        }
-        if (receiptOrderService.getReceiptOrderCountByWarehouseId(id) > 0) {
-            throw exception(WAREHOUSE_HAS_ORDER, WmsOrderTypeEnum.RECEIPT.getName());
-        }
-        if (shipmentOrderService.getShipmentOrderCountByWarehouseId(id) > 0) {
-            throw exception(WAREHOUSE_HAS_ORDER, WmsOrderTypeEnum.SHIPMENT.getName());
-        }
-        if (movementOrderService.getMovementOrderCountByWarehouseId(id) > 0) {
-            throw exception(WAREHOUSE_HAS_ORDER, WmsOrderTypeEnum.MOVEMENT.getName());
-        }
-        if (checkOrderService.getCheckOrderCountByWarehouseId(id) > 0) {
-            throw exception(WAREHOUSE_HAS_ORDER, WmsOrderTypeEnum.CHECK.getName());
-        }
-    }
-
-    @Override
-    public WmsWarehouseDO validateWarehouseExists(Long id) {
-        WmsWarehouseDO warehouse = warehouseMapper.selectById(id);
-        if (warehouse == null) {
-            throw exception(WAREHOUSE_NOT_EXISTS);
-        }
-        return warehouse;
-    }
-
-    @Override
-    public WmsWarehouseDO getWarehouse(Long id) {
-        return warehouseMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsWarehouseDO> getWarehousePage(WmsWarehousePageReqVO pageReqVO) {
-        return warehouseMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<WmsWarehouseDO> getWarehouseList() {
-        return warehouseMapper.selectSimpleList();
-    }
-
-    @Override
-    public List<WmsWarehouseDO> getWarehouseList(Collection<Long> ids) {
-        if (CollUtil.isEmpty(ids)) {
-            return Collections.emptyList();
-        }
-        return warehouseMapper.selectByIds(ids);
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailService.java
deleted file mode 100644
index 0231951..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.check;
-
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鐩樺簱鍗曟槑缁� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsCheckOrderDetailService {
-
-    /**
-     * 鍒涘缓鐩樺簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 鐩樺簱鍗曠紪鍙�
-     * @param reqVO 鐩樺簱鍗曚繚瀛樹俊鎭�
-     */
-    void createCheckOrderDetailList(Long orderId, WmsCheckOrderSaveReqVO reqVO);
-
-    /**
-     * 鏇存柊鐩樺簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 鐩樺簱鍗曠紪鍙�
-     * @param reqVO 鐩樺簱鍗曚繚瀛樹俊鎭�
-     */
-    void updateCheckOrderDetailList(Long orderId, WmsCheckOrderSaveReqVO reqVO);
-
-    /**
-     * 鎸夌洏搴撳崟缂栧彿鍒犻櫎鏄庣粏鍒楄〃
-     *
-     * @param orderId 鐩樺簱鍗曠紪鍙�
-     */
-    void deleteCheckOrderDetailListByOrderId(Long orderId);
-
-    /**
-     * 鎸夌洏搴撳崟缂栧彿鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderId 鐩樺簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsCheckOrderDetailDO> getCheckOrderDetailList(Long orderId);
-
-    /**
-     * 鎸夌洏搴撳崟缂栧彿闆嗗悎鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderIds 鐩樺簱鍗曠紪鍙烽泦鍚�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsCheckOrderDetailDO> getCheckOrderDetailList(Collection<Long> orderIds);
-
-    /**
-     * 鏍¢獙鐩樺簱鍗曟槑缁嗗垪琛ㄥ瓨鍦�
-     *
-     * @param orderId 鐩樺簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsCheckOrderDetailDO> validateCheckOrderDetailListExists(Long orderId);
-
-    /**
-     * 鑾峰緱鎸囧畾 SKU 鐨勭洏搴撳崟鏄庣粏鏁伴噺
-     *
-     * @param skuId SKU 缂栧彿
-     * @return 鐩樺簱鍗曟槑缁嗘暟閲�
-     */
-    long getCheckOrderDetailCountBySkuId(Long skuId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailServiceImpl.java
deleted file mode 100644
index 6afeebc..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailServiceImpl.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.check;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.check.WmsCheckOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鐩樺簱鍗曟槑缁� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsCheckOrderDetailServiceImpl implements WmsCheckOrderDetailService {
-
-    @Resource
-    private WmsCheckOrderDetailMapper checkOrderDetailMapper;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createCheckOrderDetailList(Long orderId, WmsCheckOrderSaveReqVO reqVO) {
-        List<WmsCheckOrderDetailDO> list = buildCheckOrderDetailList(reqVO);
-        if (CollUtil.isEmpty(list)) {
-            return;
-        }
-        list.forEach(detail -> detail.setId(null).setOrderId(orderId));
-        checkOrderDetailMapper.insertBatch(list);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateCheckOrderDetailList(Long orderId, WmsCheckOrderSaveReqVO reqVO) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<WmsCheckOrderDetailDO> oldList = checkOrderDetailMapper.selectListByOrderId(orderId);
-        List<WmsCheckOrderDetailDO> list = buildCheckOrderDetailList(reqVO);
-        List<WmsCheckOrderDetailDO> newList = CollUtil.isEmpty(list) ? ListUtil.of() : list;
-        List<List<WmsCheckOrderDetailDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            if (CollUtil.isNotEmpty(convertList(diffList.get(0), WmsCheckOrderDetailDO::getId))) {
-                throw exception(CHECK_ORDER_DETAIL_NOT_EXISTS);
-            }
-            diffList.get(0).forEach(detail -> detail.setOrderId(orderId));
-            checkOrderDetailMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            diffList.get(1).forEach(detail -> detail.setOrderId(orderId));
-            checkOrderDetailMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            checkOrderDetailMapper.deleteByIds(convertList(diffList.get(2), WmsCheckOrderDetailDO::getId));
-        }
-    }
-
-    @Override
-    public void deleteCheckOrderDetailListByOrderId(Long orderId) {
-        checkOrderDetailMapper.deleteByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsCheckOrderDetailDO> getCheckOrderDetailList(Long orderId) {
-        return checkOrderDetailMapper.selectListByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsCheckOrderDetailDO> getCheckOrderDetailList(Collection<Long> orderIds) {
-        if (CollUtil.isEmpty(orderIds)) {
-            return ListUtil.of();
-        }
-        return checkOrderDetailMapper.selectListByOrderIds(orderIds);
-    }
-
-    @Override
-    public List<WmsCheckOrderDetailDO> validateCheckOrderDetailListExists(Long orderId) {
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailMapper.selectListByOrderId(orderId);
-        if (CollUtil.isEmpty(details)) {
-            throw exception(CHECK_ORDER_DETAIL_REQUIRED);
-        }
-        return details;
-    }
-
-    @Override
-    public long getCheckOrderDetailCountBySkuId(Long skuId) {
-        return checkOrderDetailMapper.selectCountBySkuId(skuId);
-    }
-
-    private List<WmsCheckOrderDetailDO> buildCheckOrderDetailList(WmsCheckOrderSaveReqVO reqVO) {
-        if (CollUtil.isEmpty(reqVO.getDetails())) {
-            return ListUtil.of();
-        }
-        return convertList(reqVO.getDetails(), detail -> {
-            // 鏍¢獙 SKU 瀛樺湪
-            itemSkuService.validateItemSkuExists(detail.getSkuId());
-            // 鏋勫缓瀵硅薄
-            return BeanUtils.toBean(detail, WmsCheckOrderDetailDO.class).setWarehouseId(reqVO.getWarehouseId());
-        });
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderService.java
deleted file mode 100644
index 659d7c2..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.check;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDO;
-import jakarta.validation.Valid;
-
-/**
- * WMS 鐩樺簱鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsCheckOrderService {
-
-    /**
-     * 鍒涘缓鐩樺簱鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createCheckOrder(@Valid WmsCheckOrderSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鐩樺簱鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateCheckOrder(@Valid WmsCheckOrderSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎鐩樺簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void deleteCheckOrder(Long id);
-
-    /**
-     * 瀹屾垚鐩樺簱
-     *
-     * @param id 缂栧彿
-     */
-    void completeCheckOrder(Long id);
-
-    /**
-     * 浣滃簾鐩樺簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void cancelCheckOrder(Long id);
-
-    /**
-     * 鑾峰緱鐩樺簱鍗�
-     *
-     * @param id 缂栧彿
-     * @return 鐩樺簱鍗�
-     */
-    WmsCheckOrderDO getCheckOrder(Long id);
-
-    /**
-     * 鑾峰緱鐩樺簱鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鐩樺簱鍗曞垎椤�
-     */
-    PageResult<WmsCheckOrderDO> getCheckOrderPage(WmsCheckOrderPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鎸囧畾浠撳簱鐨勭洏搴撳崟鏁伴噺
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 鐩樺簱鍗曟暟閲�
-     */
-    long getCheckOrderCountByWarehouseId(Long warehouseId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderServiceImpl.java
deleted file mode 100644
index d7beb83..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderServiceImpl.java
+++ /dev/null
@@ -1,222 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.check;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.check.WmsCheckOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryCheckReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鐩樺簱鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsCheckOrderServiceImpl implements WmsCheckOrderService {
-
-    @Resource
-    private WmsCheckOrderMapper checkOrderMapper;
-    @Resource
-    private WmsCheckOrderDetailService checkOrderDetailService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsInventoryService inventoryService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createCheckOrder(WmsCheckOrderSaveReqVO createReqVO) {
-        // 1. 鏍¢獙鐩樺簱鍗曚繚瀛樻暟鎹�
-        validateCheckOrderSaveData(createReqVO);
-
-        // 2.1 鎻掑叆鐩樺簱鍗�
-        WmsCheckOrderDO order = BeanUtils.toBean(createReqVO, WmsCheckOrderDO.class);
-        order.setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillCheckOrderTotal(order, createReqVO);
-        checkOrderMapper.insert(order);
-        // 2.2 鎻掑叆鐩樺簱鍗曟槑缁�
-        checkOrderDetailService.createCheckOrderDetailList(order.getId(), createReqVO);
-        return order.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateCheckOrder(WmsCheckOrderSaveReqVO updateReqVO) {
-        // 1. 鏍¢獙鐩樺簱鍗曚繚瀛樻暟鎹�
-        validateCheckOrderPrepare(updateReqVO.getId());
-        validateCheckOrderSaveData(updateReqVO);
-
-        // 2.1 鏇存柊鐩樺簱鍗�
-        WmsCheckOrderDO updateObj = BeanUtils.toBean(updateReqVO, WmsCheckOrderDO.class)
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillCheckOrderTotal(updateObj, updateReqVO);
-        int updateCount = checkOrderMapper.updateByIdAndStatus(updateReqVO.getId(),
-                WmsOrderStatusEnum.PREPARE.getStatus(), updateObj);
-        if (updateCount == 0) {
-            throw exception(CHECK_ORDER_STATUS_NOT_PREPARE);
-        }
-        // 2.2 鏇存柊鐩樺簱鍗曟槑缁�
-        checkOrderDetailService.updateCheckOrderDetailList(updateReqVO.getId(), updateReqVO);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteCheckOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鍙垹闄�
-        WmsCheckOrderDO order = validateCheckOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())
-                && ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.CANCELED.getStatus())) {
-            throw exception(CHECK_ORDER_STATUS_NOT_DELETABLE);
-        }
-
-        // 2.1 鍒犻櫎鐩樺簱鍗�
-        checkOrderMapper.deleteById(id);
-        // 2.2 鍒犻櫎鐩樺簱鍗曟槑缁�
-        checkOrderDetailService.deleteCheckOrderDetailListByOrderId(id);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void completeCheckOrder(Long id) {
-        // 1.1 鏍¢獙瀛樺湪锛屼笖鑽夌
-        WmsCheckOrderDO order = validateCheckOrderPrepare(id);
-        // 1.2 鏍¢獙鐩樺簱鍗曟槑缁嗗瓨鍦�
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailService.validateCheckOrderDetailListExists(id);
-
-        // 2. 瀹屾垚鐩樺簱鍗�
-        if (checkOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsCheckOrderDO().setStatus(WmsOrderStatusEnum.FINISHED.getStatus())) == 0) {
-            throw exception(CHECK_ORDER_STATUS_NOT_PREPARE);
-        }
-
-        // 3. 鐩樼偣搴撳瓨
-        inventoryService.checkInventory(buildCheckInventoryReqDTO(order, details));
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void cancelCheckOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鑽夌
-        validateCheckOrderPrepare(id);
-
-        // 2. 浣滃簾鐩樺簱鍗�
-        if (checkOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsCheckOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus())) == 0) {
-            throw exception(CHECK_ORDER_STATUS_NOT_PREPARE);
-        }
-    }
-
-    @Override
-    public WmsCheckOrderDO getCheckOrder(Long id) {
-        return checkOrderMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsCheckOrderDO> getCheckOrderPage(WmsCheckOrderPageReqVO pageReqVO) {
-        return checkOrderMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public long getCheckOrderCountByWarehouseId(Long warehouseId) {
-        return checkOrderMapper.selectCountByWarehouseId(warehouseId);
-    }
-
-    private void validateCheckOrderSaveData(WmsCheckOrderSaveReqVO reqVO) {
-        // 鏍¢獙鐩樺簱鍗曞彿鍞竴
-        validateCheckOrderNoUnique(reqVO.getId(), reqVO.getNo());
-        // 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validateWarehouseExists(reqVO.getWarehouseId());
-    }
-
-    private void validateCheckOrderNoUnique(Long id, String no) {
-        WmsCheckOrderDO order = checkOrderMapper.selectByNo(no);
-        if (order == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(order.getId(), id)) {
-            throw exception(CHECK_ORDER_NO_DUPLICATE);
-        }
-    }
-
-    private void fillCheckOrderTotal(WmsCheckOrderDO order, WmsCheckOrderSaveReqVO reqVO) {
-        BigDecimal totalQuantity = BigDecimal.ZERO;
-        BigDecimal totalPrice = BigDecimal.ZERO;
-        BigDecimal actualPrice = BigDecimal.ZERO;
-        if (CollUtil.isNotEmpty(reqVO.getDetails())) {
-            for (WmsCheckOrderDetailSaveReqVO detail : reqVO.getDetails()) {
-                BigDecimal differenceQuantity = calculateDifferenceQuantity(detail.getQuantity(), detail.getCheckQuantity());
-                totalQuantity = totalQuantity.add(differenceQuantity);
-                if (detail.getPrice() == null) {
-                    continue;
-                }
-                if (detail.getQuantity() != null) {
-                    totalPrice = totalPrice.add(MoneyUtils.priceMultiply(detail.getPrice(), detail.getQuantity()));
-                }
-                if (detail.getCheckQuantity() != null) {
-                    actualPrice = actualPrice.add(MoneyUtils.priceMultiply(detail.getPrice(), detail.getCheckQuantity()));
-                }
-            }
-        }
-        order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice).setActualPrice(actualPrice);
-    }
-
-    private BigDecimal calculateDifferenceQuantity(BigDecimal quantity, BigDecimal checkQuantity) {
-        if (quantity == null || checkQuantity == null) {
-            return BigDecimal.ZERO;
-        }
-        return checkQuantity.subtract(quantity);
-    }
-
-    private WmsCheckOrderDO validateCheckOrderExists(Long id) {
-        WmsCheckOrderDO order = id == null ? null : checkOrderMapper.selectById(id);
-        if (order == null) {
-            throw exception(CHECK_ORDER_NOT_EXISTS);
-        }
-        return order;
-    }
-
-    /**
-     * 鏍¢獙鐩樺簱鍗曞瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
-     *
-     * @param id 鐩樺簱鍗曠紪鍙�
-     * @return 鐩樺簱鍗�
-     */
-    private WmsCheckOrderDO validateCheckOrderPrepare(Long id) {
-        WmsCheckOrderDO order = validateCheckOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())) {
-            throw exception(CHECK_ORDER_STATUS_NOT_PREPARE);
-        }
-        return order;
-    }
-
-    private WmsInventoryCheckReqDTO buildCheckInventoryReqDTO(WmsCheckOrderDO order,
-                                                             List<WmsCheckOrderDetailDO> details) {
-        return new WmsInventoryCheckReqDTO()
-                .setOrderId(order.getId()).setOrderNo(order.getNo())
-                .setOrderType(WmsOrderTypeEnum.CHECK.getType())
-                .setItems(BeanUtils.toBean(details, WmsInventoryCheckReqDTO.Item.class));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailService.java
deleted file mode 100644
index 7675ee7..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.movement;
-
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 绉诲簱鍗曟槑缁� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsMovementOrderDetailService {
-
-    /**
-     * 鍒涘缓绉诲簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 绉诲簱鍗曠紪鍙�
-     * @param reqVO 绉诲簱鍗曚繚瀛樹俊鎭�
-     */
-    void createMovementOrderDetailList(Long orderId, WmsMovementOrderSaveReqVO reqVO);
-
-    /**
-     * 鏇存柊绉诲簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 绉诲簱鍗曠紪鍙�
-     * @param reqVO 绉诲簱鍗曚繚瀛樹俊鎭�
-     */
-    void updateMovementOrderDetailList(Long orderId, WmsMovementOrderSaveReqVO reqVO);
-
-    /**
-     * 鎸夌Щ搴撳崟缂栧彿鍒犻櫎鏄庣粏鍒楄〃
-     *
-     * @param orderId 绉诲簱鍗曠紪鍙�
-     */
-    void deleteMovementOrderDetailListByOrderId(Long orderId);
-
-    /**
-     * 鎸夌Щ搴撳崟缂栧彿鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderId 绉诲簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsMovementOrderDetailDO> getMovementOrderDetailList(Long orderId);
-
-    /**
-     * 鎸夌Щ搴撳崟缂栧彿闆嗗悎鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderIds 绉诲簱鍗曠紪鍙烽泦鍚�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsMovementOrderDetailDO> getMovementOrderDetailList(Collection<Long> orderIds);
-
-    /**
-     * 鏍¢獙绉诲簱鍗曟槑缁嗗垪琛ㄥ瓨鍦�
-     *
-     * @param orderId 绉诲簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsMovementOrderDetailDO> validateMovementOrderDetailListExists(Long orderId);
-
-    /**
-     * 鑾峰緱鎸囧畾 SKU 鐨勭Щ搴撳崟鏄庣粏鏁伴噺
-     *
-     * @param skuId SKU 缂栧彿
-     * @return 绉诲簱鍗曟槑缁嗘暟閲�
-     */
-    long getMovementOrderDetailCountBySkuId(Long skuId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImpl.java
deleted file mode 100644
index e5b4bb0..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImpl.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.movement;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.movement.WmsMovementOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 绉诲簱鍗曟槑缁� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsMovementOrderDetailServiceImpl implements WmsMovementOrderDetailService {
-
-    @Resource
-    private WmsMovementOrderDetailMapper movementOrderDetailMapper;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createMovementOrderDetailList(Long orderId, WmsMovementOrderSaveReqVO reqVO) {
-        List<WmsMovementOrderDetailDO> list = buildMovementOrderDetailList(reqVO);
-        if (CollUtil.isEmpty(list)) {
-            return;
-        }
-        list.forEach(detail -> detail.setId(null).setOrderId(orderId));
-        movementOrderDetailMapper.insertBatch(list);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateMovementOrderDetailList(Long orderId, WmsMovementOrderSaveReqVO reqVO) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<WmsMovementOrderDetailDO> oldList = movementOrderDetailMapper.selectListByOrderId(orderId);
-        List<WmsMovementOrderDetailDO> list = buildMovementOrderDetailList(reqVO);
-        List<WmsMovementOrderDetailDO> newList = CollUtil.isEmpty(list) ? ListUtil.of() : list;
-        List<List<WmsMovementOrderDetailDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            if (CollUtil.isNotEmpty(convertList(diffList.get(0), WmsMovementOrderDetailDO::getId))) {
-                throw exception(MOVEMENT_ORDER_DETAIL_NOT_EXISTS);
-            }
-            diffList.get(0).forEach(detail -> detail.setOrderId(orderId));
-            movementOrderDetailMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            diffList.get(1).forEach(detail -> detail.setOrderId(orderId));
-            movementOrderDetailMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            movementOrderDetailMapper.deleteByIds(convertList(diffList.get(2), WmsMovementOrderDetailDO::getId));
-        }
-    }
-
-    @Override
-    public void deleteMovementOrderDetailListByOrderId(Long orderId) {
-        movementOrderDetailMapper.deleteByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsMovementOrderDetailDO> getMovementOrderDetailList(Long orderId) {
-        return movementOrderDetailMapper.selectListByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsMovementOrderDetailDO> getMovementOrderDetailList(Collection<Long> orderIds) {
-        if (CollUtil.isEmpty(orderIds)) {
-            return ListUtil.of();
-        }
-        return movementOrderDetailMapper.selectListByOrderIds(orderIds);
-    }
-
-    @Override
-    public List<WmsMovementOrderDetailDO> validateMovementOrderDetailListExists(Long orderId) {
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(orderId);
-        if (CollUtil.isEmpty(details)) {
-            throw exception(MOVEMENT_ORDER_DETAIL_REQUIRED);
-        }
-        return details;
-    }
-
-    @Override
-    public long getMovementOrderDetailCountBySkuId(Long skuId) {
-        return movementOrderDetailMapper.selectCountBySkuId(skuId);
-    }
-
-    private List<WmsMovementOrderDetailDO> buildMovementOrderDetailList(WmsMovementOrderSaveReqVO reqVO) {
-        if (CollUtil.isEmpty(reqVO.getDetails())) {
-            return ListUtil.of();
-        }
-        return convertList(reqVO.getDetails(), detail -> {
-            // 鏍¢獙 SKU 瀛樺湪
-            itemSkuService.validateItemSkuExists(detail.getSkuId());
-            // 鏋勫缓瀵硅薄
-            WmsMovementOrderDetailDO detailDO = BeanUtils.toBean(detail, WmsMovementOrderDetailDO.class)
-                    .setSourceWarehouseId(reqVO.getSourceWarehouseId())
-                    .setTargetWarehouseId(reqVO.getTargetWarehouseId());
-            fillDetailTotalPrice(detailDO);
-            return detailDO;
-        });
-    }
-
-    private static void fillDetailTotalPrice(WmsMovementOrderDetailDO detail) {
-        if (detail.getTotalPrice() != null || detail.getQuantity() == null || detail.getPrice() == null) {
-            return;
-        }
-        detail.setTotalPrice(MoneyUtils.priceMultiply(detail.getPrice(), detail.getQuantity()));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderService.java
deleted file mode 100644
index 52fbf71..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.movement;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDO;
-import jakarta.validation.Valid;
-
-/**
- * WMS 绉诲簱鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsMovementOrderService {
-
-    /**
-     * 鍒涘缓绉诲簱鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createMovementOrder(@Valid WmsMovementOrderSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊绉诲簱鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateMovementOrder(@Valid WmsMovementOrderSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎绉诲簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void deleteMovementOrder(Long id);
-
-    /**
-     * 瀹屾垚绉诲簱
-     *
-     * @param id 缂栧彿
-     */
-    void completeMovementOrder(Long id);
-
-    /**
-     * 浣滃簾绉诲簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void cancelMovementOrder(Long id);
-
-    /**
-     * 鑾峰緱绉诲簱鍗�
-     *
-     * @param id 缂栧彿
-     * @return 绉诲簱鍗�
-     */
-    WmsMovementOrderDO getMovementOrder(Long id);
-
-    /**
-     * 鑾峰緱绉诲簱鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 绉诲簱鍗曞垎椤�
-     */
-    PageResult<WmsMovementOrderDO> getMovementOrderPage(WmsMovementOrderPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鎸囧畾浠撳簱鐨勭Щ搴撳崟鏁伴噺
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 绉诲簱鍗曟暟閲�
-     */
-    long getMovementOrderCountByWarehouseId(Long warehouseId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImpl.java
deleted file mode 100644
index ee2613e..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImpl.java
+++ /dev/null
@@ -1,243 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.movement;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.movement.WmsMovementOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 绉诲簱鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsMovementOrderServiceImpl implements WmsMovementOrderService {
-
-    @Resource
-    private WmsMovementOrderMapper movementOrderMapper;
-    @Resource
-    private WmsMovementOrderDetailService movementOrderDetailService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsInventoryService inventoryService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createMovementOrder(WmsMovementOrderSaveReqVO createReqVO) {
-        // 1. 鏍¢獙绉诲簱鍗曚繚瀛樻暟鎹�
-        validateMovementOrderSaveData(createReqVO);
-
-        // 2.1 鎻掑叆绉诲簱鍗�
-        WmsMovementOrderDO order = BeanUtils.toBean(createReqVO, WmsMovementOrderDO.class);
-        order.setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillMovementOrderTotal(order, createReqVO);
-        movementOrderMapper.insert(order);
-        // 2.2 鎻掑叆绉诲簱鍗曟槑缁�
-        movementOrderDetailService.createMovementOrderDetailList(order.getId(), createReqVO);
-        return order.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateMovementOrder(WmsMovementOrderSaveReqVO updateReqVO) {
-        // 1. 鏍¢獙绉诲簱鍗曚繚瀛樻暟鎹�
-        validateMovementOrderPrepare(updateReqVO.getId());
-        validateMovementOrderSaveData(updateReqVO);
-
-        // 2.1 鏇存柊绉诲簱鍗�
-        WmsMovementOrderDO updateObj = BeanUtils.toBean(updateReqVO, WmsMovementOrderDO.class)
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillMovementOrderTotal(updateObj, updateReqVO);
-        int updateCount = movementOrderMapper.updateByIdAndStatus(updateReqVO.getId(),
-                WmsOrderStatusEnum.PREPARE.getStatus(), updateObj);
-        if (updateCount == 0) {
-            throw exception(MOVEMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-        // 2.2 鏇存柊绉诲簱鍗曟槑缁�
-        movementOrderDetailService.updateMovementOrderDetailList(updateReqVO.getId(), updateReqVO);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteMovementOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鍙垹闄�
-        WmsMovementOrderDO order = validateMovementOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())
-                && ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.CANCELED.getStatus())) {
-            throw exception(MOVEMENT_ORDER_STATUS_NOT_DELETABLE);
-        }
-
-        // 2.1 鍒犻櫎绉诲簱鍗�
-        movementOrderMapper.deleteById(id);
-        // 2.2 鍒犻櫎绉诲簱鍗曟槑缁�
-        movementOrderDetailService.deleteMovementOrderDetailListByOrderId(id);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void completeMovementOrder(Long id) {
-        // 1.1 鏍¢獙瀛樺湪锛屼笖鑽夌
-        WmsMovementOrderDO order = validateMovementOrderPrepare(id);
-        // 1.2 鏍¢獙绉诲簱鍗曟槑缁嗗瓨鍦�
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailService.validateMovementOrderDetailListExists(id);
-
-        // 2. 瀹屾垚绉诲簱鍗�
-        if (movementOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsMovementOrderDO().setStatus(WmsOrderStatusEnum.FINISHED.getStatus())) == 0) {
-            throw exception(MOVEMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-
-        // 3. 绉诲姩搴撳瓨
-        changeInventory(order, details);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void cancelMovementOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鑽夌
-        validateMovementOrderPrepare(id);
-
-        // 2. 浣滃簾绉诲簱鍗�
-        if (movementOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsMovementOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus())) == 0) {
-            throw exception(MOVEMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-    }
-
-    @Override
-    public WmsMovementOrderDO getMovementOrder(Long id) {
-        return movementOrderMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsMovementOrderDO> getMovementOrderPage(WmsMovementOrderPageReqVO pageReqVO) {
-        return movementOrderMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public long getMovementOrderCountByWarehouseId(Long warehouseId) {
-        return movementOrderMapper.selectCountByWarehouseId(warehouseId);
-    }
-
-    private void validateMovementOrderSaveData(WmsMovementOrderSaveReqVO reqVO) {
-        // 鏍¢獙绉诲簱鍗曞彿鍞竴
-        validateMovementOrderNoUnique(reqVO.getId(), reqVO.getNo());
-        // 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validateWarehouseExists(reqVO.getSourceWarehouseId());
-        warehouseService.validateWarehouseExists(reqVO.getTargetWarehouseId());
-        // 鏍¢獙鏉ユ簮鍜岀洰鏍囦笉鑳界浉鍚�
-        if (ObjectUtil.equal(reqVO.getSourceWarehouseId(), reqVO.getTargetWarehouseId())) {
-            throw exception(MOVEMENT_ORDER_WAREHOUSE_SAME);
-        }
-    }
-
-    private void validateMovementOrderNoUnique(Long id, String no) {
-        WmsMovementOrderDO order = movementOrderMapper.selectByNo(no);
-        if (order == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(order.getId(), id)) {
-            throw exception(MOVEMENT_ORDER_NO_DUPLICATE);
-        }
-    }
-
-    private void fillMovementOrderTotal(WmsMovementOrderDO order, WmsMovementOrderSaveReqVO reqVO) {
-        BigDecimal totalQuantity = BigDecimal.ZERO;
-        BigDecimal totalPrice = BigDecimal.ZERO;
-        if (CollUtil.isNotEmpty(reqVO.getDetails())) {
-            for (WmsMovementOrderDetailSaveReqVO detail : reqVO.getDetails()) {
-                if (detail.getQuantity() != null) {
-                    totalQuantity = totalQuantity.add(detail.getQuantity());
-                }
-                BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(),
-                        detail.getTotalPrice());
-                if (detailTotalPrice != null) {
-                    totalPrice = totalPrice.add(detailTotalPrice);
-                }
-            }
-        }
-        order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice);
-    }
-
-    private static BigDecimal getDetailTotalPrice(BigDecimal quantity, BigDecimal price, BigDecimal totalPrice) {
-        if (totalPrice != null) {
-            return totalPrice;
-        }
-        return MoneyUtils.priceMultiply(price, quantity);
-    }
-
-    private WmsMovementOrderDO validateMovementOrderExists(Long id) {
-        WmsMovementOrderDO order = id == null ? null : movementOrderMapper.selectById(id);
-        if (order == null) {
-            throw exception(MOVEMENT_ORDER_NOT_EXISTS);
-        }
-        return order;
-    }
-
-    /**
-     * 鏍¢獙绉诲簱鍗曞瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
-     *
-     * @param id 绉诲簱鍗曠紪鍙�
-     * @return 绉诲簱鍗�
-     */
-    private WmsMovementOrderDO validateMovementOrderPrepare(Long id) {
-        WmsMovementOrderDO order = validateMovementOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())) {
-            throw exception(MOVEMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-        return order;
-    }
-
-    /**
-     * 绉诲姩绉诲簱鍗曞搴斿簱瀛�
-     *
-     * @param order 绉诲簱鍗�
-     * @param details 绉诲簱鍗曟槑缁嗗垪琛�
-     */
-    private void changeInventory(WmsMovementOrderDO order, List<WmsMovementOrderDetailDO> details) {
-        List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(details.size() * 2);
-        for (WmsMovementOrderDetailDO detail : details) {
-            BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(),
-                    detail.getTotalPrice());
-            items.add(BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class)
-                    .setWarehouseId(detail.getSourceWarehouseId()).setQuantity(detail.getQuantity().negate())
-                    .setTotalPrice(negate(detailTotalPrice)));
-            items.add(BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class)
-                    .setWarehouseId(detail.getTargetWarehouseId()).setQuantity(detail.getQuantity())
-                    .setTotalPrice(detailTotalPrice));
-        }
-        inventoryService.changeInventory(new WmsInventoryChangeReqDTO()
-                .setOrderId(order.getId()).setOrderNo(order.getNo())
-                .setOrderType(WmsOrderTypeEnum.MOVEMENT.getType()).setItems(items));
-    }
-
-    private static BigDecimal negate(BigDecimal value) {
-        return value == null ? null : value.negate();
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailService.java
deleted file mode 100644
index ba67d7b..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.receipt;
-
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鍏ュ簱鍗曟槑缁� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsReceiptOrderDetailService {
-
-    /**
-     * 鍒涘缓鍏ュ簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 鍏ュ簱鍗曠紪鍙�
-     * @param reqVO 鍏ュ簱鍗曚繚瀛樹俊鎭�
-     */
-    void createReceiptOrderDetailList(Long orderId, WmsReceiptOrderSaveReqVO reqVO);
-
-    /**
-     * 鏇存柊鍏ュ簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 鍏ュ簱鍗曠紪鍙�
-     * @param reqVO 鍏ュ簱鍗曚繚瀛樹俊鎭�
-     */
-    void updateReceiptOrderDetailList(Long orderId, WmsReceiptOrderSaveReqVO reqVO);
-
-    /**
-     * 鎸夊叆搴撳崟缂栧彿鍒犻櫎鏄庣粏鍒楄〃
-     *
-     * @param orderId 鍏ュ簱鍗曠紪鍙�
-     */
-    void deleteReceiptOrderDetailListByOrderId(Long orderId);
-
-    /**
-     * 鎸夊叆搴撳崟缂栧彿鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderId 鍏ュ簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsReceiptOrderDetailDO> getReceiptOrderDetailList(Long orderId);
-
-    /**
-     * 鎸夊叆搴撳崟缂栧彿闆嗗悎鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderIds 鍏ュ簱鍗曠紪鍙烽泦鍚�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsReceiptOrderDetailDO> getReceiptOrderDetailList(Collection<Long> orderIds);
-
-    /**
-     * 鏍¢獙鍏ュ簱鍗曟槑缁嗗垪琛ㄥ瓨鍦�
-     *
-     * @param orderId 鍏ュ簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsReceiptOrderDetailDO> validateReceiptOrderDetailListExists(Long orderId);
-
-    /**
-     * 鑾峰緱鎸囧畾 SKU 鐨勫叆搴撳崟鏄庣粏鏁伴噺
-     *
-     * @param skuId SKU 缂栧彿
-     * @return 鍏ュ簱鍗曟槑缁嗘暟閲�
-     */
-    long getReceiptOrderDetailCountBySkuId(Long skuId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImpl.java
deleted file mode 100644
index 67ae8d0..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImpl.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.receipt;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.receipt.WmsReceiptOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍏ュ簱鍗曟槑缁� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsReceiptOrderDetailServiceImpl implements WmsReceiptOrderDetailService {
-
-    @Resource
-    private WmsReceiptOrderDetailMapper receiptOrderDetailMapper;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createReceiptOrderDetailList(Long orderId, WmsReceiptOrderSaveReqVO reqVO) {
-        List<WmsReceiptOrderDetailDO> list = buildReceiptOrderDetailList(reqVO);
-        if (CollUtil.isEmpty(list)) {
-            return;
-        }
-        list.forEach(detail -> detail.setId(null).setOrderId(orderId));
-        receiptOrderDetailMapper.insertBatch(list);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateReceiptOrderDetailList(Long orderId, WmsReceiptOrderSaveReqVO reqVO) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<WmsReceiptOrderDetailDO> oldList = receiptOrderDetailMapper.selectListByOrderId(orderId);
-        List<WmsReceiptOrderDetailDO> list = buildReceiptOrderDetailList(reqVO);
-        List<WmsReceiptOrderDetailDO> newList = CollUtil.isEmpty(list) ? ListUtil.of() : list;
-        List<List<WmsReceiptOrderDetailDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            if (CollUtil.isNotEmpty(convertList(diffList.get(0), WmsReceiptOrderDetailDO::getId))) {
-                throw exception(RECEIPT_ORDER_DETAIL_NOT_EXISTS);
-            }
-            diffList.get(0).forEach(detail -> detail.setOrderId(orderId));
-            receiptOrderDetailMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            diffList.get(1).forEach(detail -> detail.setOrderId(orderId));
-            receiptOrderDetailMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            receiptOrderDetailMapper.deleteByIds(convertList(diffList.get(2), WmsReceiptOrderDetailDO::getId));
-        }
-    }
-
-    @Override
-    public void deleteReceiptOrderDetailListByOrderId(Long orderId) {
-        receiptOrderDetailMapper.deleteByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsReceiptOrderDetailDO> getReceiptOrderDetailList(Long orderId) {
-        return receiptOrderDetailMapper.selectListByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsReceiptOrderDetailDO> getReceiptOrderDetailList(Collection<Long> orderIds) {
-        if (CollUtil.isEmpty(orderIds)) {
-            return ListUtil.of();
-        }
-        return receiptOrderDetailMapper.selectListByOrderIds(orderIds);
-    }
-
-    @Override
-    public List<WmsReceiptOrderDetailDO> validateReceiptOrderDetailListExists(Long orderId) {
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId);
-        if (CollUtil.isEmpty(details)) {
-            throw exception(RECEIPT_ORDER_DETAIL_REQUIRED);
-        }
-        return details;
-    }
-
-    @Override
-    public long getReceiptOrderDetailCountBySkuId(Long skuId) {
-        return receiptOrderDetailMapper.selectCountBySkuId(skuId);
-    }
-
-    private List<WmsReceiptOrderDetailDO> buildReceiptOrderDetailList(WmsReceiptOrderSaveReqVO reqVO) {
-        if (CollUtil.isEmpty(reqVO.getDetails())) {
-            return ListUtil.of();
-        }
-        return convertList(reqVO.getDetails(), detail -> {
-            // 鏍¢獙 SKU 瀛樺湪
-            itemSkuService.validateItemSkuExists(detail.getSkuId());
-            // 鏋勫缓瀵硅薄
-            WmsReceiptOrderDetailDO detailDO = BeanUtils.toBean(detail, WmsReceiptOrderDetailDO.class)
-                    .setWarehouseId(reqVO.getWarehouseId());
-            fillDetailTotalPrice(detailDO);
-            return detailDO;
-        });
-    }
-
-    private static void fillDetailTotalPrice(WmsReceiptOrderDetailDO detail) {
-        if (detail.getTotalPrice() != null || detail.getQuantity() == null || detail.getPrice() == null) {
-            return;
-        }
-        detail.setTotalPrice(MoneyUtils.priceMultiply(detail.getPrice(), detail.getQuantity()));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderService.java
deleted file mode 100644
index 4223bfb..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.receipt;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO;
-import jakarta.validation.Valid;
-
-/**
- * WMS 鍏ュ簱鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsReceiptOrderService {
-
-    /**
-     * 鍒涘缓鍏ュ簱鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createReceiptOrder(@Valid WmsReceiptOrderSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍏ュ簱鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateReceiptOrder(@Valid WmsReceiptOrderSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎鍏ュ簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void deleteReceiptOrder(Long id);
-
-    /**
-     * 瀹屾垚鍏ュ簱
-     *
-     * @param id 缂栧彿
-     */
-    void completeReceiptOrder(Long id);
-
-    /**
-     * 浣滃簾鍏ュ簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void cancelReceiptOrder(Long id);
-
-    /**
-     * 鑾峰緱鍏ュ簱鍗�
-     *
-     * @param id 缂栧彿
-     * @return 鍏ュ簱鍗�
-     */
-    WmsReceiptOrderDO getReceiptOrder(Long id);
-
-    /**
-     * 鑾峰緱鍏ュ簱鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鍏ュ簱鍗曞垎椤�
-     */
-    PageResult<WmsReceiptOrderDO> getReceiptOrderPage(WmsReceiptOrderPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鎸囧畾寰�鏉ヤ紒涓氱殑鍏ュ簱鍗曟暟閲�
-     *
-     * @param merchantId 寰�鏉ヤ紒涓氱紪鍙�
-     * @return 鍏ュ簱鍗曟暟閲�
-     */
-    long getReceiptOrderCountByMerchantId(Long merchantId);
-
-    /**
-     * 鑾峰緱鎸囧畾浠撳簱鐨勫叆搴撳崟鏁伴噺
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 鍏ュ簱鍗曟暟閲�
-     */
-    long getReceiptOrderCountByWarehouseId(Long warehouseId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImpl.java
deleted file mode 100644
index 70ac13c..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImpl.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.receipt;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.receipt.WmsReceiptOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍏ュ簱鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsReceiptOrderServiceImpl implements WmsReceiptOrderService {
-
-    @Resource
-    private WmsReceiptOrderMapper receiptOrderMapper;
-    @Resource
-    private WmsReceiptOrderDetailService receiptOrderDetailService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsMerchantService merchantService;
-    @Resource
-    private WmsInventoryService inventoryService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createReceiptOrder(WmsReceiptOrderSaveReqVO createReqVO) {
-        // 1. 鏍¢獙鍏ュ簱鍗曚繚瀛樻暟鎹�
-        validateReceiptOrderSaveData(createReqVO);
-
-        // 2.1 鎻掑叆鍏ュ簱鍗�
-        WmsReceiptOrderDO order = BeanUtils.toBean(createReqVO, WmsReceiptOrderDO.class);
-        order.setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillReceiptOrderTotal(order, createReqVO);
-        receiptOrderMapper.insert(order);
-        // 2.2 鎻掑叆鍏ュ簱鍗曟槑缁�
-        receiptOrderDetailService.createReceiptOrderDetailList(order.getId(), createReqVO);
-        return order.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateReceiptOrder(WmsReceiptOrderSaveReqVO updateReqVO) {
-        // 1. 鏍¢獙鍏ュ簱鍗曚繚瀛樻暟鎹�
-        validateReceiptOrderPrepare(updateReqVO.getId());
-        validateReceiptOrderSaveData(updateReqVO);
-
-        // 2.1 鏇存柊鍏ュ簱鍗�
-        WmsReceiptOrderDO updateObj = BeanUtils.toBean(updateReqVO, WmsReceiptOrderDO.class)
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillReceiptOrderTotal(updateObj, updateReqVO);
-        int updateCount = receiptOrderMapper.updateByIdAndStatus(updateReqVO.getId(),
-                WmsOrderStatusEnum.PREPARE.getStatus(), updateObj);
-        if (updateCount == 0) {
-            throw exception(RECEIPT_ORDER_STATUS_NOT_PREPARE);
-        }
-        // 2.2 鏇存柊鍏ュ簱鍗曟槑缁�
-        receiptOrderDetailService.updateReceiptOrderDetailList(updateReqVO.getId(), updateReqVO);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteReceiptOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鍙垹闄�
-        WmsReceiptOrderDO order = validateReceiptOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())
-                && ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.CANCELED.getStatus())) {
-            throw exception(RECEIPT_ORDER_STATUS_NOT_DELETABLE);
-        }
-
-        // 2.1 鍒犻櫎鍏ュ簱鍗�
-        receiptOrderMapper.deleteById(id);
-        // 2.2 鍒犻櫎鍏ュ簱鍗曟槑缁�
-        receiptOrderDetailService.deleteReceiptOrderDetailListByOrderId(id);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void completeReceiptOrder(Long id) {
-        // 1.1 鏍¢獙瀛樺湪锛屼笖鑽夌
-        WmsReceiptOrderDO order = validateReceiptOrderPrepare(id);
-        // 1.2 鏍¢獙鍏ュ簱鍗曟槑缁嗗瓨鍦�
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailService.validateReceiptOrderDetailListExists(id);
-
-        // 2. 瀹屾垚鍏ュ簱鍗�
-        if (receiptOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsReceiptOrderDO().setStatus(WmsOrderStatusEnum.FINISHED.getStatus())) == 0) {
-            throw exception(RECEIPT_ORDER_STATUS_NOT_PREPARE);
-        }
-
-        // 3. 鍐欏叆搴撳瓨
-        createInventory(order, details);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void cancelReceiptOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鑽夌
-        validateReceiptOrderPrepare(id);
-
-        // 2. 浣滃簾鍏ュ簱鍗�
-        if (receiptOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsReceiptOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus())) == 0) {
-            throw exception(RECEIPT_ORDER_STATUS_NOT_PREPARE);
-        }
-    }
-
-    @Override
-    public WmsReceiptOrderDO getReceiptOrder(Long id) {
-        return receiptOrderMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsReceiptOrderDO> getReceiptOrderPage(WmsReceiptOrderPageReqVO pageReqVO) {
-        return receiptOrderMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public long getReceiptOrderCountByMerchantId(Long merchantId) {
-        return receiptOrderMapper.selectCountByMerchantId(merchantId);
-    }
-
-    @Override
-    public long getReceiptOrderCountByWarehouseId(Long warehouseId) {
-        return receiptOrderMapper.selectCountByWarehouseId(warehouseId);
-    }
-
-    private void validateReceiptOrderSaveData(WmsReceiptOrderSaveReqVO reqVO) {
-        // 鏍¢獙鍏ュ簱鍗曞彿鍞竴
-        validateReceiptOrderNoUnique(reqVO.getId(), reqVO.getNo());
-        // 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validateWarehouseExists(reqVO.getWarehouseId());
-        // 鏍¢獙渚涘簲鍟嗙被鍨�
-        if (reqVO.getMerchantId() != null) {
-            merchantService.validateSupplierMerchantExists(reqVO.getMerchantId());
-        }
-    }
-
-    private void validateReceiptOrderNoUnique(Long id, String no) {
-        WmsReceiptOrderDO order = receiptOrderMapper.selectByNo(no);
-        if (order == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(order.getId(), id)) {
-            throw exception(RECEIPT_ORDER_NO_DUPLICATE);
-        }
-    }
-
-    private void fillReceiptOrderTotal(WmsReceiptOrderDO order, WmsReceiptOrderSaveReqVO reqVO) {
-        BigDecimal totalQuantity = BigDecimal.ZERO;
-        BigDecimal totalPrice = BigDecimal.ZERO;
-        if (CollUtil.isNotEmpty(reqVO.getDetails())) {
-            for (WmsReceiptOrderDetailSaveReqVO detail : reqVO.getDetails()) {
-                if (detail.getQuantity() != null) {
-                    totalQuantity = totalQuantity.add(detail.getQuantity());
-                }
-                BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(),
-                        detail.getTotalPrice());
-                if (detailTotalPrice != null) {
-                    totalPrice = totalPrice.add(detailTotalPrice);
-                }
-            }
-        }
-        order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice);
-    }
-
-    private static BigDecimal getDetailTotalPrice(BigDecimal quantity, BigDecimal price, BigDecimal totalPrice) {
-        if (totalPrice != null) {
-            return totalPrice;
-        }
-        return MoneyUtils.priceMultiply(price, quantity);
-    }
-
-    private WmsReceiptOrderDO validateReceiptOrderExists(Long id) {
-        WmsReceiptOrderDO order = id == null ? null : receiptOrderMapper.selectById(id);
-        if (order == null) {
-            throw exception(RECEIPT_ORDER_NOT_EXISTS);
-        }
-        return order;
-    }
-
-    /**
-     * 鏍¢獙鍏ュ簱鍗曞瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
-     *
-     * @param id 鍏ュ簱鍗曠紪鍙�
-     * @return 鍏ュ簱鍗�
-     */
-    private WmsReceiptOrderDO validateReceiptOrderPrepare(Long id) {
-        WmsReceiptOrderDO order = validateReceiptOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())) {
-            throw exception(RECEIPT_ORDER_STATUS_NOT_PREPARE);
-        }
-        return order;
-    }
-
-    /**
-     * 澧炲姞鍏ュ簱鍗曞搴斿簱瀛樸��
-     *
-     * 鍏ュ簱鍦ㄥ簱瀛樺彉鏇存ā鍨嬩腑浣跨敤姝f暟鏁伴噺銆�
-     *
-     * @param order 鍏ュ簱鍗�
-     * @param details 鍏ュ簱鍗曟槑缁嗗垪琛�
-     */
-    private void createInventory(WmsReceiptOrderDO order, List<WmsReceiptOrderDetailDO> details) {
-        List<WmsInventoryChangeReqDTO.Item> items = convertList(details,
-                detail -> BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class)
-                        .setTotalPrice(getDetailTotalPrice(detail.getQuantity(), detail.getPrice(),
-                                detail.getTotalPrice())));
-        inventoryService.changeInventory(new WmsInventoryChangeReqDTO()
-                .setOrderId(order.getId()).setOrderNo(order.getNo())
-                .setOrderType(WmsOrderTypeEnum.RECEIPT.getType()).setItems(items));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailService.java
deleted file mode 100644
index 39f5d86..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.shipment;
-
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * WMS 鍑哄簱鍗曟槑缁� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsShipmentOrderDetailService {
-
-    /**
-     * 鍒涘缓鍑哄簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 鍑哄簱鍗曠紪鍙�
-     * @param reqVO 鍑哄簱鍗曚繚瀛樹俊鎭�
-     */
-    void createShipmentOrderDetailList(Long orderId, WmsShipmentOrderSaveReqVO reqVO);
-
-    /**
-     * 鏇存柊鍑哄簱鍗曟槑缁嗗垪琛�
-     *
-     * @param orderId 鍑哄簱鍗曠紪鍙�
-     * @param reqVO 鍑哄簱鍗曚繚瀛樹俊鎭�
-     */
-    void updateShipmentOrderDetailList(Long orderId, WmsShipmentOrderSaveReqVO reqVO);
-
-    /**
-     * 鎸夊嚭搴撳崟缂栧彿鍒犻櫎鏄庣粏鍒楄〃
-     *
-     * @param orderId 鍑哄簱鍗曠紪鍙�
-     */
-    void deleteShipmentOrderDetailListByOrderId(Long orderId);
-
-    /**
-     * 鎸夊嚭搴撳崟缂栧彿鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderId 鍑哄簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsShipmentOrderDetailDO> getShipmentOrderDetailList(Long orderId);
-
-    /**
-     * 鎸夊嚭搴撳崟缂栧彿闆嗗悎鑾峰緱鏄庣粏鍒楄〃
-     *
-     * @param orderIds 鍑哄簱鍗曠紪鍙烽泦鍚�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsShipmentOrderDetailDO> getShipmentOrderDetailList(Collection<Long> orderIds);
-
-    /**
-     * 鏍¢獙鍑哄簱鍗曟槑缁嗗垪琛ㄥ瓨鍦�
-     *
-     * @param orderId 鍑哄簱鍗曠紪鍙�
-     * @return 鏄庣粏鍒楄〃
-     */
-    List<WmsShipmentOrderDetailDO> validateShipmentOrderDetailListExists(Long orderId);
-
-    /**
-     * 鑾峰緱鎸囧畾 SKU 鐨勫嚭搴撳崟鏄庣粏鏁伴噺
-     *
-     * @param skuId SKU 缂栧彿
-     * @return 鍑哄簱鍗曟槑缁嗘暟閲�
-     */
-    long getShipmentOrderDetailCountBySkuId(Long skuId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImpl.java
deleted file mode 100644
index ed9e633..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImpl.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.shipment;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.shipment.WmsShipmentOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.Collection;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍑哄簱鍗曟槑缁� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsShipmentOrderDetailServiceImpl implements WmsShipmentOrderDetailService {
-
-    @Resource
-    private WmsShipmentOrderDetailMapper shipmentOrderDetailMapper;
-    @Resource
-    private WmsItemSkuService itemSkuService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createShipmentOrderDetailList(Long orderId, WmsShipmentOrderSaveReqVO reqVO) {
-        List<WmsShipmentOrderDetailDO> list = buildShipmentOrderDetailList(reqVO);
-        if (CollUtil.isEmpty(list)) {
-            return;
-        }
-        list.forEach(detail -> detail.setId(null).setOrderId(orderId));
-        shipmentOrderDetailMapper.insertBatch(list);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateShipmentOrderDetailList(Long orderId, WmsShipmentOrderSaveReqVO reqVO) {
-        // 绗竴姝ワ紝瀵规瘮鏂拌�佹暟鎹紝鑾峰緱娣诲姞銆佷慨鏀广�佸垹闄ょ殑鍒楄〃
-        List<WmsShipmentOrderDetailDO> oldList = shipmentOrderDetailMapper.selectListByOrderId(orderId);
-        List<WmsShipmentOrderDetailDO> list = buildShipmentOrderDetailList(reqVO);
-        List<WmsShipmentOrderDetailDO> newList = CollUtil.isEmpty(list) ? ListUtil.of() : list;
-        List<List<WmsShipmentOrderDetailDO>> diffList = diffList(oldList, newList, // id 涓嶅悓锛屽氨璁や负鏄笉鍚岀殑璁板綍
-                (oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getId()));
-
-        // 绗簩姝ワ紝鎵归噺娣诲姞銆佷慨鏀广�佸垹闄�
-        if (CollUtil.isNotEmpty(diffList.get(0))) {
-            if (CollUtil.isNotEmpty(convertList(diffList.get(0), WmsShipmentOrderDetailDO::getId))) {
-                throw exception(SHIPMENT_ORDER_DETAIL_NOT_EXISTS);
-            }
-            diffList.get(0).forEach(detail -> detail.setOrderId(orderId));
-            shipmentOrderDetailMapper.insertBatch(diffList.get(0));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(1))) {
-            diffList.get(1).forEach(detail -> detail.setOrderId(orderId));
-            shipmentOrderDetailMapper.updateBatch(diffList.get(1));
-        }
-        if (CollUtil.isNotEmpty(diffList.get(2))) {
-            shipmentOrderDetailMapper.deleteByIds(convertList(diffList.get(2), WmsShipmentOrderDetailDO::getId));
-        }
-    }
-
-    @Override
-    public void deleteShipmentOrderDetailListByOrderId(Long orderId) {
-        shipmentOrderDetailMapper.deleteByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsShipmentOrderDetailDO> getShipmentOrderDetailList(Long orderId) {
-        return shipmentOrderDetailMapper.selectListByOrderId(orderId);
-    }
-
-    @Override
-    public List<WmsShipmentOrderDetailDO> getShipmentOrderDetailList(Collection<Long> orderIds) {
-        if (CollUtil.isEmpty(orderIds)) {
-            return ListUtil.of();
-        }
-        return shipmentOrderDetailMapper.selectListByOrderIds(orderIds);
-    }
-
-    @Override
-    public List<WmsShipmentOrderDetailDO> validateShipmentOrderDetailListExists(Long orderId) {
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId);
-        if (CollUtil.isEmpty(details)) {
-            throw exception(SHIPMENT_ORDER_DETAIL_REQUIRED);
-        }
-        return details;
-    }
-
-    @Override
-    public long getShipmentOrderDetailCountBySkuId(Long skuId) {
-        return shipmentOrderDetailMapper.selectCountBySkuId(skuId);
-    }
-
-    private List<WmsShipmentOrderDetailDO> buildShipmentOrderDetailList(WmsShipmentOrderSaveReqVO reqVO) {
-        if (CollUtil.isEmpty(reqVO.getDetails())) {
-            return ListUtil.of();
-        }
-        return convertList(reqVO.getDetails(), detail -> {
-            // 鏍¢獙 SKU 瀛樺湪
-            itemSkuService.validateItemSkuExists(detail.getSkuId());
-            // 鏋勫缓瀵硅薄
-            WmsShipmentOrderDetailDO detailDO = BeanUtils.toBean(detail, WmsShipmentOrderDetailDO.class)
-                    .setWarehouseId(reqVO.getWarehouseId());
-            fillDetailTotalPrice(detailDO);
-            return detailDO;
-        });
-    }
-
-    private static void fillDetailTotalPrice(WmsShipmentOrderDetailDO detail) {
-        if (detail.getTotalPrice() != null || detail.getQuantity() == null || detail.getPrice() == null) {
-            return;
-        }
-        detail.setTotalPrice(MoneyUtils.priceMultiply(detail.getPrice(), detail.getQuantity()));
-    }
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderService.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderService.java
deleted file mode 100644
index 2a2b2f6..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.shipment;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDO;
-import jakarta.validation.Valid;
-
-/**
- * WMS 鍑哄簱鍗� Service 鎺ュ彛
- *
- * @author 鑺嬮亾婧愮爜
- */
-public interface WmsShipmentOrderService {
-
-    /**
-     * 鍒涘缓鍑哄簱鍗�
-     *
-     * @param createReqVO 鍒涘缓淇℃伅
-     * @return 缂栧彿
-     */
-    Long createShipmentOrder(@Valid WmsShipmentOrderSaveReqVO createReqVO);
-
-    /**
-     * 鏇存柊鍑哄簱鍗�
-     *
-     * @param updateReqVO 鏇存柊淇℃伅
-     */
-    void updateShipmentOrder(@Valid WmsShipmentOrderSaveReqVO updateReqVO);
-
-    /**
-     * 鍒犻櫎鍑哄簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void deleteShipmentOrder(Long id);
-
-    /**
-     * 瀹屾垚鍑哄簱
-     *
-     * @param id 缂栧彿
-     */
-    void completeShipmentOrder(Long id);
-
-    /**
-     * 浣滃簾鍑哄簱鍗�
-     *
-     * @param id 缂栧彿
-     */
-    void cancelShipmentOrder(Long id);
-
-    /**
-     * 鑾峰緱鍑哄簱鍗�
-     *
-     * @param id 缂栧彿
-     * @return 鍑哄簱鍗�
-     */
-    WmsShipmentOrderDO getShipmentOrder(Long id);
-
-    /**
-     * 鑾峰緱鍑哄簱鍗曞垎椤�
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 鍑哄簱鍗曞垎椤�
-     */
-    PageResult<WmsShipmentOrderDO> getShipmentOrderPage(WmsShipmentOrderPageReqVO pageReqVO);
-
-    /**
-     * 鑾峰緱鎸囧畾寰�鏉ヤ紒涓氱殑鍑哄簱鍗曟暟閲�
-     *
-     * @param merchantId 寰�鏉ヤ紒涓氱紪鍙�
-     * @return 鍑哄簱鍗曟暟閲�
-     */
-    long getShipmentOrderCountByMerchantId(Long merchantId);
-
-    /**
-     * 鑾峰緱鎸囧畾浠撳簱鐨勫嚭搴撳崟鏁伴噺
-     *
-     * @param warehouseId 浠撳簱缂栧彿
-     * @return 鍑哄簱鍗曟暟閲�
-     */
-    long getShipmentOrderCountByWarehouseId(Long warehouseId);
-
-}
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImpl.java
deleted file mode 100644
index cebb357..0000000
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImpl.java
+++ /dev/null
@@ -1,244 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.shipment;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderPageReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.shipment.WmsShipmentOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
-
-/**
- * WMS 鍑哄簱鍗� Service 瀹炵幇绫�
- *
- * @author 鑺嬮亾婧愮爜
- */
-@Service
-@Validated
-public class WmsShipmentOrderServiceImpl implements WmsShipmentOrderService {
-
-    @Resource
-    private WmsShipmentOrderMapper shipmentOrderMapper;
-    @Resource
-    private WmsShipmentOrderDetailService shipmentOrderDetailService;
-    @Resource
-    private WmsWarehouseService warehouseService;
-    @Resource
-    private WmsMerchantService merchantService;
-    @Resource
-    private WmsInventoryService inventoryService;
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createShipmentOrder(WmsShipmentOrderSaveReqVO createReqVO) {
-        // 1. 鏍¢獙鍑哄簱鍗曚繚瀛樻暟鎹�
-        validateShipmentOrderSaveData(createReqVO);
-
-        // 2.1 鎻掑叆鍑哄簱鍗�
-        WmsShipmentOrderDO order = BeanUtils.toBean(createReqVO, WmsShipmentOrderDO.class);
-        order.setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillShipmentOrderTotal(order, createReqVO);
-        shipmentOrderMapper.insert(order);
-        // 2.2 鎻掑叆鍑哄簱鍗曟槑缁�
-        shipmentOrderDetailService.createShipmentOrderDetailList(order.getId(), createReqVO);
-        return order.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateShipmentOrder(WmsShipmentOrderSaveReqVO updateReqVO) {
-        // 1. 鏍¢獙鍑哄簱鍗曚繚瀛樻暟鎹�
-        validateShipmentOrderPrepare(updateReqVO.getId());
-        validateShipmentOrderSaveData(updateReqVO);
-
-        // 2.1 鏇存柊鍑哄簱鍗�
-        WmsShipmentOrderDO updateObj = BeanUtils.toBean(updateReqVO, WmsShipmentOrderDO.class)
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus());
-        fillShipmentOrderTotal(updateObj, updateReqVO);
-        int updateCount = shipmentOrderMapper.updateByIdAndStatus(updateReqVO.getId(),
-                WmsOrderStatusEnum.PREPARE.getStatus(), updateObj);
-        if (updateCount == 0) {
-            throw exception(SHIPMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-        // 2.2 鏇存柊鍑哄簱鍗曟槑缁�
-        shipmentOrderDetailService.updateShipmentOrderDetailList(updateReqVO.getId(), updateReqVO);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteShipmentOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鍙垹闄�
-        WmsShipmentOrderDO order = validateShipmentOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())
-                && ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.CANCELED.getStatus())) {
-            throw exception(SHIPMENT_ORDER_STATUS_NOT_DELETABLE);
-        }
-
-        // 2.1 鍒犻櫎鍑哄簱鍗�
-        shipmentOrderMapper.deleteById(id);
-        // 2.2 鍒犻櫎鍑哄簱鍗曟槑缁�
-        shipmentOrderDetailService.deleteShipmentOrderDetailListByOrderId(id);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void completeShipmentOrder(Long id) {
-        // 1.1 鏍¢獙瀛樺湪锛屼笖鑽夌
-        WmsShipmentOrderDO order = validateShipmentOrderPrepare(id);
-        // 1.2 鏍¢獙鍑哄簱鍗曟槑缁嗗瓨鍦�
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailService.validateShipmentOrderDetailListExists(id);
-
-        // 2. 瀹屾垚鍑哄簱鍗�
-        if (shipmentOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsShipmentOrderDO().setStatus(WmsOrderStatusEnum.FINISHED.getStatus())) == 0) {
-            throw exception(SHIPMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-
-        // 3. 鎵e噺搴撳瓨
-        changeInventory(order, details);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void cancelShipmentOrder(Long id) {
-        // 1. 鏍¢獙瀛樺湪锛屼笖鑽夌
-        validateShipmentOrderPrepare(id);
-
-        // 2. 浣滃簾鍑哄簱鍗�
-        if (shipmentOrderMapper.updateByIdAndStatus(id, WmsOrderStatusEnum.PREPARE.getStatus(),
-                new WmsShipmentOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus())) == 0) {
-            throw exception(SHIPMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-    }
-
-    @Override
-    public WmsShipmentOrderDO getShipmentOrder(Long id) {
-        return shipmentOrderMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<WmsShipmentOrderDO> getShipmentOrderPage(WmsShipmentOrderPageReqVO pageReqVO) {
-        return shipmentOrderMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public long getShipmentOrderCountByMerchantId(Long merchantId) {
-        return shipmentOrderMapper.selectCountByMerchantId(merchantId);
-    }
-
-    @Override
-    public long getShipmentOrderCountByWarehouseId(Long warehouseId) {
-        return shipmentOrderMapper.selectCountByWarehouseId(warehouseId);
-    }
-
-    private void validateShipmentOrderSaveData(WmsShipmentOrderSaveReqVO reqVO) {
-        // 鏍¢獙鍑哄簱鍗曞彿鍞竴
-        validateShipmentOrderNoUnique(reqVO.getId(), reqVO.getNo());
-        // 鏍¢獙浠撳簱瀛樺湪
-        warehouseService.validateWarehouseExists(reqVO.getWarehouseId());
-        // 鏍¢獙瀹㈡埛绫诲瀷
-        if (reqVO.getMerchantId() != null) {
-            merchantService.validateCustomerMerchantExists(reqVO.getMerchantId());
-        }
-    }
-
-    private void validateShipmentOrderNoUnique(Long id, String no) {
-        WmsShipmentOrderDO order = shipmentOrderMapper.selectByNo(no);
-        if (order == null) {
-            return;
-        }
-        if (id == null || ObjectUtil.notEqual(order.getId(), id)) {
-            throw exception(SHIPMENT_ORDER_NO_DUPLICATE);
-        }
-    }
-
-    private void fillShipmentOrderTotal(WmsShipmentOrderDO order, WmsShipmentOrderSaveReqVO reqVO) {
-        BigDecimal totalQuantity = BigDecimal.ZERO;
-        BigDecimal totalPrice = BigDecimal.ZERO;
-        if (CollUtil.isNotEmpty(reqVO.getDetails())) {
-            for (WmsShipmentOrderDetailSaveReqVO detail : reqVO.getDetails()) {
-                if (detail.getQuantity() != null) {
-                    totalQuantity = totalQuantity.add(detail.getQuantity());
-                }
-                BigDecimal detailTotalPrice = getDetailTotalPrice(detail.getQuantity(), detail.getPrice(),
-                        detail.getTotalPrice());
-                if (detailTotalPrice != null) {
-                    totalPrice = totalPrice.add(detailTotalPrice);
-                }
-            }
-        }
-        order.setTotalQuantity(totalQuantity).setTotalPrice(totalPrice);
-    }
-
-    private static BigDecimal getDetailTotalPrice(BigDecimal quantity, BigDecimal price, BigDecimal totalPrice) {
-        if (totalPrice != null) {
-            return totalPrice;
-        }
-        return MoneyUtils.priceMultiply(price, quantity);
-    }
-
-    private WmsShipmentOrderDO validateShipmentOrderExists(Long id) {
-        WmsShipmentOrderDO order = id == null ? null : shipmentOrderMapper.selectById(id);
-        if (order == null) {
-            throw exception(SHIPMENT_ORDER_NOT_EXISTS);
-        }
-        return order;
-    }
-
-    /**
-     * 鏍¢獙鍑哄簱鍗曞瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
-     *
-     * @param id 鍑哄簱鍗曠紪鍙�
-     * @return 鍑哄簱鍗�
-     */
-    private WmsShipmentOrderDO validateShipmentOrderPrepare(Long id) {
-        WmsShipmentOrderDO order = validateShipmentOrderExists(id);
-        if (ObjectUtil.notEqual(order.getStatus(), WmsOrderStatusEnum.PREPARE.getStatus())) {
-            throw exception(SHIPMENT_ORDER_STATUS_NOT_PREPARE);
-        }
-        return order;
-    }
-
-    /**
-     * 鎵e噺鍑哄簱鍗曞搴斿簱瀛�
-     *
-     * @param order 鍑哄簱鍗�
-     * @param details 鍑哄簱鍗曟槑缁嗗垪琛�
-     */
-    private void changeInventory(WmsShipmentOrderDO order, List<WmsShipmentOrderDetailDO> details) {
-        List<WmsInventoryChangeReqDTO.Item> items = convertList(details,
-                detail -> BeanUtils.toBean(detail, WmsInventoryChangeReqDTO.Item.class)
-                        .setQuantity(detail.getQuantity().negate())
-                        .setTotalPrice(negate(getDetailTotalPrice(detail.getQuantity(), detail.getPrice(),
-                                detail.getTotalPrice()))));
-        inventoryService.changeInventory(new WmsInventoryChangeReqDTO()
-                .setOrderId(order.getId()).setOrderNo(order.getNo())
-                .setOrderType(WmsOrderTypeEnum.SHIPMENT.getType()).setItems(items));
-    }
-
-    private static BigDecimal negate(BigDecimal value) {
-        return value == null ? null : value.negate();
-    }
-
-}
diff --git a/yudao-module-wms/src/main/resources/mapper/home/WmsHomeStatisticsMapper.xml b/yudao-module-wms/src/main/resources/mapper/home/WmsHomeStatisticsMapper.xml
deleted file mode 100644
index 38c7bdf..0000000
--- a/yudao-module-wms/src/main/resources/mapper/home/WmsHomeStatisticsMapper.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.wms.dal.mysql.home.WmsHomeStatisticsMapper">
-
-    <!-- 鎸夊崟鎹被鍨嬪拰鐘舵�佺粺璁″崟鎹暟閲� -->
-    <select id="selectOrderCountGroupByTypeAndStatus" resultType="java.util.Map">
-        SELECT orderType, status, SUM(count) AS count
-        FROM (
-            SELECT ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@RECEIPT.type} AS orderType,
-                   status,
-                   COUNT(*) AS count
-            FROM wms_receipt_order
-            WHERE deleted = 0
-              <if test="warehouseId != null">
-                  AND warehouse_id = #{warehouseId}
-              </if>
-            GROUP BY status
-            UNION ALL
-            SELECT ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@SHIPMENT.type} AS orderType,
-                   status,
-                   COUNT(*) AS count
-            FROM wms_shipment_order
-            WHERE deleted = 0
-              <if test="warehouseId != null">
-                  AND warehouse_id = #{warehouseId}
-              </if>
-            GROUP BY status
-            UNION ALL
-            SELECT ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@MOVEMENT.type} AS orderType,
-                   status,
-                   COUNT(*) AS count
-            FROM wms_movement_order
-            WHERE deleted = 0
-              <if test="warehouseId != null">
-                  AND (source_warehouse_id = #{warehouseId} OR target_warehouse_id = #{warehouseId})
-              </if>
-            GROUP BY status
-            UNION ALL
-            SELECT ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@CHECK.type} AS orderType,
-                   status,
-                   COUNT(*) AS count
-            FROM wms_check_order
-            WHERE deleted = 0
-              <if test="warehouseId != null">
-                  AND warehouse_id = #{warehouseId}
-              </if>
-            GROUP BY status
-        ) t
-        GROUP BY orderType, status
-        ORDER BY orderType, status
-    </select>
-
-    <!-- 鎸夊ぉ鑱氬悎鍗曟嵁鏁伴噺 -->
-    <select id="selectDailyOrderTrend" resultType="java.util.Map">
-        SELECT date, orderType, SUM(count) AS count
-        FROM (
-            SELECT DATE_FORMAT(order_time, '%Y-%m-%d') AS date,
-                   ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@RECEIPT.type} AS orderType,
-                   COUNT(*) AS count
-            FROM wms_receipt_order
-            WHERE deleted = 0
-              AND order_time &gt;= #{beginTime}
-              AND order_time &lt; #{endTime}
-              <if test="warehouseId != null">
-                  AND warehouse_id = #{warehouseId}
-              </if>
-            GROUP BY DATE_FORMAT(order_time, '%Y-%m-%d')
-            UNION ALL
-            SELECT DATE_FORMAT(order_time, '%Y-%m-%d') AS date,
-                   ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@SHIPMENT.type} AS orderType,
-                   COUNT(*) AS count
-            FROM wms_shipment_order
-            WHERE deleted = 0
-              AND order_time &gt;= #{beginTime}
-              AND order_time &lt; #{endTime}
-              <if test="warehouseId != null">
-                  AND warehouse_id = #{warehouseId}
-              </if>
-            GROUP BY DATE_FORMAT(order_time, '%Y-%m-%d')
-            UNION ALL
-            SELECT DATE_FORMAT(order_time, '%Y-%m-%d') AS date,
-                   ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@MOVEMENT.type} AS orderType,
-                   COUNT(*) AS count
-            FROM wms_movement_order
-            WHERE deleted = 0
-              AND order_time &gt;= #{beginTime}
-              AND order_time &lt; #{endTime}
-              <if test="warehouseId != null">
-                  AND (source_warehouse_id = #{warehouseId} OR target_warehouse_id = #{warehouseId})
-              </if>
-            GROUP BY DATE_FORMAT(order_time, '%Y-%m-%d')
-            UNION ALL
-            SELECT DATE_FORMAT(order_time, '%Y-%m-%d') AS date,
-                   ${@cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum@CHECK.type} AS orderType,
-                   COUNT(*) AS count
-            FROM wms_check_order
-            WHERE deleted = 0
-              AND order_time &gt;= #{beginTime}
-              AND order_time &lt; #{endTime}
-              <if test="warehouseId != null">
-                  AND warehouse_id = #{warehouseId}
-              </if>
-            GROUP BY DATE_FORMAT(order_time, '%Y-%m-%d')
-        ) t
-        GROUP BY date, orderType
-        ORDER BY date, orderType
-    </select>
-
-    <!-- 缁熻搴撳瓨鎬绘暟閲� -->
-    <select id="selectInventoryTotalQuantity" resultType="java.math.BigDecimal">
-        SELECT IFNULL(SUM(quantity), 0)
-        FROM wms_inventory
-        WHERE deleted = 0
-          <if test="warehouseId != null">
-              AND warehouse_id = #{warehouseId}
-          </if>
-    </select>
-
-    <!-- 鎸夊晢鍝佺粺璁″簱瀛樻暟閲忔帓琛� -->
-    <select id="selectInventoryItemRank" resultType="java.util.Map">
-        SELECT item.id AS id,
-               item.name AS name,
-               IFNULL(SUM(inventory.quantity), 0) AS quantity
-        FROM wms_inventory inventory
-                 INNER JOIN wms_item_sku sku ON sku.id = inventory.sku_id AND sku.deleted = 0
-                 INNER JOIN wms_item item ON item.id = sku.item_id AND item.deleted = 0
-        WHERE inventory.deleted = 0
-          AND inventory.quantity &gt; 0
-          <if test="warehouseId != null">
-              AND inventory.warehouse_id = #{warehouseId}
-          </if>
-        GROUP BY item.id, item.name
-        ORDER BY quantity DESC, item.id ASC
-        LIMIT #{limit}
-    </select>
-
-    <!-- 鎸変粨搴撶粺璁″簱瀛樻暟閲忔帓琛� -->
-    <select id="selectInventoryWarehouseRank" resultType="java.util.Map">
-        SELECT warehouse.id AS id,
-               warehouse.name AS name,
-               IFNULL(SUM(inventory.quantity), 0) AS quantity
-        FROM wms_inventory inventory
-                 INNER JOIN wms_warehouse warehouse ON warehouse.id = inventory.warehouse_id AND warehouse.deleted = 0
-        WHERE inventory.deleted = 0
-          AND inventory.quantity &gt; 0
-          <if test="warehouseId != null">
-              AND inventory.warehouse_id = #{warehouseId}
-          </if>
-        GROUP BY warehouse.id, warehouse.name
-        ORDER BY quantity DESC, warehouse.id ASC
-        LIMIT #{limit}
-    </select>
-
-</mapper>
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
deleted file mode 100644
index 3585c6e..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
+++ /dev/null
@@ -1,672 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.inventory;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.WmsInventoryPageReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryHistoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.WmsInventoryDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.inventory.WmsInventoryHistoryMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.inventory.WmsInventoryMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemSkuMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryCheckReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemService;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.CHECK_ORDER_INVENTORY_CHANGED;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.INVENTORY_QUANTITY_NOT_ENOUGH;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.when;
-
-@Import({WmsInventoryServiceImpl.class, WmsInventoryHistoryServiceImpl.class})
-public class WmsInventoryServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsInventoryServiceImpl inventoryService;
-
-    @Resource
-    private WmsInventoryMapper inventoryMapper;
-    @Resource
-    private WmsInventoryHistoryMapper inventoryHistoryMapper;
-    @Resource
-    private WmsItemMapper itemMapper;
-    @Resource
-    private WmsItemSkuMapper skuMapper;
-
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-    @MockitoBean
-    private WmsItemService itemService;
-
-    @Test
-    public void testChangeInventory_createInventory() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "5.00");
-
-        // 璋冪敤
-        inventoryService.changeInventory(reqDTO);
-
-        // 鏂█锛氬簱瀛樹綑棰�
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("5.00").compareTo(inventory.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘�
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        assertEquals(1, histories.size());
-        WmsInventoryHistoryDO history = histories.get(0);
-        assertEquals(sku.getId(), history.getSkuId());
-        assertEquals(100L, history.getWarehouseId());
-        assertEquals(0, BigDecimal.ZERO.compareTo(history.getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(history.getAfterQuantity()));
-        assertEquals(0, new BigDecimal("500.00").compareTo(history.getTotalPrice()));
-        assertEquals(reqDTO.getOrderId(), history.getOrderId());
-        assertEquals(reqDTO.getOrderNo(), history.getOrderNo());
-        assertEquals(reqDTO.getOrderType(), history.getOrderType());
-    }
-
-    @Test
-    public void testChangeInventory_updateInventory() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "2.00"));
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "3.00");
-
-        // 璋冪敤
-        inventoryService.changeInventory(reqDTO);
-
-        // 鏂█锛氬簱瀛樹綑棰�
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("5.00").compareTo(inventory.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘�
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        assertEquals(1, histories.size());
-        WmsInventoryHistoryDO history = histories.get(0);
-        assertEquals(0, new BigDecimal("2.00").compareTo(history.getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(history.getAfterQuantity()));
-        assertEquals(0, new BigDecimal("3.00").compareTo(history.getQuantity()));
-        assertEquals(0, new BigDecimal("300.00").compareTo(history.getTotalPrice()));
-    }
-
-    @Test
-    public void testChangeInventory_sameInventoryKeyKeepItemGranularity() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "5.00");
-        List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(reqDTO.getItems());
-        items.add(new WmsInventoryChangeReqDTO.Item()
-                .setSkuId(sku.getId())
-                .setWarehouseId(100L)
-                .setQuantity(new BigDecimal("7.00"))
-                .setPrice(new BigDecimal("140.00"))
-                .setTotalPrice(new BigDecimal("980.00"))
-                .setRemark("娴嬭瘯鍏ュ簱 2"));
-        reqDTO.setItems(items);
-
-        // 璋冪敤
-        inventoryService.changeInventory(reqDTO);
-
-        // 鏂█锛氬簱瀛樹綑棰濆彧淇濈暀涓�鏉★紝鏁伴噺閫愭潯绱姞
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("12.00").compareTo(inventory.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘翠繚鎸佺敤鎴锋槑缁嗛绮掑害
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        histories.sort(Comparator.comparing(WmsInventoryHistoryDO::getId));
-        assertEquals(2, histories.size());
-        assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("500.00").compareTo(histories.get(0).getTotalPrice()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(1).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("12.00").compareTo(histories.get(1).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(1).getQuantity()));
-        assertEquals(0, new BigDecimal("980.00").compareTo(histories.get(1).getTotalPrice()));
-    }
-
-    @Test
-    public void testChangeInventory_sameExistingInventoryKeyKeepItemGranularity() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "2.00"));
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "3.00");
-        List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(reqDTO.getItems());
-        items.add(new WmsInventoryChangeReqDTO.Item()
-                .setSkuId(sku.getId())
-                .setWarehouseId(100L)
-                .setQuantity(new BigDecimal("4.00"))
-                .setPrice(new BigDecimal("80.00"))
-                .setTotalPrice(new BigDecimal("320.00"))
-                .setRemark("娴嬭瘯鍏ュ簱 2"));
-        reqDTO.setItems(items);
-
-        // 璋冪敤
-        inventoryService.changeInventory(reqDTO);
-
-        // 鏂█锛氬簱瀛樹綑棰濆彧淇濈暀涓�鏉★紝鏁伴噺閫愭潯绱姞
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("9.00").compareTo(inventory.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘翠繚鎸佺敤鎴锋槑缁嗛绮掑害
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        histories.sort(Comparator.comparing(WmsInventoryHistoryDO::getId));
-        assertEquals(2, histories.size());
-        assertEquals(0, new BigDecimal("2.00").compareTo(histories.get(0).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("300.00").compareTo(histories.get(0).getTotalPrice()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(1).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("9.00").compareTo(histories.get(1).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("4.00").compareTo(histories.get(1).getQuantity()));
-        assertEquals(0, new BigDecimal("320.00").compareTo(histories.get(1).getTotalPrice()));
-    }
-
-    @Test
-    public void testChangeInventory_multipleInventoryKeysKeepItemGranularity() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "5.00");
-        List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(reqDTO.getItems());
-        items.add(new WmsInventoryChangeReqDTO.Item()
-                .setSkuId(sku.getId())
-                .setWarehouseId(200L)
-                .setQuantity(new BigDecimal("3.00"))
-                .setPrice(new BigDecimal("60.00"))
-                .setTotalPrice(new BigDecimal("180.00"))
-                .setRemark("娴嬭瘯鍏ュ簱 2"));
-        items.add(new WmsInventoryChangeReqDTO.Item()
-                .setSkuId(sku.getId())
-                .setWarehouseId(100L)
-                .setQuantity(new BigDecimal("-2.00"))
-                .setPrice(new BigDecimal("40.00"))
-                .setTotalPrice(new BigDecimal("-80.00"))
-                .setRemark("娴嬭瘯鍑哄簱"));
-        reqDTO.setItems(items);
-
-        // 璋冪敤
-        inventoryService.changeInventory(reqDTO);
-
-        // 鏂█锛氫笉鍚屽簱瀛樹綑棰濆垎鍒洿鏂�
-        WmsInventoryDO inventory1 = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory1);
-        assertEquals(0, new BigDecimal("3.00").compareTo(inventory1.getQuantity()));
-        WmsInventoryDO inventory2 = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 200L);
-        assertNotNull(inventory2);
-        assertEquals(0, new BigDecimal("3.00").compareTo(inventory2.getQuantity()));
-        // 鏂█锛氭壒閲忓姞閿佸悗浠嶆寜鏄庣粏棰楃矑搴﹁褰� before/after
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        histories.sort(Comparator.comparing(WmsInventoryHistoryDO::getId));
-        assertEquals(3, histories.size());
-        assertEquals(100L, histories.get(0).getWarehouseId());
-        assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("500.00").compareTo(histories.get(0).getTotalPrice()));
-        assertEquals(200L, histories.get(1).getWarehouseId());
-        assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(1).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(1).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("180.00").compareTo(histories.get(1).getTotalPrice()));
-        assertEquals(100L, histories.get(2).getWarehouseId());
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(2).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("3.00").compareTo(histories.get(2).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("-80.00").compareTo(histories.get(2).getTotalPrice()));
-    }
-
-    @Test
-    public void testChangeInventory_multipleExistingInventoryKeys() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 200L, "7.00"));
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "5.00"));
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "2.00");
-        List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(reqDTO.getItems());
-        items.add(new WmsInventoryChangeReqDTO.Item()
-                .setSkuId(sku.getId())
-                .setWarehouseId(200L)
-                .setQuantity(new BigDecimal("3.00"))
-                .setPrice(new BigDecimal("100.00"))
-                .setTotalPrice(new BigDecimal("300.00"))
-                .setRemark("娴嬭瘯鍏ュ簱 2"));
-        reqDTO.setItems(items);
-
-        // 璋冪敤
-        inventoryService.changeInventory(reqDTO);
-
-        // 鏂█锛氬鏉″凡瀛樺湪搴撳瓨浣欓鍒嗗埆鏇存柊
-        WmsInventoryDO inventory1 = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory1);
-        assertEquals(0, new BigDecimal("7.00").compareTo(inventory1.getQuantity()));
-        WmsInventoryDO inventory2 = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 200L);
-        assertNotNull(inventory2);
-        assertEquals(0, new BigDecimal("10.00").compareTo(inventory2.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘翠繚鎸佸叆鍙傛槑缁嗛『搴�
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        histories.sort(Comparator.comparing(WmsInventoryHistoryDO::getId));
-        assertEquals(2, histories.size());
-        assertEquals(100L, histories.get(0).getWarehouseId());
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(0).getAfterQuantity()));
-        assertEquals(200L, histories.get(1).getWarehouseId());
-        assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(1).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("10.00").compareTo(histories.get(1).getAfterQuantity()));
-    }
-
-    @Test
-    public void testChangeInventory_concurrentCreateSameInventoryOnlyOneBalance() throws Exception {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        int threadCount = 4;
-        CountDownLatch readyLatch = new CountDownLatch(threadCount);
-        CountDownLatch startLatch = new CountDownLatch(1);
-        ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
-        List<Future<?>> futures = new ArrayList<>(threadCount);
-        for (int i = 0; i < threadCount; i++) {
-            futures.add(executorService.submit(() -> {
-                readyLatch.countDown();
-                try {
-                    startLatch.await();
-                } catch (InterruptedException ex) {
-                    Thread.currentThread().interrupt();
-                    throw new IllegalStateException(ex);
-                }
-                inventoryService.changeInventory(createChangeReq(sku.getId(), 100L, "1.00"));
-            }));
-        }
-
-        try {
-            // 璋冪敤
-            assertTrue(readyLatch.await(5, TimeUnit.SECONDS));
-            startLatch.countDown();
-            for (Future<?> future : futures) {
-                future.get(10, TimeUnit.SECONDS);
-            }
-        } finally {
-            executorService.shutdownNow();
-        }
-
-        // 鏂█锛氬苟鍙戣ˉ琛屽悗浠嶅彧鏈変竴鏉″簱瀛樹綑棰濓紝鏁伴噺绱姝g‘
-        List<WmsInventoryDO> inventories = inventoryMapper.selectListByKeys(Collections.singletonList(
-                new WmsInventoryDO().setSkuId(sku.getId()).setWarehouseId(100L)));
-        assertEquals(1, inventories.size());
-        assertEquals(0, new BigDecimal("4.00").compareTo(inventories.get(0).getQuantity()));
-        assertEquals(threadCount, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testChangeInventory_quantityNotEnough() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "2.00"));
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "-3.00");
-        mockItemSkuAndItem(item, sku);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> inventoryService.changeInventory(reqDTO), INVENTORY_QUANTITY_NOT_ENOUGH,
-                item.getName(), sku.getName(), 100L, new BigDecimal("2.00"), new BigDecimal("-3.00"));
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("2.00").compareTo(inventory.getQuantity()));
-        assertEquals(0L, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testChangeInventory_quantityNotEnoughWithoutInventory() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "-3.00");
-        mockItemSkuAndItem(item, sku);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> inventoryService.changeInventory(reqDTO), INVENTORY_QUANTITY_NOT_ENOUGH,
-                item.getName(), sku.getName(), 100L, new BigDecimal("0.00"), new BigDecimal("-3.00"));
-        assertEquals(0L, inventoryMapper.selectCount());
-        assertEquals(0L, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testChangeInventory_quantityNotEnoughRollbackCreatedInventories() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "5.00");
-        List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(reqDTO.getItems());
-        items.add(new WmsInventoryChangeReqDTO.Item()
-                .setSkuId(sku.getId())
-                .setWarehouseId(200L)
-                .setQuantity(new BigDecimal("-1.00"))
-                .setPrice(new BigDecimal("20.00"))
-                .setTotalPrice(new BigDecimal("-20.00"))
-                .setRemark("娴嬭瘯鍑哄簱"));
-        reqDTO.setItems(items);
-        mockItemSkuAndItem(item, sku);
-
-        // 璋冪敤锛屽苟鏂█锛氱浜屾潯鏄庣粏搴撳瓨涓嶈冻锛屼簨鍔″洖婊氬墠闈㈣ˉ榻愮殑搴撳瓨琛�
-        assertServiceException(() -> inventoryService.changeInventory(reqDTO), INVENTORY_QUANTITY_NOT_ENOUGH,
-                item.getName(), sku.getName(), 200L, new BigDecimal("0.00"), new BigDecimal("-1.00"));
-        assertNull(inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L));
-        assertNull(inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 200L));
-        assertEquals(0L, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testCheckInventory_updateExistingInventory() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryDO inventory = createInventory(sku.getId(), 100L, "10.00");
-        inventoryMapper.insert(inventory);
-        WmsInventoryCheckReqDTO reqDTO = createCheckReq(inventory.getId(), sku.getId(), 100L,
-                "10.00", "7.00");
-
-        // 璋冪敤
-        inventoryService.checkInventory(reqDTO);
-
-        // 鏂█锛氬簱瀛樹綑棰濈洿鎺ヨ皟鏁翠负瀹炵洏鏁伴噺
-        WmsInventoryDO dbInventory = inventoryMapper.selectById(inventory.getId());
-        assertNotNull(dbInventory);
-        assertEquals(0, new BigDecimal("7.00").compareTo(dbInventory.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘磋褰曠洏搴撳樊寮�
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        assertEquals(1, histories.size());
-        WmsInventoryHistoryDO history = histories.get(0);
-        assertEquals(sku.getId(), history.getSkuId());
-        assertEquals(100L, history.getWarehouseId());
-        assertEquals(0, new BigDecimal("10.00").compareTo(history.getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("7.00").compareTo(history.getAfterQuantity()));
-        assertEquals(0, new BigDecimal("-3.00").compareTo(history.getQuantity()));
-        assertEquals(0, new BigDecimal("-300.00").compareTo(history.getTotalPrice()));
-        assertEquals(reqDTO.getOrderId(), history.getOrderId());
-        assertEquals(reqDTO.getOrderNo(), history.getOrderNo());
-        assertEquals(reqDTO.getOrderType(), history.getOrderType());
-    }
-
-    @Test
-    public void testCheckInventory_existingInventoryChanged() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryDO inventory = createInventory(sku.getId(), 100L, "12.00");
-        inventoryMapper.insert(inventory);
-        WmsInventoryCheckReqDTO reqDTO = createCheckReq(inventory.getId(), sku.getId(), 100L,
-                "10.00", "7.00");
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> inventoryService.checkInventory(reqDTO), CHECK_ORDER_INVENTORY_CHANGED);
-        WmsInventoryDO dbInventory = inventoryMapper.selectById(inventory.getId());
-        assertNotNull(dbInventory);
-        assertEquals(0, new BigDecimal("12.00").compareTo(dbInventory.getQuantity()));
-        assertEquals(0L, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testCheckInventory_createNewInventory() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryCheckReqDTO reqDTO = createCheckReq(null, sku.getId(), 100L,
-                "0.00", "5.00");
-
-        // 璋冪敤
-        inventoryService.checkInventory(reqDTO);
-
-        // 鏂█锛氭柊澧炲簱瀛樼洿鎺ヨ惤涓哄疄鐩樻暟閲�
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("5.00").compareTo(inventory.getQuantity()));
-        // 鏂█锛氬簱瀛樻祦姘磋褰曚粠 0 鍒板疄鐩樻暟閲�
-        List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
-        assertEquals(1, histories.size());
-        assertEquals(0, BigDecimal.ZERO.compareTo(histories.get(0).getBeforeQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getAfterQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("500.00").compareTo(histories.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testCheckInventory_createNewZeroInventory() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsInventoryCheckReqDTO reqDTO = createCheckReq(null, sku.getId(), 100L,
-                "0.00", "0.00");
-
-        // 璋冪敤
-        inventoryService.checkInventory(reqDTO);
-
-        // 鏂█锛氭柊澧為浂搴撳瓨鍟嗗搧涔熶細鐢熸垚搴撳瓨浣欓琛�
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, BigDecimal.ZERO.compareTo(inventory.getQuantity()));
-        assertEquals(0L, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testCheckInventory_newInventoryAlreadyExists() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "3.00"));
-        WmsInventoryCheckReqDTO reqDTO = createCheckReq(null, sku.getId(), 100L,
-                "0.00", "5.00");
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> inventoryService.checkInventory(reqDTO), CHECK_ORDER_INVENTORY_CHANGED);
-        WmsInventoryDO inventory = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
-        assertNotNull(inventory);
-        assertEquals(0, new BigDecimal("3.00").compareTo(inventory.getQuantity()));
-        assertEquals(0L, inventoryHistoryMapper.selectCount());
-    }
-
-    @Test
-    public void testGetInventoryPage_filterByWarehouse() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "2.00"));
-        inventoryMapper.insert(createInventory(sku.getId(), 200L, "5.00"));
-        // 鍑嗗鍙傛暟
-        WmsInventoryPageReqVO reqVO = new WmsInventoryPageReqVO();
-        reqVO.setType(WmsInventoryPageReqVO.TYPE_WAREHOUSE);
-        reqVO.setWarehouseId(100L);
-
-        // 璋冪敤
-        PageResult<WmsInventoryDO> pageResult = inventoryService.getInventoryPage(reqVO);
-        // 鏂█
-        assertEquals(1, pageResult.getTotal());
-        assertEquals(1, pageResult.getList().size());
-        WmsInventoryDO inventory = pageResult.getList().get(0);
-        assertEquals(100L, inventory.getWarehouseId());
-        assertEquals(sku.getId(), inventory.getSkuId());
-        assertEquals(0, new BigDecimal("2.00").compareTo(inventory.getQuantity()));
-    }
-
-    @Test
-    public void testGetInventoryPage_groupByWarehouse_minQuantity() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "2.00"));
-        inventoryMapper.insert(createInventory(sku.getId(), 200L, "7.00"));
-        // 鍑嗗鍙傛暟
-        WmsInventoryPageReqVO reqVO = new WmsInventoryPageReqVO();
-        reqVO.setType(WmsInventoryPageReqVO.TYPE_WAREHOUSE);
-        reqVO.setMinQuantity(new BigDecimal("6.00"));
-
-        // 璋冪敤
-        PageResult<WmsInventoryDO> pageResult = inventoryService.getInventoryPage(reqVO);
-        // 鏂█
-        assertEquals(1, pageResult.getTotal());
-        assertEquals(1, pageResult.getList().size());
-        assertEquals(200L, pageResult.getList().get(0).getWarehouseId());
-    }
-
-    @Test
-    public void testGetInventoryPage_onlyPositiveQuantity() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "0.00"));
-        inventoryMapper.insert(createInventory(sku.getId(), 200L, "0.01"));
-        inventoryMapper.insert(createInventory(sku.getId(), 300L, "1.00"));
-        // 鍑嗗鍙傛暟
-        WmsInventoryPageReqVO reqVO = new WmsInventoryPageReqVO();
-        reqVO.setType(WmsInventoryPageReqVO.TYPE_WAREHOUSE);
-        reqVO.setOnlyPositiveQuantity(true);
-
-        // 璋冪敤
-        PageResult<WmsInventoryDO> pageResult = inventoryService.getInventoryPage(reqVO);
-        // 鏂█
-        assertEquals(2, pageResult.getTotal());
-        assertEquals(2, pageResult.getList().size());
-        assertEquals(200L, pageResult.getList().get(0).getWarehouseId());
-        assertEquals(0, new BigDecimal("0.01").compareTo(pageResult.getList().get(0).getQuantity()));
-        assertEquals(300L, pageResult.getList().get(1).getWarehouseId());
-        assertEquals(0, new BigDecimal("1.00").compareTo(pageResult.getList().get(1).getQuantity()));
-    }
-
-    @Test
-    public void testGetInventoryPage_sku() {
-        // mock 鏁版嵁
-        WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
-        WmsItemSkuDO sku2 = createSku(item.getId(), "SKU-002", "5kg 绠辫");
-        inventoryMapper.insert(createInventory(sku.getId(), 100L, "2.00"));
-        inventoryMapper.insert(createInventory(sku2.getId(), 100L, "3.00"));
-        // 鍑嗗鍙傛暟
-        WmsInventoryPageReqVO reqVO = new WmsInventoryPageReqVO();
-        reqVO.setType(WmsInventoryPageReqVO.TYPE_ITEM);
-        reqVO.setWarehouseId(100L);
-        reqVO.setSkuId(sku.getId());
-
-        // 璋冪敤
-        PageResult<WmsInventoryDO> pageResult = inventoryService.getInventoryPage(reqVO);
-        // 鏂█
-        assertEquals(1, pageResult.getTotal());
-        assertEquals(1, pageResult.getList().size());
-        assertEquals(sku.getId(), pageResult.getList().get(0).getSkuId());
-    }
-
-    @Test
-    public void testGetInventoryPage_orderByItemDimension() {
-        // mock 鏁版嵁
-        WmsItemDO item1 = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
-        WmsItemSkuDO sku1 = createSku(item1.getId(), "SKU-001", "10kg 绠辫");
-        WmsItemDO item2 = createItem("ITEM-002", "棣欒晧");
-        WmsItemSkuDO sku2 = createSku(item2.getId(), "SKU-002", "5kg 绠辫");
-        inventoryMapper.insert(createInventory(sku2.getId(), 100L, "3.00"));
-        inventoryMapper.insert(createInventory(sku1.getId(), 200L, "2.00"));
-        inventoryMapper.insert(createInventory(sku1.getId(), 100L, "1.00"));
-        // 鍑嗗鍙傛暟
-        WmsInventoryPageReqVO reqVO = new WmsInventoryPageReqVO();
-        reqVO.setType(WmsInventoryPageReqVO.TYPE_ITEM);
-
-        // 璋冪敤
-        PageResult<WmsInventoryDO> pageResult = inventoryService.getInventoryPage(reqVO);
-        // 鏂█
-        assertEquals(3, pageResult.getTotal());
-        assertEquals(sku1.getId(), pageResult.getList().get(0).getSkuId());
-        assertEquals(100L, pageResult.getList().get(0).getWarehouseId());
-        assertEquals(sku1.getId(), pageResult.getList().get(1).getSkuId());
-        assertEquals(200L, pageResult.getList().get(1).getWarehouseId());
-        assertEquals(sku2.getId(), pageResult.getList().get(2).getSkuId());
-        assertEquals(100L, pageResult.getList().get(2).getWarehouseId());
-    }
-
-    private WmsItemDO createItem(String code, String name) {
-        WmsItemDO item = WmsItemDO.builder()
-                .code(code)
-                .name(name)
-                .unit("绠�")
-                .categoryId(1L)
-                .build();
-        itemMapper.insert(item);
-        return item;
-    }
-
-    private WmsItemSkuDO createSku(Long itemId, String code, String name) {
-        WmsItemSkuDO sku = WmsItemSkuDO.builder()
-                .itemId(itemId)
-                .code(code)
-                .name(name)
-                .barCode("69010001")
-                .build();
-        skuMapper.insert(sku);
-        return sku;
-    }
-
-    private void mockItemSkuAndItem(WmsItemDO item, WmsItemSkuDO sku) {
-        when(itemSkuService.validateItemSkuExists(sku.getId())).thenReturn(sku);
-        when(itemService.validateItemExists(item.getId())).thenReturn(item);
-    }
-
-    private static WmsInventoryDO createInventory(Long skuId, Long warehouseId, String quantity) {
-        return WmsInventoryDO.builder()
-                .skuId(skuId)
-                .warehouseId(warehouseId)
-                .quantity(new BigDecimal(quantity))
-                .build();
-    }
-
-    private static WmsInventoryChangeReqDTO createChangeReq(Long skuId, Long warehouseId, String quantity) {
-        return new WmsInventoryChangeReqDTO()
-                .setOrderId(1L)
-                .setOrderNo("RK202605120001")
-                .setOrderType(WmsOrderTypeEnum.RECEIPT.getType())
-                .setItems(Collections.singletonList(new WmsInventoryChangeReqDTO.Item()
-                        .setSkuId(skuId)
-                        .setWarehouseId(warehouseId)
-                        .setQuantity(new BigDecimal(quantity))
-                        .setPrice(new BigDecimal("100.00"))
-                        .setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")))
-                        .setRemark("娴嬭瘯鍏ュ簱")));
-    }
-
-    private static WmsInventoryCheckReqDTO createCheckReq(Long inventoryId, Long skuId, Long warehouseId,
-                                                          String quantity, String checkQuantity) {
-        return new WmsInventoryCheckReqDTO()
-                .setOrderId(2L)
-                .setOrderNo("PK202605120001")
-                .setOrderType(WmsOrderTypeEnum.CHECK.getType())
-                .setItems(Collections.singletonList(new WmsInventoryCheckReqDTO.Item()
-                        .setInventoryId(inventoryId)
-                        .setSkuId(skuId)
-                        .setWarehouseId(warehouseId)
-                        .setQuantity(new BigDecimal(quantity))
-                        .setCheckQuantity(new BigDecimal(checkQuantity))
-                        .setPrice(new BigDecimal("100.00"))
-                        .setRemark("娴嬭瘯鐩樺簱")));
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandServiceImplTest.java
deleted file mode 100644
index 9571961..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemBrandServiceImplTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.item;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.brand.WmsItemBrandSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemBrandDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemBrandMapper;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.ITEM_BRAND_NAME_DUPLICATE;
-
-@Import(WmsItemBrandServiceImpl.class)
-public class WmsItemBrandServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsItemBrandServiceImpl brandService;
-
-    @Resource
-    private WmsItemBrandMapper brandMapper;
-
-    @MockitoBean
-    private WmsItemService itemService;
-
-    @Test
-    public void testCreateItemBrand_nameDuplicate() {
-        // mock 鏁版嵁
-        brandMapper.insert(createBrand("B001", "鍗庝负"));
-        WmsItemBrandSaveReqVO reqVO = createBrandSaveReqVO(null, "B002", "鍗庝负");
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> brandService.createItemBrand(reqVO), ITEM_BRAND_NAME_DUPLICATE);
-    }
-
-    @Test
-    public void testUpdateItemBrand_nameDuplicate() {
-        // mock 鏁版嵁
-        brandMapper.insert(createBrand("B001", "鍗庝负"));
-        WmsItemBrandDO brand = createBrand("B002", "灏忕背");
-        brandMapper.insert(brand);
-        WmsItemBrandSaveReqVO reqVO = createBrandSaveReqVO(brand.getId(), "B002", "鍗庝负");
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> brandService.updateItemBrand(reqVO), ITEM_BRAND_NAME_DUPLICATE);
-    }
-
-    private static WmsItemBrandDO createBrand(String code, String name) {
-        return WmsItemBrandDO.builder()
-                .code(code)
-                .name(name)
-                .build();
-    }
-
-    private static WmsItemBrandSaveReqVO createBrandSaveReqVO(Long id, String code, String name) {
-        WmsItemBrandSaveReqVO reqVO = new WmsItemBrandSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setCode(code);
-        reqVO.setName(name);
-        return reqVO;
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java
deleted file mode 100644
index ff4ea70..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.md.warehouse;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.md.warehouse.WmsWarehouseMapper;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderService;
-import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderService;
-import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderService;
-import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.WAREHOUSE_CODE_DUPLICATE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.WAREHOUSE_HAS_INVENTORY;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.Mockito.when;
-
-@Import(WmsWarehouseServiceImpl.class)
-public class WmsWarehouseServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsWarehouseServiceImpl warehouseService;
-
-    @Resource
-    private WmsWarehouseMapper warehouseMapper;
-
-    @MockitoBean
-    private WmsInventoryService inventoryService;
-    @MockitoBean
-    private WmsReceiptOrderService receiptOrderService;
-    @MockitoBean
-    private WmsShipmentOrderService shipmentOrderService;
-    @MockitoBean
-    private WmsMovementOrderService movementOrderService;
-    @MockitoBean
-    private WmsCheckOrderService checkOrderService;
-
-    @Test
-    public void testCreateWarehouse_codeDuplicate() {
-        // mock 鏁版嵁
-        WmsWarehouseDO warehouse = createWarehouse("WH001", "鎴愬搧浠�");
-        warehouseMapper.insert(warehouse);
-
-        // 璋冪敤锛屽苟鏂█
-        WmsWarehouseSaveReqVO reqVO = createWarehouseSaveReqVO();
-        assertServiceException(() -> warehouseService.createWarehouse(reqVO), WAREHOUSE_CODE_DUPLICATE);
-    }
-
-    @Test
-    public void testUpdateWarehouse_codeDuplicate() {
-        // mock 鏁版嵁
-        WmsWarehouseDO warehouse = createWarehouse("WH001", "鎴愬搧浠�");
-        warehouseMapper.insert(warehouse);
-        WmsWarehouseDO updateWarehouse = createWarehouse("WH002", "鍘熸枡浠�");
-        warehouseMapper.insert(updateWarehouse);
-
-        // 璋冪敤锛屽苟鏂█
-        WmsWarehouseSaveReqVO reqVO = createWarehouseSaveReqVO();
-        reqVO.setId(updateWarehouse.getId());
-        assertServiceException(() -> warehouseService.updateWarehouse(reqVO), WAREHOUSE_CODE_DUPLICATE);
-    }
-
-    @Test
-    public void testDeleteWarehouse_hasInventory() {
-        // mock 鏁版嵁
-        WmsWarehouseDO warehouse = createWarehouse();
-        warehouseMapper.insert(warehouse);
-        when(inventoryService.getInventoryCountByWarehouseId(warehouse.getId())).thenReturn(1L);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> warehouseService.deleteWarehouse(warehouse.getId()), WAREHOUSE_HAS_INVENTORY);
-        assertNotNull(warehouseMapper.selectById(warehouse.getId()));
-    }
-
-    private static WmsWarehouseDO createWarehouse() {
-        return createWarehouse("WH001", "鎴愬搧浠�");
-    }
-
-    private static WmsWarehouseDO createWarehouse(String code, String name) {
-        return WmsWarehouseDO.builder()
-                .code(code)
-                .name(name)
-                .sort(1)
-                .build();
-    }
-
-    private static WmsWarehouseSaveReqVO createWarehouseSaveReqVO() {
-        WmsWarehouseSaveReqVO reqVO = new WmsWarehouseSaveReqVO();
-        reqVO.setCode("WH001");
-        reqVO.setName("鍗婃垚鍝佷粨");
-        reqVO.setSort(1);
-        return reqVO;
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailServiceImplTest.java
deleted file mode 100644
index fe3aae6..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderDetailServiceImplTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.check;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.check.WmsCheckOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.CHECK_ORDER_DETAIL_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-@Import(WmsCheckOrderDetailServiceImpl.class)
-public class WmsCheckOrderDetailServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsCheckOrderDetailServiceImpl checkOrderDetailService;
-
-    @Resource
-    private WmsCheckOrderDetailMapper checkOrderDetailMapper;
-
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-
-    @Test
-    public void testCreateCheckOrderDetailList_success() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsCheckOrderSaveReqVO reqVO = createCheckOrderReqVO(
-                createCheckOrderDetailReqVO(null, 1001L, "10.00", "9.00"),
-                createCheckOrderDetailReqVO(null, 1002L, "20.00", "21.00"));
-
-        // 璋冪敤
-        checkOrderDetailService.createCheckOrderDetailList(orderId, reqVO);
-
-        // 鏂█
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(orderId, details.get(0).getOrderId());
-        assertEquals(orderId, details.get(1).getOrderId());
-        assertEquals(100L, details.get(0).getWarehouseId());
-    }
-
-    @Test
-    public void testCreateCheckOrderDetailList_ignoreId() {
-        // mock 鏁版嵁
-        WmsCheckOrderSaveReqVO reqVO = createCheckOrderReqVO(
-                createCheckOrderDetailReqVO(999L, 1001L, "10.00", "9.00"));
-
-        // 璋冪敤
-        checkOrderDetailService.createCheckOrderDetailList(10L, reqVO);
-
-        // 鏂█
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailMapper.selectListByOrderId(10L);
-        assertEquals(1, details.size());
-        assertNotNull(details.get(0).getId());
-        assertEquals(1001L, details.get(0).getSkuId());
-    }
-
-    @Test
-    public void testUpdateCheckOrderDetailList_diff() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsCheckOrderDetailDO detail01 = createCheckOrderDetail(orderId, 1001L, "10.00", "9.00");
-        WmsCheckOrderDetailDO detail02 = createCheckOrderDetail(orderId, 1002L, "20.00", "21.00");
-        checkOrderDetailMapper.insert(detail01);
-        checkOrderDetailMapper.insert(detail02);
-        WmsCheckOrderSaveReqVO reqVO = createCheckOrderReqVO(
-                createCheckOrderDetailReqVO(detail01.getId(), 2001L, "11.00", "8.00"),
-                createCheckOrderDetailReqVO(null, 2002L, "22.00", "25.00"));
-
-        // 璋冪敤
-        checkOrderDetailService.updateCheckOrderDetailList(orderId, reqVO);
-
-        // 鏂█锛氫慨鏀�
-        WmsCheckOrderDetailDO dbUpdateDetail = checkOrderDetailMapper.selectById(detail01.getId());
-        assertNotNull(dbUpdateDetail);
-        assertEquals(orderId, dbUpdateDetail.getOrderId());
-        assertEquals(2001L, dbUpdateDetail.getSkuId());
-        assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("8.00").compareTo(dbUpdateDetail.getCheckQuantity()));
-        assertEquals(0, new BigDecimal("100.00").compareTo(dbUpdateDetail.getPrice()));
-        assertEquals(100L, dbUpdateDetail.getWarehouseId());
-        // 鏂█锛氭柊澧�
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        WmsCheckOrderDetailDO dbCreateDetail = details.stream()
-                .filter(detail -> Long.valueOf(2002L).equals(detail.getSkuId()))
-                .findFirst().orElse(null);
-        assertNotNull(dbCreateDetail);
-        assertEquals(orderId, dbCreateDetail.getOrderId());
-        assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("25.00").compareTo(dbCreateDetail.getCheckQuantity()));
-        // 鏂█锛氬垹闄�
-        assertNull(checkOrderDetailMapper.selectById(detail02.getId()));
-    }
-
-    @Test
-    public void testUpdateCheckOrderDetailList_detailNotExists() {
-        // mock 鏁版嵁
-        WmsCheckOrderSaveReqVO reqVO = createCheckOrderReqVO(
-                createCheckOrderDetailReqVO(999L, 1001L, "10.00", "9.00"));
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> checkOrderDetailService.updateCheckOrderDetailList(10L, reqVO),
-                CHECK_ORDER_DETAIL_NOT_EXISTS);
-    }
-
-    private static WmsCheckOrderSaveReqVO createCheckOrderReqVO(WmsCheckOrderDetailSaveReqVO... details) {
-        WmsCheckOrderSaveReqVO reqVO = new WmsCheckOrderSaveReqVO();
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setWarehouseId(100L);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsCheckOrderDetailSaveReqVO createCheckOrderDetailReqVO(Long id, Long skuId,
-                                                                           String quantity, String checkQuantity) {
-        WmsCheckOrderDetailSaveReqVO reqVO = new WmsCheckOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setInventoryId(300L);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setCheckQuantity(new BigDecimal(checkQuantity));
-        reqVO.setPrice(new BigDecimal("100.00"));
-        return reqVO;
-    }
-
-    private static WmsCheckOrderDetailDO createCheckOrderDetail(Long orderId, Long skuId,
-                                                               String quantity, String checkQuantity) {
-        return WmsCheckOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(100L)
-                .inventoryId(300L)
-                .quantity(new BigDecimal(quantity))
-                .checkQuantity(new BigDecimal(checkQuantity))
-                .price(new BigDecimal("100.00"))
-                .build();
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderServiceImplTest.java
deleted file mode 100644
index d1233f1..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/check/WmsCheckOrderServiceImplTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.check;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.detail.WmsCheckOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.check.vo.order.WmsCheckOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.check.WmsCheckOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.check.WmsCheckOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.check.WmsCheckOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryCheckReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.CHECK_ORDER_DETAIL_REQUIRED;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.CHECK_ORDER_INVENTORY_CHANGED;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.CHECK_ORDER_STATUS_NOT_DELETABLE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.CHECK_ORDER_STATUS_NOT_PREPARE;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-@Import({WmsCheckOrderServiceImpl.class, WmsCheckOrderDetailServiceImpl.class})
-public class WmsCheckOrderServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsCheckOrderServiceImpl checkOrderService;
-
-    @Resource
-    private WmsCheckOrderMapper checkOrderMapper;
-    @Resource
-    private WmsCheckOrderDetailMapper checkOrderDetailMapper;
-
-    @MockitoBean
-    private WmsWarehouseService warehouseService;
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-    @MockitoBean
-    private WmsInventoryService inventoryService;
-
-    @Test
-    public void testCreateCheckOrder_calculateTotals() {
-        // mock 鏁版嵁
-        WmsCheckOrderSaveReqVO reqVO = createCheckOrderReqVO(100L,
-                createCheckOrderDetailReqVO(null, 200L, "10.00", "7.00", "5.00"),
-                createCheckOrderDetailReqVO(null, 201L, "20.00", "25.00", "2.00"));
-
-        // 璋冪敤
-        Long orderId = checkOrderService.createCheckOrder(reqVO);
-
-        // 鏂█锛氱洏搴撳崟姹囨�荤敱鍚庣璁$畻
-        WmsCheckOrderDO order = checkOrderMapper.selectById(orderId);
-        assertNotNull(order);
-        assertEquals(0, new BigDecimal("2.00").compareTo(order.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("90.00").compareTo(order.getTotalPrice()));
-        assertEquals(0, new BigDecimal("85.00").compareTo(order.getActualPrice()));
-        // 鏂█锛氱洏搴撴槑缁嗕繚瀛樺崟浠�
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(0, new BigDecimal("5.00").compareTo(details.get(0).getPrice()));
-    }
-
-    @Test
-    public void testUpdateCheckOrder_calculateTotals() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L);
-        checkOrderMapper.insert(order);
-        WmsCheckOrderDetailDO oldDetail = createCheckOrderDetail(order.getId(), 200L, 100L, "10.00", "7.00");
-        checkOrderDetailMapper.insert(oldDetail);
-        WmsCheckOrderSaveReqVO reqVO = createCheckOrderReqVO(100L,
-                createCheckOrderDetailReqVO(oldDetail.getId(), 200L, "8.00", "10.00", "6.00"),
-                createCheckOrderDetailReqVO(null, 201L, "2.00", "1.00", "4.00"));
-        reqVO.setId(order.getId());
-        reqVO.setNo(order.getNo());
-
-        // 璋冪敤
-        checkOrderService.updateCheckOrder(reqVO);
-
-        // 鏂█锛氱洏搴撳崟姹囨�荤敱鍚庣閲嶆柊璁$畻
-        WmsCheckOrderDO dbOrder = checkOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("1.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("56.00").compareTo(dbOrder.getTotalPrice()));
-        assertEquals(0, new BigDecimal("64.00").compareTo(dbOrder.getActualPrice()));
-        List<WmsCheckOrderDetailDO> details = checkOrderDetailMapper.selectListByOrderId(order.getId());
-        assertEquals(2, details.size());
-    }
-
-    @Test
-    public void testCompleteCheckOrder_success() {
-        // mock 鏁版嵁
-        Long warehouseId = 100L;
-        Long skuId = 200L;
-        WmsCheckOrderDO order = createCheckOrder(warehouseId);
-        checkOrderMapper.insert(order);
-        checkOrderDetailMapper.insert(createCheckOrderDetail(order.getId(), skuId, warehouseId,
-                "10.00", "7.00"));
-
-        // 璋冪敤
-        checkOrderService.completeCheckOrder(order.getId());
-
-        // 鏂█锛氱洏搴撳崟
-        WmsCheckOrderDO dbOrder = checkOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.FINISHED.getStatus(), dbOrder.getStatus());
-        // 鏂█锛氬簱瀛樼洏鐐�
-        ArgumentCaptor<WmsInventoryCheckReqDTO> captor = ArgumentCaptor.forClass(WmsInventoryCheckReqDTO.class);
-        verify(inventoryService).checkInventory(captor.capture());
-        WmsInventoryCheckReqDTO inventoryReqDTO = captor.getValue();
-        assertEquals(order.getId(), inventoryReqDTO.getOrderId());
-        assertEquals(order.getNo(), inventoryReqDTO.getOrderNo());
-        assertEquals(WmsOrderTypeEnum.CHECK.getType(), inventoryReqDTO.getOrderType());
-        assertEquals(1, inventoryReqDTO.getItems().size());
-        assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId());
-        assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId());
-        assertEquals(300L, inventoryReqDTO.getItems().get(0).getInventoryId());
-        assertEquals(0, new BigDecimal("10.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("7.00").compareTo(inventoryReqDTO.getItems().get(0).getCheckQuantity()));
-        assertEquals(0, new BigDecimal("30.00").compareTo(inventoryReqDTO.getItems().get(0).getPrice()));
-    }
-
-    @Test
-    public void testCompleteCheckOrder_zeroDifference() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L);
-        checkOrderMapper.insert(order);
-        checkOrderDetailMapper.insert(createCheckOrderDetail(order.getId(), 200L, 100L,
-                "10.00", "10.00"));
-
-        // 璋冪敤
-        checkOrderService.completeCheckOrder(order.getId());
-
-        // 鏂█
-        WmsCheckOrderDO dbOrder = checkOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.FINISHED.getStatus(), dbOrder.getStatus());
-        verify(inventoryService).checkInventory(any());
-    }
-
-    @Test
-    public void testCompleteCheckOrder_newInventoryCurrentMissing() {
-        // mock 鏁版嵁
-        Long warehouseId = 100L;
-        Long skuId = 200L;
-        WmsCheckOrderDO order = createCheckOrder(warehouseId);
-        checkOrderMapper.insert(order);
-        checkOrderDetailMapper.insert(createNewInventoryCheckOrderDetail(order.getId(), skuId, warehouseId,
-                "0.00", "5.00"));
-        // 璋冪敤
-        checkOrderService.completeCheckOrder(order.getId());
-
-        // 鏂█
-        ArgumentCaptor<WmsInventoryCheckReqDTO> captor = ArgumentCaptor.forClass(WmsInventoryCheckReqDTO.class);
-        verify(inventoryService).checkInventory(captor.capture());
-        WmsInventoryCheckReqDTO inventoryReqDTO = captor.getValue();
-        assertEquals(1, inventoryReqDTO.getItems().size());
-        assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId());
-        assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId());
-        assertNull(inventoryReqDTO.getItems().get(0).getInventoryId());
-        assertEquals(0, new BigDecimal("0.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("5.00").compareTo(inventoryReqDTO.getItems().get(0).getCheckQuantity()));
-    }
-
-    @Test
-    public void testCompleteCheckOrder_checkInventoryChanged() {
-        // mock 鏁版嵁
-        Long warehouseId = 100L;
-        Long skuId = 200L;
-        WmsCheckOrderDO order = createCheckOrder(warehouseId);
-        checkOrderMapper.insert(order);
-        checkOrderDetailMapper.insert(createNewInventoryCheckOrderDetail(order.getId(), skuId, warehouseId,
-                "0.00", "5.00"));
-        doThrow(exception(CHECK_ORDER_INVENTORY_CHANGED)).when(inventoryService).checkInventory(any());
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> checkOrderService.completeCheckOrder(order.getId()),
-                CHECK_ORDER_INVENTORY_CHANGED);
-        assertEquals(WmsOrderStatusEnum.PREPARE.getStatus(),
-                checkOrderMapper.selectById(order.getId()).getStatus());
-    }
-
-    @Test
-    public void testCompleteCheckOrder_detailRequired() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L);
-        checkOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> checkOrderService.completeCheckOrder(order.getId()),
-                CHECK_ORDER_DETAIL_REQUIRED);
-        verify(inventoryService, never()).checkInventory(any());
-    }
-
-    @Test
-    public void testCompleteCheckOrder_duplicateComplete() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L);
-        checkOrderMapper.insert(order);
-        checkOrderDetailMapper.insert(createCheckOrderDetail(order.getId(), 200L, 100L,
-                "10.00", "7.00"));
-
-        // 璋冪敤
-        checkOrderService.completeCheckOrder(order.getId());
-
-        // 璋冪敤锛屽苟鏂█锛氫簩娆″畬鎴愪笉鑳藉啀娆″啓搴撳瓨
-        assertServiceException(() -> checkOrderService.completeCheckOrder(order.getId()),
-                CHECK_ORDER_STATUS_NOT_PREPARE);
-        verify(inventoryService).checkInventory(any());
-    }
-
-    @Test
-    public void testCancelCheckOrder_success() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L);
-        checkOrderMapper.insert(order);
-
-        // 璋冪敤
-        checkOrderService.cancelCheckOrder(order.getId());
-
-        // 鏂█
-        WmsCheckOrderDO dbOrder = checkOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.CANCELED.getStatus(), dbOrder.getStatus());
-        verify(inventoryService, never()).checkInventory(any());
-    }
-
-    @Test
-    public void testUpdateByIdAndStatus_statusNotMatch() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L);
-        checkOrderMapper.insert(order);
-
-        // 璋冪敤
-        int updateCount = checkOrderMapper.updateByIdAndStatus(order.getId(),
-                WmsOrderStatusEnum.FINISHED.getStatus(),
-                new WmsCheckOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus()));
-
-        // 鏂█
-        assertEquals(0, updateCount);
-        assertEquals(WmsOrderStatusEnum.PREPARE.getStatus(),
-                checkOrderMapper.selectById(order.getId()).getStatus());
-    }
-
-    @Test
-    public void testDeleteCheckOrder_canceled() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L).setStatus(WmsOrderStatusEnum.CANCELED.getStatus());
-        checkOrderMapper.insert(order);
-        checkOrderDetailMapper.insert(createCheckOrderDetail(order.getId(), 200L, 100L,
-                "10.00", "8.00"));
-
-        // 璋冪敤
-        checkOrderService.deleteCheckOrder(order.getId());
-
-        // 鏂█
-        assertNull(checkOrderMapper.selectById(order.getId()));
-        assertEquals(0, checkOrderDetailMapper.selectListByOrderId(order.getId()).size());
-    }
-
-    @Test
-    public void testDeleteCheckOrder_finished() {
-        // mock 鏁版嵁
-        WmsCheckOrderDO order = createCheckOrder(100L).setStatus(WmsOrderStatusEnum.FINISHED.getStatus());
-        checkOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> checkOrderService.deleteCheckOrder(order.getId()),
-                CHECK_ORDER_STATUS_NOT_DELETABLE);
-    }
-
-    private static WmsCheckOrderDO createCheckOrder(Long warehouseId) {
-        return new WmsCheckOrderDO()
-                .setNo("PK202605120001")
-                .setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0))
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus())
-                .setWarehouseId(warehouseId)
-                .setTotalQuantity(new BigDecimal("-3.00"))
-                .setTotalPrice(new BigDecimal("300.00"))
-                .setActualPrice(new BigDecimal("210.00"));
-    }
-
-    private static WmsCheckOrderDetailDO createCheckOrderDetail(Long orderId, Long skuId, Long warehouseId,
-                                                               String quantity, String checkQuantity) {
-        return WmsCheckOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(warehouseId)
-                .inventoryId(300L)
-                .quantity(new BigDecimal(quantity))
-                .checkQuantity(new BigDecimal(checkQuantity))
-                .price(new BigDecimal("30.00"))
-                .build();
-    }
-
-    private static WmsCheckOrderDetailDO createNewInventoryCheckOrderDetail(Long orderId, Long skuId, Long warehouseId,
-                                                                           String quantity, String checkQuantity) {
-        return WmsCheckOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(warehouseId)
-                .quantity(new BigDecimal(quantity))
-                .checkQuantity(new BigDecimal(checkQuantity))
-                .price(new BigDecimal("30.00"))
-                .build();
-    }
-
-    private static WmsCheckOrderSaveReqVO createCheckOrderReqVO(Long warehouseId, WmsCheckOrderDetailSaveReqVO... details) {
-        WmsCheckOrderSaveReqVO reqVO = new WmsCheckOrderSaveReqVO();
-        reqVO.setNo("PK202605120002");
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setWarehouseId(warehouseId);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsCheckOrderDetailSaveReqVO createCheckOrderDetailReqVO(Long id, Long skuId,
-                                                                           String quantity, String checkQuantity,
-                                                                           String price) {
-        WmsCheckOrderDetailSaveReqVO reqVO = new WmsCheckOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setInventoryId(300L);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setCheckQuantity(new BigDecimal(checkQuantity));
-        reqVO.setPrice(new BigDecimal(price));
-        return reqVO;
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImplTest.java
deleted file mode 100644
index 39d2781..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderDetailServiceImplTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.movement;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.movement.WmsMovementOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_DETAIL_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-@Import(WmsMovementOrderDetailServiceImpl.class)
-public class WmsMovementOrderDetailServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsMovementOrderDetailServiceImpl movementOrderDetailService;
-
-    @Resource
-    private WmsMovementOrderDetailMapper movementOrderDetailMapper;
-
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-
-    @Test
-    public void testCreateMovementOrderDetailList_success() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(
-                createMovementOrderDetailReqVO(null, 1001L, "1.00"),
-                createMovementOrderDetailReqVO(null, 1002L, "2.00"));
-
-        // 璋冪敤
-        movementOrderDetailService.createMovementOrderDetailList(orderId, reqVO);
-
-        // 鏂█
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(orderId, details.get(0).getOrderId());
-        assertEquals(orderId, details.get(1).getOrderId());
-        assertEquals(100L, details.get(0).getSourceWarehouseId());
-        assertEquals(200L, details.get(0).getTargetWarehouseId());
-        assertEquals(0, new BigDecimal("100.00").compareTo(details.get(0).getTotalPrice()));
-        assertEquals(0, new BigDecimal("200.00").compareTo(details.get(1).getTotalPrice()));
-    }
-
-    @Test
-    public void testCreateMovementOrderDetailList_ignoreId() {
-        // mock 鏁版嵁
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(
-                createMovementOrderDetailReqVO(999L, 1001L, "1.00"));
-
-        // 璋冪敤
-        movementOrderDetailService.createMovementOrderDetailList(10L, reqVO);
-
-        // 鏂█
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(10L);
-        assertEquals(1, details.size());
-        assertNotNull(details.get(0).getId());
-        assertEquals(1001L, details.get(0).getSkuId());
-    }
-
-    @Test
-    public void testUpdateMovementOrderDetailList_diff() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsMovementOrderDetailDO detail01 = createMovementOrderDetail(orderId, 1001L, "1.00");
-        WmsMovementOrderDetailDO detail02 = createMovementOrderDetail(orderId, 1002L, "2.00");
-        movementOrderDetailMapper.insert(detail01);
-        movementOrderDetailMapper.insert(detail02);
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(
-                createMovementOrderDetailReqVO(detail01.getId(), 2001L, "11.00"),
-                createMovementOrderDetailReqVO(null, 2002L, "22.00"));
-
-        // 璋冪敤
-        movementOrderDetailService.updateMovementOrderDetailList(orderId, reqVO);
-
-        // 鏂█锛氫慨鏀�
-        WmsMovementOrderDetailDO dbUpdateDetail = movementOrderDetailMapper.selectById(detail01.getId());
-        assertNotNull(dbUpdateDetail);
-        assertEquals(orderId, dbUpdateDetail.getOrderId());
-        assertEquals(2001L, dbUpdateDetail.getSkuId());
-        assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("1100.00").compareTo(dbUpdateDetail.getTotalPrice()));
-        assertEquals(100L, dbUpdateDetail.getSourceWarehouseId());
-        assertEquals(200L, dbUpdateDetail.getTargetWarehouseId());
-        // 鏂█锛氭柊澧�
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        WmsMovementOrderDetailDO dbCreateDetail = details.stream()
-                .filter(detail -> Long.valueOf(2002L).equals(detail.getSkuId()))
-                .findFirst().orElse(null);
-        assertNotNull(dbCreateDetail);
-        assertEquals(orderId, dbCreateDetail.getOrderId());
-        assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("2200.00").compareTo(dbCreateDetail.getTotalPrice()));
-        // 鏂█锛氬垹闄�
-        assertNull(movementOrderDetailMapper.selectById(detail02.getId()));
-    }
-
-    @Test
-    public void testUpdateMovementOrderDetailList_detailNotExists() {
-        // mock 鏁版嵁
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(
-                createMovementOrderDetailReqVO(999L, 1001L, "1.00"));
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> movementOrderDetailService.updateMovementOrderDetailList(10L, reqVO),
-                MOVEMENT_ORDER_DETAIL_NOT_EXISTS);
-    }
-
-    private static WmsMovementOrderSaveReqVO createMovementOrderReqVO(WmsMovementOrderDetailSaveReqVO... details) {
-        WmsMovementOrderSaveReqVO reqVO = new WmsMovementOrderSaveReqVO();
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setSourceWarehouseId(100L);
-        reqVO.setTargetWarehouseId(200L);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsMovementOrderDetailSaveReqVO createMovementOrderDetailReqVO(Long id, Long skuId, String quantity) {
-        WmsMovementOrderDetailSaveReqVO reqVO = new WmsMovementOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setPrice(new BigDecimal("100.00"));
-        reqVO.setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")));
-        return reqVO;
-    }
-
-    private static WmsMovementOrderDetailDO createMovementOrderDetail(Long orderId, Long skuId, String quantity) {
-        return WmsMovementOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .sourceWarehouseId(100L)
-                .targetWarehouseId(200L)
-                .quantity(new BigDecimal(quantity))
-                .price(new BigDecimal("100.00"))
-                .totalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")))
-                .build();
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImplTest.java
deleted file mode 100644
index a7222f3..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/movement/WmsMovementOrderServiceImplTest.java
+++ /dev/null
@@ -1,291 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.movement;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.detail.WmsMovementOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.movement.vo.order.WmsMovementOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.movement.WmsMovementOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.movement.WmsMovementOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.movement.WmsMovementOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_DETAIL_REQUIRED;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_STATUS_NOT_DELETABLE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_STATUS_NOT_PREPARE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.MOVEMENT_ORDER_WAREHOUSE_SAME;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-@Import({WmsMovementOrderServiceImpl.class, WmsMovementOrderDetailServiceImpl.class})
-public class WmsMovementOrderServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsMovementOrderServiceImpl movementOrderService;
-
-    @Resource
-    private WmsMovementOrderMapper movementOrderMapper;
-    @Resource
-    private WmsMovementOrderDetailMapper movementOrderDetailMapper;
-
-    @MockitoBean
-    private WmsWarehouseService warehouseService;
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-    @MockitoBean
-    private WmsInventoryService inventoryService;
-
-    @Test
-    public void testCreateMovementOrder_calculateTotal() {
-        // mock 鏁版嵁
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(null, 100L, 200L,
-                createMovementOrderDetailReqVO(null, 3001L, "1.50", "10.00", "16.00"),
-                createMovementOrderDetailReqVO(null, 3002L, "2.50", "20.00", "51.00"));
-
-        // 璋冪敤
-        Long orderId = movementOrderService.createMovementOrder(reqVO);
-
-        // 鏂█
-        WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(orderId);
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("67.00").compareTo(dbOrder.getTotalPrice()));
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(0, new BigDecimal("16.00").compareTo(details.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testUpdateMovementOrder_calculateTotal() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L);
-        movementOrderMapper.insert(order);
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(order.getId(), 100L, 200L,
-                createMovementOrderDetailReqVO(null, 3001L, "3.00", "30.00", "88.00"));
-
-        // 璋冪敤
-        movementOrderService.updateMovementOrder(reqVO);
-
-        // 鏂█
-        WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("88.00").compareTo(dbOrder.getTotalPrice()));
-        List<WmsMovementOrderDetailDO> details = movementOrderDetailMapper.selectListByOrderId(order.getId());
-        assertEquals(1, details.size());
-        assertEquals(0, new BigDecimal("88.00").compareTo(details.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testCompleteMovementOrder_success() {
-        // mock 鏁版嵁
-        Long sourceWarehouseId = 100L;
-        Long targetWarehouseId = 200L;
-        Long skuId = 300L;
-        WmsMovementOrderDO order = createMovementOrder(sourceWarehouseId, targetWarehouseId);
-        movementOrderMapper.insert(order);
-        movementOrderDetailMapper.insert(createMovementOrderDetail(order.getId(), skuId,
-                sourceWarehouseId, targetWarehouseId));
-
-        // 璋冪敤
-        movementOrderService.completeMovementOrder(order.getId());
-
-        // 鏂█锛氱Щ搴撳崟
-        WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.FINISHED.getStatus(), dbOrder.getStatus());
-        // 鏂█锛氬簱瀛樺彉鏇�
-        ArgumentCaptor<WmsInventoryChangeReqDTO> captor = ArgumentCaptor.forClass(WmsInventoryChangeReqDTO.class);
-        verify(inventoryService).changeInventory(captor.capture());
-        WmsInventoryChangeReqDTO inventoryReqDTO = captor.getValue();
-        assertEquals(order.getId(), inventoryReqDTO.getOrderId());
-        assertEquals(order.getNo(), inventoryReqDTO.getOrderNo());
-        assertEquals(WmsOrderTypeEnum.MOVEMENT.getType(), inventoryReqDTO.getOrderType());
-        assertEquals(2, inventoryReqDTO.getItems().size());
-        assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId());
-        assertEquals(sourceWarehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId());
-        assertEquals(0, new BigDecimal("-2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("-40.00").compareTo(inventoryReqDTO.getItems().get(0).getTotalPrice()));
-        assertEquals(skuId, inventoryReqDTO.getItems().get(1).getSkuId());
-        assertEquals(targetWarehouseId, inventoryReqDTO.getItems().get(1).getWarehouseId());
-        assertEquals(0, new BigDecimal("2.00").compareTo(inventoryReqDTO.getItems().get(1).getQuantity()));
-        assertEquals(0, new BigDecimal("40.00").compareTo(inventoryReqDTO.getItems().get(1).getTotalPrice()));
-    }
-
-    @Test
-    public void testCompleteMovementOrder_detailRequired() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L);
-        movementOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> movementOrderService.completeMovementOrder(order.getId()),
-                MOVEMENT_ORDER_DETAIL_REQUIRED);
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testCompleteMovementOrder_duplicateComplete() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L);
-        movementOrderMapper.insert(order);
-        movementOrderDetailMapper.insert(createMovementOrderDetail(order.getId(), 300L, 100L, 200L));
-
-        // 璋冪敤
-        movementOrderService.completeMovementOrder(order.getId());
-
-        // 璋冪敤锛屽苟鏂█锛氫簩娆″畬鎴愪笉鑳藉啀娆″啓搴撳瓨
-        assertServiceException(() -> movementOrderService.completeMovementOrder(order.getId()),
-                MOVEMENT_ORDER_STATUS_NOT_PREPARE);
-        verify(inventoryService).changeInventory(any());
-    }
-
-    @Test
-    public void testCreateMovementOrder_sameWarehouse() {
-        // 鍑嗗鍙傛暟
-        WmsMovementOrderSaveReqVO reqVO = createMovementOrderReqVO(100L, 100L);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> movementOrderService.createMovementOrder(reqVO), MOVEMENT_ORDER_WAREHOUSE_SAME);
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testCancelMovementOrder_success() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L);
-        movementOrderMapper.insert(order);
-
-        // 璋冪敤
-        movementOrderService.cancelMovementOrder(order.getId());
-
-        // 鏂█
-        WmsMovementOrderDO dbOrder = movementOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.CANCELED.getStatus(), dbOrder.getStatus());
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testUpdateByIdAndStatus_statusNotMatch() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L);
-        movementOrderMapper.insert(order);
-
-        // 璋冪敤
-        int updateCount = movementOrderMapper.updateByIdAndStatus(order.getId(),
-                WmsOrderStatusEnum.FINISHED.getStatus(),
-                new WmsMovementOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus()));
-
-        // 鏂█
-        assertEquals(0, updateCount);
-        assertEquals(WmsOrderStatusEnum.PREPARE.getStatus(),
-                movementOrderMapper.selectById(order.getId()).getStatus());
-    }
-
-    @Test
-    public void testDeleteMovementOrder_canceled() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L).setStatus(WmsOrderStatusEnum.CANCELED.getStatus());
-        movementOrderMapper.insert(order);
-        movementOrderDetailMapper.insert(createMovementOrderDetail(order.getId(), 300L, 100L, 200L));
-
-        // 璋冪敤
-        movementOrderService.deleteMovementOrder(order.getId());
-
-        // 鏂█
-        assertNull(movementOrderMapper.selectById(order.getId()));
-        assertEquals(0, movementOrderDetailMapper.selectListByOrderId(order.getId()).size());
-    }
-
-    @Test
-    public void testDeleteMovementOrder_finished() {
-        // mock 鏁版嵁
-        WmsMovementOrderDO order = createMovementOrder(100L, 200L).setStatus(WmsOrderStatusEnum.FINISHED.getStatus());
-        movementOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> movementOrderService.deleteMovementOrder(order.getId()),
-                MOVEMENT_ORDER_STATUS_NOT_DELETABLE);
-    }
-
-    private static WmsMovementOrderDO createMovementOrder(Long sourceWarehouseId, Long targetWarehouseId) {
-        return new WmsMovementOrderDO()
-                .setNo("YK202605120001")
-                .setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0))
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus())
-                .setSourceWarehouseId(sourceWarehouseId)
-                .setTargetWarehouseId(targetWarehouseId)
-                .setTotalQuantity(new BigDecimal("2.00"))
-                .setTotalPrice(new BigDecimal("20.00"));
-    }
-
-    private static WmsMovementOrderDetailDO createMovementOrderDetail(Long orderId, Long skuId,
-                                                                      Long sourceWarehouseId, Long targetWarehouseId) {
-        return WmsMovementOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .sourceWarehouseId(sourceWarehouseId)
-                .targetWarehouseId(targetWarehouseId)
-                .quantity(new BigDecimal("2.00"))
-                .price(new BigDecimal("20.00"))
-                .totalPrice(new BigDecimal("40.00"))
-                .build();
-    }
-
-    private static WmsMovementOrderSaveReqVO createMovementOrderReqVO(Long sourceWarehouseId, Long targetWarehouseId) {
-        return createMovementOrderReqVO(null, sourceWarehouseId, targetWarehouseId);
-    }
-
-    private static WmsMovementOrderSaveReqVO createMovementOrderReqVO(Long id, Long sourceWarehouseId,
-                                                                      Long targetWarehouseId,
-                                                                      WmsMovementOrderDetailSaveReqVO... details) {
-        WmsMovementOrderSaveReqVO reqVO = new WmsMovementOrderSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setNo("YK202605120001");
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setSourceWarehouseId(sourceWarehouseId);
-        reqVO.setTargetWarehouseId(targetWarehouseId);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsMovementOrderDetailSaveReqVO createMovementOrderDetailReqVO(Long id, Long skuId,
-                                                                                  String quantity, String price) {
-        return createMovementOrderDetailReqVO(id, skuId, quantity, price, null);
-    }
-
-    private static WmsMovementOrderDetailSaveReqVO createMovementOrderDetailReqVO(Long id, Long skuId,
-                                                                                  String quantity, String price,
-                                                                                  String totalPrice) {
-        WmsMovementOrderDetailSaveReqVO reqVO = new WmsMovementOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setPrice(new BigDecimal(price));
-        if (totalPrice != null) {
-            reqVO.setTotalPrice(new BigDecimal(totalPrice));
-        }
-        return reqVO;
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImplTest.java
deleted file mode 100644
index e8d93aa..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderDetailServiceImplTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.receipt;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.receipt.WmsReceiptOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_DETAIL_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-@Import(WmsReceiptOrderDetailServiceImpl.class)
-public class WmsReceiptOrderDetailServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsReceiptOrderDetailServiceImpl receiptOrderDetailService;
-
-    @Resource
-    private WmsReceiptOrderDetailMapper receiptOrderDetailMapper;
-
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-
-    @Test
-    public void testCreateReceiptOrderDetailList_success() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderReqVO(
-                createReceiptOrderDetailReqVO(null, 1001L, "1.00"),
-                createReceiptOrderDetailReqVO(null, 1002L, "2.00"));
-
-        // 璋冪敤
-        receiptOrderDetailService.createReceiptOrderDetailList(orderId, reqVO);
-
-        // 鏂█
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(orderId, details.get(0).getOrderId());
-        assertEquals(orderId, details.get(1).getOrderId());
-        assertEquals(0, new BigDecimal("100.00").compareTo(details.get(0).getTotalPrice()));
-        assertEquals(0, new BigDecimal("200.00").compareTo(details.get(1).getTotalPrice()));
-    }
-
-    @Test
-    public void testCreateReceiptOrderDetailList_ignoreId() {
-        // mock 鏁版嵁
-        WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderReqVO(
-                createReceiptOrderDetailReqVO(999L, 1001L, "1.00"));
-
-        // 璋冪敤
-        receiptOrderDetailService.createReceiptOrderDetailList(10L, reqVO);
-
-        // 鏂█
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(10L);
-        assertEquals(1, details.size());
-        assertNotNull(details.get(0).getId());
-        assertEquals(1001L, details.get(0).getSkuId());
-    }
-
-    @Test
-    public void testUpdateReceiptOrderDetailList_diff() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsReceiptOrderDetailDO detail01 = createReceiptOrderDetail(orderId, 1001L, "1.00");
-        WmsReceiptOrderDetailDO detail02 = createReceiptOrderDetail(orderId, 1002L, "2.00");
-        receiptOrderDetailMapper.insert(detail01);
-        receiptOrderDetailMapper.insert(detail02);
-        WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderReqVO(
-                createReceiptOrderDetailReqVO(detail01.getId(), 2001L, "11.00"),
-                createReceiptOrderDetailReqVO(null, 2002L, "22.00"));
-
-        // 璋冪敤
-        receiptOrderDetailService.updateReceiptOrderDetailList(orderId, reqVO);
-
-        // 鏂█锛氫慨鏀�
-        WmsReceiptOrderDetailDO dbUpdateDetail = receiptOrderDetailMapper.selectById(detail01.getId());
-        assertNotNull(dbUpdateDetail);
-        assertEquals(orderId, dbUpdateDetail.getOrderId());
-        assertEquals(2001L, dbUpdateDetail.getSkuId());
-        assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("1100.00").compareTo(dbUpdateDetail.getTotalPrice()));
-        // 鏂█锛氭柊澧�
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        WmsReceiptOrderDetailDO dbCreateDetail = details.stream()
-                .filter(detail -> Long.valueOf(2002L).equals(detail.getSkuId()))
-                .findFirst().orElse(null);
-        assertNotNull(dbCreateDetail);
-        assertEquals(orderId, dbCreateDetail.getOrderId());
-        assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("2200.00").compareTo(dbCreateDetail.getTotalPrice()));
-        // 鏂█锛氬垹闄�
-        assertNull(receiptOrderDetailMapper.selectById(detail02.getId()));
-    }
-
-    @Test
-    public void testUpdateReceiptOrderDetailList_detailNotExists() {
-        // mock 鏁版嵁
-        WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderReqVO(
-                createReceiptOrderDetailReqVO(999L, 1001L, "1.00"));
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> receiptOrderDetailService.updateReceiptOrderDetailList(10L, reqVO),
-                RECEIPT_ORDER_DETAIL_NOT_EXISTS);
-    }
-
-    private static WmsReceiptOrderSaveReqVO createReceiptOrderReqVO(WmsReceiptOrderDetailSaveReqVO... details) {
-        WmsReceiptOrderSaveReqVO reqVO = new WmsReceiptOrderSaveReqVO();
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setWarehouseId(100L);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId, String quantity) {
-        WmsReceiptOrderDetailSaveReqVO reqVO = new WmsReceiptOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setPrice(new BigDecimal("100.00"));
-        reqVO.setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")));
-        return reqVO;
-    }
-
-    private static WmsReceiptOrderDetailDO createReceiptOrderDetail(Long orderId, Long skuId, String quantity) {
-        return WmsReceiptOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(100L)
-                .quantity(new BigDecimal(quantity))
-                .price(new BigDecimal("100.00"))
-                .totalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")))
-                .build();
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImplTest.java
deleted file mode 100644
index 36f029c..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/receipt/WmsReceiptOrderServiceImplTest.java
+++ /dev/null
@@ -1,271 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.receipt;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.detail.WmsReceiptOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.receipt.vo.order.WmsReceiptOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.receipt.WmsReceiptOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.receipt.WmsReceiptOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.receipt.WmsReceiptOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsReceiptOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_DETAIL_REQUIRED;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_STATUS_NOT_PREPARE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.RECEIPT_ORDER_STATUS_NOT_DELETABLE;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-@Import({WmsReceiptOrderServiceImpl.class, WmsReceiptOrderDetailServiceImpl.class})
-public class WmsReceiptOrderServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsReceiptOrderServiceImpl receiptOrderService;
-
-    @Resource
-    private WmsReceiptOrderMapper receiptOrderMapper;
-    @Resource
-    private WmsReceiptOrderDetailMapper receiptOrderDetailMapper;
-
-    @MockitoBean
-    private WmsWarehouseService warehouseService;
-    @MockitoBean
-    private WmsMerchantService merchantService;
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-    @MockitoBean
-    private WmsInventoryService inventoryService;
-
-    @Test
-    public void testCreateReceiptOrder_calculateTotal() {
-        // mock 鏁版嵁
-        WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(null,
-                createReceiptOrderDetailReqVO(null, 2001L, "1.50", "10.00", "16.00"),
-                createReceiptOrderDetailReqVO(null, 2002L, "2.50", "20.00", "51.00"));
-
-        // 璋冪敤
-        Long orderId = receiptOrderService.createReceiptOrder(reqVO);
-
-        // 鏂█
-        WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(orderId);
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("67.00").compareTo(dbOrder.getTotalPrice()));
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(0, new BigDecimal("16.00").compareTo(details.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testUpdateReceiptOrder_calculateTotal() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L);
-        receiptOrderMapper.insert(order);
-        WmsReceiptOrderSaveReqVO reqVO = createReceiptOrderSaveReqVO(order.getId(),
-                createReceiptOrderDetailReqVO(null, 2001L, "3.00", "30.00", "88.00"));
-
-        // 璋冪敤
-        receiptOrderService.updateReceiptOrder(reqVO);
-
-        // 鏂█
-        WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("88.00").compareTo(dbOrder.getTotalPrice()));
-        List<WmsReceiptOrderDetailDO> details = receiptOrderDetailMapper.selectListByOrderId(order.getId());
-        assertEquals(1, details.size());
-        assertEquals(0, new BigDecimal("88.00").compareTo(details.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testCompleteReceiptOrder_success() {
-        // mock 鏁版嵁
-        Long warehouseId = 100L;
-        Long skuId = 200L;
-        WmsReceiptOrderDO order = createReceiptOrder(warehouseId);
-        receiptOrderMapper.insert(order);
-        receiptOrderDetailMapper.insert(createReceiptOrderDetail(order.getId(), skuId, warehouseId));
-
-        // 璋冪敤
-        receiptOrderService.completeReceiptOrder(order.getId());
-
-        // 鏂█锛氬叆搴撳崟
-        WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.FINISHED.getStatus(), dbOrder.getStatus());
-        // 鏂█锛氬簱瀛樺彉鏇�
-        ArgumentCaptor<WmsInventoryChangeReqDTO> captor = ArgumentCaptor.forClass(WmsInventoryChangeReqDTO.class);
-        verify(inventoryService).changeInventory(captor.capture());
-        WmsInventoryChangeReqDTO inventoryReqDTO = captor.getValue();
-        assertEquals(order.getId(), inventoryReqDTO.getOrderId());
-        assertEquals(order.getNo(), inventoryReqDTO.getOrderNo());
-        assertEquals(WmsOrderTypeEnum.RECEIPT.getType(), inventoryReqDTO.getOrderType());
-        assertEquals(1, inventoryReqDTO.getItems().size());
-        assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId());
-        assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId());
-        assertEquals(0, new BigDecimal("2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("40.00").compareTo(inventoryReqDTO.getItems().get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testCompleteReceiptOrder_detailRequired() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L);
-        receiptOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> receiptOrderService.completeReceiptOrder(order.getId()),
-                RECEIPT_ORDER_DETAIL_REQUIRED);
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testCompleteReceiptOrder_duplicateComplete() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L);
-        receiptOrderMapper.insert(order);
-        receiptOrderDetailMapper.insert(createReceiptOrderDetail(order.getId(), 200L, 100L));
-
-        // 璋冪敤
-        receiptOrderService.completeReceiptOrder(order.getId());
-
-        // 璋冪敤锛屽苟鏂█锛氫簩娆″畬鎴愪笉鑳藉啀娆″啓搴撳瓨
-        assertServiceException(() -> receiptOrderService.completeReceiptOrder(order.getId()),
-                RECEIPT_ORDER_STATUS_NOT_PREPARE);
-        verify(inventoryService).changeInventory(any());
-    }
-
-    @Test
-    public void testCancelReceiptOrder_success() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L);
-        receiptOrderMapper.insert(order);
-
-        // 璋冪敤
-        receiptOrderService.cancelReceiptOrder(order.getId());
-
-        // 鏂█
-        WmsReceiptOrderDO dbOrder = receiptOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.CANCELED.getStatus(), dbOrder.getStatus());
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testUpdateByIdAndStatus_statusNotMatch() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L);
-        receiptOrderMapper.insert(order);
-
-        // 璋冪敤
-        int updateCount = receiptOrderMapper.updateByIdAndStatus(order.getId(),
-                WmsOrderStatusEnum.FINISHED.getStatus(),
-                new WmsReceiptOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus()));
-
-        // 鏂█
-        assertEquals(0, updateCount);
-        assertEquals(WmsOrderStatusEnum.PREPARE.getStatus(),
-                receiptOrderMapper.selectById(order.getId()).getStatus());
-    }
-
-    @Test
-    public void testDeleteReceiptOrder_canceled() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L).setStatus(WmsOrderStatusEnum.CANCELED.getStatus());
-        receiptOrderMapper.insert(order);
-        receiptOrderDetailMapper.insert(createReceiptOrderDetail(order.getId(), 200L, 100L));
-
-        // 璋冪敤
-        receiptOrderService.deleteReceiptOrder(order.getId());
-
-        // 鏂█
-        assertNull(receiptOrderMapper.selectById(order.getId()));
-        assertEquals(0, receiptOrderDetailMapper.selectListByOrderId(order.getId()).size());
-    }
-
-    @Test
-    public void testDeleteReceiptOrder_finished() {
-        // mock 鏁版嵁
-        WmsReceiptOrderDO order = createReceiptOrder(100L).setStatus(WmsOrderStatusEnum.FINISHED.getStatus());
-        receiptOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> receiptOrderService.deleteReceiptOrder(order.getId()),
-                RECEIPT_ORDER_STATUS_NOT_DELETABLE);
-    }
-
-    private static WmsReceiptOrderDO createReceiptOrder(Long warehouseId) {
-        return new WmsReceiptOrderDO()
-                .setNo("RK202605120001")
-                .setType(WmsReceiptOrderTypeEnum.PURCHASE.getType())
-                .setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0))
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus())
-                .setWarehouseId(warehouseId)
-                .setTotalQuantity(new BigDecimal("2.00"))
-                .setTotalPrice(new BigDecimal("20.00"));
-    }
-
-    private static WmsReceiptOrderSaveReqVO createReceiptOrderSaveReqVO(Long id,
-                                                                        WmsReceiptOrderDetailSaveReqVO... details) {
-        WmsReceiptOrderSaveReqVO reqVO = new WmsReceiptOrderSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setNo("RK202605120001");
-        reqVO.setType(WmsReceiptOrderTypeEnum.PURCHASE.getType());
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setWarehouseId(100L);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId,
-                                                                                String quantity, String price) {
-        return createReceiptOrderDetailReqVO(id, skuId, quantity, price, null);
-    }
-
-    private static WmsReceiptOrderDetailSaveReqVO createReceiptOrderDetailReqVO(Long id, Long skuId,
-                                                                                String quantity, String price,
-                                                                                String totalPrice) {
-        WmsReceiptOrderDetailSaveReqVO reqVO = new WmsReceiptOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setPrice(new BigDecimal(price));
-        if (totalPrice != null) {
-            reqVO.setTotalPrice(new BigDecimal(totalPrice));
-        }
-        return reqVO;
-    }
-
-    private static WmsReceiptOrderDetailDO createReceiptOrderDetail(Long orderId, Long skuId, Long warehouseId) {
-        return WmsReceiptOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(warehouseId)
-                .quantity(new BigDecimal("2.00"))
-                .price(new BigDecimal("20.00"))
-                .totalPrice(new BigDecimal("40.00"))
-                .build();
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImplTest.java
deleted file mode 100644
index 2ea341c..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderDetailServiceImplTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.shipment;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.shipment.WmsShipmentOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.SHIPMENT_ORDER_DETAIL_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-@Import(WmsShipmentOrderDetailServiceImpl.class)
-public class WmsShipmentOrderDetailServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsShipmentOrderDetailServiceImpl shipmentOrderDetailService;
-
-    @Resource
-    private WmsShipmentOrderDetailMapper shipmentOrderDetailMapper;
-
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-
-    @Test
-    public void testCreateShipmentOrderDetailList_success() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderReqVO(
-                createShipmentOrderDetailReqVO(null, 1001L, "1.00"),
-                createShipmentOrderDetailReqVO(null, 1002L, "2.00"));
-
-        // 璋冪敤
-        shipmentOrderDetailService.createShipmentOrderDetailList(orderId, reqVO);
-
-        // 鏂█
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(orderId, details.get(0).getOrderId());
-        assertEquals(orderId, details.get(1).getOrderId());
-        assertEquals(100L, details.get(0).getWarehouseId());
-        assertEquals(0, new BigDecimal("100.00").compareTo(details.get(0).getTotalPrice()));
-        assertEquals(0, new BigDecimal("200.00").compareTo(details.get(1).getTotalPrice()));
-    }
-
-    @Test
-    public void testCreateShipmentOrderDetailList_ignoreId() {
-        // mock 鏁版嵁
-        WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderReqVO(
-                createShipmentOrderDetailReqVO(999L, 1001L, "1.00"));
-
-        // 璋冪敤
-        shipmentOrderDetailService.createShipmentOrderDetailList(10L, reqVO);
-
-        // 鏂█
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(10L);
-        assertEquals(1, details.size());
-        assertNotNull(details.get(0).getId());
-        assertEquals(1001L, details.get(0).getSkuId());
-    }
-
-    @Test
-    public void testUpdateShipmentOrderDetailList_diff() {
-        // mock 鏁版嵁
-        Long orderId = 10L;
-        WmsShipmentOrderDetailDO detail01 = createShipmentOrderDetail(orderId, 1001L, "1.00");
-        WmsShipmentOrderDetailDO detail02 = createShipmentOrderDetail(orderId, 1002L, "2.00");
-        shipmentOrderDetailMapper.insert(detail01);
-        shipmentOrderDetailMapper.insert(detail02);
-        WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderReqVO(
-                createShipmentOrderDetailReqVO(detail01.getId(), 2001L, "11.00"),
-                createShipmentOrderDetailReqVO(null, 2002L, "22.00"));
-
-        // 璋冪敤
-        shipmentOrderDetailService.updateShipmentOrderDetailList(orderId, reqVO);
-
-        // 鏂█锛氫慨鏀�
-        WmsShipmentOrderDetailDO dbUpdateDetail = shipmentOrderDetailMapper.selectById(detail01.getId());
-        assertNotNull(dbUpdateDetail);
-        assertEquals(orderId, dbUpdateDetail.getOrderId());
-        assertEquals(2001L, dbUpdateDetail.getSkuId());
-        assertEquals(0, new BigDecimal("11.00").compareTo(dbUpdateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("1100.00").compareTo(dbUpdateDetail.getTotalPrice()));
-        // 鏂█锛氭柊澧�
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        WmsShipmentOrderDetailDO dbCreateDetail = details.stream()
-                .filter(detail -> Long.valueOf(2002L).equals(detail.getSkuId()))
-                .findFirst().orElse(null);
-        assertNotNull(dbCreateDetail);
-        assertEquals(orderId, dbCreateDetail.getOrderId());
-        assertEquals(0, new BigDecimal("22.00").compareTo(dbCreateDetail.getQuantity()));
-        assertEquals(0, new BigDecimal("2200.00").compareTo(dbCreateDetail.getTotalPrice()));
-        // 鏂█锛氬垹闄�
-        assertNull(shipmentOrderDetailMapper.selectById(detail02.getId()));
-    }
-
-    @Test
-    public void testUpdateShipmentOrderDetailList_detailNotExists() {
-        // mock 鏁版嵁
-        WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderReqVO(
-                createShipmentOrderDetailReqVO(999L, 1001L, "1.00"));
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> shipmentOrderDetailService.updateShipmentOrderDetailList(10L, reqVO),
-                SHIPMENT_ORDER_DETAIL_NOT_EXISTS);
-    }
-
-    private static WmsShipmentOrderSaveReqVO createShipmentOrderReqVO(WmsShipmentOrderDetailSaveReqVO... details) {
-        WmsShipmentOrderSaveReqVO reqVO = new WmsShipmentOrderSaveReqVO();
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setWarehouseId(100L);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsShipmentOrderDetailSaveReqVO createShipmentOrderDetailReqVO(Long id, Long skuId, String quantity) {
-        WmsShipmentOrderDetailSaveReqVO reqVO = new WmsShipmentOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setPrice(new BigDecimal("100.00"));
-        reqVO.setTotalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")));
-        return reqVO;
-    }
-
-    private static WmsShipmentOrderDetailDO createShipmentOrderDetail(Long orderId, Long skuId, String quantity) {
-        return WmsShipmentOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(100L)
-                .quantity(new BigDecimal(quantity))
-                .price(new BigDecimal("100.00"))
-                .totalPrice(new BigDecimal(quantity).multiply(new BigDecimal("100.00")))
-                .build();
-    }
-
-}
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImplTest.java
deleted file mode 100644
index 6a4e86c..0000000
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/order/shipment/WmsShipmentOrderServiceImplTest.java
+++ /dev/null
@@ -1,271 +0,0 @@
-package cn.iocoder.yudao.module.wms.service.order.shipment;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.detail.WmsShipmentOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.wms.controller.admin.order.shipment.vo.order.WmsShipmentOrderSaveReqVO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDO;
-import cn.iocoder.yudao.module.wms.dal.dataobject.order.shipment.WmsShipmentOrderDetailDO;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.shipment.WmsShipmentOrderDetailMapper;
-import cn.iocoder.yudao.module.wms.dal.mysql.order.shipment.WmsShipmentOrderMapper;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsOrderStatusEnum;
-import cn.iocoder.yudao.module.wms.enums.order.WmsShipmentOrderTypeEnum;
-import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService;
-import cn.iocoder.yudao.module.wms.service.inventory.dto.WmsInventoryChangeReqDTO;
-import cn.iocoder.yudao.module.wms.service.md.item.WmsItemSkuService;
-import cn.iocoder.yudao.module.wms.service.md.merchant.WmsMerchantService;
-import cn.iocoder.yudao.module.wms.service.md.warehouse.WmsWarehouseService;
-import jakarta.annotation.Resource;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.bean.override.mockito.MockitoBean;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.SHIPMENT_ORDER_DETAIL_REQUIRED;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.SHIPMENT_ORDER_STATUS_NOT_DELETABLE;
-import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.SHIPMENT_ORDER_STATUS_NOT_PREPARE;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-@Import({WmsShipmentOrderServiceImpl.class, WmsShipmentOrderDetailServiceImpl.class})
-public class WmsShipmentOrderServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private WmsShipmentOrderServiceImpl shipmentOrderService;
-
-    @Resource
-    private WmsShipmentOrderMapper shipmentOrderMapper;
-    @Resource
-    private WmsShipmentOrderDetailMapper shipmentOrderDetailMapper;
-
-    @MockitoBean
-    private WmsWarehouseService warehouseService;
-    @MockitoBean
-    private WmsMerchantService merchantService;
-    @MockitoBean
-    private WmsItemSkuService itemSkuService;
-    @MockitoBean
-    private WmsInventoryService inventoryService;
-
-    @Test
-    public void testCreateShipmentOrder_calculateTotal() {
-        // mock 鏁版嵁
-        WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderSaveReqVO(null,
-                createShipmentOrderDetailReqVO(null, 2001L, "1.50", "10.00", "16.00"),
-                createShipmentOrderDetailReqVO(null, 2002L, "2.50", "20.00", "51.00"));
-
-        // 璋冪敤
-        Long orderId = shipmentOrderService.createShipmentOrder(reqVO);
-
-        // 鏂█
-        WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(orderId);
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("4.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("67.00").compareTo(dbOrder.getTotalPrice()));
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(orderId);
-        assertEquals(2, details.size());
-        assertEquals(0, new BigDecimal("16.00").compareTo(details.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testUpdateShipmentOrder_calculateTotal() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L);
-        shipmentOrderMapper.insert(order);
-        WmsShipmentOrderSaveReqVO reqVO = createShipmentOrderSaveReqVO(order.getId(),
-                createShipmentOrderDetailReqVO(null, 2001L, "3.00", "30.00", "88.00"));
-
-        // 璋冪敤
-        shipmentOrderService.updateShipmentOrder(reqVO);
-
-        // 鏂█
-        WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(0, new BigDecimal("3.00").compareTo(dbOrder.getTotalQuantity()));
-        assertEquals(0, new BigDecimal("88.00").compareTo(dbOrder.getTotalPrice()));
-        List<WmsShipmentOrderDetailDO> details = shipmentOrderDetailMapper.selectListByOrderId(order.getId());
-        assertEquals(1, details.size());
-        assertEquals(0, new BigDecimal("88.00").compareTo(details.get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testCompleteShipmentOrder_success() {
-        // mock 鏁版嵁
-        Long warehouseId = 100L;
-        Long skuId = 200L;
-        WmsShipmentOrderDO order = createShipmentOrder(warehouseId);
-        shipmentOrderMapper.insert(order);
-        shipmentOrderDetailMapper.insert(createShipmentOrderDetail(order.getId(), skuId, warehouseId));
-
-        // 璋冪敤
-        shipmentOrderService.completeShipmentOrder(order.getId());
-
-        // 鏂█锛氬嚭搴撳崟
-        WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.FINISHED.getStatus(), dbOrder.getStatus());
-        // 鏂█锛氬簱瀛樺彉鏇�
-        ArgumentCaptor<WmsInventoryChangeReqDTO> captor = ArgumentCaptor.forClass(WmsInventoryChangeReqDTO.class);
-        verify(inventoryService).changeInventory(captor.capture());
-        WmsInventoryChangeReqDTO inventoryReqDTO = captor.getValue();
-        assertEquals(order.getId(), inventoryReqDTO.getOrderId());
-        assertEquals(order.getNo(), inventoryReqDTO.getOrderNo());
-        assertEquals(WmsOrderTypeEnum.SHIPMENT.getType(), inventoryReqDTO.getOrderType());
-        assertEquals(1, inventoryReqDTO.getItems().size());
-        assertEquals(skuId, inventoryReqDTO.getItems().get(0).getSkuId());
-        assertEquals(warehouseId, inventoryReqDTO.getItems().get(0).getWarehouseId());
-        assertEquals(0, new BigDecimal("-2.00").compareTo(inventoryReqDTO.getItems().get(0).getQuantity()));
-        assertEquals(0, new BigDecimal("-40.00").compareTo(inventoryReqDTO.getItems().get(0).getTotalPrice()));
-    }
-
-    @Test
-    public void testCompleteShipmentOrder_detailRequired() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L);
-        shipmentOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> shipmentOrderService.completeShipmentOrder(order.getId()),
-                SHIPMENT_ORDER_DETAIL_REQUIRED);
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testCompleteShipmentOrder_duplicateComplete() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L);
-        shipmentOrderMapper.insert(order);
-        shipmentOrderDetailMapper.insert(createShipmentOrderDetail(order.getId(), 200L, 100L));
-
-        // 璋冪敤
-        shipmentOrderService.completeShipmentOrder(order.getId());
-
-        // 璋冪敤锛屽苟鏂█锛氫簩娆″畬鎴愪笉鑳藉啀娆″啓搴撳瓨
-        assertServiceException(() -> shipmentOrderService.completeShipmentOrder(order.getId()),
-                SHIPMENT_ORDER_STATUS_NOT_PREPARE);
-        verify(inventoryService).changeInventory(any());
-    }
-
-    @Test
-    public void testCancelShipmentOrder_success() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L);
-        shipmentOrderMapper.insert(order);
-
-        // 璋冪敤
-        shipmentOrderService.cancelShipmentOrder(order.getId());
-
-        // 鏂█
-        WmsShipmentOrderDO dbOrder = shipmentOrderMapper.selectById(order.getId());
-        assertNotNull(dbOrder);
-        assertEquals(WmsOrderStatusEnum.CANCELED.getStatus(), dbOrder.getStatus());
-        verify(inventoryService, never()).changeInventory(any());
-    }
-
-    @Test
-    public void testUpdateByIdAndStatus_statusNotMatch() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L);
-        shipmentOrderMapper.insert(order);
-
-        // 璋冪敤
-        int updateCount = shipmentOrderMapper.updateByIdAndStatus(order.getId(),
-                WmsOrderStatusEnum.FINISHED.getStatus(),
-                new WmsShipmentOrderDO().setStatus(WmsOrderStatusEnum.CANCELED.getStatus()));
-
-        // 鏂█
-        assertEquals(0, updateCount);
-        assertEquals(WmsOrderStatusEnum.PREPARE.getStatus(),
-                shipmentOrderMapper.selectById(order.getId()).getStatus());
-    }
-
-    @Test
-    public void testDeleteShipmentOrder_canceled() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L).setStatus(WmsOrderStatusEnum.CANCELED.getStatus());
-        shipmentOrderMapper.insert(order);
-        shipmentOrderDetailMapper.insert(createShipmentOrderDetail(order.getId(), 200L, 100L));
-
-        // 璋冪敤
-        shipmentOrderService.deleteShipmentOrder(order.getId());
-
-        // 鏂█
-        assertNull(shipmentOrderMapper.selectById(order.getId()));
-        assertEquals(0, shipmentOrderDetailMapper.selectListByOrderId(order.getId()).size());
-    }
-
-    @Test
-    public void testDeleteShipmentOrder_finished() {
-        // mock 鏁版嵁
-        WmsShipmentOrderDO order = createShipmentOrder(100L).setStatus(WmsOrderStatusEnum.FINISHED.getStatus());
-        shipmentOrderMapper.insert(order);
-
-        // 璋冪敤锛屽苟鏂█
-        assertServiceException(() -> shipmentOrderService.deleteShipmentOrder(order.getId()),
-                SHIPMENT_ORDER_STATUS_NOT_DELETABLE);
-    }
-
-    private static WmsShipmentOrderDO createShipmentOrder(Long warehouseId) {
-        return new WmsShipmentOrderDO()
-                .setNo("CK202605120001")
-                .setType(WmsShipmentOrderTypeEnum.SALE.getType())
-                .setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0))
-                .setStatus(WmsOrderStatusEnum.PREPARE.getStatus())
-                .setWarehouseId(warehouseId)
-                .setTotalQuantity(new BigDecimal("2.00"))
-                .setTotalPrice(new BigDecimal("20.00"));
-    }
-
-    private static WmsShipmentOrderSaveReqVO createShipmentOrderSaveReqVO(Long id,
-                                                                          WmsShipmentOrderDetailSaveReqVO... details) {
-        WmsShipmentOrderSaveReqVO reqVO = new WmsShipmentOrderSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setNo("CK202605120001");
-        reqVO.setType(WmsShipmentOrderTypeEnum.SALE.getType());
-        reqVO.setOrderTime(LocalDateTime.of(2026, 5, 12, 0, 0));
-        reqVO.setWarehouseId(100L);
-        reqVO.setDetails(Arrays.asList(details));
-        return reqVO;
-    }
-
-    private static WmsShipmentOrderDetailSaveReqVO createShipmentOrderDetailReqVO(Long id, Long skuId,
-                                                                                  String quantity, String price) {
-        return createShipmentOrderDetailReqVO(id, skuId, quantity, price, null);
-    }
-
-    private static WmsShipmentOrderDetailSaveReqVO createShipmentOrderDetailReqVO(Long id, Long skuId,
-                                                                                  String quantity, String price,
-                                                                                  String totalPrice) {
-        WmsShipmentOrderDetailSaveReqVO reqVO = new WmsShipmentOrderDetailSaveReqVO();
-        reqVO.setId(id);
-        reqVO.setSkuId(skuId);
-        reqVO.setQuantity(new BigDecimal(quantity));
-        reqVO.setPrice(new BigDecimal(price));
-        if (totalPrice != null) {
-            reqVO.setTotalPrice(new BigDecimal(totalPrice));
-        }
-        return reqVO;
-    }
-
-    private static WmsShipmentOrderDetailDO createShipmentOrderDetail(Long orderId, Long skuId, Long warehouseId) {
-        return WmsShipmentOrderDetailDO.builder()
-                .orderId(orderId)
-                .skuId(skuId)
-                .warehouseId(warehouseId)
-                .quantity(new BigDecimal("2.00"))
-                .price(new BigDecimal("20.00"))
-                .totalPrice(new BigDecimal("40.00"))
-                .build();
-    }
-
-}
diff --git a/yudao-module-wms/src/test/resources/application-unit-test.yaml b/yudao-module-wms/src/test/resources/application-unit-test.yaml
deleted file mode 100644
index 2961550..0000000
--- a/yudao-module-wms/src/test/resources/application-unit-test.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-spring:
-  main:
-    lazy-initialization: true # 寮�鍚噿鍔犺浇锛屽姞蹇�熷害
-    banner-mode: off # 鍗曞厓娴嬭瘯锛岀鐢� Banner
-
---- #################### 鏁版嵁搴撶浉鍏抽厤缃� ####################
-
-spring:
-  datasource:
-    name: ruoyi-vue-pro
-    url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false;NON_KEYWORDS=value; # MODE 浣跨敤 MySQL 妯″紡锛汥ATABASE_TO_UPPER 閰嶇疆琛ㄥ拰瀛楁浣跨敤灏忓啓
-    driver-class-name: org.h2.Driver
-    username: sa
-    password:
-    druid:
-      async-init: true # 鍗曞厓娴嬭瘯锛屽紓姝ュ垵濮嬪寲 Druid 杩炴帴姹狅紝鎻愬崌鍚姩閫熷害
-      initial-size: 1 # 鍗曞厓娴嬭瘯锛岄厤缃负 1锛屾彁鍗囧惎鍔ㄩ�熷害
-  sql:
-    init:
-      schema-locations: classpath:/sql/create_tables.sql
-
-  data:
-    redis:
-      host: 127.0.0.1 # 鍦板潃
-      port: 16379 # 绔彛锛堝崟鍏冩祴璇曪紝浣跨敤 16379 绔彛锛�
-      database: 0 # 鏁版嵁搴撶储寮�
-
-mybatis:
-  lazy-initialization: true # 鍗曞厓娴嬭瘯锛岃缃� MyBatis Mapper 寤惰繜鍔犺浇锛屽姞閫熸瘡涓崟鍏冩祴璇�
-
---- #################### 鑺嬮亾鐩稿叧閰嶇疆 ####################
-
-yudao:
-  info:
-    base-package: cn.iocoder.yudao.module
diff --git a/yudao-module-wms/src/test/resources/sql/clean.sql b/yudao-module-wms/src/test/resources/sql/clean.sql
deleted file mode 100644
index 2ca91cb..0000000
--- a/yudao-module-wms/src/test/resources/sql/clean.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-DELETE FROM "wms_check_order_detail";
-DELETE FROM "wms_check_order";
-DELETE FROM "wms_movement_order_detail";
-DELETE FROM "wms_movement_order";
-DELETE FROM "wms_shipment_order_detail";
-DELETE FROM "wms_shipment_order";
-DELETE FROM "wms_receipt_order_detail";
-DELETE FROM "wms_receipt_order";
-DELETE FROM "wms_inventory_history";
-DELETE FROM "wms_inventory";
-DELETE FROM "wms_item_sku";
-DELETE FROM "wms_item";
-DELETE FROM "wms_item_category";
-DELETE FROM "wms_item_brand";
-DELETE FROM "wms_warehouse";
-DELETE FROM "wms_merchant";
diff --git a/yudao-module-wms/src/test/resources/sql/create_tables.sql b/yudao-module-wms/src/test/resources/sql/create_tables.sql
deleted file mode 100644
index 811ae5e..0000000
--- a/yudao-module-wms/src/test/resources/sql/create_tables.sql
+++ /dev/null
@@ -1,320 +0,0 @@
-CREATE TABLE IF NOT EXISTS "wms_warehouse" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "code" varchar(20) NOT NULL,
-    "name" varchar(50) NOT NULL,
-    "remark" varchar(255) DEFAULT NULL,
-    "sort" int DEFAULT '0',
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 浠撳簱琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_merchant" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "code" varchar(20) NOT NULL,
-    "name" varchar(60) NOT NULL,
-    "type" tinyint NOT NULL,
-    "level" varchar(10) DEFAULT NULL,
-    "bank_name" varchar(255) DEFAULT NULL,
-    "bank_account" varchar(40) DEFAULT NULL,
-    "address" varchar(200) DEFAULT NULL,
-    "mobile" varchar(13) DEFAULT NULL,
-    "telephone" varchar(13) DEFAULT NULL,
-    "contact" varchar(30) DEFAULT NULL,
-    "email" varchar(50) DEFAULT NULL,
-    "remark" varchar(255) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 寰�鏉ヤ紒涓氳〃';
-
-CREATE TABLE IF NOT EXISTS "wms_item_brand" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "code" varchar(20) NOT NULL,
-    "name" varchar(30) NOT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍟嗗搧鍝佺墝琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_item_category" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "parent_id" bigint NOT NULL DEFAULT '0',
-    "code" varchar(20) NOT NULL,
-    "name" varchar(30) NOT NULL,
-    "sort" int DEFAULT '0',
-    "status" tinyint NOT NULL DEFAULT '1',
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍟嗗搧鍒嗙被琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_item" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "code" varchar(20) DEFAULT NULL,
-    "name" varchar(60) NOT NULL,
-    "category_id" bigint NOT NULL,
-    "unit" varchar(20) DEFAULT NULL,
-    "brand_id" bigint DEFAULT NULL,
-    "remark" varchar(255) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍟嗗搧琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_item_sku" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "name" varchar(255) NOT NULL,
-    "item_id" bigint NOT NULL,
-    "bar_code" varchar(64) DEFAULT NULL,
-    "code" varchar(64) DEFAULT NULL,
-    "length" decimal(10, 1) DEFAULT NULL,
-    "width" decimal(10, 1) DEFAULT NULL,
-    "height" decimal(10, 1) DEFAULT NULL,
-    "gross_weight" decimal(10, 3) DEFAULT NULL,
-    "net_weight" decimal(10, 3) DEFAULT NULL,
-    "cost_price" decimal(16, 2) DEFAULT NULL,
-    "selling_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍟嗗搧 SKU 琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_inventory" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "sku_id" bigint NOT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "remark" varchar(255) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id"),
-    CONSTRAINT "uk_sku_id_warehouse_id" UNIQUE ("sku_id", "warehouse_id")
-) COMMENT 'WMS 搴撳瓨琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_inventory_history" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "sku_id" bigint NOT NULL,
-    "quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "before_quantity" decimal(20, 2) DEFAULT NULL,
-    "after_quantity" decimal(20, 2) DEFAULT NULL,
-    "batch_no" varchar(64) DEFAULT NULL,
-    "production_date" timestamp DEFAULT NULL,
-    "expiration_date" timestamp DEFAULT NULL,
-    "price" decimal(16, 2) DEFAULT NULL,
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "remark" varchar(255) DEFAULT NULL,
-    "order_id" bigint DEFAULT NULL,
-    "order_no" varchar(64) DEFAULT NULL,
-    "order_type" int DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 搴撳瓨娴佹按琛�';
-
-CREATE TABLE IF NOT EXISTS "wms_receipt_order" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "no" varchar(64) NOT NULL,
-    "type" int NOT NULL,
-    "order_time" timestamp NOT NULL,
-    "status" int NOT NULL DEFAULT '0',
-    "biz_order_no" varchar(64) DEFAULT NULL,
-    "merchant_id" bigint DEFAULT NULL,
-    "remark" varchar(255) DEFAULT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍏ュ簱鍗曡〃';
-
-CREATE TABLE IF NOT EXISTS "wms_receipt_order_detail" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "order_id" bigint NOT NULL,
-    "sku_id" bigint NOT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "batch_no" varchar(64) DEFAULT NULL,
-    "production_date" timestamp DEFAULT NULL,
-    "expiration_date" timestamp DEFAULT NULL,
-    "quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "price" decimal(16, 2) DEFAULT NULL,
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍏ュ簱鍗曟槑缁嗚〃';
-
-CREATE TABLE IF NOT EXISTS "wms_shipment_order" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "no" varchar(64) NOT NULL,
-    "type" int NOT NULL,
-    "order_time" timestamp NOT NULL,
-    "status" int NOT NULL DEFAULT '0',
-    "biz_order_no" varchar(64) DEFAULT NULL,
-    "merchant_id" bigint DEFAULT NULL,
-    "remark" varchar(255) DEFAULT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍑哄簱鍗曡〃';
-
-CREATE TABLE IF NOT EXISTS "wms_shipment_order_detail" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "order_id" bigint NOT NULL,
-    "sku_id" bigint NOT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "inventory_detail_id" bigint DEFAULT NULL,
-    "batch_no" varchar(64) DEFAULT NULL,
-    "production_date" timestamp DEFAULT NULL,
-    "expiration_date" timestamp DEFAULT NULL,
-    "quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "price" decimal(16, 2) DEFAULT NULL,
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鍑哄簱鍗曟槑缁嗚〃';
-
-CREATE TABLE IF NOT EXISTS "wms_movement_order" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "no" varchar(64) NOT NULL,
-    "order_time" timestamp NOT NULL,
-    "status" int NOT NULL DEFAULT '0',
-    "remark" varchar(255) DEFAULT NULL,
-    "source_warehouse_id" bigint NOT NULL,
-    "target_warehouse_id" bigint NOT NULL,
-    "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 绉诲簱鍗曡〃';
-
-CREATE TABLE IF NOT EXISTS "wms_movement_order_detail" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "order_id" bigint NOT NULL,
-    "sku_id" bigint NOT NULL,
-    "source_warehouse_id" bigint NOT NULL,
-    "target_warehouse_id" bigint NOT NULL,
-    "inventory_detail_id" bigint DEFAULT NULL,
-    "batch_no" varchar(64) DEFAULT NULL,
-    "production_date" timestamp DEFAULT NULL,
-    "expiration_date" timestamp DEFAULT NULL,
-    "quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "price" decimal(16, 2) DEFAULT NULL,
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 绉诲簱鍗曟槑缁嗚〃';
-
-CREATE TABLE IF NOT EXISTS "wms_check_order" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "no" varchar(64) NOT NULL,
-    "order_time" timestamp NOT NULL,
-    "status" int NOT NULL DEFAULT '0',
-    "remark" varchar(255) DEFAULT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "total_price" decimal(16, 2) DEFAULT NULL,
-    "actual_price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鐩樺簱鍗曡〃';
-
-CREATE TABLE IF NOT EXISTS "wms_check_order_detail" (
-    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-    "order_id" bigint NOT NULL,
-    "sku_id" bigint NOT NULL,
-    "warehouse_id" bigint NOT NULL,
-    "area_id" bigint NOT NULL DEFAULT '0',
-    "inventory_id" bigint DEFAULT NULL,
-    "inventory_detail_id" bigint DEFAULT NULL,
-    "batch_no" varchar(64) DEFAULT NULL,
-    "production_date" timestamp DEFAULT NULL,
-    "expiration_date" timestamp DEFAULT NULL,
-    "receipt_time" timestamp DEFAULT NULL,
-    "quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "check_quantity" decimal(20, 2) NOT NULL DEFAULT '0',
-    "price" decimal(16, 2) DEFAULT NULL,
-    "creator" varchar(64) DEFAULT '',
-    "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "updater" varchar(64) DEFAULT '',
-    "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    "deleted" bit NOT NULL DEFAULT FALSE,
-    "tenant_id" bigint NOT NULL DEFAULT '0',
-    PRIMARY KEY ("id")
-) COMMENT 'WMS 鐩樺簱鍗曟槑缁嗚〃';
diff --git a/yudao-server/pom.xml b/yudao-server/pom.xml
index c422fd5..265ab5a 100644
--- a/yudao-server/pom.xml
+++ b/yudao-server/pom.xml
@@ -122,13 +122,6 @@
             <version>${revision}</version>
         </dependency>
 
-        <!-- WMS 浠撳簱绠$悊妯″潡 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-wms</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
         <!-- IM 鐩稿叧妯″潡 -->
         <dependency>
             <groupId>cn.iocoder.boot</groupId>
diff --git a/yudao-server/src/main/resources/application-test.yaml b/yudao-server/src/main/resources/application-test.yaml
new file mode 100644
index 0000000..7366a20
--- /dev/null
+++ b/yudao-server/src/main/resources/application-test.yaml
@@ -0,0 +1,298 @@
+server:
+  port: 48080
+
+--- #################### 鏁版嵁搴撶浉鍏抽厤缃� ####################
+spring:
+  autoconfigure:
+    # noinspection SpringBootApplicationYaml
+    exclude:
+      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 榛樿 local 鐜锛屼笉寮�鍚� Quartz 鐨勮嚜鍔ㄩ厤缃�
+      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 绂佺敤 AI 妯″潡鐨� Qdrant锛屾墜鍔ㄥ垱寤�
+      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 绂佺敤 AI 妯″潡鐨� Redis锛屾墜鍔ㄥ垱寤�
+      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 绂佺敤 AI 妯″潡鐨� Milvus锛屾墜鍔ㄥ垱寤�
+      - org.dromara.trans.config.TransServiceConfig # TODO 鑺嬭壙锛歟asy-trans 鍏煎 Spring Boot 4 鍚庣Щ闄わ紙TransServiceConfig 寮曠敤浜嗗凡绉婚櫎鐨� RestTemplateBuilder锛�
+      # TODO 鑺嬭壙锛歴pring-ai-alibaba 2.0.0-M1.1 鐨� DashScope 鑷姩閰嶇疆鏆備笉鍏煎 Spring AI 2.0.0
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeChatAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAgentAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeImageAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeVideoAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAudioSpeechAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAudioTranscriptionAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeRerankAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeEmbeddingAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeMultimodalEmbeddingAutoConfiguration
+      - com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAsyncToolCallingManagerAutoConfiguration
+  # 鏁版嵁婧愰厤缃」
+  datasource:
+    druid: # Druid 銆愮洃鎺с�戠浉鍏崇殑鍏ㄥ眬閰嶇疆
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        url-pattern: /druid/*
+        login-username: # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 鎱� SQL 璁板綍
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 澶氭暟鎹簮閰嶇疆
+      druid: # Druid 銆愯繛鎺ユ睜銆戠浉鍏崇殑鍏ㄥ眬閰嶇疆
+        initial-size: 1 # 鍒濆杩炴帴鏁�
+        min-idle: 1 # 鏈�灏忚繛鎺ユ睜鏁伴噺
+        max-active: 20 # 鏈�澶ц繛鎺ユ睜鏁伴噺
+        max-wait: 60000 # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂达紝鍗曚綅锛氭绉掞紙1 鍒嗛挓锛�
+        time-between-eviction-runs-millis: 60000 # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶏細姣锛�1 鍒嗛挓锛�
+        min-evictable-idle-time-millis: 600000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶏細姣锛�10 鍒嗛挓锛�
+        max-evictable-idle-time-millis: 1800000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶏細姣锛�30 鍒嗛挓锛�
+        validation-query: SELECT 1 FROM DUAL # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true # 鏄惁寮�鍚� PreparedStatement 缂撳瓨
+        max-pool-prepared-statement-per-connection-size: 20 # 姣忎釜杩炴帴缂撳瓨鐨� PreparedStatement 鏁伴噺
+      primary: master
+      datasource:
+        master:
+          url: jdbc:mysql://172.17.0.1:11101/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 杩炴帴鐨勭ず渚�
+          #          url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 杩炴帴鐨勭ず渚�
+          #          url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 杩炴帴鐨勭ず渚�
+          #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 杩炴帴鐨勭ず渚�
+          #          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ruoyi-vue-pro;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true;useUnicode=true;characterEncoding=utf-8 # SQLServer 杩炴帴鐨勭ず渚�
+          #          url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 杩炴帴鐨勭ず渚�
+          #          url: jdbc:kingbase8://127.0.0.1:54321/test  # 浜哄ぇ閲戜粨 KingbaseES 杩炴帴鐨勭ず渚�
+          #          url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 杩炴帴鐨勭ず渚�
+          #          url: jdbc:postgresql://127.0.0.1:5866/ruoyi-vue-pro # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+          username: root
+          password: xd@123456..
+          #          username: sa # SQL Server 杩炴帴鐨勭ず渚�
+          #          password: Yudao@2024 # SQL Server 杩炴帴鐨勭ず渚�
+          #          username: SYSDBA # DM 杩炴帴鐨勭ず渚�
+          #          password: SYSDBA001 # DM 杩炴帴鐨勭ず渚�
+          #          username: root # OpenGauss 杩炴帴鐨勭ず渚�
+          #          password: Yudao@2024 # OpenGauss 杩炴帴鐨勭ず渚�
+          #          username: root # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+          #          password: 123456 # 鐎氶珮 HighGo 杩炴帴鐨勭ず渚�
+        slave: # 妯℃嫙浠庡簱锛屽彲鏍规嵁鑷繁闇�瑕佷慨鏀�
+          lazy: true # 寮�鍚噿鍔犺浇锛屼繚璇佸惎鍔ㄩ�熷害
+          url: jdbc:mysql://172.17.0.1:11101/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
+          username: root
+          password: xd@123456
+#        tdengine: # IoT 鏁版嵁搴擄紙闇�瑕� IoT 鐗╄仈缃戝啀寮�鍚櫌锛侊級
+#          lazy: true # 寮�鍚噿鍔犺浇锛屼繚璇佸惎鍔ㄩ�熷害
+#          url: jdbc:TAOS-WS://127.0.0.1:6041/ruoyi_vue_pro?varcharAsString=true&enableAutoReconnect=true # 鍙傝锛歨ttps://t.zsxq.com/qaX9c锛屽紑鍚� TDengine WebSocket 鑷姩閲嶈繛
+#          driver-class-name: com.taosdata.jdbc.ws.WebSocketDriver
+#          username: root
+#          password: taosdata
+#          druid:
+#            validation-query: SELECT SERVER_STATUS() # TDengine 鏁版嵁婧愮殑鏈夋晥鎬ф鏌� SQL
+
+  # Redis 閰嶇疆銆俁edisson 榛樿鐨勯厤缃冻澶熶娇鐢紝涓�鑸笉闇�瑕佽繘琛岃皟浼�
+  data:
+    redis:
+      host: 172.17.0.1 # 鍦板潃
+      port: 11102 # 绔彛
+      database: 0 # 鏁版嵁搴撶储寮�
+#      password: dev # 瀵嗙爜锛屽缓璁敓浜х幆澧冨紑鍚�
+
+--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 ####################
+
+# Quartz 閰嶇疆椤癸紝瀵瑰簲 QuartzProperties 閰嶇疆绫�
+spring:
+  quartz:
+    auto-startup: true # 鏈湴寮�鍙戠幆澧冿紝灏介噺涓嶈寮�鍚� Job
+    scheduler-name: schedulerName # Scheduler 鍚嶅瓧銆傞粯璁や负 schedulerName
+    job-store-type: jdbc # Job 瀛樺偍鍣ㄧ被鍨嬨�傞粯璁や负 memory 琛ㄧず鍐呭瓨锛屽彲閫� jdbc 浣跨敤鏁版嵁搴撱��
+    wait-for-jobs-to-complete-on-shutdown: true # 搴旂敤鍏抽棴鏃讹紝鏄惁绛夊緟瀹氭椂浠诲姟鎵ц瀹屾垚銆傞粯璁や负 false 锛屽缓璁缃负 true
+    properties: # 娣诲姞 Quartz Scheduler 闄勫姞灞炴�э紝鏇村鍙互鐪� http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html 鏂囨。
+      org:
+        quartz:
+          # Scheduler 鐩稿叧閰嶇疆
+          scheduler:
+            instanceName: schedulerName
+            instanceId: AUTO # 鑷姩鐢熸垚 instance ID
+          # JobStore 鐩稿叧閰嶇疆
+          jobStore:
+            # JobStore 瀹炵幇绫汇�傚彲瑙佸崥瀹細https://blog.csdn.net/weixin_42458219/article/details/122247162
+            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
+            isClustered: true # 鏄泦缇ゆā寮�
+            clusterCheckinInterval: 15000 # 闆嗙兢妫�鏌ラ鐜囷紝鍗曚綅锛氭绉掋�傞粯璁や负 15000锛屽嵆 15 绉�
+            misfireThreshold: 60000 # misfire 闃�鍊硷紝鍗曚綅锛氭绉掋��
+          # 绾跨▼姹犵浉鍏抽厤缃�
+          threadPool:
+            threadCount: 25 # 绾跨▼姹犲ぇ灏忋�傞粯璁や负 10 銆�
+            threadPriority: 5 # 绾跨▼浼樺厛绾�
+            class: org.quartz.simpl.SimpleThreadPool # 绾跨▼姹犵被鍨�
+    jdbc: # 浣跨敤 JDBC 鐨� JobStore 鐨勬椂鍊欙紝JDBC 鐨勯厤缃�
+      initialize-schema: NEVER # 鏄惁鑷姩浣跨敤 SQL 鍒濆鍖� Quartz 琛ㄧ粨鏋勩�傝繖閲岃缃垚 never 锛屾垜浠墜鍔ㄥ垱寤鸿〃缁撴瀯銆�
+
+--- #################### 娑堟伅闃熷垪鐩稿叧 ####################
+
+# rocketmq 閰嶇疆椤癸紝瀵瑰簲 RocketMQProperties 閰嶇疆绫�
+rocketmq:
+  name-server: 127.0.0.1:9876 # RocketMQ Namesrv
+
+spring:
+  # RabbitMQ 閰嶇疆椤癸紝瀵瑰簲 RabbitProperties 閰嶇疆绫�
+  rabbitmq:
+    host: 127.0.0.1 # RabbitMQ 鏈嶅姟鐨勫湴鍧�
+    port: 5672 # RabbitMQ 鏈嶅姟鐨勭鍙�
+    username: rabbit # RabbitMQ 鏈嶅姟鐨勮处鍙�
+    password: rabbit # RabbitMQ 鏈嶅姟鐨勫瘑鐮�
+  # Kafka 閰嶇疆椤癸紝瀵瑰簲 KafkaProperties 閰嶇疆绫�
+  kafka:
+    bootstrap-servers: 127.0.0.1:9092 # 鎸囧畾 Kafka Broker 鍦板潃锛屽彲浠ヨ缃涓紝浠ラ�楀彿鍒嗛殧
+
+--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 ####################
+
+# Lock4j 閰嶇疆椤�
+lock4j:
+  acquire-timeout: 3000 # 鑾峰彇鍒嗗竷寮忛攣瓒呮椂鏃堕棿锛岄粯璁や负 3000 姣
+  expire: 30000 # 鍒嗗竷寮忛攣鐨勮秴鏃舵椂闂达紝榛樿涓� 30000 姣
+
+--- #################### 鐩戞帶鐩稿叧閰嶇疆 ####################
+
+# Actuator 鐩戞帶绔偣鐨勯厤缃」
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 鎻愪緵鐨� API 鎺ュ彛鐨勬牴鐩綍銆傞粯璁や负 /actuator
+      exposure:
+        include: '*' # 闇�瑕佸紑鏀剧殑绔偣銆傞粯璁ゅ�煎彧鎵撳紑 health 鍜� info 涓や釜绔偣銆傞�氳繃璁剧疆 * 锛屽彲浠ュ紑鏀炬墍鏈夌鐐广��
+
+# Spring Boot Admin 閰嶇疆椤�
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 瀹㈡埛绔殑鐩稿叧閰嶇疆
+      client:
+        url: http://127.0.0.1:${server.port}/${spring.boot.admin.context-path} # 璁剧疆 Spring Boot Admin Server 鍦板潃
+        instance:
+          service-host-type: IP # 娉ㄥ唽瀹炰緥鏃讹紝浼樺厛浣跨敤 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+        username: admin
+        password: admin
+      # Spring Boot Admin Server 鏈嶅姟绔殑鐩稿叧閰嶇疆
+      context-path: /admin # 閰嶇疆 Spring
+      # 鍏佽宓屽叆 iframe 鐨勫煙鍚嶏紙鏀寔閫氶厤绗︼級锛屽疄闄呴儴缃叉椂锛屽彲浠ユ敼涓� "'self' [浣犵殑鍏綉鍩熷悕]"
+      frame-ancestors: "'self' localhost localhost:48080 127.0.0.1 127.0.0.1:48080"
+
+# 鏃ュ織鏂囦欢閰嶇疆
+logging:
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 鏃ュ織鏂囦欢鍚嶏紝鍏ㄨ矾寰�
+  level:
+    # 閰嶇疆鑷繁鍐欑殑 MyBatis Mapper 鎵撳嵃鏃ュ織
+    cn.iocoder.yudao.module.bpm.dal.mysql: debug
+    cn.iocoder.yudao.module.infra.dal.mysql: debug
+    cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiErrorLogMapper: INFO # 閰嶇疆 ApiErrorLogMapper 鐨勬棩蹇楃骇鍒负 info锛岄伩鍏嶅拰 GlobalExceptionHandler 閲嶅鎵撳嵃
+    cn.iocoder.yudao.module.infra.dal.mysql.job.JobLogMapper: INFO # 閰嶇疆 JobLogMapper 鐨勬棩蹇楃骇鍒负 info
+    cn.iocoder.yudao.module.infra.dal.mysql.file.FileConfigMapper: INFO # 閰嶇疆 FileConfigMapper 鐨勬棩蹇楃骇鍒负 info
+    cn.iocoder.yudao.module.pay.dal.mysql: debug
+    cn.iocoder.yudao.module.pay.dal.mysql.notify.PayNotifyTaskMapper: INFO # 閰嶇疆 PayNotifyTaskMapper 鐨勬棩蹇楃骇鍒负 info
+    cn.iocoder.yudao.module.system.dal.mysql: debug
+    cn.iocoder.yudao.module.system.dal.mysql.sms.SmsChannelMapper: INFO # 閰嶇疆 SmsChannelMapper 鐨勬棩蹇楃骇鍒负 info
+    cn.iocoder.yudao.module.tool.dal.mysql: debug
+    cn.iocoder.yudao.module.member.dal.mysql: debug
+    cn.iocoder.yudao.module.trade.dal.mysql: debug
+    cn.iocoder.yudao.module.promotion.dal.mysql: debug
+    cn.iocoder.yudao.module.statistics.dal.mysql: debug
+    cn.iocoder.yudao.module.crm.dal.mysql: debug
+    cn.iocoder.yudao.module.erp.dal.mysql: debug
+    cn.iocoder.yudao.module.mes.dal.mysql: debug
+    cn.iocoder.yudao.module.wms.dal.mysql: debug
+    cn.iocoder.yudao.module.iot.dal.mysql: debug
+    cn.iocoder.yudao.module.iot.dal.tdengine: DEBUG
+    cn.iocoder.yudao.module.iot.service.rule: debug
+    cn.iocoder.yudao.module.ai.dal.mysql: debug
+    cn.iocoder.yudao.module.im.dal.mysql: debug
+    org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 鑺嬭壙锛氬厛绂佺敤锛孲pring Boot 3.X 瀛樺湪閮ㄥ垎閿欒鐨� WARN 鎻愮ず
+
+debug: false
+
+--- #################### 寰俊鍏紬鍙枫�佸皬绋嬪簭鐩稿叧閰嶇疆 ####################
+wx:
+  mp: # 鍏紬鍙烽厤缃紙蹇呭~锛夛紝鍙傝 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 鏂囨。
+#    app-id: wx041349c6f39b268b # 娴嬭瘯鍙凤紙鐗涘笇灏ф彁渚涚殑锛�
+#    secret: 5abee519483bc9f8cb37ce280e814bd0
+#    app-id: wx5b23ba7a5589ecbb # 娴嬭瘯鍙凤紙鑷繁鐨勶級
+#    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    app-id: wxf56b1542b9e85f8a # 娴嬭瘯鍙凤紙Kongdy 鎻愪緵鐨勶級
+    secret: 496379dcef1ba869e9234de8d598cfd3
+    # 瀛樺偍閰嶇疆锛岃В鍐� AccessToken 鐨勮法鑺傜偣鐨勫叡浜�
+    config-storage:
+      type: RedisTemplate # 閲囩敤 RedisTemplate 鎿嶄綔 Redis锛屼細鑷姩浠� Spring 涓幏鍙�
+      key-prefix: wx # Redis Key 鐨勫墠缂�
+      http-client-type: HttpComponents # 閲囩敤 HttpComponents锛圚ttpClient 5锛夎姹傚井淇″叕浼楀彿骞冲彴
+  miniapp: # 灏忕▼搴忛厤缃紙蹇呭~锛夛紝鍙傝 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 鏂囨。
+    #    appid: wx62056c0d5e8db250 # 娴嬭瘯鍙凤紙鐗涘笇灏ф彁渚涚殑锛�
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+#    appid: wx63c280fe3248a3e7 # wenhualian鐨勬帴鍙f祴璇曞彿
+#    secret: 6f270509224a7ae1296bbf1c8cb97aed
+    appid: wxc4598c446f8a9cb3 # 娴嬭瘯鍙凤紙Kongdy 鎻愪緵鐨勶級
+    secret: 4a1a04e07f6a4a0751b39c3064a92c8b
+#    appid: wx66186af0759f47c9 # 娴嬭瘯鍙凤紙puhui 鎻愪緵鐨勶級
+#    secret: 3218bcbd112cbc614c7264ceb20144ac
+    config-storage:
+      type: RedisTemplate # 閲囩敤 RedisTemplate 鎿嶄綔 Redis锛屼細鑷姩浠� Spring 涓幏鍙�
+      key-prefix: wa # Redis Key 鐨勫墠缂�
+      http-client-type: HttpComponents # 閲囩敤 HttpComponents锛圚ttpClient 5锛夎姹傚井淇″皬绋嬪簭骞冲彴
+
+--- #################### 鑺嬮亾鐩稿叧閰嶇疆 ####################
+
+# 鑺嬮亾閰嶇疆椤癸紝璁剧疆褰撳墠椤圭洰鎵�鏈夎嚜瀹氫箟鐨勯厤缃�
+yudao:
+  captcha:
+    enable: false # 鏈湴鐜锛屾殏鏃跺叧闂浘鐗囬獙璇佺爜锛屾柟渚跨櫥褰曠瓑鎺ュ彛鐨勬祴璇曪紱
+  security:
+    mock-enable: true
+  pay:
+    order-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/order # 鏀粯娓犻亾鐨勩�愭敮浠樸�戝洖璋冨湴鍧�
+    refund-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/refund # 鏀粯娓犻亾鐨勩�愰��娆俱�戝洖璋冨湴鍧�
+    transfer-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/transfer # 鏀粯娓犻亾鐨勩�愯浆璐︺�戝洖璋冨湴鍧�
+  access-log: # 璁块棶鏃ュ織鐨勯厤缃」
+    enable: false
+  demo: false # 鍏抽棴婕旂ず妯″紡
+  wxa-code:
+    env-version: develop # 灏忕▼搴忕増鏈�: 姝e紡鐗堜负 "release"锛涗綋楠岀増涓� "trial"锛涘紑鍙戠増涓� "develop"
+  wxa-subscribe-message:
+    miniprogram-state: developer # 璺宠浆灏忕▼搴忕被鍨嬶細寮�鍙戠増涓� 鈥渄eveloper鈥濓紱浣撻獙鐗堜负 鈥渢rial鈥濅负锛涙寮忕増涓� 鈥渇ormal鈥�
+  tencent-lbs-key: TVDBZ-TDILD-4ON4B-PFDZA-RNLKH-VVF6E # QQ 鍦板浘鐨勫瘑閽� https://lbs.qq.com/service/staticV2/staticGuide/staticDoc
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 閽夐拤
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 浼佷笟寰俊
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_PROGRAM: # 寰俊灏忕▼搴�
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 寰俊灏忕▼搴忥紝涓嶄細浣跨敤鍒� state锛屾墍浠ヤ笉杩涜鏍¢獙
+    WECHAT_MP: # 寰俊鍏紬鍙�
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+    ALIPAY: # 鏀粯瀹濆皬绋嬪簭
+      client-id: xx
+      client-secret: xx
+      alipay-public-key: xx
+      ignore-check-redirect-uri: true
+      ignore-check-state: true
+  cache:
+    type: REDIS
+    prefix: 'social_auth_state:' # 缂撳瓨鍓嶇紑锛岀洰鍓嶅彧瀵� Redis 缂撳瓨鐢熸晥锛岄粯璁� JUSTAUTH::STATE::
+    timeout: 24h # 瓒呮椂鏃堕暱锛岀洰鍓嶅彧瀵� Redis 缂撳瓨鐢熸晥锛岄粯璁� 3 鍒嗛挓

--
Gitblit v1.9.3