From 2e84a447af471fe5ada907c28849838a6bc3a340 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 13 七月 2026 17:58:41 +0800
Subject: [PATCH] 1.仓储物流-转移产品模块
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java | 73 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemService.java | 60 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockAdjustReqVO.java | 48
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java | 149 ++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskResultController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesLineController.java | 22
docs/SALES_SHIPMENT_OUT_API_SUMMARY.md | 652 +++++++++++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmOutStatusEnum.java | 31
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/sn/MesWmSnServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesServiceImpl.java | 8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticeRespVO.java | 4
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productproduce/MesWmProductProduceLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeController.java | 12
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeDO.java | 11
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java | 10
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesDetailServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/MesWmMiscReceiptLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 1
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/MesBizTypeConstants.java | 2
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java | 9
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java | 10
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/salesnotice/MesWmSalesNoticeLineDO.java | 4
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueServiceImpl.java | 8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mdm/MesMdmItemDO.java | 211 ++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java | 1
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticePageReqVO.java | 2
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineRespVO.java | 3
docs/sales_outbound_flow.md | 293 +++++
docs/material_stock_adjust.md | 113 ++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineServiceImpl.java | 8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java | 21
docs/sales_notice_to_product_sales.md | 153 +++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java | 8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/MesWmMiscIssueLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java | 4
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueDetailController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueDetailServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java | 22
.claude/settings.local.json | 9
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/salesnotice/MesWmSalesNoticeMapper.java | 2
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java | 10
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java | 14
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeService.java | 26
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemServiceImpl.java | 60 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeLineController.java | 22
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/sn/MesWmSnController.java | 29
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mdm/MesMdmItemMapper.java | 24
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java | 6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/MesWmMaterialStockController.java | 30
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java | 6
85 files changed, 2,487 insertions(+), 410 deletions(-)
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 085aed9..b89dd57 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -23,7 +23,14 @@
"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"
+ "mcp__designcomputer-mysql_mcp_server__get_table_sample",
+ "Bash(mvn clean *)",
+ "Bash(python3)",
+ "Bash(cat)",
+ "Bash(chmod +x /tmp/fix_controller.sh)",
+ "Bash(/tmp/fix_controller.sh)",
+ "Bash(chmod +x /tmp/fix2.sh)",
+ "Bash(/tmp/fix2.sh)"
],
"deny": [
"Bash(rm -rf *)",
diff --git a/docs/SALES_SHIPMENT_OUT_API_SUMMARY.md b/docs/SALES_SHIPMENT_OUT_API_SUMMARY.md
new file mode 100644
index 0000000..f6aeb5b
--- /dev/null
+++ b/docs/SALES_SHIPMENT_OUT_API_SUMMARY.md
@@ -0,0 +1,652 @@
+# 閿�鍞彂璐у嚭搴撴祦绋� - API鎺ュ彛涓庡瓧娈垫眹鎬�
+
+## 娴佺▼鍥�
+
+```
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹� 閿�鍞鍗� 鈹傗攢鈹�鈹�>鈹� 鍙戣揣閫氱煡鍗� 鈹傗攢鈹�鈹�>鈹� 閿�鍞嚭搴撳崟 鈹傗攢鈹�鈹�>鈹� 鍑哄簱瀹屾垚 鈹�
+鈹� (ERP妯″潡) 鈹� 鈹� (MES妯″潡) 鈹� 鈹� (MES妯″潡) 鈹� 鈹� 鐘舵�佸洖鍐� 鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+ 鈹� 鈹� 鈹� 鈹�
+ 鈻� 鈻� 鈻� 鈻�
+ 鍑哄簱鐘舵�佸悓姝� 鍑哄簱鐘舵�佸悓姝� 鎵ц鍑哄簱 鐘舵�佸洖鍐欎笂娓�
+```
+
+---
+
+## 涓�銆侀攢鍞鍗� (ERP妯″潡)
+
+**鏂囦欢璺緞锛�** `src/api/erp/sale/order/index.ts`
+
+### 鏌ヨ鎺ュ彛
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | `/erp/sale-order/page` | 鍒嗛〉鏌ヨ |
+| GET | `/erp/sale-order/get?id={id}` | 璇︽儏鏌ヨ |
+| GET | `/erp/sale-order/item/list-by-order-id?orderId={orderId}` | 鏌ヨ璁㈠崟鏄庣粏鍒楄〃 |
+
+### 鎺ュ彛瀹氫箟
+
+```typescript
+export namespace ErpSaleOrderApi {
+ /** 閿�鍞鍗曚俊鎭� */
+ export interface SaleOrder {
+ id?: number; // 璁㈠崟ID
+ no: string; // 閿�鍞鍗曞彿
+ customerId: number; // 瀹㈡埛ID
+ customerName?: string; // 瀹㈡埛鍚嶇О
+ orderTime: Date; // 璁㈠崟鏃堕棿
+ totalCount: number; // 鍚堣鏁伴噺
+ totalPrice: number; // 鍚堣閲戦
+ status: number; // 鐘舵�侊細10-鏈鏍�, 20-宸插鏍�, 30-宸蹭綔搴�
+ outStatus?: number; // 鍑哄簱鐘舵�侊細0-鏈嚭搴�, 1-閮ㄥ垎鍑哄簱, 2-鍏ㄩ儴鍑哄簱
+ outCount: number; // 閿�鍞嚭搴撴暟閲�
+ inCount?: number; // 閲囪喘鍏ュ簱鏁伴噺
+ returnCount: number; // 閿�鍞��璐ф暟閲�
+ items?: SaleOrderItem[]; // 閿�鍞鍗曟槑缁�
+ }
+
+ /** 閿�鍞鍗曟槑缁� */
+ export interface SaleOrderItem {
+ id?: number; // 鏄庣粏ID
+ seq?: number; // 搴忓彿
+ orderId?: number; // 璁㈠崟ID
+ productId?: number; // 浜у搧ID
+ productName?: string; // 浜у搧鍚嶇О
+ productBarCode?: string; // 浜у搧鏉$爜
+ productUnitName?: string; // 鍗曚綅
+ productPrice?: number; // 鍗曚环
+ count?: number; // 鏁伴噺
+ outCount?: number; // 鍑哄簱鏁伴噺
+ taxPercent?: number; // 绋庣巼
+ taxPrice?: number; // 绋庨
+ remark?: string; // 澶囨敞
+ }
+}
+```
+
+### 鐘舵�佹灇涓�
+
+```typescript
+// 閿�鍞鍗曠姸鎬�
+const SaleOrderStatus = {
+ UN_AUDITED: 10, // 鏈鏍�
+ AUDITED: 20, // 宸插鏍�
+ CANCELLED: 30, // 宸蹭綔搴�
+}
+
+// 閿�鍞鍗曞嚭搴撶姸鎬�
+const SaleOrderOutStatus = {
+ NONE: 0, // 鏈嚭搴�
+ PARTIAL: 1, // 閮ㄥ垎鍑哄簱
+ ALL: 2, // 鍏ㄩ儴鍑哄簱
+}
+```
+
+---
+
+## 浜屻�佸彂璐ч�氱煡鍗� (MES妯″潡)
+
+**鏂囦欢璺緞锛�** `src/api/mes/wm/salesnotice/index.ts`
+
+### 鏌ヨ鎺ュ彛
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | `/mes/wm/sales-notice/page` | 鍒嗛〉鏌ヨ |
+| GET | `/mes/wm/sales-notice/get?id={id}` | 璇︽儏鏌ヨ |
+| POST | `/mes/wm/sales-notice/create` | 鍒涘缓 |
+| PUT | `/mes/wm/sales-notice/update` | 淇敼 |
+| DELETE | `/mes/wm/sales-notice/delete?id={id}` | 鍒犻櫎 |
+| PUT | `/mes/wm/sales-notice/submit?id={id}` | 鎻愪氦 |
+| POST | `/mes/wm/sales-notice/generate-from-sale-order` | 浠庨攢鍞鍗曠敓鎴� |
+| POST | `/mes/wm/sales-notice/generate-product-sales` | 鐢熸垚閿�鍞嚭搴撳崟 |
+
+### 鎺ュ彛瀹氫箟
+
+```typescript
+export namespace MesWmSalesNoticeApi {
+ /** 鍙戣揣閫氱煡鍗� */
+ export interface SalesNotice {
+ id?: number; // 閫氱煡鍗旾D
+ code?: string; // 閫氱煡鍗曞彿
+ name?: string; // 閫氱煡鍗曞悕绉�
+ saleOrderId?: number; // 閿�鍞鍗旾D
+ saleOrderCode?: string; // 閿�鍞鍗曞彿
+ clientId?: number; // 瀹㈡埛ID
+ clientName?: string; // 瀹㈡埛鍚嶇О
+ salesDate?: Date; // 鍙戣揣鏃ユ湡
+ recipientName?: string; // 鏀惰揣浜�
+ recipientTelephone?: string; // 鑱旂郴鏂瑰紡
+ recipientAddress?: string; // 鏀惰揣鍦板潃
+ status?: number; // 鍗曟嵁鐘舵�侊細0-鑽夌, 20-寰呭嚭搴�, 30-宸插畬鎴�
+ outStatus?: number; // 鍑哄簱鐘舵�侊細0-鏈嚭搴�, 1-閮ㄥ垎鍑哄簱, 2-鍏ㄩ儴鍑哄簱
+ remark?: string; // 澶囨敞
+ createTime?: Date; // 鍒涘缓鏃堕棿
+ }
+
+ /** 鍒涘缓/淇敼璇锋眰 */
+ export interface SalesNoticeSaveReq {
+ id?: number; // 閫氱煡鍗旾D锛堜慨鏀规椂蹇呭~锛�
+ code: string; // 閫氱煡鍗曞彿
+ name: string; // 閫氱煡鍗曞悕绉�
+ clientId: number; // 瀹㈡埛ID
+ saleOrderId?: number; // 閿�鍞鍗旾D
+ saleOrderCode?: string; // 閿�鍞鍗曞彿
+ salesDate: Date; // 鍙戣揣鏃ユ湡
+ recipientName?: string; // 鏀惰揣浜�
+ recipientTelephone?: string; // 鑱旂郴鏂瑰紡
+ recipientAddress?: string; // 鏀惰揣鍦板潃
+ remark?: string; // 澶囨敞
+ }
+}
+
+/** 鏌ヨ鍒嗛〉 */
+export function getSalesNoticePage(params: PageParam): Promise<PageResult<SalesNotice>>
+
+/** 鏌ヨ璇︽儏 */
+export function getSalesNotice(id: number): Promise<SalesNotice>
+
+/** 鍒涘缓鍙戣揣閫氱煡鍗� */
+export function createSalesNotice(data: SalesNoticeSaveReq): Promise<number>
+
+/** 淇敼鍙戣揣閫氱煡鍗� */
+export function updateSalesNotice(data: SalesNoticeSaveReq): Promise<boolean>
+
+/** 鍒犻櫎鍙戣揣閫氱煡鍗� */
+export function deleteSalesNotice(id: number): Promise<boolean>
+
+/** 鎻愪氦鍙戣揣閫氱煡鍗� */
+export function submitSalesNotice(id: number): Promise<boolean>
+
+/** 浠庨攢鍞鍗曠敓鎴愬彂璐ч�氱煡鍗� */
+export function generateFromSaleOrder(saleOrderId: number): Promise<number>
+
+/** 浠庡彂璐ч�氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟 */
+export function generateProductSales(id: number): Promise<number>
+```
+
+### 琛岃〃鎺ュ彛
+
+**鏂囦欢璺緞锛�** `src/api/mes/wm/salesnotice/line/index.ts`
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | `/mes/wm/sales-notice-line/page` | 鍒嗛〉鏌ヨ |
+| GET | `/mes/wm/sales-notice-line/get?id={id}` | 璇︽儏鏌ヨ |
+| POST | `/mes/wm/sales-notice-line/create` | 鍒涘缓 |
+| PUT | `/mes/wm/sales-notice-line/update` | 淇敼 |
+| DELETE | `/mes/wm/sales-notice-line/delete?id={id}` | 鍒犻櫎 |
+
+```typescript
+export namespace MesWmSalesNoticeLineApi {
+ /** 鍙戣揣閫氱煡鍗曡 */
+ export interface SalesNoticeLine {
+ id?: number; // 琛孖D
+ noticeId?: number; // 閫氱煡鍗旾D
+ saleOrderItemId?: number; // 閿�鍞鍗曟槑缁咺D
+ itemId?: number; // 鐗╂枡ID
+ itemCode?: string; // 鐗╂枡缂栫爜
+ itemName?: string; // 鐗╂枡鍚嶇О
+ specification?: string; // 瑙勬牸鍨嬪彿
+ unitMeasureName?: string; // 鍗曚綅
+ batchId?: number; // 鎵规ID
+ batchCode?: string; // 鎵规鍙�
+ quantity?: number; // 鍙戣揣鏁伴噺
+ outCount?: number; // 宸插嚭搴撴暟閲�
+ oqcCheckFlag?: boolean; // 鏄惁妫�楠�
+ remark?: string; // 澶囨敞
+ createTime?: Date; // 鍒涘缓鏃堕棿
+ }
+
+ /** 鍒涘缓/淇敼璇锋眰 */
+ export interface SalesNoticeLineSaveReq {
+ id?: number; // 琛孖D锛堜慨鏀规椂蹇呭~锛�
+ noticeId: number; // 閫氱煡鍗旾D
+ saleOrderItemId?: number; // 閿�鍞鍗曟槑缁咺D
+ itemId: number; // 鐗╂枡ID
+ batchId?: number; // 鎵规ID
+ batchCode?: string; // 鎵规鍙�
+ quantity: number; // 鍙戣揣鏁伴噺
+ oqcCheckFlag?: boolean; // 鏄惁妫�楠�
+ remark?: string; // 澶囨敞
+ }
+}
+```
+
+### 鐘舵�佹灇涓�
+
+```typescript
+// 鍙戣揣閫氱煡鍗曠姸鎬�
+const MesWmSalesNoticeStatusEnum = {
+ PREPARE: 0, // 鑽夌
+ APPROVED: 20, // 寰呭嚭搴擄紙宸插鏍革級
+ FINISHED: 30, // 宸插畬鎴�
+}
+
+// 鍙戣揣閫氱煡鍗曞嚭搴撶姸鎬�
+const MesWmSalesNoticeOutStatusEnum = {
+ NONE: 0, // 鏈嚭搴�
+ PARTIAL: 1, // 閮ㄥ垎鍑哄簱
+ ALL: 2, // 鍏ㄩ儴鍑哄簱
+}
+```
+
+---
+
+## 涓夈�侀攢鍞嚭搴撳崟 (MES妯″潡)
+
+**鏂囦欢璺緞锛�** `src/api/mes/wm/productsales/index.ts`
+
+### 鏌ヨ鎺ュ彛
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | `/mes/wm/product-sales/page` | 鍒嗛〉鏌ヨ |
+| GET | `/mes/wm/product-sales/get?id={id}` | 璇︽儏鏌ヨ |
+| POST | `/mes/wm/product-sales/create` | 鍒涘缓 |
+| PUT | `/mes/wm/product-sales/update` | 淇敼 |
+| DELETE | `/mes/wm/product-sales/delete?id={id}` | 鍒犻櫎 |
+| PUT | `/mes/wm/product-sales/submit?id={id}` | 鎻愪氦 |
+| PUT | `/mes/wm/product-sales/stock?id={id}` | 鎵ц鎷h揣 |
+| PUT | `/mes/wm/product-sales/shipping` | 濉啓杩愬崟 |
+| PUT | `/mes/wm/product-sales/finish?id={id}` | 鎵ц鍑哄簱 |
+| PUT | `/mes/wm/product-sales/cancel?id={id}` | 鍙栨秷 |
+| GET | `/mes/wm/product-sales/check-quantity?id={id}` | 鏍¢獙鏁伴噺 |
+
+### 鎺ュ彛瀹氫箟
+
+```typescript
+export namespace MesWmProductSalesApi {
+ /** 閿�鍞嚭搴撳崟 */
+ export interface ProductSales {
+ id?: number; // 鍑哄簱鍗旾D
+ code?: string; // 鍑哄簱鍗曞彿
+ name?: string; // 鍑哄簱鍗曞悕绉�
+ noticeId?: number; // 鍙戣揣閫氱煡鍗旾D
+ noticeCode?: string; // 鍙戣揣閫氱煡鍗曞彿
+ saleOrderId?: number; // 閿�鍞鍗旾D
+ salesOrderCode?: string; // 閿�鍞鍗曞彿
+ clientId?: number; // 瀹㈡埛ID
+ clientName?: string; // 瀹㈡埛鍚嶇О
+ salesDate?: Date; // 鍑哄簱鏃ユ湡
+ contactName?: string; // 鑱旂郴浜�
+ contactTelephone?: string; // 鑱旂郴鐢佃瘽
+ contactAddress?: string; // 鏀惰揣鍦板潃
+ carrier?: string; // 鎵胯繍鍟�
+ shippingNumber?: string; // 杩愯緭鍗曞彿
+ status?: number; // 鍗曟嵁鐘舵��
+ remark?: string; // 澶囨敞
+ createTime?: Date; // 鍒涘缓鏃堕棿
+ }
+
+ /** 鍒涘缓/淇敼璇锋眰 */
+ export interface ProductSalesSaveReq {
+ id?: number; // 鍑哄簱鍗旾D锛堜慨鏀规椂蹇呭~锛�
+ code: string; // 鍑哄簱鍗曞彿
+ name: string; // 鍑哄簱鍗曞悕绉�
+ clientId: number; // 瀹㈡埛ID
+ noticeId?: number; // 鍙戣揣閫氱煡鍗旾D
+ saleOrderId?: number; // 閿�鍞鍗旾D
+ salesOrderCode?: string; // 閿�鍞鍗曞彿
+ salesDate?: Date; // 鍑哄簱鏃ユ湡
+ contactName?: string; // 鑱旂郴浜�
+ contactTelephone?: string; // 鑱旂郴鐢佃瘽
+ contactAddress?: string; // 鏀惰揣鍦板潃
+ remark?: string; // 澶囨敞
+ }
+
+ /** 濉啓杩愬崟璇锋眰 */
+ export interface ProductSalesShippingReq {
+ id: number; // 鍑哄簱鍗旾D
+ carrier: string; // 鎵胯繍鍟�
+ shippingNumber: string; // 杩愯緭鍗曞彿
+ }
+}
+
+/** 鏌ヨ鍒嗛〉 */
+export function getProductSalesPage(params: PageParam): Promise<PageResult<ProductSales>>
+
+/** 鏌ヨ璇︽儏 */
+export function getProductSales(id: number): Promise<ProductSales>
+
+/** 鍒涘缓閿�鍞嚭搴撳崟 */
+export function createProductSales(data: ProductSalesSaveReq): Promise<number>
+
+/** 淇敼閿�鍞嚭搴撳崟 */
+export function updateProductSales(data: ProductSalesSaveReq): Promise<boolean>
+
+/** 鍒犻櫎閿�鍞嚭搴撳崟 */
+export function deleteProductSales(id: number): Promise<boolean>
+
+/** 鎻愪氦 */
+export function submitProductSales(id: number): Promise<boolean>
+
+/** 鎵ц鎷h揣 */
+export function stockProductSales(id: number): Promise<boolean>
+
+/** 濉啓杩愬崟 */
+export function shippingProductSales(data: ProductSalesShippingReq): Promise<boolean>
+
+/** 鎵ц鍑哄簱 */
+export function finishProductSales(id: number): Promise<boolean>
+
+/** 鍙栨秷 */
+export function cancelProductSales(id: number): Promise<boolean>
+
+/** 鏍¢獙鏁伴噺 */
+export function checkProductSalesQuantity(id: number): Promise<boolean>
+```
+
+### 琛岃〃鎺ュ彛
+
+**鏂囦欢璺緞锛�** `src/api/mes/wm/productsales/line/index.ts`
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | `/mes/wm/product-sales-line/page` | 鍒嗛〉鏌ヨ |
+| GET | `/mes/wm/product-sales-line/get?id={id}` | 璇︽儏鏌ヨ |
+| POST | `/mes/wm/product-sales-line/create` | 鍒涘缓 |
+| PUT | `/mes/wm/product-sales-line/update` | 淇敼 |
+| DELETE | `/mes/wm/product-sales-line/delete?id={id}` | 鍒犻櫎 |
+
+```typescript
+export namespace MesWmProductSalesLineApi {
+ /** 閿�鍞嚭搴撳崟琛� */
+ export interface ProductSalesLine {
+ id?: number; // 琛孖D
+ salesId?: number; // 鍑哄簱鍗旾D
+ noticeLineId?: number; // 鍙戣揣閫氱煡鍗曡ID
+ saleOrderItemId?: number; // 閿�鍞鍗曟槑缁咺D
+ itemId?: number; // 鐗╂枡ID
+ itemCode?: string; // 鐗╂枡缂栫爜
+ itemName?: string; // 鐗╂枡鍚嶇О
+ specification?: string; // 瑙勬牸鍨嬪彿
+ unitMeasureName?: string; // 鍗曚綅
+ quantity?: number; // 鍑哄簱鏁伴噺
+ batchId?: number; // 鎵规ID
+ batchCode?: string; // 鎵规鍙�
+ oqcCheckFlag?: boolean; // 鏄惁妫�楠�
+ oqcId?: number; // 鍑哄巶妫�楠屽崟ID
+ qualityStatus?: number; // 璐ㄩ噺鐘舵��
+ remark?: string; // 澶囨敞
+ createTime?: Date; // 鍒涘缓鏃堕棿
+ }
+
+ /** 鍒涘缓/淇敼璇锋眰 */
+ export interface ProductSalesLineSaveReq {
+ id?: number; // 琛孖D锛堜慨鏀规椂蹇呭~锛�
+ salesId: number; // 鍑哄簱鍗旾D
+ noticeLineId?: number; // 鍙戣揣閫氱煡鍗曡ID
+ saleOrderItemId?: number; // 閿�鍞鍗曟槑缁咺D
+ itemId: number; // 鐗╂枡ID
+ quantity: number; // 鍑哄簱鏁伴噺
+ batchId?: number; // 鎵规ID
+ batchCode?: string; // 鎵规鍙�
+ oqcCheckFlag?: boolean; // 鏄惁妫�楠�
+ remark?: string; // 澶囨敞
+ }
+}
+```
+
+### 鏄庣粏琛ㄦ帴鍙o紙鎷h揣淇℃伅锛�
+
+**鏂囦欢璺緞锛�** `src/api/mes/wm/productsales/detail/index.ts`
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| GET | `/mes/wm/product-sales-detail/page` | 鍒嗛〉鏌ヨ |
+| GET | `/mes/wm/product-sales-detail/get?id={id}` | 璇︽儏鏌ヨ |
+| POST | `/mes/wm/product-sales-detail/create` | 鍒涘缓 |
+| PUT | `/mes/wm/product-sales-detail/update` | 淇敼 |
+| DELETE | `/mes/wm/product-sales-detail/delete?id={id}` | 鍒犻櫎 |
+
+```typescript
+export namespace MesWmProductSalesDetailApi {
+ /** 閿�鍞嚭搴撴槑缁嗭紙鎷h揣淇℃伅锛� */
+ export interface ProductSalesDetail {
+ id?: number; // 鏄庣粏ID
+ lineId?: number; // 鍑哄簱鍗曡ID
+ salesId?: number; // 鍑哄簱鍗旾D
+ itemId?: number; // 鐗╂枡ID
+ itemCode?: string; // 鐗╂枡缂栫爜
+ itemName?: string; // 鐗╂枡鍚嶇О
+ specification?: string; // 瑙勬牸鍨嬪彿
+ unitMeasureName?: string; // 鍗曚綅
+ quantity?: number; // 鎷h揣鏁伴噺
+ materialStockId?: number; // 搴撳瓨璁板綍ID
+ batchId?: number; // 鎵规ID
+ batchCode?: string; // 鎵规鍙�
+ warehouseId?: number; // 浠撳簱ID
+ warehouseName?: string; // 浠撳簱鍚嶇О
+ locationId?: number; // 搴撳尯ID
+ locationName?: string; // 搴撳尯鍚嶇О
+ areaId?: number; // 搴撲綅ID
+ areaName?: string; // 搴撲綅鍚嶇О
+ remark?: string; // 澶囨敞
+ createTime?: Date; // 鍒涘缓鏃堕棿
+ }
+
+ /** 鍒涘缓/淇敼璇锋眰 */
+ export interface ProductSalesDetailSaveReq {
+ id?: number; // 鏄庣粏ID锛堜慨鏀规椂蹇呭~锛�
+ lineId: number; // 鍑哄簱鍗曡ID
+ salesId: number; // 鍑哄簱鍗旾D
+ itemId: number; // 鐗╂枡ID
+ quantity: number; // 鎷h揣鏁伴噺
+ materialStockId?: number; // 搴撳瓨璁板綍ID
+ batchId?: number; // 鎵规ID
+ batchCode?: string; // 鎵规鍙�
+ warehouseId: number; // 浠撳簱ID
+ locationId: number; // 搴撳尯ID
+ areaId: number; // 搴撲綅ID
+ remark?: string; // 澶囨敞
+ }
+}
+```
+
+### 鐘舵�佹灇涓�
+
+```typescript
+// 閿�鍞嚭搴撳崟鐘舵��
+const MesWmProductSalesStatusEnum = {
+ PREPARE: 0, // 鑽夌
+ CONFIRMED: 10, // 寰呮娴�
+ APPROVING: 20, // 寰呮嫞璐�
+ SHIPPING: 25, // 寰呭~鍐欒繍鍗�
+ APPROVED: 30, // 寰呮墽琛屽嚭搴�
+ FINISHED: 40, // 宸插畬鎴�
+ CANCELLED: 50, // 宸插彇娑�
+}
+
+// 璐ㄩ噺鐘舵��
+const MesWmQualityStatusEnum = {
+ PENDING: 0, // 寰呮楠�
+ PASS: 1, // 鍚堟牸
+ FAIL: 2, // 涓嶅悎鏍�
+}
+```
+
+---
+
+## 鍥涖�佸瓧娈垫槧灏勫叧绯�
+
+### 4.1 閿�鍞鍗� 鈫� 鍙戣揣閫氱煡鍗�
+
+| 閿�鍞鍗曞瓧娈� | 鍙戣揣閫氱煡鍗曞瓧娈� | 璇存槑 |
+|-------------|---------------|------|
+| `id` | `saleOrderId` | 閿�鍞鍗旾D |
+| `no` | `saleOrderCode` | 閿�鍞鍗曞彿 |
+| `customerId` | `clientId` | 瀹㈡埛ID |
+| `customerName` | `clientName` | 瀹㈡埛鍚嶇О |
+
+### 4.2 鍙戣揣閫氱煡鍗� 鈫� 閿�鍞嚭搴撳崟
+
+| 鍙戣揣閫氱煡鍗曞瓧娈� | 閿�鍞嚭搴撳崟瀛楁 | 璇存槑 |
+|---------------|---------------|------|
+| `id` | `noticeId` | 鍙戣揣閫氱煡鍗旾D |
+| `code` | `noticeCode` | 鍙戣揣閫氱煡鍗曞彿 |
+| `saleOrderId` | `saleOrderId` | 閿�鍞鍗旾D |
+| `saleOrderCode` | `salesOrderCode` | 閿�鍞鍗曞彿 |
+| `clientId` | `clientId` | 瀹㈡埛ID |
+| `clientName` | `clientName` | 瀹㈡埛鍚嶇О |
+| `recipientName` | `contactName` | 鏀惰揣浜衡啋鑱旂郴浜� |
+| `recipientTelephone` | `contactTelephone` | 鑱旂郴鐢佃瘽 |
+| `recipientAddress` | `contactAddress` | 鏀惰揣鍦板潃 |
+| `salesDate` | `salesDate` | 鍑哄簱鏃ユ湡 |
+
+### 4.3 鍙戣揣閫氱煡鍗曡 鈫� 閿�鍞嚭搴撳崟琛�
+
+| 鍙戣揣閫氱煡鍗曡瀛楁 | 閿�鍞嚭搴撳崟琛屽瓧娈� | 璇存槑 |
+|-----------------|-----------------|------|
+| `id` | `noticeLineId` | 鍙戣揣閫氱煡鍗曡ID |
+| `saleOrderItemId` | `saleOrderItemId` | 閿�鍞鍗曟槑缁咺D |
+| `itemId` | `itemId` | 鐗╂枡ID |
+| `quantity` | `quantity` | 鍑哄簱鏁伴噺 |
+| `batchId` | `batchId` | 鎵规ID |
+| `batchCode` | `batchCode` | 鎵规鍙� |
+| `oqcCheckFlag` | `oqcCheckFlag` | 鏄惁妫�楠� |
+
+---
+
+## 浜斻�佺姸鎬佹祦杞�
+
+### 5.1 鍗曟嵁鐘舵�佹祦杞�
+
+```
+閿�鍞鍗曪細鏈鏍� 鈫� 宸插鏍� 鈫� [鍑哄簱鐘舵�佸悓姝
+ 鈫�
+鍙戣揣閫氱煡鍗曪細鑽夌 鈫� 寰呭嚭搴� 鈫� [閮ㄥ垎鍑哄簱/鍏ㄩ儴鍑哄簱] 鈫� 宸插畬鎴�
+ 鈫�
+ 閿�鍞嚭搴撳崟锛氳崏绋� 鈫� 鎻愪氦 鈫� 鎷h揣 鈫� 鍙戣揣 鈫� 鎵ц鍑哄簱
+ 鈫�
+ [鐘舵�佸洖鍐欎笂娓竇
+```
+
+### 5.2 鍑哄簱鐘舵�佹洿鏂版椂鏈�
+
+| 瑙﹀彂鍔ㄤ綔 | 鏇存柊鍗曟嵁 | 鏇存柊鍐呭 |
+|---------|---------|---------|
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗曡 | `outCount` 绱姞 |
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗� | `outStatus` 鏇存柊 |
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | 閿�鍞鍗曡 | `outCount` 绱姞 |
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | 閿�鍞鍗� | `outStatus` 鏇存柊 |
+
+### 5.3 閿�鍞嚭搴撳崟瀹屾暣鐘舵�佹祦杞�
+
+```
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹� 閿�鍞嚭搴撳崟鐘舵�佹祦杞� 鈹�
+鈹溾攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹� 鈹�
+鈹� 鑽夌(PREPARE:0) 鈹�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鎻愪氦 鈹�
+鈹� 鈻� 鈹�
+鈹� 鈹屸攢鈹�鈹�鈹粹攢鈹�鈹�鈹� 鈹�
+鈹� 鈹� 鈹� 鈹�
+鈹� 鈹� 鈹� 鏈塐QC妫�楠岃 鈹�鈹�鈹�鈻� 寰呮娴�(CONFIRMED:10) 鈹�
+鈹� 鈹� 鈹� 鈹� 鈹�
+鈹� 鈹� 鈹� 鈹� OQC妫�楠屽畬鎴� 鈹�
+鈹� 鈹� 鈹� 鈻� 鈹�
+鈹� 鈹� 鈹� 寰呮嫞璐�(APPROVING:20) 鈼勨攢鈹�鈹� 鈹�
+鈹� 鈹� 鈹� 鈹� 鈹�
+鈹� 鈹� 鈹� 鏃燨QC妫�楠岃 鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
+鈹� 鈹� 鈹� 鈹�
+鈹� 鈹斺攢鈹�鈹�鈹攢鈹�鈹�鈹� 鈹�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鎵ц鎷h揣 鈹�
+鈹� 鈻� 鈹�
+鈹� 寰呭~鍐欒繍鍗�(SHIPPING:25) 鈹�
+鈹� 鈹� 鈹�
+鈹� 鈹� 濉啓杩愬崟 鈹�
+鈹� 鈻� 鈹�
+鈹� 寰呮墽琛屽嚭搴�(APPROVED:30) 鈹�
+鈹� 鈹� 鈹�
+鈹� 鈹� 鎵ц鍑哄簱 鈹�
+鈹� 鈻� 鈹�
+鈹� 宸插畬鎴�(FINISHED:40) 鈹�
+鈹� 鈹�
+鈹� 浠绘剰鐘舵�� 鈹�鈹�鍙栨秷鈹�鈹�鈻� 宸插彇娑�(CANCELLED:50) 鈹�
+鈹� 鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+```
+
+---
+
+## 鍏�佸墠绔〉闈㈣矾寰�
+
+| 椤甸潰 | 璺緞 | 鏂囦欢 |
+|------|------|------|
+| 閿�鍞鍗曞垪琛� | `/erp/sale/order` | `src/views/erp/sale/order/index.vue` |
+| 鍙戣揣閫氱煡鍗曞垪琛� | `/wls/sales-notice` | `src/views/wls/salesnotice/index.vue` |
+| 閿�鍞嚭搴撳崟鍒楄〃 | `/wls/product-sales` | `src/views/wls/productsales/index.vue` |
+
+---
+
+## 涓冦�佺敓鎴愭帴鍙h皟鐢ㄩ摼
+
+```typescript
+// 1. 閿�鍞鍗曠敓鎴愬彂璐ч�氱煡鍗�
+const noticeId = await generateFromSaleOrder(saleOrderId);
+
+// 2. 鍙戣揣閫氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟
+const productSalesId = await generateProductSales(noticeId);
+
+// 3. 閿�鍞嚭搴撳崟鎻愪氦
+await submitProductSales(productSalesId);
+
+// 4. 鎵ц鎷h揣锛堥渶瑕佸厛娣诲姞鎷h揣鏄庣粏锛�
+await stockProductSales(productSalesId);
+
+// 5. 濉啓杩愬崟
+await shippingProductSales({ id: productSalesId, carrier: '椤轰赴', shippingNumber: 'SF123' });
+
+// 6. 鎵ц鍑哄簱锛堜細鑷姩鍥炲啓鐘舵�佸埌鍙戣揣閫氱煡鍗曞拰閿�鍞鍗曪級
+await finishProductSales(productSalesId);
+```
+
+---
+
+## 鍏�佸叧閿笟鍔¤鍒�
+
+### 8.1 鐢熸垚瑙勫垯
+
+| 鍦烘櫙 | 瑙勫垯 |
+|------|------|
+| 鍙戣揣閫氱煡鍗曠敓鎴愭潯浠� | 閿�鍞鍗曠姸鎬佷负"宸插鏍�" |
+| 閿�鍞嚭搴撳崟鐢熸垚鏉′欢 | 鍙戣揣閫氱煡鍗曠姸鎬佷负"寰呭嚭搴�" |
+| 鐢熸垚鍚庣姸鎬� | 鍧囦负"鑽夌"鐘舵�侊紝闇�瑕佹彁浜ゅ悗鎵嶈兘娴佽浆 |
+
+### 8.2 鍑哄簱瀹屾垚鍚庣殑鐘舵�佸洖鍐�
+
+| 鍥炲啓瀵硅薄 | 鍥炲啓鍐呭 |
+|---------|---------|
+| 鍙戣揣閫氱煡鍗曡 | `outCount += 瀹為檯鍑哄簱鏁伴噺` |
+| 鍙戣揣閫氱煡鍗� | `outStatus = 璁$畻缁撴灉锛�0/1/2锛塦 |
+| 鍙戣揣閫氱煡鍗� | 濡傛灉 `outStatus === 2`锛堝叏閮ㄥ嚭搴擄級锛屽垯 `status = 30`锛堝凡瀹屾垚锛� |
+| ERP閿�鍞鍗曡 | `outCount += 瀹為檯鍑哄簱鏁伴噺` |
+| ERP閿�鍞鍗� | `outStatus = 璁$畻缁撴灉锛�0/1/2锛塦 |
+
+### 8.3 鍑哄簱鏁伴噺璁$畻閫昏緫
+
+```typescript
+// 璁$畻鍑哄簱鐘舵��
+function calculateOutStatus(lines: SalesNoticeLine[]): number {
+ let allOut = true;
+ let anyOut = false;
+
+ for (const line of lines) {
+ const quantity = line.quantity || 0;
+ const outCount = line.outCount || 0;
+
+ if (outCount > 0) anyOut = true;
+ if (outCount < quantity) allOut = false;
+ }
+
+ if (allOut) return 2; // 鍏ㄩ儴鍑哄簱
+ if (anyOut) return 1; // 閮ㄥ垎鍑哄簱
+ return 0; // 鏈嚭搴�
+}
+```
\ No newline at end of file
diff --git a/docs/material_stock_adjust.md b/docs/material_stock_adjust.md
new file mode 100644
index 0000000..38b6d85
--- /dev/null
+++ b/docs/material_stock_adjust.md
@@ -0,0 +1,113 @@
+# 搴撳瓨鐜版湁閲忚嚜瀹氫箟鍑哄叆搴� - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- 搴撳瓨鐜版湁閲忓垪琛ㄩ〉
+- 搴撳瓨璋冩暣寮圭獥/瀵硅瘽妗�
+
+## 涓氬姟鍦烘櫙
+
+搴撳瓨鐜版湁閲忔ā鍧楁柊澧炶嚜瀹氫箟鍑哄叆搴撳姛鑳斤紝鐢ㄤ簬锛�
+- 搴撳瓨鐩樼偣璋冩暣
+- 搴撳瓨鎹熻��/鎶ユ孩
+- 鎵嬪姩鍏ュ簱/鍑哄簱
+- 鍏朵粬闈炰笟鍔″崟鎹┍鍔ㄧ殑搴撳瓨鍙樺姩
+
+## 鏂板 API
+
+### 搴撳瓨璋冩暣锛堣嚜瀹氫箟鍑哄叆搴擄級
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | /mes/wm/material-stock/adjust | 搴撳瓨璋冩暣锛堟鏁�=鍏ュ簱锛岃礋鏁�=鍑哄簱锛� |
+
+**璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| itemId | Long | 鏄� | 鐗╂枡ID |
+| warehouseId | Long | 鏄� | 浠撳簱ID |
+| locationId | Long | 鏄� | 搴撳尯ID |
+| areaId | Long | 鏄� | 搴撲綅ID |
+| batchId | Long | 鍚� | 鎵规ID |
+| batchCode | String | 鍚� | 鎵规鍙� |
+| vendorId | Long | 鍚� | 渚涘簲鍟咺D |
+| quantity | BigDecimal | 鏄� | 璋冩暣鏁伴噺锛堟鏁�=鍏ュ簱锛岃礋鏁�=鍑哄簱锛� |
+| reason | String | 鍚� | 璋冩暣鍘熷洜 |
+
+**鍝嶅簲锛�**
+
+```json
+{
+ "code": 0,
+ "data": 123, // 搴撳瓨璁板綍ID
+ "msg": "鎿嶄綔鎴愬姛"
+}
+```
+
+## 鍓嶇淇敼鐐�
+
+### 1. 搴撳瓨鐜版湁閲忓垪琛ㄩ〉
+
+鍦ㄥ垪琛ㄩ〉宸ュ叿鏍忔坊鍔�"搴撳瓨璋冩暣"鎸夐挳锛�
+
+**鎸夐挳閫昏緫锛�**
+1. 鐐瑰嚮鎵撳紑搴撳瓨璋冩暣寮圭獥
+2. 寮圭獥鍐呭~鍐欒皟鏁翠俊鎭�
+
+### 2. 搴撳瓨璋冩暣寮圭獥
+
+**琛ㄥ崟瀛楁锛�**
+
+| 瀛楁 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| 鐗╂枡 | 閫夋嫨鍣� | 鏄� | 寮瑰嚭鐗╂枡閫夋嫨瀵硅瘽妗� |
+| 浠撳簱 | 閫夋嫨鍣� | 鏄� | 涓嬫媺閫夋嫨浠撳簱 |
+| 搴撳尯 | 閫夋嫨鍣� | 鏄� | 鏍规嵁浠撳簱鑱斿姩鍔犺浇搴撳尯 |
+| 搴撲綅 | 閫夋嫨鍣� | 鏄� | 鏍规嵁搴撳尯鑱斿姩鍔犺浇搴撲綅 |
+| 鎵规 | 閫夋嫨鍣� | 鍚� | 寮瑰嚭鎵规閫夋嫨瀵硅瘽妗嗭紙濡傛灉鐗╂枡鍚敤鎵规绠$悊锛� |
+| 渚涘簲鍟� | 閫夋嫨鍣� | 鍚� | 涓嬫媺閫夋嫨渚涘簲鍟� |
+| 璋冩暣鏁伴噺 | 鏁板瓧杈撳叆 | 鏄� | 姝f暟=鍏ュ簱锛岃礋鏁�=鍑哄簱 |
+| 璋冩暣鍘熷洜 | 鏂囨湰杈撳叆 | 鍚� | 濉啓璋冩暣鍘熷洜 |
+
+**鑱斿姩閫昏緫锛�**
+
+1. 閫夋嫨浠撳簱鍚庯紝鍔犺浇璇ヤ粨搴撲笅鐨勫簱鍖哄垪琛�
+2. 閫夋嫨搴撳尯鍚庯紝鍔犺浇璇ュ簱鍖轰笅鐨勫簱浣嶅垪琛�
+3. 閫夋嫨鐗╂枡鍚庯細
+ - 濡傛灉鐗╂枡鍚敤鎵规绠$悊锛坆atchCode=true锛夛紝鎵规瀛楁鏄剧ず骞跺繀濉�
+ - 濡傛灉鐗╂枡鏈惎鐢ㄦ壒娆$鐞嗭紝鎵规瀛楁闅愯棌
+
+**鎻愪氦閫昏緫锛�**
+
+1. 鏍¢獙蹇呭~瀛楁
+2. 璋冪敤 API `/mes/wm/material-stock/adjust`
+3. 鎴愬姛鍚庢彁绀�"璋冩暣鎴愬姛"锛屽埛鏂板垪琛ㄩ〉
+4. 澶辫触鏃舵樉绀洪敊璇俊鎭�
+
+## 涓氬姟瑙勫垯璇存槑
+
+| 鍦烘櫙 | 瑙勫垯 |
+|------|------|
+| 鍏ュ簱锛坬uantity > 0锛� | 鑷姩鍒涘缓搴撳瓨璁板綍锛堝鏋滀笉瀛樺湪锛夛紝澧炲姞搴撳瓨鏁伴噺 |
+| 鍑哄簱锛坬uantity < 0锛� | 鏍¢獙搴撳瓨璁板綍瀛樺湪涓旀暟閲忓厖瓒筹紝鎵e噺搴撳瓨鏁伴噺 |
+| 鎵规绠$悊 | 鐗╂枡鍚敤鎵规绠$悊鏃讹紝蹇呴』閫夋嫨鎵规 |
+| 搴撲綅娣锋斁 | 鏍规嵁搴撲綅閰嶇疆鐨勬贩鏀捐鍒欐牎楠� |
+
+## 搴撳瓨浜嬪姟娴佹按
+
+璋冩暣鎿嶄綔浼氳嚜鍔ㄧ敓鎴愬簱瀛樹簨鍔℃祦姘达細
+
+| 瀛楁 | 鍏ュ簱 | 鍑哄簱 |
+|------|------|------|
+| type | IN (鍏ュ簱) | OUT (鍑哄簱) |
+| bizType | WM_STOCK_ADJUST_IN (126) | WM_STOCK_ADJUST_OUT (127) |
+| bizId | 搴撳瓨璁板綍ID | 搴撳瓨璁板綍ID |
+| bizCode | STOCK_ADJUST_{搴撳瓨ID} | STOCK_ADJUST_{搴撳瓨ID} |
+
+## 娉ㄦ剰浜嬮」
+
+- 璋冩暣鏁伴噺涓嶈兘涓�0
+- 鍑哄簱鏃跺繀椤讳繚璇佸簱瀛樺厖瓒�
+- 璋冩暣鎿嶄綔浼氳褰曞簱瀛樹簨鍔℃祦姘达紝渚夸簬杩芥函
+- 寤鸿鍦ㄨ皟鏁村師鍥犱腑濉啓璇︾粏鐨勮皟鏁村師鍥狅紝渚夸簬鍚庣画鏌ヨ鍜屽璁�
\ No newline at end of file
diff --git a/docs/sales_notice_to_product_sales.md b/docs/sales_notice_to_product_sales.md
new file mode 100644
index 0000000..ff668cf
--- /dev/null
+++ b/docs/sales_notice_to_product_sales.md
@@ -0,0 +1,153 @@
+# 鍙戣揣閫氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟 - 鍓嶇鑱旇皟鏂规
+
+## 娑夊強椤甸潰
+
+- 鍙戣揣閫氱煡鍗曞垪琛ㄩ〉
+- 鍙戣揣閫氱煡鍗曡鎯呴〉
+- 閿�鍞嚭搴撳崟鍒楄〃椤�
+- 閿�鍞嚭搴撳崟璇︽儏椤�
+
+## 涓氬姟娴佺▼
+
+```
+閿�鍞鍗� 鈫� 鍙戣揣閫氱煡鍗� 鈫� 閿�鍞嚭搴撳崟 鈫� 鍑哄簱瀹屾垚
+ 鈫� 鈫� 鈫� 鈫�
+鍑哄簱鐘舵�佸悓姝� 鍑哄簱鐘舵�佸悓姝� 鎵ц鍑哄簱 鐘舵�佸洖鍐欎笂娓�
+```
+
+**鐘舵�佸悓姝ヨ鍒欙細**
+
+| 瑙﹀彂鍔ㄤ綔 | 涓婃父鍗曟嵁 | 鏇存柊鍐呭 |
+|----------|----------|----------|
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗曡 | 绱姞 outCount锛堝凡鍑哄簱鏁伴噺锛� |
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗� | 鏇存柊 outStatus锛堝嚭搴撶姸鎬侊級锛屽叏閮ㄥ嚭搴撴椂 status 鍙樹负"宸插畬鎴�" |
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | ERP閿�鍞鍗曡 | 绱姞 outCount锛堝嚭搴撴暟閲忥級 |
+| 閿�鍞嚭搴撳崟鎵ц鍑哄簱 | ERP閿�鍞鍗� | 鏇存柊 outStatus锛堝嚭搴撶姸鎬侊級 |
+
+**鏁版嵁甯﹀叆瑙勫垯锛�**
+
+| 婧愬崟鎹� | 鐩爣鍗曟嵁 | 甯﹀叆瀛楁 |
+|--------|----------|----------|
+| 鍙戣揣閫氱煡鍗� | 閿�鍞嚭搴撳崟 | 瀹㈡埛銆侀攢鍞鍗曞彿銆佹敹璐т汉銆佽仈绯荤數璇濄�佹敹璐у湴鍧� |
+| 鍙戣揣閫氱煡鍗曡 | 閿�鍞嚭搴撳崟琛� | 鐗╂枡銆佹暟閲忋�佹壒娆°�佹槸鍚︽楠� |
+
+## 鏂板 API
+
+### 浠庡彂璐ч�氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | /mes/wm/sales-notice/generate-product-sales | 浠庡彂璐ч�氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟 |
+
+**璇锋眰鍙傛暟锛�**
+
+| 鍙傛暟 | 绫诲瀷 | 蹇呭~ | 璇存槑 |
+|------|------|------|------|
+| id | Long | 鏄� | 鍙戣揣閫氱煡鍗旾D锛圦uery鍙傛暟锛� |
+
+**鍝嶅簲锛�**
+
+```json
+{
+ "code": 0,
+ "data": 123, // 鏂扮敓鎴愮殑閿�鍞嚭搴撳崟ID
+ "msg": "鎿嶄綔鎴愬姛"
+}
+```
+
+## 鏂板瀛楁
+
+### 鍙戣揣閫氱煡鍗曚富琛ㄦ柊澧炲瓧娈�
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| outStatus | Integer | 鍑哄簱鐘舵�侊細0-鏈嚭搴擄紝1-閮ㄥ垎鍑哄簱锛�2-鍏ㄩ儴鍑哄簱 |
+
+### 鍙戣揣閫氱煡鍗曡鏂板瀛楁
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| outCount | Decimal | 宸插嚭搴撴暟閲� |
+
+## 鍓嶇淇敼鐐�
+
+### 1. 鍙戣揣閫氱煡鍗曞垪琛ㄩ〉/璇︽儏椤�
+
+鍦�"寰呭嚭搴�"鐘舵�佺殑鍙戣揣閫氱煡鍗曚笂娣诲姞"鐢熸垚鍑哄簱鍗�"鎸夐挳锛�
+
+**鎸夐挳鏄剧ず鏉′欢锛�**
+- 鍗曟嵁鐘舵�� = 寰呭嚭搴擄紙status = 20锛�
+
+**鎸夐挳鐐瑰嚮閫昏緫锛�**
+1. 璋冪敤 API `/mes/wm/sales-notice/generate-product-sales?id={noticeId}`
+2. 鎴愬姛鍚庢彁绀�"鐢熸垚鎴愬姛"锛岃烦杞埌閿�鍞嚭搴撳崟璇︽儏椤�
+3. 澶辫触鏃舵樉绀洪敊璇俊鎭�
+
+**鍒楄〃鏄剧ず鏂板锛�**
+- 鍑哄簱鐘舵�佸垪锛氭樉绀�"鏈嚭搴�"/"閮ㄥ垎鍑哄簱"/"鍏ㄩ儴鍑哄簱"
+
+### 2. 鍙戣揣閫氱煡鍗曡鍒楄〃
+
+**鏄剧ず鏂板锛�**
+- 宸插嚭搴撴暟閲忓垪锛氭樉绀烘瘡琛岀殑宸插嚭搴撴暟閲�
+- 鍑哄簱杩涘害鍒楋細鏄剧ず 宸插嚭搴撴暟閲�/鎬绘暟閲� 鐨勮繘搴︽潯鎴栨枃瀛�
+
+### 3. 閿�鍞嚭搴撳崟璇︽儏椤�
+
+浠庡彂璐ч�氱煡鍗曠敓鎴愮殑閿�鍞嚭搴撳崟锛屼互涓嬪瓧娈靛凡鑷姩濉厖锛�
+- 鍩烘湰淇℃伅锛氬嚭搴撳崟鍙枫�佸鎴枫�侀攢鍞鍗曞彿銆佸嚭搴撴棩鏈�
+- 鏀惰揣淇℃伅锛氳仈绯讳汉銆佽仈绯荤數璇濄�佹敹璐у湴鍧�
+- 琛屼俊鎭細鐗╂枡銆佹暟閲忋�佹壒娆°�佹槸鍚︽楠�
+
+**娉ㄦ剰锛�** 鎷h揣鏄庣粏闇�瑕佹墜鍔ㄦ坊鍔�
+
+## 瀛楁鏄犲皠琛�
+
+### 涓昏〃瀛楁鏄犲皠
+
+| 鍙戣揣閫氱煡鍗曞瓧娈� | 閿�鍞嚭搴撳崟瀛楁 | 璇存槑 |
+|----------------|----------------|------|
+| clientId | clientId | 瀹㈡埛ID |
+| saleOrderId | saleOrderId | 閿�鍞鍗旾D |
+| saleOrderCode | salesOrderCode | 閿�鍞鍗曞彿 |
+| salesDate | salesDate | 鍑哄簱鏃ユ湡 |
+| recipientName | contactName | 鏀惰揣浜� 鈫� 鑱旂郴浜� |
+| recipientTelephone | contactTelephone | 鑱旂郴鐢佃瘽 |
+| recipientAddress | contactAddress | 鏀惰揣鍦板潃 |
+
+### 琛岃〃瀛楁鏄犲皠
+
+| 鍙戣揣閫氱煡鍗曡瀛楁 | 閿�鍞嚭搴撳崟琛屽瓧娈� | 璇存槑 |
+|------------------|------------------|------|
+| saleOrderItemId | saleOrderItemId | 閿�鍞鍗曟槑缁咺D |
+| itemId | itemId | 鐗╂枡ID |
+| quantity | quantity | 鍑哄簱鏁伴噺 |
+| batchId | batchId | 鎵规ID |
+| batchCode | batchCode | 鎵规鍙� |
+| oqcCheckFlag | oqcCheckFlag | 鏄惁妫�楠� |
+
+## 涓氬姟瑙勫垯璇存槑
+
+| 鍦烘櫙 | 瑙勫垯 |
+|------|------|
+| 鐢熸垚鏉′欢 | 鍙戣揣閫氱煡鍗曠姸鎬佸繀椤讳负"寰呭嚭搴�" |
+| 鐢熸垚鍚庣姸鎬� | 閿�鍞嚭搴撳崟鐘舵�佷负"鑽夌" |
+| 鍏宠仈鍏崇郴 | 閿�鍞嚭搴撳崟鐨� noticeId 鍏宠仈鍙戣揣閫氱煡鍗曠殑 id |
+| 鍑哄簱瀹屾垚 | 绱姞鍙戣揣閫氱煡鍗曡鐨� outCount锛岃绠椾富鍗� outStatus |
+| 鍏ㄩ儴鍑哄簱 | 鍙戣揣閫氱煡鍗� outStatus=2 鏃讹紝status 鑷姩鍙樹负"宸插畬鎴�" |
+
+## 鍑哄簱鐘舵�佹灇涓�
+
+| 鍊� | 鍚嶇О | 璇存槑 |
+|----|------|------|
+| 0 | 鏈嚭搴� | 鎵�鏈夎鐨� outCount = 0 |
+| 1 | 閮ㄥ垎鍑哄簱 | 閮ㄥ垎琛屽凡鍑哄簱锛屾垨閮ㄥ垎鏁伴噺宸插嚭搴� |
+| 2 | 鍏ㄩ儴鍑哄簱 | 鎵�鏈夎鐨� outCount >= quantity |
+
+## 娉ㄦ剰浜嬮」
+
+- 涓�涓彂璐ч�氱煡鍗曞彲浠ョ敓鎴愬涓攢鍞嚭搴撳崟锛堥儴鍒嗗嚭搴撳満鏅級
+- 鐢熸垚鐨勯攢鍞嚭搴撳崟涓鸿崏绋跨姸鎬侊紝闇�瑕佹彁浜ゅ悗鎵嶈兘鎵ц鎷h揣銆佸嚭搴撴搷浣�
+- 鎷h揣鏄庣粏闇�瑕佹墜鍔ㄦ坊鍔狅紝鎸囧畾浠庡摢涓粨搴撱�佸簱鍖恒�佸簱浣嶆嫞璐�
+- 濡傛灉鍙戣揣閫氱煡鍗曡鏈�"鏄惁妫�楠�"鏍囪瘑锛岄攢鍞嚭搴撳崟鎻愪氦鍚庝細杩涘叆"寰呮娴�"鐘舵��
+- 鍑哄簱瀹屾垚鍚庝細鑷姩鍚屾鐘舵�佸埌鍙戣揣閫氱煡鍗曞拰 ERP 閿�鍞鍗�
diff --git a/docs/sales_outbound_flow.md b/docs/sales_outbound_flow.md
new file mode 100644
index 0000000..1a57982
--- /dev/null
+++ b/docs/sales_outbound_flow.md
@@ -0,0 +1,293 @@
+# 閿�鍞嚭搴撴祦绋嬫暟鎹甫鍏ヤ笌鏌ヨ鏂规
+
+## 涓�銆佹暣浣撴祦绋�
+
+```
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹� 閿�鍞鍗� 鈹傗攢鈹�鈹�>鈹� 鍙戣揣閫氱煡鍗� 鈹傗攢鈹�鈹�>鈹� 閿�鍞嚭搴撳崟 鈹傗攢鈹�鈹�>鈹� 鍑哄簱瀹屾垚 鈹�
+鈹� (ERP妯″潡) 鈹� 鈹� (MES妯″潡) 鈹� 鈹� (MES妯″潡) 鈹� 鈹� 鐘舵�佸洖鍐� 鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+ 鈹� 鈹� 鈹� 鈹�
+ 鈻� 鈻� 鈻� 鈻�
+ 鍑哄簱鐘舵�佸悓姝� 鍑哄簱鐘舵�佸悓姝� 鎵ц鍑哄簱 鐘舵�佸洖鍐欎笂娓�
+```
+
+## 浜屻�佸崟鎹眰绾х粨鏋�
+
+### 1. 鍙戣揣閫氱煡鍗曪紙mes_wm_sales_notice锛�
+
+| 灞傜骇 | 琛ㄥ悕 | 璇存槑 |
+|------|------|------|
+| 涓昏〃 | mes_wm_sales_notice | 鍙戣揣閫氱煡鍗曞熀鏈俊鎭� |
+| 琛岃〃 | mes_wm_sales_notice_line | 鎸夌墿鏂欑淮搴︾殑鍙戣揣鏄庣粏 |
+
+### 2. 閿�鍞嚭搴撳崟锛坢es_wm_product_sales锛�
+
+| 灞傜骇 | 琛ㄥ悕 | 璇存槑 |
+|------|------|------|
+| 涓昏〃 | mes_wm_product_sales | 鍑哄簱鍗曞熀鏈俊鎭� |
+| 琛岃〃 | mes_wm_product_sales_line | 鎸夌墿鏂�/鎵规缁村害鐨勫嚭搴撹 |
+| 鏄庣粏琛� | mes_wm_product_sales_detail | 鎷h揣鏄庣粏锛屽叿浣撲粨搴�/搴撳尯/搴撲綅 |
+
+## 涓夈�佷笂涓嬫父鏁版嵁甯﹀叆瑙勫垯
+
+### 1. 閿�鍞鍗� 鈫� 鍙戣揣閫氱煡鍗�
+
+**涓昏〃甯﹀叆锛�**
+
+| 閿�鍞鍗曞瓧娈� | 鍙戣揣閫氱煡鍗曞瓧娈� | 璇存槑 |
+|-------------|---------------|------|
+| id | saleOrderId | 閿�鍞鍗旾D |
+| no | saleOrderCode | 閿�鍞鍗曞彿 |
+| customerId | clientId | 瀹㈡埛ID |
+
+**琛岃〃甯﹀叆锛�**
+
+| 閿�鍞鍗曟槑缁嗗瓧娈� | 鍙戣揣閫氱煡鍗曡瀛楁 | 璇存槑 |
+|-----------------|-----------------|------|
+| id | saleOrderItemId | 閿�鍞鍗曟槑缁咺D |
+| productId | itemId | 鐗╂枡ID |
+| count | quantity | 鍙戣揣鏁伴噺 |
+
+**API 璋冪敤锛�**
+- `ErpSaleOrderApi.getSaleOrder(saleOrderId)` - 鑾峰彇閿�鍞鍗曚俊鎭�
+- `ErpSaleOrderApi.getSaleOrderItemList(saleOrderId)` - 鑾峰彇閿�鍞鍗曟槑缁嗗垪琛�
+
+### 2. 鍙戣揣閫氱煡鍗� 鈫� 閿�鍞嚭搴撳崟
+
+**涓昏〃甯﹀叆锛�**
+
+| 鍙戣揣閫氱煡鍗曞瓧娈� | 閿�鍞嚭搴撳崟瀛楁 | 璇存槑 |
+|---------------|---------------|------|
+| id | noticeId | 鍙戣揣閫氱煡鍗旾D |
+| clientId | clientId | 瀹㈡埛ID |
+| saleOrderId | saleOrderId | 閿�鍞鍗旾D |
+| saleOrderCode | salesOrderCode | 閿�鍞鍗曞彿 |
+| salesDate | salesDate | 鍑哄簱鏃ユ湡 |
+| recipientName | contactName | 鏀惰揣浜� 鈫� 鑱旂郴浜� |
+| recipientTelephone | contactTelephone | 鑱旂郴鐢佃瘽 |
+| recipientAddress | contactAddress | 鏀惰揣鍦板潃 |
+
+**琛岃〃甯﹀叆锛�**
+
+| 鍙戣揣閫氱煡鍗曡瀛楁 | 閿�鍞嚭搴撳崟琛屽瓧娈� | 璇存槑 |
+|-----------------|-----------------|------|
+| id | noticeLineId | 鍙戣揣閫氱煡鍗曡ID |
+| saleOrderItemId | saleOrderItemId | 閿�鍞鍗曟槑缁咺D |
+| itemId | itemId | 鐗╂枡ID |
+| quantity | quantity | 鍑哄簱鏁伴噺 |
+| batchId | batchId | 鎵规ID |
+| batchCode | batchCode | 鎵规鍙� |
+| oqcCheckFlag | oqcCheckFlag | 鏄惁妫�楠� |
+
+**娉ㄦ剰锛�**
+- 閿�鍞嚭搴撳崟鏄庣粏琛紙鎷h揣淇℃伅锛夐渶瑕佹墜鍔ㄦ坊鍔�
+- 涓�涓彂璐ч�氱煡鍗曞彲浠ョ敓鎴愬涓攢鍞嚭搴撳崟锛堥儴鍒嗗嚭搴撳満鏅級
+
+## 鍥涖�佺姸鎬佸悓姝ユ満鍒�
+
+### 1. 鍑哄簱瀹屾垚鏃剁殑鐘舵�佸洖鍐�
+
+**瑙﹀彂鏃舵満锛�** 閿�鍞嚭搴撳崟鎵ц鍑哄簱锛坒inishProductSales锛�
+
+**鍥炲啓娴佺▼锛�**
+
+```
+閿�鍞嚭搴撳崟琛�.noticeLineId 鈫� 鍙戣揣閫氱煡鍗曡.outCount锛堢疮鍔狅級
+ 鈫�
+ 璁$畻鍙戣揣閫氱煡鍗�.outStatus
+ 鈫�
+ 鍏ㄩ儴鍑哄簱鏃� 鈫� 鍙戣揣閫氱煡鍗�.status = 宸插畬鎴�
+ 鈫�
+閿�鍞嚭搴撳崟琛�.saleOrderItemId 鈫� ERP閿�鍞鍗曟槑缁�.outCount锛堢疮鍔狅級
+ 鈫�
+ 璁$畻ERP閿�鍞鍗�.outStatus
+```
+
+### 2. 鍑哄簱鐘舵�佹灇涓�
+
+| 鍊� | 鍚嶇О | 璇存槑 |
+|----|------|------|
+| 0 | 鏈嚭搴� | 鎵�鏈夎鐨� outCount = 0 |
+| 1 | 閮ㄥ垎鍑哄簱 | 閮ㄥ垎琛屽凡鍑哄簱锛屾垨閮ㄥ垎鏁伴噺宸插嚭搴� |
+| 2 | 鍏ㄩ儴鍑哄簱 | 鎵�鏈夎鐨� outCount >= quantity |
+
+## 浜斻�佸叧鑱斾俊鎭煡璇�
+
+### 1. 鍙戣揣閫氱煡鍗曟煡璇㈡椂
+
+**闇�瑕佹煡璇㈢殑鍏宠仈鏁版嵁锛�**
+
+| 鍏宠仈瀵硅薄 | API/鏂规硶 | 鐢ㄩ�� |
+|---------|---------|------|
+| 瀹㈡埛淇℃伅 | CrmCustomerApi.getCustomerMap(clientIds) | 鏄剧ず瀹㈡埛鍚嶇О |
+| 閿�鍞鍗� | ErpSaleOrderApi.getSaleOrder(saleOrderId) | 鏄剧ず璁㈠崟淇℃伅 |
+
+### 2. 閿�鍞嚭搴撳崟鏌ヨ鏃�
+
+**闇�瑕佹煡璇㈢殑鍏宠仈鏁版嵁锛�**
+
+| 鍏宠仈瀵硅薄 | API/鏂规硶 | 鐢ㄩ�� |
+|---------|---------|------|
+| 瀹㈡埛淇℃伅 | CrmCustomerApi.getCustomerMap(clientIds) | 鏄剧ず瀹㈡埛鍚嶇О |
+| 鍙戣揣閫氱煡鍗� | SalesNoticeService.getSalesNoticeMap(noticeIds) | 鏄剧ず閫氱煡鍗曠紪鐮� |
+| 鐗╂枡淇℃伅 | MesMdItemService.getItemMap(itemIds) | 鏄剧ず鐗╂枡缂栫爜銆佸悕绉般�佽鏍煎瀷鍙� |
+| 鎵规淇℃伅 | MesWmBatchService.getBatchMap(batchIds) | 鏄剧ず鎵规鍙枫�佺敓浜ф棩鏈� |
+| 浠撳簱淇℃伅 | MesWmWarehouseService.getWarehouseMap(warehouseIds) | 鏄剧ず浠撳簱鍚嶇О |
+| 搴撳尯淇℃伅 | MesWmWarehouseLocationService.getLocationMap(locationIds) | 鏄剧ず搴撳尯鍚嶇О |
+| 搴撲綅淇℃伅 | MesWmWarehouseAreaService.getAreaMap(areaIds) | 鏄剧ず搴撲綅鍚嶇О |
+
+### 3. 鐗╂枡淇℃伅鏌ヨ API
+
+```java
+// 鑾峰彇鐗╂枡鍩烘湰淇℃伅
+MesMdItemDO item = itemService.getItem(itemId);
+
+// 鎵归噺鑾峰彇鐗╂枡淇℃伅
+Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(itemIds);
+
+// 鏍¢獙鐗╂枡瀛樺湪涓斿惎鐢�
+itemService.validateItemExistsAndEnable(itemId);
+```
+
+**鐗╂枡鍏抽敭淇℃伅锛�**
+
+| 瀛楁 | 璇存槑 |
+|------|------|
+| id | 鐗╂枡ID |
+| code | 鐗╂枡缂栫爜 |
+| name | 鐗╂枡鍚嶇О |
+| spec | 瑙勬牸鍨嬪彿 |
+| unitId | 涓诲崟浣岻D |
+| unitCode | 涓诲崟浣嶇紪鐮� |
+| batchCode | 鏄惁鎵规绠$悊 |
+| qualityFlag | 鏄惁璐ㄦ |
+
+## 鍏�丄PI 鎺ュ彛娓呭崟
+
+### 1. 鍙戣揣閫氱煡鍗� API
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | /mes/wm/sales-notice/create | 鍒涘缓鍙戣揣閫氱煡鍗� |
+| PUT | /mes/wm/sales-notice/update | 淇敼鍙戣揣閫氱煡鍗� |
+| DELETE | /mes/wm/sales-notice/delete | 鍒犻櫎鍙戣揣閫氱煡鍗� |
+| GET | /mes/wm/sales-notice/get | 鑾峰彇鍙戣揣閫氱煡鍗曡鎯� |
+| GET | /mes/wm/sales-notice/page | 鍒嗛〉鏌ヨ鍙戣揣閫氱煡鍗� |
+| PUT | /mes/wm/sales-notice/submit | 鎻愪氦鍙戣揣閫氱煡鍗� |
+| POST | /mes/wm/sales-notice/generate-from-sale-order | 浠庨攢鍞鍗曠敓鎴� |
+| POST | /mes/wm/sales-notice/generate-product-sales | 鐢熸垚閿�鍞嚭搴撳崟 |
+
+### 2. 閿�鍞嚭搴撳崟 API
+
+| 鏂规硶 | 璺緞 | 璇存槑 |
+|------|------|------|
+| POST | /mes/wm/product-sales/create | 鍒涘缓閿�鍞嚭搴撳崟 |
+| PUT | /mes/wm/product-sales/update | 淇敼閿�鍞嚭搴撳崟 |
+| DELETE | /mes/wm/product-sales/delete | 鍒犻櫎閿�鍞嚭搴撳崟 |
+| GET | /mes/wm/product-sales/get | 鑾峰彇閿�鍞嚭搴撳崟璇︽儏 |
+| GET | /mes/wm/product-sales/page | 鍒嗛〉鏌ヨ閿�鍞嚭搴撳崟 |
+| PUT | /mes/wm/product-sales/submit | 鎻愪氦閿�鍞嚭搴撳崟 |
+| PUT | /mes/wm/product-sales/stock | 鎵ц鎷h揣 |
+| PUT | /mes/wm/product-sales/shipping | 濉啓杩愬崟 |
+| PUT | /mes/wm/product-sales/finish | 鎵ц鍑哄簱 |
+| PUT | /mes/wm/product-sales/cancel | 鍙栨秷閿�鍞嚭搴撳崟 |
+
+## 涓冦�佸墠绔睍绀哄瓧娈�
+
+### 1. 鍙戣揣閫氱煡鍗曞垪琛�
+
+| 瀛楁 | 鏉ユ簮 | 璇存槑 |
+|------|------|------|
+| code | mes_wm_sales_notice | 閫氱煡鍗曠紪鐮� |
+| name | mes_wm_sales_notice | 閫氱煡鍗曞悕绉� |
+| clientName | crm_customer | 瀹㈡埛鍚嶇О锛堝叧鑱旀煡璇級 |
+| saleOrderCode | mes_wm_sales_notice | 閿�鍞鍗曞彿 |
+| salesDate | mes_wm_sales_notice | 鍙戣揣鏃ユ湡 |
+| status | mes_wm_sales_notice | 鍗曟嵁鐘舵�� |
+| outStatus | mes_wm_sales_notice | 鍑哄簱鐘舵�� |
+
+### 2. 鍙戣揣閫氱煡鍗曡鍒楄〃
+
+| 瀛楁 | 鏉ユ簮 | 璇存槑 |
+|------|------|------|
+| itemCode | mes_md_item | 鐗╂枡缂栫爜锛堝叧鑱旀煡璇級 |
+| itemName | mes_md_item | 鐗╂枡鍚嶇О锛堝叧鑱旀煡璇級 |
+| itemSpec | mes_md_item | 瑙勬牸鍨嬪彿锛堝叧鑱旀煡璇級 |
+| batchCode | mes_wm_sales_notice_line | 鎵规鍙� |
+| quantity | mes_wm_sales_notice_line | 鍙戣揣鏁伴噺 |
+| outCount | mes_wm_sales_notice_line | 宸插嚭搴撴暟閲� |
+| outProgress | 璁$畻 | 鍑哄簱杩涘害 = outCount / quantity |
+| oqcCheckFlag | mes_wm_sales_notice_line | 鏄惁妫�楠� |
+
+### 3. 閿�鍞嚭搴撳崟鍒楄〃
+
+| 瀛楁 | 鏉ユ簮 | 璇存槑 |
+|------|------|------|
+| code | mes_wm_product_sales | 鍑哄簱鍗曠紪鐮� |
+| name | mes_wm_product_sales | 鍑哄簱鍗曞悕绉� |
+| clientName | crm_customer | 瀹㈡埛鍚嶇О锛堝叧鑱旀煡璇級 |
+| noticeCode | mes_wm_sales_notice | 閫氱煡鍗曠紪鐮侊紙鍏宠仈鏌ヨ锛� |
+| salesOrderCode | mes_wm_product_sales | 閿�鍞鍗曞彿 |
+| salesDate | mes_wm_product_sales | 鍑哄簱鏃ユ湡 |
+| contactName | mes_wm_product_sales | 鑱旂郴浜� |
+| contactTelephone | mes_wm_product_sales | 鑱旂郴鐢佃瘽 |
+| status | mes_wm_product_sales | 鍗曟嵁鐘舵�� |
+
+### 4. 閿�鍞嚭搴撳崟琛屽垪琛�
+
+| 瀛楁 | 鏉ユ簮 | 璇存槑 |
+|------|------|------|
+| itemCode | mes_md_item | 鐗╂枡缂栫爜锛堝叧鑱旀煡璇級 |
+| itemName | mes_md_item | 鐗╂枡鍚嶇О锛堝叧鑱旀煡璇級 |
+| batchCode | mes_wm_product_sales_line | 鎵规鍙� |
+| quantity | mes_wm_product_sales_line | 鍑哄簱鏁伴噺 |
+| oqcCheckFlag | mes_wm_product_sales_line | 鏄惁妫�楠� |
+| qualityStatus | mes_wm_product_sales_line | 璐ㄩ噺鐘舵�� |
+
+### 5. 閿�鍞嚭搴撴槑缁嗗垪琛紙鎷h揣淇℃伅锛�
+
+| 瀛楁 | 鏉ユ簮 | 璇存槑 |
+|------|------|------|
+| itemCode | mes_md_item | 鐗╂枡缂栫爜锛堝叧鑱旀煡璇級 |
+| batchCode | mes_wm_product_sales_detail | 鎵规鍙� |
+| quantity | mes_wm_product_sales_detail | 鎷h揣鏁伴噺 |
+| warehouseName | mes_wm_warehouse | 浠撳簱鍚嶇О锛堝叧鑱旀煡璇級 |
+| locationName | mes_wm_warehouse_location | 搴撳尯鍚嶇О锛堝叧鑱旀煡璇級 |
+| areaName | mes_wm_warehouse_area | 搴撲綅鍚嶇О锛堝叧鑱旀煡璇級 |
+
+## 鍏�佷笟鍔¤鍒�
+
+### 1. 鐢熸垚瑙勫垯
+
+| 鍦烘櫙 | 瑙勫垯 |
+|------|------|
+| 鍙戣揣閫氱煡鍗曠敓鎴愭潯浠� | 閿�鍞鍗曠姸鎬佷负"宸插鏍�" |
+| 閿�鍞嚭搴撳崟鐢熸垚鏉′欢 | 鍙戣揣閫氱煡鍗曠姸鎬佷负"寰呭嚭搴�" |
+| 鐢熸垚鍚庣姸鎬� | 鍧囦负"鑽夌"鐘舵�侊紝闇�瑕佹彁浜ゅ悗鎵嶈兘娴佽浆 |
+
+### 2. 鎻愪氦鏍¢獙
+
+| 鍗曟嵁 | 鏍¢獙瑙勫垯 |
+|------|---------|
+| 鍙戣揣閫氱煡鍗� | 鑷冲皯鏈変竴鏉¤璁板綍 |
+| 閿�鍞嚭搴撳崟 | 鑷冲皯鏈変竴鏉¤璁板綍锛屾瘡琛屽嚭搴撴暟閲� > 0 |
+
+### 3. 鍑哄簱娴佺▼
+
+```
+鑽夌 鈫� 鎻愪氦 鈫� 寰呮嫞璐� 鈫� 鎷h揣 鈫� 寰呭~鍐欒繍鍗� 鈫� 濉啓杩愬崟 鈫� 寰呭嚭搴� 鈫� 鎵ц鍑哄簱 鈫� 宸插畬鎴�
+ 鈫� 鈫�
+ 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 濡傛灉闇�瑕丱QC妫�楠� 鈫愨攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+ 鑽夌 鈫� 鎻愪氦 鈫� 寰呮娴� 鈫� OQC妫�楠屽畬鎴� 鈫� 寰呮嫞璐�
+```
+
+### 4. 鐘舵�佸洖鍐欒鍒�
+
+| 瑙﹀彂鍔ㄤ綔 | 鍥炲啓瀵硅薄 | 鍥炲啓鍐呭 |
+|---------|---------|---------|
+| 鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗曡 | outCount += 瀹為檯鍑哄簱鏁伴噺 |
+| 鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗� | outStatus = 璁$畻缁撴灉 |
+| 鎵ц鍑哄簱 | 鍙戣揣閫氱煡鍗� | 濡傛灉 outStatus=鍏ㄩ儴鍑哄簱锛屽垯 status=宸插畬鎴� |
+| 鎵ц鍑哄簱 | ERP閿�鍞鍗曟槑缁� | outCount += 瀹為檯鍑哄簱鏁伴噺 |
+| 鎵ц鍑哄簱 | ERP閿�鍞鍗� | outStatus = 璁$畻缁撴灉 |
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeLineController.java
index 10a853a..a5342fc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/arrivalnotice/MesWmArrivalNoticeLineController.java
@@ -8,12 +8,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService;
import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineService;
import io.swagger.v3.oas.annotations.Operation;
@@ -28,6 +30,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -41,9 +44,9 @@
@Resource
private MesWmArrivalNoticeLineService arrivalNoticeLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesQcIqcService iqcService;
@@ -99,10 +102,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmArrivalNoticeLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesQcIqcDO> iqcMap = iqcService.getIqcMap(
convertSet(list, MesWmArrivalNoticeLineDO::getIqcId));
// 2. 鏋勫缓缁撴灉
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
index 3e01347..415c15d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
@@ -8,8 +8,9 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
@@ -17,8 +18,9 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.tm.tool.MesTmToolDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
@@ -40,6 +42,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -53,9 +56,9 @@
@Resource
private MesWmBatchService batchService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesMdVendorService vendorService;
@Resource
@@ -111,7 +114,7 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmBatchDO::getItemId));
Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap(
convertSet(list, MesWmBatchDO::getVendorId));
@@ -125,8 +128,9 @@
convertSet(list, MesWmBatchDO::getWorkstationId));
Map<Long, MesTmToolDO> toolMap = toolService.getToolMap(
convertSet(list, MesWmBatchDO::getToolId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmBatchRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java
index edeb614..a7c559b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java
@@ -5,11 +5,13 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.itemconsume.MesWmItemConsumeLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -22,6 +24,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -36,9 +39,9 @@
@Resource
private MesWmItemConsumeLineService itemConsumeLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@GetMapping("/page")
@Operation(summary = "鏍规嵁鎶ュ伐缂栧彿鍒嗛〉鑾峰彇娑堣�楄鍒楄〃")
@@ -50,10 +53,11 @@
itemConsumeLineService.getItemConsumeLinePage(pageReqVO);
PageResult<MesWmItemConsumeLineRespVO> voPage = BeanUtils.toBean(pageResult, MesWmItemConsumeLineRespVO.class);
// 2. 鎷兼帴鐗╂枡淇℃伅
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(pageResult.getList(), MesWmItemConsumeLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
for (MesWmItemConsumeLineRespVO vo : voPage.getList()) {
findAndThen(itemMap, vo.getItemId(), item -> {
vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptDetailController.java
index 4628348..33a5d69 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.detail.MesWmItemReceiptDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.detail.MesWmItemReceiptDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmItemReceiptDetailService itemReceiptDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmItemReceiptDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmItemReceiptDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptLineController.java
index 0d4438f..2c056ba 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemreceipt/MesWmItemReceiptLineController.java
@@ -8,12 +8,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.line.MesWmItemReceiptLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.line.MesWmItemReceiptLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.line.MesWmItemReceiptLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptLineService;
import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptService;
import io.swagger.v3.oas.annotations.Operation;
@@ -28,6 +30,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -41,9 +44,9 @@
@Resource
private MesWmItemReceiptLineService itemReceiptLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmItemReceiptService itemReceiptService;
@@ -99,10 +102,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmItemReceiptLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmItemReceiptDO> receiptMap = itemReceiptService.getItemReceiptMap(
convertSet(list, MesWmItemReceiptLineDO::getReceiptId));
// 2. 鏋勫缓缁撴灉
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/MesWmMaterialStockController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/MesWmMaterialStockController.java
index a665b66..51d117b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/MesWmMaterialStockController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/MesWmMaterialStockController.java
@@ -8,18 +8,21 @@
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.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
@@ -40,6 +43,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -54,9 +58,9 @@
@Resource
private MesWmMaterialStockService materialStockService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -96,6 +100,13 @@
return success(true);
}
+ @PostMapping("/adjust")
+ @Operation(summary = "搴撳瓨璋冩暣锛堣嚜瀹氫箟鍑哄叆搴擄級")
+ @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:adjust')")
+ public CommonResult<Long> adjustMaterialStock(@Valid @RequestBody MesWmMaterialStockAdjustReqVO reqVO) {
+ return success(materialStockService.adjustMaterialStock(reqVO));
+ }
+
@GetMapping("/export-excel")
@Operation(summary = "瀵煎嚭搴撳瓨鍙拌处 Excel")
@PreAuthorize("@ss.hasPermission('mes:wm-material-stock:export')")
@@ -115,10 +126,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmMaterialStockDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmMaterialStockDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockAdjustReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockAdjustReqVO.java
new file mode 100644
index 0000000..b9e3a62
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockAdjustReqVO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 搴撳瓨璋冩暣锛堣嚜瀹氫箟鍑哄叆搴擄級Request VO
+ */
+@Schema(description = "绠$悊鍚庡彴 - 搴撳瓨璋冩暣 Request VO")
+@Data
+public class MesWmMaterialStockAdjustReqVO {
+
+ @Schema(description = "鐗╂枡ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "鐗╂枡ID涓嶈兘涓虹┖")
+ private Long itemId;
+
+ @Schema(description = "浠撳簱ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "浠撳簱ID涓嶈兘涓虹┖")
+ private Long warehouseId;
+
+ @Schema(description = "搴撳尯ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "搴撳尯ID涓嶈兘涓虹┖")
+ private Long locationId;
+
+ @Schema(description = "搴撲綅ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "搴撲綅ID涓嶈兘涓虹┖")
+ private Long areaId;
+
+ @Schema(description = "鎵规ID", example = "1")
+ private Long batchId;
+
+ @Schema(description = "鎵规鍙�", example = "BATCH001")
+ private String batchCode;
+
+ @Schema(description = "渚涘簲鍟咺D", example = "1")
+ private Long vendorId;
+
+ @Schema(description = "璋冩暣鏁伴噺锛堟鏁�=鍏ュ簱锛岃礋鏁�=鍑哄簱锛�", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
+ @NotNull(message = "璋冩暣鏁伴噺涓嶈兘涓虹┖")
+ private BigDecimal quantity;
+
+ @Schema(description = "璋冩暣鍘熷洜", example = "鐩樼偣璋冩暣")
+ private String reason;
+
+}
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/MesWmMiscIssueLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/MesWmMiscIssueLineController.java
index 2ca2d0a..654daa3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/MesWmMiscIssueLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscissue/MesWmMiscIssueLineController.java
@@ -8,14 +8,16 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue.MesWmMiscIssueLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.miscissue.MesWmMiscIssueLineService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -32,6 +34,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -45,9 +48,9 @@
@Resource
private MesWmMiscIssueLineService miscIssueLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -107,10 +110,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmMiscIssueLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmMiscIssueLineDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = warehouseLocationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/MesWmMiscReceiptLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/MesWmMiscReceiptLineController.java
index 8abd396..ff4153c 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/MesWmMiscReceiptLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/miscreceipt/MesWmMiscReceiptLineController.java
@@ -20,18 +20,21 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
@@ -45,9 +48,9 @@
@Resource
private MesWmMiscReceiptLineService miscReceiptLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -115,10 +118,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmMiscReceiptLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmMiscReceiptLineDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = warehouseLocationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueDetailController.java
index e92fca2..a18634e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.detail.MesWmOutsourceIssueDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.detail.MesWmOutsourceIssueDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.outsourceissue.MesWmOutsourceIssueDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmOutsourceIssueDetailService outsourceIssueDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmOutsourceIssueDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmOutsourceIssueDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueLineController.java
index f629379..20230d5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourceissue/MesWmOutsourceIssueLineController.java
@@ -8,12 +8,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.mes.service.wm.outsourceissue.MesWmOutsourceIssueLineService;
import io.swagger.v3.oas.annotations.Operation;
@@ -28,6 +30,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -43,9 +46,9 @@
@Resource
private MesWmOutsourceIssueLineService outsourceIssueLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmBatchService batchService;
@@ -111,10 +114,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmOutsourceIssueLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 1.2 鑾峰緱鎵规鏁版嵁
Set<Long> batchIds = convertSet(list, MesWmOutsourceIssueLineDO::getBatchId);
batchIds.remove(null);
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptDetailController.java
index 9f26cad..7ab32a0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.detail.MesWmOutsourceReceiptDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.detail.MesWmOutsourceReceiptDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmOutsourceReceiptDetailService detailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmOutsourceReceiptDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmOutsourceReceiptDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptLineController.java
index 771b426..5ce8c74 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptLineController.java
@@ -8,11 +8,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmOutsourceReceiptLineService receiptLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓澶栧崗鍏ュ簱鍗曡")
@@ -95,10 +98,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmOutsourceReceiptLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmOutsourceReceiptLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java
index 5c52e6f..70d546b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java
@@ -9,11 +9,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO;
import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+
import cn.iocoder.yudao.module.mes.service.wm.packages.MesWmPackageService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
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;
@@ -26,6 +28,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.*;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -43,7 +46,7 @@
@Resource
private MesMdClientService clientService;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private AdminUserApi adminUserApi;
@@ -131,8 +134,9 @@
Map<Long, MesMdClientDO> clientMap = clientService.getClientMap(
convertSet(list, MesWmPackageDO::getClientId));
// 鎵归噺鏌ヨ璁¢噺鍗曚綅锛堝昂瀵� + 閲嶉噺锛�
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSetByFlatMap(list, p -> Stream.of(p.getSizeUnitId(), p.getWeightUnitId())));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSetByFlatMap(list, p -> Stream.of(p.getSizeUnitId(), p.getWeightUnitId()))).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 鎵归噺鏌ヨ妫�鏌ュ憳
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
convertSet(list, MesWmPackageDO::getInspectorUserId));
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java
index 2b8724a..1f6e878 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java
@@ -8,12 +8,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.packages.MesWmPackageLineService;
import io.swagger.v3.oas.annotations.Operation;
@@ -28,6 +30,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -41,9 +44,9 @@
@Resource
private MesWmPackageLineService packageLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesProWorkOrderService workOrderService;
@@ -99,11 +102,12 @@
return Collections.emptyList();
}
// 鎵归噺鏌ヨ鐗╂枡
- Map<Long, MesMdItemDO> itemMap = itemService
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi
.getItemMap(convertSet(list, MesWmPackageLineDO::getItemId));
// 鎵归噺鏌ヨ璁¢噺鍗曚綅
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 鎵归噺鏌ヨ宸ュ崟
Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap(
convertSet(list, MesWmPackageLineDO::getWorkOrderId));
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueDetailController.java
index c7049a2..69306e0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.detail.MesWmProductIssueDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.detail.MesWmProductIssueDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmProductIssueDetailService issueDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductIssueDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmProductIssueDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java
index 67d1b5a..29093f9 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueLineController.java
@@ -8,11 +8,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmProductIssueLineService issueLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓棰嗘枡鍑哄簱鍗曡")
@@ -105,10 +108,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductIssueLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmProductIssueLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productproduce/MesWmProductProduceLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productproduce/MesWmProductProduceLineController.java
index 9d663b5..d6d7379 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productproduce/MesWmProductProduceLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productproduce/MesWmProductProduceLineController.java
@@ -7,11 +7,13 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLineRespVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmProductProduceLineService productProduceLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@GetMapping("/page")
@Operation(summary = "鑾峰緱鐢熶骇鍏ュ簱鍗曡鍒嗛〉")
@@ -60,10 +63,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductProduceLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmProductProduceLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java
index 74bcb3a..d8e5af5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java
@@ -11,12 +11,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptService;
import io.swagger.v3.oas.annotations.Operation;
@@ -33,6 +35,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -49,9 +52,9 @@
@Resource
private MesProWorkOrderService workOrderService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓浜у搧鏀惰揣鍗�")
@@ -163,10 +166,11 @@
// 1. 鑾峰緱鍏宠仈鏁版嵁
Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap(
convertSet(list, MesWmProductReceiptDO::getWorkOrderId));
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductReceiptDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmProductReceiptRespVO.class, vo -> {
MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(),
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java
index 3382087..c234fa5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmProductReceiptDetailService productReceiptDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductReceiptDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmProductReceiptDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java
index a96260f..1aef3bc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java
@@ -8,11 +8,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmProductReceiptLineService productReceiptLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓浜у搧鏀惰揣鍗曡")
@@ -95,10 +98,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductReceiptLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmProductReceiptLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesDetailController.java
index 2038e4c..6e79bf3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.detail.MesWmProductSalesDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.detail.MesWmProductSalesDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmProductSalesDetailService productSalesDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductSalesDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmProductSalesDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesLineController.java
index 6b3ccbf..336da58 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesLineController.java
@@ -8,12 +8,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesLineService;
import io.swagger.v3.oas.annotations.Operation;
@@ -28,6 +30,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -41,9 +44,9 @@
@Resource
private MesWmProductSalesLineService productSalesLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@@ -98,10 +101,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmProductSalesLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmProductSalesLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueDetailController.java
index 602c244..913b9b8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.detail.MesWmReturnIssueDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.detail.MesWmReturnIssueDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.returnissue.MesWmReturnIssueDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmReturnIssueDetailService issueDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmReturnIssueDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmReturnIssueDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueLineController.java
index e8b3360..58423bc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueLineController.java
@@ -8,11 +8,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.line.MesWmReturnIssueLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.line.MesWmReturnIssueLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.line.MesWmReturnIssueLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.returnissue.MesWmReturnIssueLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmReturnIssueLineService issueLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓鐢熶骇閫�鏂欏崟琛�")
@@ -105,10 +108,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmReturnIssueLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmReturnIssueLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesDetailController.java
index d9d291f..bafc3b3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.detail.MesWmReturnSalesDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.detail.MesWmReturnSalesDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmReturnSalesDetailService returnSalesDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmReturnSalesDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmReturnSalesDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesLineController.java
index e32fff1..66fbe50 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnsales/MesWmReturnSalesLineController.java
@@ -8,11 +8,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmReturnSalesLineService returnSalesLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓閿�鍞��璐у崟琛�")
@@ -105,10 +108,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmReturnSalesLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmReturnSalesLineRespVO.class, vo ->
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorDetailController.java
index ceabec9..4c6cd81 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.returnvendor.MesWmReturnVendorDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmReturnVendorDetailService returnVendorDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,10 +109,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmReturnVendorDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmReturnVendorDetailDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorLineController.java
index f7a7a1d..a03aaf6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnvendor/MesWmReturnVendorLineController.java
@@ -8,11 +8,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesWmReturnVendorLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesWmReturnVendorLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesWmReturnVendorLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.returnvendor.MesWmReturnVendorLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +42,9 @@
@Resource
private MesWmReturnVendorLineService returnVendorLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓渚涘簲鍟嗛��璐у崟琛�")
@@ -105,10 +108,11 @@
return Collections.emptyList();
}
// 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmReturnVendorLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmReturnVendorLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
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 53d0b5a..2bf826e 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
@@ -113,12 +113,20 @@
@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) {
+ public CommonResult<Long> generateFromSaleOrder(@RequestBody Map<String, Long> params) {
+ Long saleOrderId = params.get("saleOrderId");
return success(salesNoticeService.generateSalesNoticeFromSaleOrder(saleOrderId));
}
+ @PostMapping("/generate-product-sales")
+ @Operation(summary = "浠庡彂璐ч�氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟")
+ @Parameter(name = "id", description = "鍙戣揣閫氱煡鍗曠紪鍙�", required = true)
+ @PreAuthorize("@ss.hasPermission('mes:wm-product-sales:create')")
+ public CommonResult<Long> generateProductSales(@RequestParam("id") Long id) {
+ return success(salesNoticeService.generateProductSalesFromNotice(id));
+ }
+
// ==================== 鎷兼帴 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/MesWmSalesNoticeLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeLineController.java
index d3eaa0e..53b1afa 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/MesWmSalesNoticeLineController.java
@@ -5,14 +5,14 @@
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.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeLineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -26,6 +26,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -39,9 +40,9 @@
@Resource
private MesWmSalesNoticeLineService salesNoticeLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/create")
@Operation(summary = "鍒涘缓鍙戣揣閫氱煡鍗曡")
@@ -94,11 +95,12 @@
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
- // 1. 鑾峰緱鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ // 1. 鑾峰緱鍏宠仈鏁版嵁 - 浣跨敤 MDM API 鑾峰彇鐗╂枡淇℃伅
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmSalesNoticeLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(java.util.stream.Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
// 2. 鏋勫缓缁撴灉
return BeanUtils.toBean(list, MesWmSalesNoticeLineRespVO.class, vo -> {
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticePageReqVO.java
index 3dee41c..f3ce710 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticePageReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/MesWmSalesNoticePageReqVO.java
@@ -19,7 +19,7 @@
private String name;
@Schema(description = "閿�鍞鍗曠紪鍙�", example = "SO202603010001")
- private String salesOrderCode;
+ private String saleOrderCode;
@Schema(description = "瀹㈡埛缂栧彿", example = "1")
private Long clientId;
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 05dda66..ad39bbd 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
@@ -58,6 +58,10 @@
@ExcelProperty("鐘舵��")
private Integer status;
+ @Schema(description = "鍑哄簱鐘舵��", example = "0")
+ @ExcelProperty("鍑哄簱鐘舵��")
+ private Integer outStatus;
+
@Schema(description = "澶囨敞", example = "澶囨敞")
@ExcelProperty("澶囨敞")
private String remark;
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 81e8091..93201b1 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
@@ -43,6 +43,9 @@
@Schema(description = "鍙戣揣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
private BigDecimal quantity;
+ @Schema(description = "宸插嚭搴撴暟閲�", example = "50.00")
+ private BigDecimal outCount;
+
@Schema(description = "鏄惁妫�楠�", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
private Boolean oqcCheckFlag;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/sn/MesWmSnController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/sn/MesWmSnController.java
index 7b14295..3b49cc7 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/sn/MesWmSnController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/sn/MesWmSnController.java
@@ -12,10 +12,12 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnGroupRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnRespVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+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.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -31,6 +33,7 @@
import java.io.IOException;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -45,9 +48,9 @@
@Resource
private MesWmSnService snService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@PostMapping("/generate")
@Operation(summary = "鐢熸垚 SN 鐮�")
@@ -117,9 +120,10 @@
if (CollUtil.isEmpty(list)) {
return;
}
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmSnGroupRespVO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmSnGroupRespVO::getItemId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
list.forEach(vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
MapUtils.findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName()));
@@ -130,9 +134,10 @@
if (CollUtil.isEmpty(list)) {
return;
}
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmSnRespVO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmSnRespVO::getItemId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
list.forEach(vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
MapUtils.findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName()));
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskLineController.java
index 39c8b4b..88c2270 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskLineController.java
@@ -7,14 +7,16 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskLineService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -31,6 +33,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -45,9 +48,9 @@
@Resource
private MesWmStockTakingTaskLineService stockTakingTaskLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -116,9 +119,10 @@
return Collections.emptyList();
}
// 鏌ヨ鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmStockTakingTaskLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmStockTakingTaskLineDO::getItemId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmStockTakingTaskLineDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskResultController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskResultController.java
index 8ff23ae..2139457 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskResultController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskResultController.java
@@ -8,14 +8,16 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskResultDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskResultService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -33,6 +35,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -46,9 +49,9 @@
@Resource
private MesWmStockTakingTaskResultService stockTakingTaskResultService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -112,10 +115,11 @@
return Collections.emptyList();
}
// 鏌ヨ鍏宠仈鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
convertSet(list, MesWmStockTakingTaskResultDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmStockTakingTaskResultDO::getWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferDetailController.java
index 31343ec..47d19fc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferDetailController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferDetailController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.detail.MesWmTransferDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.detail.MesWmTransferDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.transfer.MesWmTransferDetailService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmTransferDetailService transferDetailService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -106,9 +109,10 @@
return Collections.emptyList();
}
// 鏌ヨ鐩稿叧鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmTransferDetailDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmTransferDetailDO::getItemId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmTransferDetailDO::getToWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferLineController.java
index 7945dc9..c7db87f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferLineController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/transfer/MesWmTransferLineController.java
@@ -6,14 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.line.MesWmTransferLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.line.MesWmTransferLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
+
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
-import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
+import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+
import cn.iocoder.yudao.module.mes.service.wm.transfer.MesWmTransferLineService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
@@ -30,6 +32,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -43,9 +46,9 @@
@Resource
private MesWmTransferLineService transferLineService;
@Resource
- private MesMdItemService itemService;
+ private MdmItemApi mdmItemApi;
@Resource
- private MesMdUnitMeasureService unitMeasureService;
+ private MdmUnitMeasureApi mdmUnitMeasureApi;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -105,9 +108,10 @@
return Collections.emptyList();
}
// 鏌ヨ鐩稿叧鏁版嵁
- Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmTransferLineDO::getItemId));
- Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
- convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmTransferLineDO::getItemId));
+ Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList(
+ convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
+ .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(list, MesWmTransferLineDO::getFromWarehouseId));
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mdm/MesMdmItemDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mdm/MesMdmItemDO.java
new file mode 100644
index 0000000..e0f5a04
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mdm/MesMdmItemDO.java
@@ -0,0 +1,211 @@
+package cn.iocoder.yudao.module.mes.dal.dataobject.mdm;
+
+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;
+
+/**
+ * MDM 鐗╂枡 DO
+ *
+ * 鏄犲皠 mdm_item 琛�
+ */
+@TableName("mdm_item")
+@KeySequence("mdm_item_seq")
+@Data
+@EqualsAndHashCode
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MesMdmItemDO {
+
+ /**
+ * 鐗╂枡缂栧彿
+ */
+ @TableId
+ private Long id;
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ private String code;
+
+ /**
+ * 鐗╂枡鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 鐗╂枡鏉$爜
+ */
+ private String barCode;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ private String specification;
+
+ /**
+ * 鐗╂枡鍒嗙被缂栧彿
+ */
+ private Long categoryId;
+
+ /**
+ * 璁¢噺鍗曚綅缂栧彿
+ */
+ private Long unitMeasureId;
+
+ /**
+ * 杈呭崟浣�1缂栧彿
+ */
+ private Long unitMeasureId2;
+
+ /**
+ * 杈呭崟浣�1鎹㈢畻姣旂巼
+ */
+ private BigDecimal unitMeasureRate1;
+
+ /**
+ * 杈呭崟浣�2缂栧彿
+ */
+ private Long unitMeasureId3;
+
+ /**
+ * 杈呭崟浣�2鎹㈢畻姣旂巼
+ */
+ private BigDecimal unitMeasureRate2;
+
+ /**
+ * 榛樿浠撳簱缂栧彿
+ */
+ private Long warehouseId;
+
+ /**
+ * 榛樿浠撳簱缂栫爜
+ */
+ private String warehouseCode;
+
+ /**
+ * 鍝佺墝缂栧彿
+ */
+ private Long brandId;
+
+ /**
+ * 鐗╂枡绫诲瀷锛�1:鐗╂枡 2:浜у搧 3:鍗婃垚鍝侊級
+ */
+ private Integer itemType;
+
+ /**
+ * 鐘舵�侊紙0姝e父 1鍋滅敤锛�
+ */
+ private Integer status;
+
+ /**
+ * 閲囪喘浠�
+ */
+ private BigDecimal purchasePrice;
+
+ /**
+ * 閿�鍞环
+ */
+ private BigDecimal salesPrice;
+
+ /**
+ * 鎴愭湰浠�
+ */
+ private BigDecimal costPrice;
+
+ /**
+ * 鏈�浣庝环
+ */
+ private BigDecimal minPrice;
+
+ /**
+ * 瀹夊叏搴撳瓨
+ */
+ private BigDecimal safetyStock;
+
+ /**
+ * 鏈�浣庡簱瀛橀噺
+ */
+ private BigDecimal minStock;
+
+ /**
+ * 鏈�楂樺簱瀛橀噺
+ */
+ private BigDecimal maxStock;
+
+ /**
+ * 鏈�灏忚璐ч噺
+ */
+ private BigDecimal minOrderQty;
+
+ /**
+ * 閲囪喘鎻愬墠鏈燂紙澶╋級
+ */
+ private Integer leadTime;
+
+ /**
+ * 鏄惁鎵规绠$悊
+ */
+ private Boolean isBatchManaged;
+
+ /**
+ * 鏄惁搴忓垪鍙风鐞�
+ */
+ private Boolean isSerialManaged;
+
+ /**
+ * 鏉$爜瑙勫垯ID
+ */
+ private Long barcodeRuleId;
+
+ /**
+ * 淇濊川鏈熷ぉ鏁�
+ */
+ private Integer expiryDay;
+
+ /**
+ * 鏄惁楂樺�肩墿鏂�
+ */
+ private Boolean highValue;
+
+ /**
+ * 閲嶉噺(kg)
+ */
+ private BigDecimal weight;
+
+ /**
+ * 澶囨敞
+ */
+ private String remark;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ private String creator;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ private String updater;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * 鏄惁鍒犻櫎
+ */
+ private Boolean deleted;
+
+}
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 665d5b2..66f1dea 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
@@ -37,10 +37,6 @@
*/
private String name;
/**
- * 閿�鍞鍗曠紪鍙�
- */
- private String salesOrderCode;
- /**
* 瀹㈡埛缂栧彿
*
* 鍏宠仈 CRM 瀹㈡埛 {@link cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO#getId()}
@@ -78,6 +74,13 @@
*/
private Integer status;
/**
+ * 鍑哄簱鐘舵��
+ *
+ * 瀛楀吀 {@link DictTypeConstants#MES_WM_OUT_STATUS}
+ * 鏋氫妇 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmOutStatusEnum}
+ */
+ private Integer outStatus;
+ /**
* 澶囨敞
*/
private String remark;
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 651d238..1219bf6 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
@@ -61,6 +61,10 @@
*/
private BigDecimal quantity;
/**
+ * 宸插嚭搴撴暟閲�
+ */
+ private BigDecimal outCount;
+ /**
* 鏄惁妫�楠�
*/
private Boolean oqcCheckFlag;
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mdm/MesMdmItemMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mdm/MesMdmItemMapper.java
new file mode 100644
index 0000000..ca09636
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mdm/MesMdmItemMapper.java
@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.mes.dal.mysql.mdm;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * MDM 鐗╂枡 Mapper
+ */
+@Mapper
+public interface MesMdmItemMapper extends BaseMapperX<MesMdmItemDO> {
+
+ default MesMdmItemDO selectByCode(String code) {
+ return selectOne(MesMdmItemDO::getCode, code);
+ }
+
+ default List<MesMdmItemDO> selectListByIds(Collection<Long> ids) {
+ return selectList(MesMdmItemDO::getId, ids);
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/salesnotice/MesWmSalesNoticeMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/salesnotice/MesWmSalesNoticeMapper.java
index a4256f0..71c4714 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/salesnotice/MesWmSalesNoticeMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/salesnotice/MesWmSalesNoticeMapper.java
@@ -17,7 +17,7 @@
return selectPage(reqVO, new LambdaQueryWrapperX<MesWmSalesNoticeDO>()
.likeIfPresent(MesWmSalesNoticeDO::getCode, reqVO.getCode())
.likeIfPresent(MesWmSalesNoticeDO::getName, reqVO.getName())
- .likeIfPresent(MesWmSalesNoticeDO::getSalesOrderCode, reqVO.getSalesOrderCode())
+ .likeIfPresent(MesWmSalesNoticeDO::getSaleOrderCode, reqVO.getSaleOrderCode())
.eqIfPresent(MesWmSalesNoticeDO::getClientId, reqVO.getClientId())
.eqIfPresent(MesWmSalesNoticeDO::getStatus, reqVO.getStatus())
.orderByDesc(MesWmSalesNoticeDO::getId));
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
index d505ca0..5a32a63 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
@@ -51,6 +51,7 @@
String MES_WM_MISC_ISSUE_TYPE = "mes_wm_misc_issue_type"; // MES 鏉傞」鍑哄簱绫诲瀷
String MES_WM_MISC_ISSUE_STATUS = "mes_wm_misc_issue_status"; // MES 鏉傞」鍑哄簱鍗曠姸鎬�
String MES_WM_SALES_NOTICE_STATUS = "mes_wm_sales_notice_status"; // MES 鍙戣揣閫氱煡鍗曠姸鎬�
+ String MES_WM_OUT_STATUS = "mes_wm_out_status"; // MES 鍑哄簱鐘舵��
String MES_WM_PRODUCT_SALES_STATUS = "mes_wm_product_sales_status"; // MES 閿�鍞嚭搴撳崟鐘舵��
String MES_WM_OUTSOURCE_ISSUE_STATUS = "mes_wm_outsource_issue_status"; // MES 濮斿鍑哄簱鐘舵��
String MES_WM_PRODUCT_ISSUE_STATUS = "mes_wm_product_issue_status"; // MES 鐢熶骇棰嗘枡鐘舵��
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 c64ae2a..b5f3ad9 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
@@ -438,6 +438,7 @@
ErrorCode WM_TRANSACTION_BATCH_NOT_EXISTS = new ErrorCode(1_040_703_012, "鎵规璁板綍涓嶅瓨鍦�");
ErrorCode WM_MATERIAL_STOCK_REQUIRED = new ErrorCode(1_040_703_013, "搴撳瓨璁板綍涓嶈兘涓虹┖");
ErrorCode WM_MATERIAL_STOCK_SELECTION_MISMATCH = new ErrorCode(1_040_703_014, "搴撳瓨璁板綍涓庢彁浜ょ殑鐗╂枡銆佹壒娆℃垨搴撲綅淇℃伅涓嶄竴鑷�");
+ ErrorCode WM_MATERIAL_STOCK_QUANTITY_INVALID = new ErrorCode(1_040_703_015, "璋冩暣鏁伴噺涓嶈兘涓虹┖鎴栭浂");
// ========== MES 浠撳簱绠$悊-鍒拌揣閫氱煡鍗曪紙1-040-704-000锛� ==========
ErrorCode WM_ARRIVAL_NOTICE_NOT_EXISTS = new ErrorCode(1_040_704_000, "鍒拌揣閫氱煡鍗曚笉瀛樺湪");
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/MesBizTypeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/MesBizTypeConstants.java
index b09a030..b4a0579 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/MesBizTypeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/MesBizTypeConstants.java
@@ -47,6 +47,8 @@
public static final int WM_ITEM_CONSUME = 123; // 鐢熶骇娑堣�楋細MesWmItemConsumeDO
public static final int WM_PRODUCT_PRODUCE = 124; // 浜у搧浜у嚭锛歁esWmProductProduceDO
public static final int WM_RETURN_VENDOR = 125; // 渚涘簲鍟嗛��璐у嚭搴擄細MesWmReturnVendorDO
+ public static final int WM_STOCK_ADJUST_IN = 126; // 搴撳瓨璋冩暣鍏ュ簱锛堣嚜瀹氫箟鍏ュ簱锛�
+ public static final int WM_STOCK_ADJUST_OUT = 127; // 搴撳瓨璋冩暣鍑哄簱锛堣嚜瀹氫箟鍑哄簱锛�
// ========== CAL 鎺掔彮妯″潡 [200, 300) ==========
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmOutStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmOutStatusEnum.java
new file mode 100644
index 0000000..f4515dd
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmOutStatusEnum.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.mes.enums.wm;
+
+import cn.iocoder.yudao.framework.common.core.ArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * MES 鍑哄簱鐘舵�佹灇涓�
+ */
+@Getter
+@AllArgsConstructor
+public enum MesWmOutStatusEnum implements ArrayValuable<Integer> {
+
+ NOT_OUT(0, "鏈嚭搴�"),
+ PART_OUT(1, "閮ㄥ垎鍑哄簱"),
+ ALL_OUT(2, "鍏ㄩ儴鍑哄簱");
+
+ public static final Integer[] ARRAYS = Arrays.stream(values())
+ .map(MesWmOutStatusEnum::getStatus).toArray(Integer[]::new);
+
+ private final Integer status;
+ private final String name;
+
+ @Override
+ public Integer[] array() {
+ return ARRAYS;
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemService.java
new file mode 100644
index 0000000..0a58be5
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemService.java
@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.mes.service.mdm;
+
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
+
+/**
+ * MDM 鐗╂枡 Service 鎺ュ彛
+ *
+ * 涓撻棬鐢ㄤ簬鏌ヨ mdm_item 琛�
+ */
+public interface MesMdmItemService {
+
+ /**
+ * 鑾峰緱鐗╂枡
+ *
+ * @param id 缂栧彿
+ * @return 鐗╂枡
+ */
+ MesMdmItemDO getItem(Long id);
+
+ /**
+ * 鏍¢獙鐗╂枡瀛樺湪
+ *
+ * @param id 缂栧彿
+ * @return 鐗╂枡
+ */
+ MesMdmItemDO validateItemExists(Long id);
+
+ /**
+ * 鏍¢獙鐗╂枡瀛樺湪涓斿惎鐢�
+ *
+ * @param id 缂栧彿
+ * @return 鐗╂枡
+ */
+ MesMdmItemDO validateItemExistsAndEnable(Long id);
+
+ /**
+ * 鑾峰緱鐗╂枡鍒楄〃
+ *
+ * @param ids 缂栧彿鏁扮粍
+ * @return 鐗╂枡鍒楄〃
+ */
+ List<MesMdmItemDO> getItemList(Collection<Long> ids);
+
+ /**
+ * 鑾峰緱鐗╂枡 Map
+ *
+ * @param ids 缂栧彿鏁扮粍
+ * @return 鐗╂枡 Map
+ */
+ default Map<Long, MesMdmItemDO> getItemMap(Collection<Long> ids) {
+ return convertMap(getItemList(ids), MesMdmItemDO::getId);
+ }
+
+}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemServiceImpl.java
new file mode 100644
index 0000000..913af25
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/mdm/MesMdmItemServiceImpl.java
@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.mes.service.mdm;
+
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.mdm.MesMdmItemMapper;
+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.mes.enums.ErrorCodeConstants.MD_ITEM_NOT_EXISTS;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_IS_DISABLE;
+
+/**
+ * MDM 鐗╂枡 Service 瀹炵幇绫�
+ *
+ * 涓撻棬鐢ㄤ簬鏌ヨ mdm_item 琛�
+ */
+@Service
+@Validated
+public class MesMdmItemServiceImpl implements MesMdmItemService {
+
+ @Resource
+ private MesMdmItemMapper mesMdmItemMapper;
+
+ @Override
+ public MesMdmItemDO getItem(Long id) {
+ return mesMdmItemMapper.selectById(id);
+ }
+
+ @Override
+ public MesMdmItemDO validateItemExists(Long id) {
+ MesMdmItemDO item = mesMdmItemMapper.selectById(id);
+ if (item == null) {
+ throw exception(MD_ITEM_NOT_EXISTS);
+ }
+ return item;
+ }
+
+ @Override
+ public MesMdmItemDO validateItemExistsAndEnable(Long id) {
+ MesMdmItemDO item = validateItemExists(id);
+ if (item.getStatus() != null && item.getStatus() == 1) {
+ throw exception(MD_ITEM_IS_DISABLE);
+ }
+ return item;
+ }
+
+ @Override
+ public List<MesMdmItemDO> getItemList(Collection<Long> ids) {
+ if (ids == null || ids.isEmpty()) {
+ return Collections.emptyList();
+ }
+ return mesMdmItemMapper.selectListByIds(ids);
+ }
+
+}
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 3f1ae8b..c71717e 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
@@ -8,7 +8,7 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -34,7 +34,7 @@
@Lazy
private MesWmArrivalNoticeService arrivalNoticeService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Override
public Long createArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO createReqVO) {
@@ -66,7 +66,7 @@
// 鏍¢獙鐖跺崟鎹瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
arrivalNoticeService.validateArrivalNoticeExistsAndDraft(reqVO.getNoticeId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
}
/**
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 aac37da..29db064 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
@@ -14,7 +14,7 @@
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 cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -49,7 +49,7 @@
private ErpPurchaseOrderApi purchaseOrderApi;
@Resource
- private MesMdItemService mdItemService;
+ private MesMdmItemService mdmItemService;
@Override
public Long createArrivalNotice(MesWmArrivalNoticeSaveReqVO createReqVO) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
index 35d0a18..211281f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
@@ -6,14 +6,14 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemBatchConfigDO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.batch.MesWmBatchMapper;
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemBatchConfigService;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -48,7 +48,7 @@
private MesWmBatchMapper batchMapper;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesMdItemBatchConfigService itemBatchConfigService;
@Resource
@@ -75,8 +75,8 @@
@Transactional(rollbackFor = Exception.class)
public MesWmBatchDO getOrGenerateBatchCode(MesWmBatchGenerateReqVO reqVO) {
// 1.1 鏌ヨ鐗╂枡淇℃伅锛屾鏌ユ槸鍚﹀惎鐢ㄦ壒娆$鐞�
- MesMdItemDO item = itemService.validateItemExists(reqVO.getItemId());
- if (Boolean.FALSE.equals(item.getBatchFlag())) {
+ MesMdmItemDO item = mdmItemService.validateItemExists(reqVO.getItemId());
+ if (Boolean.FALSE.equals(item.getIsBatchManaged())) {
// 鏈惎鐢ㄦ壒娆$鐞嗭紝杩斿洖 null
return null;
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java
index a6e667c..cc8b761 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.mes.service.wm.materialstock;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO;
@@ -148,4 +149,12 @@
MesWmMaterialStockDO validateSelectedStock(Long materialStockId, Long itemId, Long batchId, String batchCode,
Long warehouseId, Long locationId, Long areaId, BigDecimal quantity);
+ /**
+ * 搴撳瓨璋冩暣锛堣嚜瀹氫箟鍑哄叆搴擄級
+ *
+ * @param reqVO 璋冩暣璇锋眰
+ * @return 搴撳瓨浜嬪姟娴佹按ID
+ */
+ Long adjustMaterialStock(@Valid MesWmMaterialStockAdjustReqVO reqVO);
+
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
index 638bae4..5c9f684 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
@@ -5,22 +5,28 @@
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialstock.MesWmMaterialStockMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemTypeService;
+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.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
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;
@@ -42,7 +48,7 @@
private MesWmMaterialStockMapper materialStockMapper;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesMdItemTypeService itemTypeService;
@Resource
@@ -50,6 +56,9 @@
@Resource
@Lazy
private MesWmWarehouseService warehouseService;
+ @Resource
+ @Lazy
+ private MesWmTransactionService wmTransactionService;
@Override
public MesWmMaterialStockDO getMaterialStock(Long id) {
@@ -156,9 +165,9 @@
}
// 2. 涓嶅瓨鍦ㄥ垯鏂板缓
- MesMdItemDO item = itemService.validateItemExists(itemId);
+ MesMdmItemDO item = mdmItemService.validateItemExists(itemId);
MesWmMaterialStockDO newStock = MesWmMaterialStockDO.builder()
- .itemId(itemId).itemTypeId(item.getItemTypeId())
+ .itemId(itemId).itemTypeId(item.getCategoryId())
.warehouseId(warehouseId).locationId(locationId).areaId(areaId)
.batchId(batchId).batchCode(batchCode).vendorId(vendorId)
.quantity(BigDecimal.ZERO) // 鍒濆鏁伴噺涓� 0锛岀敱 updateMaterialStockQuantity 鏇存柊
@@ -232,4 +241,58 @@
return stock;
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Long adjustMaterialStock(MesWmMaterialStockAdjustReqVO reqVO) {
+ // 1. 鏍¢獙鐗╂枡瀛樺湪涓斿惎鐢�
+ MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
+
+ // 2. 鍒ゆ柇鏄叆搴撹繕鏄嚭搴�
+ BigDecimal quantity = reqVO.getQuantity();
+ if (quantity == null || quantity.compareTo(BigDecimal.ZERO) == 0) {
+ throw exception(WM_MATERIAL_STOCK_QUANTITY_INVALID);
+ }
+ boolean isInbound = quantity.compareTo(BigDecimal.ZERO) > 0;
+ int bizType = isInbound ? MesBizTypeConstants.WM_STOCK_ADJUST_IN : MesBizTypeConstants.WM_STOCK_ADJUST_OUT;
+
+ // 3. 鏍¢獙搴撲綅娣锋斁瑙勫垯
+ checkAreaMixingRule(reqVO.getAreaId(), reqVO.getItemId(), reqVO.getBatchId());
+
+ // 4. 鑾峰彇鎴栧垱寤哄簱瀛樿褰�
+ MesWmMaterialStockDO stock = getOrCreateMaterialStock(
+ reqVO.getItemId(),
+ reqVO.getWarehouseId(),
+ reqVO.getLocationId(),
+ reqVO.getAreaId(),
+ reqVO.getBatchId(),
+ reqVO.getBatchCode(),
+ reqVO.getVendorId(),
+ LocalDateTime.now()
+ );
+
+ // 5. 鏇存柊搴撳瓨鏁伴噺锛堝嚭搴撴椂鏍¢獙搴撳瓨鍏呰冻锛�
+ updateMaterialStockQuantity(stock.getId(), quantity, !isInbound);
+
+ // 6. 鍒涘缓搴撳瓨浜嬪姟娴佹按
+ MesWmTransactionSaveReqDTO transaction = new MesWmTransactionSaveReqDTO()
+ .setType(isInbound ? MesWmTransactionTypeEnum.IN.getType() : MesWmTransactionTypeEnum.OUT.getType())
+ .setBizType(bizType)
+ .setBizId(stock.getId())
+ .setBizCode("STOCK_ADJUST_" + stock.getId())
+ .setBizLineId(stock.getId())
+ .setItemId(reqVO.getItemId())
+ .setQuantity(quantity)
+ .setBatchId(reqVO.getBatchId())
+ .setBatchCode(reqVO.getBatchCode())
+ .setWarehouseId(reqVO.getWarehouseId())
+ .setLocationId(reqVO.getLocationId())
+ .setAreaId(reqVO.getAreaId())
+ .setVendorId(reqVO.getVendorId())
+ .setReceiptTime(LocalDateTime.now())
+ .setCheckFlag(!isInbound);
+ wmTransactionService.createTransaction(transaction);
+
+ return stock.getId();
+ }
+
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java
index ddf7ba4..22b985d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue.MesWmMiscIssueLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscissue.MesWmMiscIssueLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -36,7 +36,7 @@
@Lazy
private MesWmMiscIssueDetailService miscIssueDetailService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmWarehouseAreaService warehouseAreaService;
@@ -129,7 +129,7 @@
// 鏍¢獙鐖跺崟鎹瓨鍦ㄤ笖涓哄彲缂栬緫鐘舵��
miscIssueService.validateMiscIssueEditable(issueId);
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鐖跺瓙鍏崇郴
warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(),
reqVO.getLocationId(), reqVO.getAreaId());
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java
index ed156b3..dee628f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscreceipt.MesWmMiscReceiptLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscreceipt.MesWmMiscReceiptLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -36,7 +36,7 @@
@Lazy
private MesWmMiscReceiptDetailService miscReceiptDetailService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmWarehouseAreaService warehouseAreaService;
@@ -125,7 +125,7 @@
// 鏍¢獙鐖跺崟鎹瓨鍦ㄤ笖涓哄彲缂栬緫鐘舵��
miscReceiptService.validateMiscReceiptEditable(reqVO.getReceiptId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙浠撳簱灞傜骇鍏崇郴锛堜粨搴� - 搴撲綅 - 搴撳尯锛�
warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(),
reqVO.getLocationId(), reqVO.getAreaId());
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueDetailServiceImpl.java
index 9a14936..da3ff2e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueDetailServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueDetailMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
@@ -35,7 +35,7 @@
@Lazy
private MesWmOutsourceIssueLineService outsourceIssueLineService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmWarehouseAreaService warehouseAreaService;
@Resource
@@ -113,7 +113,7 @@
throw exception(WM_OUTSOURCE_ISSUE_DETAIL_LINE_NOT_MATCH);
}
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(saveReqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(saveReqVO.getItemId());
if (ObjUtil.notEqual(line.getItemId(), saveReqVO.getItemId())) {
throw exception(WM_OUTSOURCE_ISSUE_DETAIL_ITEM_MISMATCH);
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java
index 236ee94..3399e0d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java
@@ -11,7 +11,7 @@
import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueLineMapper;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
@@ -44,7 +44,7 @@
@Lazy
private MesWmOutsourceIssueService outsourceIssueService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmBatchService batchService;
@Resource
@@ -121,7 +121,7 @@
throw exception(WM_OUTSOURCE_ISSUE_NOT_EXISTS);
}
// 鏍¢獙鍏宠仈鐨勭墿鏂欏瓨鍦�
- itemService.validateItemExistsAndEnable(saveReqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(saveReqVO.getItemId());
// 鏍¢獙鐗╂枡鏄惁鍦ㄥ伐鍗� BOM 涓�
validateItemInWorkOrderBom(issue.getWorkOrderId(), saveReqVO.getItemId());
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java
index e59639b..22538b3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java
@@ -4,7 +4,7 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.detail.MesWmOutsourceReceiptDetailSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptDetailMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -26,7 +26,7 @@
private MesWmOutsourceReceiptDetailMapper detailMapper;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmWarehouseAreaService areaService;
@@ -91,7 +91,7 @@
*/
private void validateDetailSaveData(MesWmOutsourceReceiptDetailSaveReqVO reqVO) {
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙浠撳簱銆佸簱鍖恒�佸簱浣嶇殑灞傜骇鍏崇郴
areaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId());
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineServiceImpl.java
index 5559ce9..b0337fe 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineServiceImpl.java
@@ -11,7 +11,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptLineMapper;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
@@ -36,7 +36,7 @@
private MesWmOutsourceReceiptLineMapper lineMapper;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
@Lazy
private MesWmOutsourceReceiptDetailService outsourceReceiptDetailService;
@@ -52,7 +52,7 @@
@Override
public Long createOutsourceReceiptLine(MesWmOutsourceReceiptLineSaveReqVO createReqVO) {
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(createReqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(createReqVO.getItemId());
// 鎻掑叆
MesWmOutsourceReceiptLineDO line = BeanUtils.toBean(createReqVO, MesWmOutsourceReceiptLineDO.class);
@@ -72,7 +72,7 @@
// 鏍¢獙瀛樺湪
validateOutsourceReceiptLineExists(updateReqVO.getId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(updateReqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(updateReqVO.getItemId());
// 鏇存柊
MesWmOutsourceReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceReceiptLineDO.class);
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java
index 67cb907..4ab00b6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptServiceImpl.java
@@ -10,7 +10,7 @@
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.MesWmOutsourceReceiptPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.MesWmOutsourceReceiptSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDetailDO;
@@ -20,7 +20,7 @@
import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceReceiptStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
@@ -58,7 +58,7 @@
@Resource
private MesMdVendorService vendorService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesProWorkOrderService workOrderService;
@@ -160,7 +160,7 @@
MesWmOutsourceReceiptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
// 瀵规瘮琛屾暟閲忎笌鏄庣粏鎬绘暟閲忥紝涓嶆弧瓒崇洿鎺ユ姏鍑�
if (line.getQuantity().compareTo(totalDetailQuantity) > 0) {
- MesMdItemDO item = itemService.validateItemExistsAndEnable(line.getItemId());
+ MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId());
throw exception(WM_OUTSOURCE_RECEIPT_DETAIL_QUANTITY_MISMATCH,
item.getCode() + " " + item.getName() + " 鏈畬鎴愪笂鏋�");
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java
index a04cd6b..57e2238 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -34,7 +34,7 @@
@Lazy
private MesWmPackageService packageService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesProWorkOrderService workOrderService;
@@ -101,7 +101,7 @@
// 鏍¢獙瑁呯鍗曠姸鎬佷负鑽夌
packageService.validatePackageStatusDraft(reqVO.getPackageId());
// 鏍¢獙浜у搧鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙宸ュ崟宸茬‘璁�
workOrderService.validateWorkOrderConfirmed(reqVO.getWorkOrderId());
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java
index 374a2ce..b264b98 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java
@@ -9,7 +9,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productissue.MesWmProductIssueLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -36,7 +36,7 @@
@Lazy
private MesWmProductIssueService issueService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesProWorkOrderBomService workOrderBomService;
@Resource
@@ -114,7 +114,7 @@
// 鏍¢獙鐗╂枡鍦ㄥ伐鍗� BOM 涓�
validateItemInWorkOrderBom(reqVO.getIssueId(), reqVO.getItemId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
}
private void validateItemInWorkOrderBom(Long issueId, Long itemId) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java
index b22b8fc..e40fb5f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt.MesWmProductReceiptLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -34,7 +34,7 @@
@Resource
private MesWmProductReceiptDetailService productReceiptDetailService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Override
public Long createProductReceiptLine(MesWmProductReceiptLineSaveReqVO createReqVO) {
@@ -109,7 +109,7 @@
// 鏍¢獙鐖跺崟鎹瓨鍦ㄤ笖涓哄彲缂栬緫鐘舵��
productReceiptService.validateProductReceiptEditable(reqVO.getReceiptId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
}
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesDetailServiceImpl.java
index 8cb2e81..a1d20b0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesDetailServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesDetailMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
@@ -32,7 +32,7 @@
private MesWmProductSalesDetailMapper productSalesDetailMapper;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
@Lazy
private MesWmProductSalesLineService productSalesLineService;
@@ -115,7 +115,7 @@
throw exception(WM_PRODUCT_SALES_DETAIL_LINE_NOT_MATCH);
}
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
if (ObjUtil.notEqual(line.getItemId(), reqVO.getItemId())) {
throw exception(WM_PRODUCT_SALES_DETAIL_ITEM_MISMATCH);
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
index 5d112b8..a1ec2f7 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
@@ -12,7 +12,7 @@
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO;
@@ -47,7 +47,7 @@
@Resource
private MesWmProductSalesDetailService productSalesDetailService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmBatchService batchService;
@Resource
@@ -153,7 +153,7 @@
// 鏍¢獙涓诲崟瀛樺湪涓斾负鑽夌鐘舵��
MesWmProductSalesDO sales = productSalesService.validateProductSalesExistsAndDraft(reqVO.getSalesId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙鍏宠仈鍙戣揣閫氱煡鍗曡锛堝瓨鍦ㄦ�� + 褰掑睘 + 瀛楁涓�鑷存�э級
validateSalesNoticeLine(sales, reqVO);
// 鏍规嵁 batchCode 瑙f瀽 batchId
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 baec481..7309606 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
@@ -251,9 +251,9 @@
productSalesMapper.updateById(new MesWmProductSalesDO()
.setId(id).setStatus(MesWmProductSalesStatusEnum.FINISHED.getStatus()));
- // 5. 鏇存柊鍏宠仈鐨勫彂璐ч�氱煡鍗曠姸鎬�
+ // 5. 鏇存柊鍏宠仈鐨勫彂璐ч�氱煡鍗曞嚭搴撴暟閲忓拰鐘舵��
if (sales.getNoticeId() != null) {
- salesNoticeService.finishSalesNotice(sales.getNoticeId());
+ updateSalesNoticeOutCount(sales);
}
// 6. 鍥炲啓 ERP 閿�鍞鍗曠殑鍑哄簱鏁伴噺鍜岀姸鎬�
@@ -261,6 +261,23 @@
}
/**
+ * 鏇存柊鍙戣揣閫氱煡鍗曠殑鍑哄簱鏁伴噺鍜岀姸鎬�
+ */
+ private void updateSalesNoticeOutCount(MesWmProductSalesDO sales) {
+ // 鑾峰彇鍑哄簱鍗曡
+ List<MesWmProductSalesLineDO> lines = productSalesLineService.getProductSalesLineListBySalesId(sales.getId());
+ if (CollUtil.isEmpty(lines)) {
+ return;
+ }
+ // 閬嶅巻琛岋紝鎸� noticeLineId 鏇存柊鍑哄簱鏁伴噺
+ for (MesWmProductSalesLineDO line : lines) {
+ if (line.getNoticeLineId() != null && line.getQuantity() != null) {
+ salesNoticeService.updateSalesNoticeLineOutCount(line.getNoticeLineId(), line.getQuantity());
+ }
+ }
+ }
+
+ /**
* 鍥炲啓 ERP 閿�鍞鍗曠殑鍑哄簱鏁伴噺鍜岀姸鎬�
*/
private void updateErpSaleOrderOutCount(MesWmProductSalesDO sales) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java
index 60ef865..f966893 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java
@@ -12,7 +12,7 @@
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueTypeEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -39,7 +39,7 @@
@Lazy
private MesWmReturnIssueService issueService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
@Lazy
private MesWmReturnIssueDetailService issueDetailService;
@@ -117,7 +117,7 @@
// 鏍¢獙鐖舵暟鎹瓨鍦� + 鑽夌鐘舵��
MesWmReturnIssueDO issue = issueService.validateReturnIssueExistsAndPrepare(reqVO.getIssueId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
return issue;
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueServiceImpl.java
index 3269ae7..41d05d5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueServiceImpl.java
@@ -9,7 +9,7 @@
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssuePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssueSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO;
@@ -18,7 +18,7 @@
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
@@ -61,7 +61,7 @@
@Resource
private MesProWorkOrderService workOrderService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmTransactionService wmTransactionService;
@Resource
@@ -168,7 +168,7 @@
MesWmReturnIssueDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
// 瀵规瘮琛屾暟閲忎笌鏄庣粏鎬绘暟閲忥紝涓嶆弧瓒崇洿鎺ユ姏鍑�
if (line.getQuantity().compareTo(totalDetailQuantity) > 0) {
- MesMdItemDO item = itemService.validateItemExistsAndEnable(line.getItemId());
+ MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId());
throw exception(WM_RETURN_ISSUE_DETAIL_QUANTITY_MISMATCH,
item.getCode() + " " + item.getName() + " 鏈畬鎴愪笂鏋�");
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
index 0aa1fd8..ed787a3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
@@ -6,13 +6,13 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLineMapper;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -43,7 +43,7 @@
@Lazy
private MesWmReturnSalesService returnSalesService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmBatchService batchService;
@Resource
@@ -155,9 +155,9 @@
* @param batchId 鎵规ID
*/
private void validateItemBatchManagement(Long returnId, Long itemId, Long batchId) {
- MesMdItemDO item = itemService.validateItemExistsAndEnable(itemId);
+ MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(itemId);
// 濡傛灉鐗╂枡鍚敤浜嗘壒娆$鐞嗭紝鍒欏繀椤婚�夋嫨鎵规
- if (Boolean.TRUE.equals(item.getBatchFlag()) && batchId == null) {
+ if (Boolean.TRUE.equals(item.getIsBatchManaged()) && batchId == null) {
throw exception(MD_ITEM_BATCH_REQUIRED);
}
// 鏍¢獙鎵规瀛樺湪涓斿睘浜庡綋鍓嶇墿鏂欏拰瀹㈡埛
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesServiceImpl.java
index a110f3e..82abbb2 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesServiceImpl.java
@@ -9,7 +9,7 @@
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.MesWmReturnSalesPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.MesWmReturnSalesSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
@@ -19,7 +19,7 @@
import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
import jakarta.annotation.Resource;
@@ -55,7 +55,7 @@
@Resource
private MesMdClientService clientService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmTransactionService wmTransactionService;
@@ -170,7 +170,7 @@
MesWmReturnSalesDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
// 瀵规瘮琛屾暟閲忎笌鏄庣粏鎬绘暟閲忥紝涓嶆弧瓒崇洿鎺ユ姏鍑�
if (line.getQuantity().compareTo(totalDetailQuantity) > 0) {
- MesMdItemDO item = itemService.validateItemExistsAndEnable(line.getItemId());
+ MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId());
throw exception(WM_RETURN_SALES_DETAIL_QUANTITY_MISMATCH,
item.getCode() + " " + item.getName() + " 鏈畬鎴愪笂鏋�");
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
index 985e80f..efc903c 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
@@ -6,7 +6,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorDetailMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
@@ -33,7 +33,7 @@
@Lazy
private MesWmReturnVendorLineService returnVendorLineService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmMaterialStockService materialStockService;
@Resource
@@ -72,7 +72,7 @@
throw exception(WM_RETURN_VENDOR_DETAIL_LINE_NOT_MATCH);
}
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙鐗╂枡涓庤鐗╂枡涓�鑷�
validateItemConsistency(reqVO.getItemId(), line);
// 鏍¢獙搴撲綅瀛樺湪
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorLineServiceImpl.java
index 6b70f92..7a9ee75 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorLineServiceImpl.java
@@ -7,7 +7,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -37,7 +37,7 @@
@Lazy
private MesWmReturnVendorDetailService returnVendorDetailService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmBatchService batchService;
@@ -113,7 +113,7 @@
// 鏍¢獙鐖舵暟鎹瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
MesWmReturnVendorDO returnVendor = returnVendorService.validateReturnVendorExistsAndPrepare(reqVO.getReturnId());
// 鏍¢獙鐗╂枡瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙鎵规瀛樺湪涓斿睘浜庡綋鍓嶇墿鏂欏拰渚涘簲鍟�
if (reqVO.getBatchId() != null) {
batchService.validateBatchExists(reqVO.getBatchId(), reqVO.getItemId(), null, returnVendor.getVendorId());
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 a5f08ff..7f40f15 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
@@ -10,7 +10,7 @@
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.MesWmSalesNoticeLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -39,7 +39,7 @@
@Resource
private MesWmBatchService batchService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Override
public Long createSalesNoticeLine(MesWmSalesNoticeLineSaveReqVO createReqVO) {
@@ -122,7 +122,7 @@
validateNoticeStatusDraft(reqVO.getNoticeId());
// 鏍¢獙鐗╂枡瀛樺湪
if (reqVO.getItemId() != null) {
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
}
}
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 d952c79..be5338c 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
@@ -98,9 +98,35 @@
/**
* 瀹屾垚鍙戣揣閫氱煡鍗曪紙鍑哄簱瀹屾垚鍚庤皟鐢級
+ * 绱姞鍑哄簱鏁伴噺骞惰绠楀嚭搴撶姸鎬�
*
* @param id 缂栧彿
+ * @deprecated 璇蜂娇鐢� {@link #updateSalesNoticeOutCount(Long, java.math.BigDecimal)}
*/
+ @Deprecated
void finishSalesNotice(Long id);
+ /**
+ * 鏇存柊鍙戣揣閫氱煡鍗曡鐨勫嚭搴撴暟閲�
+ *
+ * @param noticeLineId 鍙戣揣閫氱煡鍗曡ID
+ * @param outCount 鍑哄簱鏁伴噺
+ */
+ void updateSalesNoticeLineOutCount(Long noticeLineId, java.math.BigDecimal outCount);
+
+ /**
+ * 鏇存柊鍙戣揣閫氱煡鍗曠殑鍑哄簱鐘舵��
+ *
+ * @param noticeId 鍙戣揣閫氱煡鍗旾D
+ */
+ void updateSalesNoticeOutStatus(Long noticeId);
+
+ /**
+ * 浠庡彂璐ч�氱煡鍗曠敓鎴愰攢鍞嚭搴撳崟
+ *
+ * @param noticeId 鍙戣揣閫氱煡鍗旾D
+ * @return 閿�鍞嚭搴撳崟ID
+ */
+ Long generateProductSalesFromNotice(Long noticeId);
+
}
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 9301bb6..c2b964c 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
@@ -6,9 +6,16 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticeSaveReqVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
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.productsales.MesWmProductSalesMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeLineMapper;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutStatusEnum;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductSalesStatusEnum;
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;
@@ -20,6 +27,7 @@
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;
@@ -48,6 +56,13 @@
private ErpSaleOrderApi saleOrderApi;
@Resource
private MesMdAutoCodeRecordService autoCodeRecordService;
+
+ @Resource
+ private MesWmProductSalesMapper productSalesMapper;
+ @Resource
+ private MesWmProductSalesLineMapper productSalesLineMapper;
+ @Resource
+ private MesWmSalesNoticeLineMapper salesNoticeLineMapper;
@Override
public Long createSalesNotice(MesWmSalesNoticeSaveReqVO createReqVO) {
@@ -202,11 +217,137 @@
@Override
public void finishSalesNotice(Long id) {
- // 鏍¢獙瀛樺湪
- MesWmSalesNoticeDO notice = validateSalesNoticeExists(id);
- // 鏇存柊鐘舵�佷负宸插畬鎴�
+ // 宸插簾寮冿紝淇濈暀鍏煎鎬�
+ updateSalesNoticeOutStatus(id);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void updateSalesNoticeLineOutCount(Long noticeLineId, BigDecimal outCount) {
+ if (noticeLineId == null || outCount == null) {
+ return;
+ }
+ // 1. 鑾峰彇鍙戣揣閫氱煡鍗曡
+ MesWmSalesNoticeLineDO line = salesNoticeLineMapper.selectById(noticeLineId);
+ if (line == null) {
+ return;
+ }
+ // 2. 绱姞鍑哄簱鏁伴噺
+ BigDecimal newOutCount = (line.getOutCount() != null ? line.getOutCount() : BigDecimal.ZERO).add(outCount);
+ // 3. 鏇存柊琛�
+ salesNoticeLineMapper.updateById(new MesWmSalesNoticeLineDO()
+ .setId(noticeLineId)
+ .setOutCount(newOutCount));
+ // 4. 鏇存柊涓诲崟鍑哄簱鐘舵��
+ updateSalesNoticeOutStatus(line.getNoticeId());
+ }
+
+ @Override
+ public void updateSalesNoticeOutStatus(Long noticeId) {
+ if (noticeId == null) {
+ return;
+ }
+ // 1. 鑾峰彇鍙戣揣閫氱煡鍗�
+ MesWmSalesNoticeDO notice = salesNoticeMapper.selectById(noticeId);
+ if (notice == null) {
+ return;
+ }
+ // 2. 鑾峰彇鍙戣揣閫氱煡鍗曡
+ List<MesWmSalesNoticeLineDO> lines = salesNoticeLineMapper.selectListByNoticeId(noticeId);
+ if (CollUtil.isEmpty(lines)) {
+ return;
+ }
+ // 3. 璁$畻鍑哄簱鐘舵��
+ int outStatus = calculateOutStatus(lines);
+ // 4. 鏇存柊鍑哄簱鐘舵��
salesNoticeMapper.updateById(new MesWmSalesNoticeDO()
- .setId(id).setStatus(FINISHED.getStatus()));
+ .setId(noticeId)
+ .setOutStatus(outStatus));
+ // 5. 濡傛灉鍏ㄩ儴鍑哄簱锛屾洿鏂板崟鎹姸鎬佷负宸插畬鎴�
+ if (outStatus == MesWmOutStatusEnum.ALL_OUT.getStatus()) {
+ salesNoticeMapper.updateById(new MesWmSalesNoticeDO()
+ .setId(noticeId)
+ .setStatus(FINISHED.getStatus()));
+ }
+ }
+
+ /**
+ * 璁$畻鍑哄簱鐘舵��
+ */
+ private int calculateOutStatus(List<MesWmSalesNoticeLineDO> lines) {
+ boolean allOut = true;
+ boolean anyOut = false;
+
+ for (MesWmSalesNoticeLineDO line : lines) {
+ BigDecimal quantity = line.getQuantity() != null ? line.getQuantity() : BigDecimal.ZERO;
+ BigDecimal outCount = line.getOutCount() != null ? line.getOutCount() : BigDecimal.ZERO;
+
+ if (outCount.compareTo(BigDecimal.ZERO) > 0) {
+ anyOut = true;
+ }
+ if (outCount.compareTo(quantity) < 0) {
+ allOut = false;
+ }
+ }
+
+ if (allOut) {
+ return MesWmOutStatusEnum.ALL_OUT.getStatus();
+ } else if (anyOut) {
+ return MesWmOutStatusEnum.PART_OUT.getStatus();
+ } else {
+ return MesWmOutStatusEnum.NOT_OUT.getStatus();
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Long generateProductSalesFromNotice(Long noticeId) {
+ // 1. 鏍¢獙鍙戣揣閫氱煡鍗曞瓨鍦ㄤ笖涓哄緟鍑哄簱鐘舵��
+ MesWmSalesNoticeDO notice = validateSalesNoticeExists(noticeId);
+ if (ObjUtil.notEqual(APPROVED.getStatus(), notice.getStatus())) {
+ throw exception(WM_SALES_NOTICE_STATUS_NOT_APPROVED);
+ }
+
+ // 2. 鑾峰彇鍙戣揣閫氱煡鍗曡
+ List<MesWmSalesNoticeLineDO> noticeLines = salesNoticeLineService.getSalesNoticeLineListByNoticeId(noticeId);
+ if (CollUtil.isEmpty(noticeLines)) {
+ throw exception(WM_SALES_NOTICE_LINE_EMPTY);
+ }
+
+ // 3. 鐢熸垚閿�鍞嚭搴撳崟缂栫爜
+ String code = autoCodeRecordService.generateAutoCode("WM_PRODUCT_SALES_CODE", null);
+
+ // 4. 鍒涘缓閿�鍞嚭搴撳崟涓昏〃
+ MesWmProductSalesDO productSales = new MesWmProductSalesDO();
+ productSales.setCode(code);
+ productSales.setName("鍙戣揣閫氱煡鍗昜" + notice.getCode() + "]鍑哄簱");
+ productSales.setClientId(notice.getClientId());
+ productSales.setSaleOrderId(notice.getSaleOrderId());
+ productSales.setSalesOrderCode(notice.getSaleOrderCode());
+ productSales.setNoticeId(noticeId);
+ productSales.setSalesDate(notice.getSalesDate());
+ // 鏀惰揣淇℃伅浠庡彂璐ч�氱煡鍗曞甫鍏�
+ productSales.setContactName(notice.getRecipientName());
+ productSales.setContactTelephone(notice.getRecipientTelephone());
+ productSales.setContactAddress(notice.getRecipientAddress());
+ productSales.setStatus(MesWmProductSalesStatusEnum.PREPARE.getStatus());
+ productSalesMapper.insert(productSales);
+
+ // 5. 閬嶅巻鍙戣揣閫氱煡鍗曡鍒涘缓閿�鍞嚭搴撳崟琛�
+ for (MesWmSalesNoticeLineDO noticeLine : noticeLines) {
+ MesWmProductSalesLineDO salesLine = new MesWmProductSalesLineDO();
+ salesLine.setSalesId(productSales.getId());
+ salesLine.setSaleOrderItemId(noticeLine.getSaleOrderItemId());
+ salesLine.setNoticeLineId(noticeLine.getId());
+ salesLine.setItemId(noticeLine.getItemId());
+ salesLine.setQuantity(noticeLine.getQuantity());
+ salesLine.setBatchId(noticeLine.getBatchId());
+ salesLine.setBatchCode(noticeLine.getBatchCode());
+ salesLine.setOqcCheckFlag(noticeLine.getOqcCheckFlag());
+ productSalesLineMapper.insert(salesLine);
+ }
+
+ return productSales.getId();
}
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/sn/MesWmSnServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/sn/MesWmSnServiceImpl.java
index e07b1c4..2cf874d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/sn/MesWmSnServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/sn/MesWmSnServiceImpl.java
@@ -11,7 +11,7 @@
import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum;
import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
import jakarta.annotation.Resource;
@@ -41,7 +41,7 @@
@Resource
private MesMdAutoCodeRecordService autoCodeRecordService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesProWorkOrderService workOrderService;
@Resource
@@ -51,7 +51,7 @@
@Transactional(rollbackFor = Exception.class)
public void generateSnCodes(MesWmSnGenerateReqVO reqVO) {
// 鏍¢獙鐗╂枡鏄惁瀛樺湪
- itemService.validateItemExists(reqVO.getItemId());
+ mdmItemService.validateItemExists(reqVO.getItemId());
// 鏍¢獙宸ュ崟鏄惁瀛樺湪
if (reqVO.getWorkOrderId() != null) {
workOrderService.validateWorkOrderExists(reqVO.getWorkOrderId());
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
index 83f1115..dd61bb8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
@@ -4,7 +4,7 @@
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transaction.MesWmTransactionDO;
@@ -13,7 +13,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.transaction.MesWmTransactionMapper;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
@@ -47,7 +47,7 @@
@Resource
private MesWmBatchService batchService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmWarehouseService warehouseService;
@Resource
@@ -144,8 +144,8 @@
}
// 2. 鍏ュ簱鏃讹細鍚敤鎵规绠$悊鐨勭墿鏂欙紝蹇呴』浼犻�掓壒娆″彿
if (inbound) {
- MesMdItemDO item = itemService.validateItemExists(reqDTO.getItemId());
- if (Boolean.TRUE.equals(item.getBatchFlag())) {
+ MesMdmItemDO item = mdmItemService.validateItemExists(reqDTO.getItemId());
+ if (Boolean.TRUE.equals(item.getIsBatchManaged())) {
if (StrUtil.isEmpty(reqDTO.getBatchCode()) && reqDTO.getBatchId() == null) {
throw exception(WM_TRANSACTION_BATCH_REQUIRED);
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferLineServiceImpl.java
index 7bc662a..be322c6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferLineServiceImpl.java
@@ -5,7 +5,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.transfer.MesWmTransferLineMapper;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
@@ -38,7 +38,7 @@
@Lazy
private MesWmTransferDetailService transferDetailService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
@Resource
private MesWmWarehouseAreaService warehouseAreaService;
@Resource
@@ -109,7 +109,7 @@
// 鏍¢獙鐖舵暟鎹彲缂栬緫
transferService.validateTransferEditable(reqVO.getTransferId());
// 鏍¢獙浜у搧瀛樺湪
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
// 鏍¢獙鏉ユ簮浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鍏宠仈鍏崇郴
warehouseAreaService.validateWarehouseAreaExists(reqVO.getFromWarehouseId(),
reqVO.getFromLocationId(), reqVO.getFromAreaId());
--
Gitblit v1.9.3