From e1e0d48eb7ab2b305e6062f23610f8be9db3bed6 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 29 八月 2026 13:46:26 +0800
Subject: [PATCH] feat(wms): 新增库存汇总统计与预警功能

---
 src/api/mes/wm/materialstock/index.ts |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/src/api/mes/wm/materialstock/index.ts b/src/api/mes/wm/materialstock/index.ts
index 49aab96..7316dc2 100644
--- a/src/api/mes/wm/materialstock/index.ts
+++ b/src/api/mes/wm/materialstock/index.ts
@@ -24,9 +24,31 @@
     vendorId?: number; // 渚涘簲鍟嗙紪鍙�
     vendorName?: string; // 渚涘簲鍟嗗悕绉�
     quantity?: number; // 鍦ㄥ簱鏁伴噺
+    frozenQuantity?: number; // 鍐荤粨鏁伴噺
+    reservedQuantity?: number; // 鍗犵敤閲�
+    inTransitQuantity?: number; // 鍦ㄩ�旈噺
+    availableQuantity?: number; // 鍙敤閲�
+    stockState?: number; // 搴撳瓨鐘舵�侊細10鏆傚瓨搴擄紝20鍚堟牸搴擄紝30宸插嚭搴�
+    expiryDate?: string; // 鏈夋晥鏈�
+    ageDays?: number; // 搴撻緞澶╂暟
+    warningLevel?: 'LOW_STOCK' | 'EXPIRING' | 'AGEING' | null; // 椋庨櫓绫诲瀷
     receiptTime?: string; // 鍏ュ簱鏃ユ湡
     frozen?: boolean; // 鏄惁鍐荤粨
     createTime?: Date; // 鍒涘缓鏃堕棿
+  }
+
+  /** 搴撳瓨姹囨�荤粨鏋� */
+  export interface MaterialStockSummary {
+    itemId?: number; // 鍝佺ID锛堟寜鍝佺姹囨�绘椂杩斿洖锛�
+    itemCode?: string; // 鍝佺缂栫爜
+    itemName?: string; // 鍝佺鍚嶇О
+    batchId?: number; // 鎵规ID锛堟寜鎵规姹囨�绘椂杩斿洖锛�
+    batchCode?: string; // 鎵规鍙�
+    warehouseId?: number; // 浠撳簱ID锛堟寜浠撳簱姹囨�绘椂杩斿洖锛�
+    warehouseName?: string; // 浠撳簱鍚嶇О
+    stockState?: number; // 搴撳瓨鐘舵��
+    stockStateName?: string; // 搴撳瓨鐘舵�佸悕绉�
+    totalQuantity?: number; // 姹囨�绘暟閲�
   }
 }
 
@@ -59,3 +81,112 @@
     params,
   });
 }
+
+/** 搴撳瓨璋冩暣锛堣嚜瀹氫箟鍑哄叆搴擄級- 鍏ュ簱 */
+export interface MaterialStockAdjustInParams {
+  itemId: number; // 鐗╂枡ID
+  warehouseId: number; // 浠撳簱ID
+  locationId: number; // 搴撳尯ID
+  areaId: number; // 搴撲綅ID
+  batchId?: number; // 鎵规ID锛堥�夋嫨宸叉湁鎵规鏃朵紶鍏ワ級
+  batchCode?: string; // 鎵规鍙凤紙鏂板缓鎵规鏃朵紶鍏ワ級
+  produceDate?: string; // 鐢熶骇鏃ユ湡锛堟柊寤烘壒娆℃椂浼犲叆锛�
+  expireDate?: string; // 鏈夋晥鏈燂紙鏂板缓鎵规鏃朵紶鍏ワ級
+  receiptDate?: string; // 鍏ュ簱鏃ユ湡
+  vendorId?: number; // 渚涘簲鍟咺D
+  purchaseOrderCode?: string; // 閲囪喘璁㈠崟鍙�
+  lotNumber?: string; // 鐢熶骇鎵瑰彿
+  qualityStatus?: string; // 璐ㄩ噺鐘舵��
+  quantity: number; // 鍏ュ簱鏁伴噺锛堝繀椤诲ぇ浜�0锛�
+  reason?: string; // 鍏ュ簱鍘熷洜
+}
+
+/** 搴撳瓨璋冩暣锛堣嚜瀹氫箟鍑哄叆搴擄級- 鍑哄簱 */
+export interface MaterialStockAdjustOutParams {
+  itemId: number; // 鐗╂枡ID
+  warehouseId: number; // 浠撳簱ID
+  locationId: number; // 搴撳尯ID
+  areaId: number; // 搴撲綅ID
+  batchId?: number; // 鎵规ID
+  batchCode?: string; // 鎵规鍙�
+  vendorId?: number; // 渚涘簲鍟咺D
+  quantity: number; // 鍑哄簱鏁伴噺锛堝繀椤诲ぇ浜�0锛�
+  reason?: string; // 鍑哄簱鍘熷洜
+}
+
+/** 鑷畾涔夊叆搴� */
+export function adjustMaterialStockIn(data: MaterialStockAdjustInParams) {
+  return requestClient.post<number>('/mes/wm/material-stock/adjust-in', data);
+}
+
+/** 鑷畾涔夊嚭搴� */
+export function adjustMaterialStockOut(data: MaterialStockAdjustOutParams) {
+  return requestClient.post<number>('/mes/wm/material-stock/adjust-out', data);
+}
+
+/** 搴撳瓨绉诲簱 */
+export interface MaterialStockMoveParams {
+  materialStockId: number; // 搴撳瓨璁板綍ID
+  toWarehouseId: number; // 鐩爣浠撳簱ID
+  toLocationId: number; // 鐩爣搴撳尯ID
+  toAreaId: number; // 鐩爣搴撲綅ID
+  quantity: number; // 绉诲簱鏁伴噺
+  remark?: string; // 澶囨敞
+}
+
+/** 搴撳瓨绉诲簱 */
+export function moveMaterialStock(data: MaterialStockMoveParams) {
+  return requestClient.post<boolean>('/mes/wm/material-stock/move', data);
+}
+
+/** 搴撳瓨璋冩暣锛堟鏁�=鍏ュ簱锛岃礋鏁�=鍑哄簱锛�- 鏃ф帴鍙o紝淇濈暀鍏煎 */
+export interface MaterialStockAdjustParams {
+  itemId: number; // 鐗╂枡ID
+  warehouseId: number; // 浠撳簱ID
+  locationId: number; // 搴撳尯ID
+  areaId: number; // 搴撲綅ID
+  batchId?: number; // 鎵规ID
+  batchCode?: string; // 鎵规鍙�
+  vendorId?: number; // 渚涘簲鍟咺D
+  quantity: number; // 璋冩暣鏁伴噺锛堟鏁�=鍏ュ簱锛岃礋鏁�=鍑哄簱锛�
+  reason?: string; // 璋冩暣鍘熷洜
+}
+
+/** 搴撳瓨璋冩暣锛堟鏁�=鍏ュ簱锛岃礋鏁�=鍑哄簱锛� - 鏃ф帴鍙o紝淇濈暀鍏煎 */
+export function adjustMaterialStock(data: MaterialStockAdjustParams) {
+  return requestClient.post<number>('/mes/wm/material-stock/adjust', data);
+}
+
+/** 搴撳瓨姹囨�绘煡璇㈠弬鏁� */
+export interface MaterialStockSummaryParams {
+  stockState?: number; // 搴撳瓨鐘舵�侊細10鏆傚瓨搴擄紝20鍚堟牸搴擄紝30宸插嚭搴�
+  itemId?: number; // 鍝佺ID
+  batchCode?: string; // 鎵规鍙�
+  warehouseId?: number; // 浠撳簱ID
+  locationId?: number; // 搴撳尯ID
+  areaId?: number; // 搴撲綅ID
+}
+
+/** 鎸夊搧绉嶆眹鎬诲簱瀛樻暟閲� */
+export function getStockSummaryByItem(params: MaterialStockSummaryParams) {
+  return requestClient.get<MesWmMaterialStockApi.MaterialStockSummary[]>(
+    '/mes/wm/material-stock/summary-by-item',
+    { params },
+  );
+}
+
+/** 鎸夋壒娆℃眹鎬诲簱瀛樻暟閲� */
+export function getStockSummaryByBatch(params: MaterialStockSummaryParams) {
+  return requestClient.get<MesWmMaterialStockApi.MaterialStockSummary[]>(
+    '/mes/wm/material-stock/summary-by-batch',
+    { params },
+  );
+}
+
+/** 鎸変粨搴撴眹鎬诲簱瀛樻暟閲� */
+export function getStockSummaryByWarehouse(params: MaterialStockSummaryParams) {
+  return requestClient.get<MesWmMaterialStockApi.MaterialStockSummary[]>(
+    '/mes/wm/material-stock/summary-by-warehouse',
+    { params },
+  );
+}

--
Gitblit v1.9.3