From 942e47f8987bd8c266e58863bed3895d9cb4ded0 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 23 十二月 2024 20:51:38 +0800
Subject: [PATCH] 增加任务类型枚举,增加测试出库上报

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/IApiInfoRepository.cs                                    |   17 +
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5edb54ba-ada3-4951-bc21-e88f75c6e921.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs                                    |   44 +-
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs                                                 |   31 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs                                   |  135 +++++++-
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs                                         |   82 ++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs                                 |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs                                    |    8 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b331756d-c9e2-4038-b5f1-5e812b045d1a.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs                                   |   42 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs                                   |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/AGV/AgvController.cs                                |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs                                     |   76 ++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpRequestContent.cs                                              |   15 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                          |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs                                |   10 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb2b9ab8-c871-4911-b102-fa668a9b7a3f.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs                                         |   56 +++
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/17abf4db-5c0e-4dd5-ad61-d8c5dd739130.vsidx |    0 
 项目资料/接口文档/MES业务流程图V1.0.xlsx                                                                                  |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/AGVService/InvokeAGVService.cs                                   |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj                                          |    1 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7b08ed57-62e6-4b82-a17f-35d723b5ca5f.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs                                       |    1 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8164f66c-be5c-498f-a0df-0efcbb2866af.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9d62c97e-0b1f-4029-a379-1fd657ac5e9d.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/ApiInfoService.cs                                            |   25 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                                           |  187 +++++++----
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                            |   15 
 /dev/null                                                                                                    |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IApiInfoService.cs                                          |   19 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/AGV/AgvResponseContent.cs                                             |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/IAGVService/IInvokeAGVService.cs                                 |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/ApiInfoRepository.cs                                      |   20 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs                                                  |   31 +
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/319444dd-52fa-4755-a1f0-6ec8f7d83f7b.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPOutboundModel.cs                                        |   85 +++++
 37 files changed, 774 insertions(+), 145 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/17abf4db-5c0e-4dd5-ad61-d8c5dd739130.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/17abf4db-5c0e-4dd5-ad61-d8c5dd739130.vsidx"
new file mode 100644
index 0000000..5ebad56
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/17abf4db-5c0e-4dd5-ad61-d8c5dd739130.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2c5380f0-67c1-41e2-940e-3a1dd36603f2.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2c5380f0-67c1-41e2-940e-3a1dd36603f2.vsidx"
deleted file mode 100644
index 1602e1f..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2c5380f0-67c1-41e2-940e-3a1dd36603f2.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/319444dd-52fa-4755-a1f0-6ec8f7d83f7b.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/319444dd-52fa-4755-a1f0-6ec8f7d83f7b.vsidx"
new file mode 100644
index 0000000..f356f4b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/319444dd-52fa-4755-a1f0-6ec8f7d83f7b.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4cef1081-0412-49a6-a284-ce73df6b1458.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4cef1081-0412-49a6-a284-ce73df6b1458.vsidx"
deleted file mode 100644
index 5f25c44..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4cef1081-0412-49a6-a284-ce73df6b1458.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5edb54ba-ada3-4951-bc21-e88f75c6e921.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5edb54ba-ada3-4951-bc21-e88f75c6e921.vsidx"
new file mode 100644
index 0000000..10e177d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5edb54ba-ada3-4951-bc21-e88f75c6e921.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7a833a68-07df-4786-a4b8-e9726236f98d.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7a833a68-07df-4786-a4b8-e9726236f98d.vsidx"
deleted file mode 100644
index a2544ac..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7a833a68-07df-4786-a4b8-e9726236f98d.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7b08ed57-62e6-4b82-a17f-35d723b5ca5f.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7b08ed57-62e6-4b82-a17f-35d723b5ca5f.vsidx"
new file mode 100644
index 0000000..0487b8e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7b08ed57-62e6-4b82-a17f-35d723b5ca5f.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8164f66c-be5c-498f-a0df-0efcbb2866af.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8164f66c-be5c-498f-a0df-0efcbb2866af.vsidx"
new file mode 100644
index 0000000..2fa8be8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8164f66c-be5c-498f-a0df-0efcbb2866af.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/94b1eced-02e0-42fa-a704-73db3cda704b.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/94b1eced-02e0-42fa-a704-73db3cda704b.vsidx"
deleted file mode 100644
index 45f1eb1..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/94b1eced-02e0-42fa-a704-73db3cda704b.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9d62c97e-0b1f-4029-a379-1fd657ac5e9d.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9d62c97e-0b1f-4029-a379-1fd657ac5e9d.vsidx"
new file mode 100644
index 0000000..1f27b90
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9d62c97e-0b1f-4029-a379-1fd657ac5e9d.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b331756d-c9e2-4038-b5f1-5e812b045d1a.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b331756d-c9e2-4038-b5f1-5e812b045d1a.vsidx"
new file mode 100644
index 0000000..aa624a3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b331756d-c9e2-4038-b5f1-5e812b045d1a.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb2b9ab8-c871-4911-b102-fa668a9b7a3f.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb2b9ab8-c871-4911-b102-fa668a9b7a3f.vsidx"
new file mode 100644
index 0000000..c372f8c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb2b9ab8-c871-4911-b102-fa668a9b7a3f.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fde68f49-1fc8-44c8-8785-4d80e9e536c1.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fde68f49-1fc8-44c8-8785-4d80e9e536c1.vsidx"
deleted file mode 100644
index a1dd018..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fde68f49-1fc8-44c8-8785-4d80e9e536c1.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/ApiInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/ApiInfoRepository.cs"
new file mode 100644
index 0000000..9f3a7bc
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/ApiInfoRepository.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicRepository
+{
+    /// <summary>
+    /// 鎺ュ彛淇℃伅浠撳偍瀹炵幇灞�
+    /// </summary>
+    public class ApiInfoRepository : RepositoryBase<Dt_ApiInfo>, IApiInfoRepository
+    {
+        public ApiInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/ApiInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/ApiInfoService.cs"
new file mode 100644
index 0000000..cc13b96
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/ApiInfoService.cs"
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_BasicRepository;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public class ApiInfoService : ServiceBase<Dt_ApiInfo, IApiInfoRepository>, IApiInfoService
+    {
+        public ApiInfoService(IApiInfoRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IApiInfoRepository Repository => BaseDal;
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs"
index 4100cb6..037b1f9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/APIEnum/APIEnum.cs"
@@ -7,11 +7,40 @@
 
 namespace WIDESEA_Common.APIEnum
 {
+    /// <summary>
+    /// 
+    /// </summary>
     public enum APIEnum
     {
+        /// <summary>
+        /// AGV鍙戦�佷换鍔℃帴鍙�
+        /// </summary>
         [Description("AGV鍙戦�佷换鍔℃帴鍙�")]
         AgvSendTask,
+        /// <summary>
+        /// AGV瀹夊叏淇″彿鍥炲
+        /// </summary>
         [Description("AGV瀹夊叏淇″彿鍥炲")]
-        AgvSecureReply
+        AgvSecureReply,
+        /// <summary>
+        /// ERP鏀惰揣鎺ュ彛璋冪敤
+        /// </summary>
+        [Description("ERP鏀惰揣鎺ュ彛璋冪敤")]
+        InvokeMatReceiveApi,
+        /// <summary>
+        /// ERP鐗╂枡IQC妫�楠屾帴鍙h皟鐢�
+        /// </summary>
+        [Description("ERP鐗╂枡IQC妫�楠屾帴鍙h皟鐢�")]
+        InvokeCheckOrderApi,
+        /// <summary>
+        /// ERP鐗╂枡鍏ュ簱鎺ュ彛璋冪敤
+        /// </summary>
+        [Description("ERP鐗╂枡鍏ュ簱鎺ュ彛璋冪敤")]
+        InvokeInboundOrderApi,
+        /// <summary>
+        /// ERP鐗╂枡鍑哄簱鎺ュ彛璋冪敤
+        /// </summary>
+        [Description("ERP鐗╂枡鍑哄簱鎺ュ彛璋冪敤")]
+        InvokeOutboundOrderApi
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
index 95b3070..863b7da 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
@@ -47,6 +47,7 @@
 
         [Description("绉诲簱閿佸畾")]
         绉诲簱閿佸畾 = 9,
+
         [Description("鍏ュ簱瀹屾垚鏈缓鍑哄簱鍗�")]
         鍏ュ簱瀹屾垚鏈缓鍑哄簱鍗� = 10
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
new file mode 100644
index 0000000..8a7a89c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.TaskEnum
+{
+    /// <summary>
+    /// 浠诲姟鐘舵��
+    /// </summary>
+    public enum TaskStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓浠诲姟
+        /// </summary>
+        [Description("鏂板缓")]
+        New = 100,
+        /// <summary>
+        /// 鍫嗗灈鏈哄緟鎵ц
+        /// </summary>
+        [Description("鍫嗗灈鏈哄緟鎵ц")]
+        SC_Execute= 200,
+        /// <summary>
+        /// 鍫嗗灈鏈烘墽琛屼腑
+        /// </summary>
+        [Description("鍫嗗灈鏈烘墽琛屼腑")]
+        SC_Executing = 210,
+        /// <summary>
+        /// 鍫嗗灈鏈哄畬鎴�
+        /// </summary>
+        [Description("鍫嗗灈鏈哄畬鎴�")]
+        SC_Finish = 220,
+        /// <summary>
+        /// 浠诲姟瀹屾垚
+        /// </summary>
+        [Description("浠诲姟瀹屾垚")]
+        Finish = 900,
+        /// <summary>
+        /// 浠诲姟鎸傝捣
+        /// </summary>
+        [Description("浠诲姟鎸傝捣")]
+        Pending = 970,
+        /// <summary>
+        /// 浠诲姟鍙栨秷
+        /// </summary>
+        [Description("浠诲姟鍙栨秷")]
+        Cancel = 980,
+        /// <summary>
+        /// 浠诲姟寮傚父
+        /// </summary>
+        [Description("浠诲姟寮傚父")]
+        Exception = 990,
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
index 937e251..bed3f19 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
@@ -7,65 +7,7 @@
 
 namespace WIDESEA_Common.TaskEnum
 {
-    public enum TaskInboundTypeEnum
-    {
-        /// <summary>
-        /// 鍏ュ簱
-        /// </summary>
-        [Description("鍏ュ簱")]
-        Inbound = 200,
-        /// <summary>
-        /// 鐩樼偣鍏ュ簱
-        /// </summary>
-        [Description("鐩樼偣鍏ュ簱")]
-        InInventory = 201,
-        /// <summary>
-        /// 鍒嗘嫞鍏ュ簱
-        /// </summary>
-        [Description("鍒嗘嫞鍏ュ簱")]
-        InPick = 202,
-        /// <summary>
-        /// 璐ㄦ鍏ュ簱
-        /// </summary>
-        [Description("璐ㄦ鍏ュ簱")]
-        InQuality = 203,
-        /// <summary>
-        /// 娴嬭瘯鏋跺叆搴�
-        /// </summary>
-        [Description("娴嬭瘯鏋跺叆搴�")]
-        TestInbound = 204,
-    }
-
-    public enum TaskOutboundTypeEnum
-    {
-        /// <summary>
-        /// 鍑哄簱
-        /// </summary>
-        [Description("鍑哄簱")]
-        Outbound = 100,
-        /// <summary>
-        /// 鐩樼偣鍑哄簱
-        /// </summary>
-        [Description("鐩樼偣鍑哄簱")]
-        OutInventory = 101,
-        /// <summary>
-        /// 鍒嗘嫞鍑哄簱
-        /// </summary>
-        [Description("鍒嗘嫞鍑哄簱")]
-        OutPick = 102,
-        /// <summary>
-        /// 璐ㄦ鍑哄簱
-        /// </summary>
-        [Description("璐ㄦ鍑哄簱")]
-        OutQuality = 103,
-        /// <summary>
-        /// 娴嬭瘯鏋跺嚭搴�
-        /// </summary>
-        [Description("娴嬭瘯鏋跺嚭搴�")]
-        OutTestStand = 104,
-    }
-
-    public enum TaskRelocationTypeEnum
+    public enum TaskTypeEnum
     {
         /// <summary>
         /// 搴撳唴绉诲簱
@@ -76,11 +18,126 @@
         /// 搴撳绉诲簱
         /// </summary>
         [Description("搴撳绉诲簱")]
-        RelocationIn = 301
-    }
-
-    public enum TaskOtherTypeEnum
-    {
-
+        RelocationIn = 301,
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("鍏ュ簱")]
+        Inbound = 1050,
+        /// <summary>
+        /// 鐩樼偣鍏ュ簱
+        /// </summary>
+        [Description("鐩樼偣鍏ュ簱")]
+        InInventory = 1100,
+        /// <summary>
+        /// 鍒嗘嫞鍏ュ簱
+        /// </summary>
+        [Description("鍒嗘嫞鍏ュ簱")]
+        InPick = 1150,
+        /// <summary>
+        /// 璐ㄦ鍏ュ簱
+        /// </summary>
+        [Description("璐ㄦ鍏ュ簱")]
+        InQuality = 1200,
+        /// <summary>
+        /// 娴嬭瘯鏋跺叆搴�
+        /// </summary>
+        [Description("娴嬭瘯鏋跺叆搴�")]
+        TestInbound = 2000,
+        /// <summary>
+        /// 娌瑰ⅷ浠撳叆搴�
+        /// </summary>
+        [Description("娌瑰ⅷ浠撳叆搴�")]
+        PrintingInbound = 2050,
+        /// <summary>
+        /// 杈呮枡浠撳叆搴�
+        /// </summary>
+        [Description("杈呮枡浠撳叆搴�")]
+        AccessoryInbound = 2100,
+        /// <summary>
+        /// 鏉挎枡浠撳叆搴�
+        /// </summary>
+        [Description("鏉挎枡浠撳叆搴�")]
+        SheetInbound = 2150,
+        /// <summary>
+        /// 骞茶啘浠撳叆搴�
+        /// </summary>
+        [Description("骞茶啘浠撳叆搴�")]
+        DryfilmInbound = 2200,
+        /// <summary>
+        /// PP浠撳叆搴�
+        /// </summary>
+        [Description("PP浠撳叆搴�")]
+        PPInbound = 2250,
+        /// <summary>
+        /// 鎴愬搧浠撳叆搴�
+        /// </summary>
+        [Description("鎴愬搧浠撳叆搴�")]
+        ProductInbound = 2300,
+        /// <summary>
+        /// 闃荤剨浠撳叆搴�
+        /// </summary>
+        [Description("闃荤剨浠撳叆搴�")]
+        SolderInbound = 2350,
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        Outbound = 3000,
+        /// <summary>
+        /// 鐩樼偣鍑哄簱
+        /// </summary>
+        [Description("鐩樼偣鍑哄簱")]
+        OutInventory = 3050,
+        /// <summary>
+        /// 鍒嗘嫞鍑哄簱
+        /// </summary>
+        [Description("鍒嗘嫞鍑哄簱")]
+        OutPick = 3100,
+        /// <summary>
+        /// 璐ㄦ鍑哄簱
+        /// </summary>
+        [Description("璐ㄦ鍑哄簱")]
+        OutQuality = 3150,
+        /// <summary>
+        /// 娴嬭瘯鏋跺嚭搴�
+        /// </summary>
+        [Description("娴嬭瘯鏋跺嚭搴�")]
+        TestOutbound = 4000,
+        /// <summary>
+        /// 娌瑰ⅷ浠撳嚭搴�
+        /// </summary>
+        [Description("娌瑰ⅷ浠撳嚭搴�")]
+        PrintingOutbound = 4050,
+        /// <summary>
+        /// 杈呮枡浠撳嚭搴�
+        /// </summary>
+        [Description("杈呮枡浠撳嚭搴�")]
+        AccessoryOutbound = 4100,
+        /// <summary>
+        /// 鏉挎枡浠撳嚭搴�
+        /// </summary>
+        [Description("鏉挎枡浠撳嚭搴�")]
+        SheetOutbound = 4150,
+        /// <summary>
+        /// 骞茶啘浠撳嚭搴�
+        /// </summary>
+        [Description("骞茶啘浠撳嚭搴�")]
+        DryfilmOutbound = 4200,
+        /// <summary>
+        /// PP浠撳嚭搴�
+        /// </summary>
+        [Description("PP浠撳嚭搴�")]
+        PPOutbound = 4250,
+        /// <summary>
+        /// 鎴愬搧浠撳嚭搴�
+        /// </summary>
+        [Description("鎴愬搧浠撳嚭搴�")]
+        ProductOutbound = 4300,
+        /// <summary>
+        /// 闃荤剨浠撳嚭搴�
+        /// </summary>
+        [Description("闃荤剨浠撳嚭搴�")]
+        SolderOutbound = 4350,
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
new file mode 100644
index 0000000..7685dce
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
@@ -0,0 +1,76 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.WareHouseEnum
+{
+    /// <summary>
+    /// 浠撳簱
+    /// HA57 = 娣畨浜屽巶 - 鏉挎枡浠�<br/>
+    /// HA58 = 娣畨浜屽巶 - PP浠�<br/>
+    /// HA60 = 娣畨浜屽巶 - 杈呮枡浠�<br/>
+    /// HA64 = 娣畨浜屽巶 - 娴嬭瘯鏋朵粨<br/>
+    /// HA71 = 娣畨浜屽巶 - 鎴愬搧浠�<br/>
+    /// HA72 = 娣畨浜屽巶 - 灏炬暟浠�<br/>
+    /// HA73 = 娣畨浜屽巶 - 鐮斿彂浠�<br/>
+    /// HA101 = 娣畨浜屽巶 - 鎴愬搧浠撳钩搴�<br/>
+    /// HA152 = 娣畨浜屽巶 - 骞茶啘浠�<br/>
+    /// HA153 = 娣畨浜屽巶 - 娌瑰ⅷ浠�<br/>
+    /// </summary>
+    public enum WarehouseEnum
+    {
+        /// <summary>
+        /// 鏉挎枡浠�
+        /// </summary>
+        [Description("鏉挎枡浠�")]
+        HA57,
+        /// <summary>
+        /// PP浠�
+        /// </summary>
+        [Description("PP浠�")]
+        HA58,
+        /// <summary>
+        /// 杈呮枡浠�
+        /// </summary>
+        [Description("杈呮枡浠�")]
+        HA60,
+        /// <summary>
+        /// 娴嬭瘯鏋朵粨
+        /// </summary>
+        [Description("娴嬭瘯鏋朵粨")]
+        HA64,
+        /// <summary>
+        /// 鎴愬搧浠�
+        /// </summary>
+        [Description("鎴愬搧浠�")]
+        HA71,
+        /// <summary>
+        /// 灏炬暟浠�
+        /// </summary>
+        [Description("灏炬暟浠�")]
+        HA72,
+        /// <summary>
+        /// 鐮斿彂浠�
+        /// </summary>
+        [Description("鐮斿彂浠�")]
+        HA73,
+        /// <summary>
+        /// 鎴愬搧浠撳钩搴�
+        /// </summary>
+        [Description("鎴愬搧浠撳钩搴�")]
+        HA101,
+        /// <summary>
+        /// 骞茶啘浠�
+        /// </summary>
+        [Description("骞茶啘浠�")]
+        HA152,
+        /// <summary>
+        /// 娌瑰ⅷ浠�
+        /// </summary>
+        [Description("娌瑰ⅷ浠�")]
+        HA153
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/AGV/AgvResponseContent.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/AGV/AgvResponseContent.cs"
index edeb942..3eeefb9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/AGV/AgvResponseContent.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/AGV/AgvResponseContent.cs"
@@ -6,6 +6,7 @@
 
 namespace WIDESEA_DTO.AGV
 {
+    #region 寮冪敤
     public class AgvResponseContent
     {
         /// <summary>
@@ -25,4 +26,5 @@
         /// </summary>
         public string Data { get; set; }
     }
+    #endregion
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpRequestContent.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpRequestContent.cs"
new file mode 100644
index 0000000..4b047a0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpRequestContent.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.ERP
+{
+    public class ErpRequestContent
+    {
+        public string Data { get ; set; }
+        public string Rdata { get; set; }
+        public int res { get ; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs"
index 7ac656d..509c22f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/TestToolModel.cs"
@@ -14,9 +14,9 @@
     public class TestToolOutModel
     {
         /// <summary>
-        /// 娴嬫灦鎵樼洏缂栫爜
+        /// 娴嬭瘯鏋舵壒娆″彿
         /// </summary>
-        [PropertyValidate("娴嬫灦鎵樼洏缂栫爜", NotNullAndEmpty = true)]
+        [PropertyValidate("娴嬭瘯鏋舵壒娆″彿", NotNullAndEmpty = true)]
         public string ToolCode { get; set; }
         /// <summary>
         /// 鐩爣鍦板潃鐮�
@@ -29,17 +29,17 @@
     /// 娴嬭瘯鏋舵姤搴熸ā鍨�
     /// </summary>
     [ModelValidate]
-    public class TestToolScrapModel
+    public class TestToolScrap
     {
         /// <summary>
-        /// 娴嬫灦缂栫爜
+        /// 娴嬭瘯鏋舵壒娆″彿
         /// </summary>
-        [PropertyValidate("娴嬫灦缂栫爜", NotNullAndEmpty = true)]
+        [PropertyValidate("娴嬭瘯鏋舵壒娆″彿", NotNullAndEmpty = true)]
         public string ToolCode { get; set; }
     }
 
     /// <summary>
-    /// 娴嬭瘯鏋堕��搴撴ā鍨�
+    /// 娴嬭瘯鏋堕��搴�
     /// </summary>
     [ModelValidate]
     public class TestToolBackModel
@@ -51,9 +51,24 @@
         public string SourceAddressCode { get; set; }
 
         /// <summary>
-        /// 娴嬭瘯鏋剁紪鐮�
+        /// 娴嬭瘯鏋舵壒娆″彿
         /// </summary>
-        [PropertyValidate("娴嬭瘯鏋剁紪鐮�", NotNullAndEmpty = true)]
+        [PropertyValidate("娴嬭瘯鏋舵壒娆″彿", NotNullAndEmpty = true)]
         public string TestToolCode { get; set; }
     }
+    /// <summary>
+    ///娴嬭瘯鏋跺悓姝�
+    /// </summary>
+    public class TestToolSynInfo
+    {
+        /// <summary>
+        /// 娴嬭瘯鏋舵壒娆″彿
+        /// </summary>
+        public string ToolCode { get; set; }
+        /// <summary>
+        /// 鍒濆瀵垮懡
+        /// </summary>
+        public int Life { get; set; }
+
+    }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/AGVService/InvokeAGVService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/AGVService/InvokeAGVService.cs"
index 4ce1f59..2a9ecc8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/AGVService/InvokeAGVService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/AGVService/InvokeAGVService.cs"
@@ -12,6 +12,7 @@
 
 namespace WIDESEA_External.AGVService
 {
+    #region 寮冪敤
     public class InvokeAGVService : IInvokeAGVService
     {
         public static IInvokeAGVService Intance
@@ -93,4 +94,5 @@
             return new AgvResponseContent();
         }
     }
+    #endregion
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs"
index fef6edc..9f898a1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs"
@@ -3,8 +3,11 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.APIEnum;
 using WIDESEA_Core.Helper;
 using WIDESEA_External.Model;
+using WIDESEA_IBasicRepository;
+using WIDESEA_Model.Models;
 
 namespace WIDESEA_External.ERPService
 {
@@ -13,8 +16,11 @@
     /// </summary>
     public class InvokeERPService : IInvokeERPService
     {
-        string serviceIp = "";
-
+        private readonly IApiInfoRepository _apiInfoRepository;
+        public InvokeERPService(IApiInfoRepository apiInfoRepository)
+        {
+            _apiInfoRepository= apiInfoRepository;
+        }
         /// <summary>
         /// ERP鏀惰揣鍗曟帴鍙h皟鐢�
         /// </summary>
@@ -22,8 +28,7 @@
         /// <returns></returns>
         public string InvokeMatReceiveApi(ERPReceiveModel receiveModel)
         {
-            string serviceAddress = "";
-
+            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x=>x.ApiCode==APIEnum.InvokeMatReceiveApi.ToString());
             ERPBaseModel<ERPReceiveModel> model = new ERPBaseModel<ERPReceiveModel>()
             {
                 Data = receiveModel,
@@ -31,8 +36,7 @@
                 Type = "toTCWMSReceive",
                 SecurityCode = ""
             };
-
-            string response = HttpHelper.Post(serviceIp + serviceAddress, model.Serialize());
+            string response = HttpHelper.Post(apiInfo.ApiAddress, model.Serialize());
             return response;
         }
 
@@ -43,7 +47,7 @@
         /// <returns></returns>
         public string InvokeCheckOrderApi(ERPCheckModel checkModel)
         {
-            string serviceAddress = "";
+            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeCheckOrderApi.ToString());
             ERPBaseModel<ERPCheckModel> model = new ERPBaseModel<ERPCheckModel>()
             {
                 Data = checkModel,
@@ -52,7 +56,7 @@
                 SecurityCode = ""
             };
 
-            string response = HttpHelper.Post(serviceIp + serviceAddress, model.Serialize());
+            string response = HttpHelper.Post(apiInfo.ApiAddress, model.Serialize());
             return response;
         }
 
@@ -63,7 +67,7 @@
         /// <returns></returns>
         public string InvokeInboundOrderApi(ERPInboundModel inboundModel)
         {
-            string serviceAddress = "";
+            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeInboundOrderApi.ToString());
             ERPBaseModel<ERPInboundModel> model = new ERPBaseModel<ERPInboundModel>()
             {
                 Data = inboundModel,
@@ -72,7 +76,25 @@
                 SecurityCode = ""
             };
 
-            string response = HttpHelper.Post(serviceIp + serviceAddress, model.Serialize());
+            string response = HttpHelper.Post(apiInfo.ApiAddress, model.Serialize());
+            return response;
+        }
+        /// <summary>
+        /// ERP鐗╂枡鍑哄簱鎺ュ彛璋冪敤
+        /// </summary>
+        /// <param name="outboundModel"></param>
+        /// <returns></returns>
+        public string InvokeOutboundOrderApi(ERPOutboundModel outboundModel)
+        {
+            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeOutboundOrderApi.ToString());
+            ERPBaseModel<ERPOutboundModel> model = new ERPBaseModel<ERPOutboundModel>()
+            {
+                Data = outboundModel,
+                Desc = "鏉愭枡鍑哄簱",
+                Type = "toBomMaterialOutTC",
+                SecurityCode = "LxkgPgN3$U"
+            };
+            string response = HttpHelper.Post(apiInfo.ApiAddress, model.Serialize());
             return response;
         }
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IAGVService/IInvokeAGVService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IAGVService/IInvokeAGVService.cs"
index db0ccfa..79a57dc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IAGVService/IInvokeAGVService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IAGVService/IInvokeAGVService.cs"
@@ -9,6 +9,7 @@
 
 namespace WIDESEA_External.AGVService
 {
+    #region 寮冪敤
     public interface IInvokeAGVService:IDependency
     {
         /// <summary>
@@ -25,4 +26,5 @@
         WebResponseContent AgvSecureReply(AgvSecureReplyModel secureReplyModel);
         AgvResponseContent AgvUpdateTask(AgvUpdateModel agvUpdateModel);
     }
+    #endregion
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs"
index 9e80c13..e433fe7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs"
@@ -33,5 +33,6 @@
         /// <param name="inboundModel"></param>
         /// <returns></returns>
         string InvokeInboundOrderApi(ERPInboundModel inboundModel);
+        string InvokeOutboundOrderApi(ERPOutboundModel outboundModel);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPOutboundModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPOutboundModel.cs"
new file mode 100644
index 0000000..61a20f2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPOutboundModel.cs"
@@ -0,0 +1,85 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_External.Model
+{
+    /// <summary>
+    /// 鍑哄簱鍗曞洖浼燛RP
+    /// </summary>
+    public class ERPOutboundModel
+    {
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        public int Way { get; set; }
+        /// <summary>
+        /// 涓婚敭鍊�
+        /// </summary>
+        public string UniqueTag { get; set; }
+        /// <summary>
+        /// 鍑哄簱鍗曞彿
+        /// </summary>
+        public string Code { get; set; }
+        /// <summary>
+        /// 浠撳簱缂栫爜
+        /// </summary>
+        public string WarehouseCode { get; set; }
+        /// <summary>
+        /// 鍗曟嵁澶囨敞
+        /// </summary>
+        public string Docremark { get; set; }
+        /// <summary>
+        /// 鍙戞枡閮ㄩ棬缂栫爜
+        /// </summary
+        public string Deptno { get; set; }
+        /// <summary>
+        /// 鍙戞枡閮ㄩ棬鍚嶇О
+        /// </summary
+        public string DeptName { get; set; }
+        /// <summary>
+        /// 鍙戞枡鏃堕棿
+        /// </summary
+        public DateTime? Createtime { get; set; }
+        /// <summary>
+        /// 鍙戞枡浜哄憳
+        /// </summary
+        public string Createuser { get; set; }
+        /// <summary>
+        /// 
+        /// </summary
+        public List<ERPOutPick> Picklist { get; set; }
+    }
+    public class ERPOutPick
+    {
+        /// <summary>
+        /// 鍙戞枡琛屽彿
+        /// </summary>
+        public string Rowindex { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string Material { get; set; }
+        /// <summary>
+        /// 鎬绘暟閲�
+        /// </summary>
+        public float Qty { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ERPOutPickDetail> Dataitem { get; set; }
+    }
+    public class ERPOutPickDetail
+    {
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string Lotno { get; set; }
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public float Qty { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj"
index d2229c6..5c192fd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj"
@@ -10,6 +10,7 @@
     <ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
     <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
     <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBasicRepository\WIDESEA_IBasicRepository.csproj" />
   </ItemGroup>
 
 </Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/IApiInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/IApiInfoRepository.cs"
new file mode 100644
index 0000000..dfc55d6
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/IApiInfoRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicRepository
+{
+    /// <summary>
+    /// 鎺ュ彛淇℃伅浠撳偍鎺ュ彛灞�
+    /// </summary>
+    public interface IApiInfoRepository : IRepository<Dt_ApiInfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IApiInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IApiInfoService.cs"
new file mode 100644
index 0000000..0a6dad0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IApiInfoService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IBasicRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface IApiInfoService : IService<Dt_ApiInfo>
+    {
+        IApiInfoRepository Repository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
index 7d2eb1b..c2f6446 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -93,5 +93,11 @@
         /// <param name="taskNum">浠诲姟鍙�</param>
         /// <returns></returns>
         WebResponseContent OutboundTaskCompleted(int taskNum);
+        /// <summary>
+        /// 娴嬭瘯鏋堕��搴�
+        /// </summary>
+        /// <param name="backModel"></param>
+        /// <returns></returns>
+        MesResponseContent TestReturnStock(TestToolBackModel backModel);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
index ceab71b..0769450 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
@@ -1,6 +1,7 @@
 锘縰sing AutoMapper;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Serialization;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -9,6 +10,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -18,6 +20,7 @@
 using WIDESEA_DTO.ERP;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.Outbound;
+using WIDESEA_External.ERPService;
 using WIDESEA_External.Model;
 using WIDESEA_IBasicService;
 using WIDESEA_IOutboundRepository;
@@ -37,16 +40,18 @@
         private readonly IStockInfoService _stockInfoService;
         private readonly IStockInfoRepository _stockInfoRepository;
         public IOutboundOrderRepository Repository => BaseDal;
+        private readonly IInvokeERPService _invokeERPService;
 
         public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper,IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IStockInfoService stockInfoService,
-          IStockInfoRepository stockInfoRepository) : base(BaseDal)
+          IStockInfoRepository stockInfoRepository, IInvokeERPService invokeERPService) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage=unitOfWorkManage;
             _basicService = basicService;
             _outboundOrderDetailRepository = outboundOrderDetailRepository;
             _stockInfoService = stockInfoService;
-            _stockInfoRepository= stockInfoRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _invokeERPService = invokeERPService;
         }
 
         public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO model)
@@ -81,7 +86,6 @@
                         }
                         else
                         {
-                            Dt_StockInfo? stockInfo = null;
                             Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail()
                             {
                                 RowNo = Convert.ToInt32(model.RowNo),
@@ -92,17 +96,27 @@
                                 OrderQuantity = model.Qty,
                                 OrderId = oldOutboundOrder.Id
                             };
+                            List<Dt_StockInfo>? stockInfos = new List<Dt_StockInfo>();
                             //ERP涓婁紶娴嬭瘯浠撻鏂欏崟鏇存柊瀵瑰簲搴撳瓨鐘舵��
-                            if (warehouse.WarehouseId == 1)
+                            if (warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
                             {
-                                //鑾峰彇鍑哄簱鍗曞簱瀛�
-                                stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == model.MCode && x.BatchNo == model.MLot && x.InboundOrderRowNo == Convert.ToInt32(model.RowNo))).First();
-                                stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                                WebResponseContent responseContent = TestOutStocksUpdate(warehouse, model);
+                                if (!responseContent.Status)
+                                {
+                                    return responseContent;
+                                }
+                                stockInfos = responseContent.Data as List<Dt_StockInfo>;
                             }
                             _unitOfWorkManage.BeginTran();
-                            if (stockInfo != null)
+                            if (stockInfos.Count>0)
                             {
-                                _stockInfoRepository.UpdateData(stockInfo);
+                                _stockInfoRepository.UpdateData(stockInfos);
+                                //娴嬭瘯鏋跺簱缁橢RP涓婃姤鍑哄簱瀹屾垚
+                                if (!TestOutBack(stockInfos, warehouse, model).Status)
+                                {
+                                    _unitOfWorkManage.RollbackTran();
+                                    return WebResponseContent.Instance.Error($"娴嬭瘯鏋跺嚭搴撲笂鎶ュけ璐�");
+                                }
                             }
                             _outboundOrderDetailRepository.AddData(outboundOrderDetail);
                             _unitOfWorkManage.CommitTran();
@@ -129,21 +143,31 @@
                             WarehouseId = warehouse.WarehouseId,
                             Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail }
                         };
-                        Dt_StockInfo? stockInfo = null;
-                        //ERP涓婁紶娴嬭瘯浠撻鏂欏崟鏇存柊瀵瑰簲搴撳瓨鐘舵�� 
-                        if (warehouse.WarehouseId==1)
+                        List<Dt_StockInfo>? stockInfos = new List<Dt_StockInfo>();
+                        //ERP涓婁紶娴嬭瘯浠撻鏂欏崟鏇存柊瀵瑰簲搴撳瓨鐘舵��
+                        if (warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
                         {
-                            //鑾峰彇鍑哄簱鍗曞簱瀛�
-                            stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == model.MCode && x.BatchNo == model.MLot && x.InboundOrderRowNo == Convert.ToInt32(model.RowNo))).First();
-                            stockInfo.StockStatus=StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                            WebResponseContent responseContent = TestOutStocksUpdate(warehouse, model);
+                            if (!responseContent.Status)
+                            {
+                                return responseContent;
+                            }
+                            stockInfos = responseContent.Data as List<Dt_StockInfo>;
                         }
                         _unitOfWorkManage.BeginTran();
-                        if (stockInfo!=null)
+                        if (stockInfos.Count > 0)
                         {
-                            _stockInfoRepository.UpdateData(stockInfo);
+                            _stockInfoRepository.UpdateData(stockInfos);
+                            //娴嬭瘯鏋跺簱缁橢RP涓婃姤鍑哄簱瀹屾垚
+                            if (!TestOutBack(stockInfos, warehouse, model).Status)
+                            {
+                                _unitOfWorkManage.RollbackTran();
+                                return WebResponseContent.Instance.Error($"娴嬭瘯鏋跺嚭搴撲笂鎶ュけ璐�");
+                            } 
                         }
                         Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                         _unitOfWorkManage.CommitTran();
+                        
                     }
                 }
                 else if (model.Way == 2)
@@ -189,7 +213,82 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-
+        /// <summary>
+        /// 鏇存敼鍑哄簱鍗曞簱瀛樼姸鎬�
+        /// </summary>
+        /// <param name="warehouse"></param>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public WebResponseContent TestOutStocksUpdate(Dt_Warehouse warehouse, ErpOutOrderDTO model)
+        {
+            try
+            {
+                //鑾峰彇鍑哄簱鍗曞簱瀛�
+                List<Dt_StockInfo> stockInfos = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).OrderBy(x => x.CreateDate).Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == model.MCode)).Take((int)(model.Qty)).ToList();
+                if (model.Qty > stockInfos.Count)
+                {
+                    return WebResponseContent.Instance.Error($"鐗╂枡:{model.MCode}搴撳瓨涓嶈冻");
+                }
+                //鏇存敼鐘舵��
+                stockInfos.ForEach(x =>
+                {
+                    x.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                });
+                return WebResponseContent.Instance.OK("鎴愬姛", stockInfos);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        ///鎺ㄩ�佹祴璇曟灦鍑哄簱
+        public WebResponseContent TestOutBack(List<Dt_StockInfo> stockInfos,Dt_Warehouse warehouse, ErpOutOrderDTO model)
+        {
+            try
+            {
+                //娴嬭瘯鏋跺簱缁橢RP涓婃姤鍑哄簱瀹屾垚
+                List<ERPOutPickDetail> pickDetails = stockInfos.Select(x => new ERPOutPickDetail()
+                {
+                    Lotno = x.Details[0].BatchNo,
+                    Qty = x.Details[0].StockQuantity
+                }).ToList();
+                ERPOutPick outPick = new ERPOutPick()
+                {
+                    Rowindex = model.RowNo,
+                    Material = model.MCode,
+                    Qty = model.Qty,
+                    Dataitem = pickDetails
+                };
+                ERPOutboundModel inboundModel = new ERPOutboundModel()
+                {
+                    Way = 1,
+                    UniqueTag = model.OrderNo,
+                    Code = model.OrderNo,
+                    WarehouseCode = warehouse.WarehouseCode,
+                    Docremark = "",
+                    Deptno = model.DepartmentCode,
+                    DeptName = model.DepartmentName,
+                    Createtime = DateTime.Now,
+                    Createuser = "WMS",
+                    Picklist = new List<ERPOutPick>() { outPick },
+                };
+                string response = _invokeERPService.InvokeOutboundOrderApi(inboundModel);
+                ErpRequestContent requestContent=response.DeserializeObject<ErpRequestContent>();
+                if (requestContent.res==1)
+                {
+                    
+                    return WebResponseContent.Instance.OK(requestContent.Data);
+                }
+                else
+                {
+                    return WebResponseContent.Instance.Error(requestContent.Data);
+                }
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
 
         //public WebResponseContent FeedbackOutbondIssue(List<Dt_OutStockLockInfo> outStockLockInfos)
         //{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
index be7f5d1..231e0a1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
@@ -470,12 +470,12 @@
                             List<object> data = new List<object>();
 
                             {
-                                Type type = typeof(TaskInStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList();
+                                Type type = typeof(TaskStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast<int>().ToList();
                                 int index = 0;
                                 foreach (var item in enums)
                                 {
-                                    FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
+                                    FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField(((TaskStatusEnum)item).ToString());
                                     DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                     if (description != null)
                                     {
@@ -489,25 +489,25 @@
                                 }
                             }
 
-                            {
-                                Type type = typeof(TaskOutStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
+                            //{
+                            //    Type type = typeof(TaskStatusEnum);
+                            //    List<int> enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast<int>().ToList();
+                            //    int index = 0;
+                            //    foreach (var item in enums)
+                            //    {
+                            //        FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField(((TaskStatusEnum)item).ToString());
+                            //        DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                            //        if (description != null)
+                            //        {
+                            //            data.Add(new { key = item.ToString(), value = description.Description });
+                            //        }
+                            //        else
+                            //        {
+                            //            data.Add(new { key = item.ToString(), value = item.ToString() });
+                            //        }
+                            //        index++;
+                            //    }
+                            //}
                             result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                         }
                         break;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
index 713e75d..6b3fe45 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -8,9 +8,11 @@
 using WIDESEA_Common.OtherEnum;
 using WIDESEA_Common.StockEnum;
 using WIDESEA_Common.TaskEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO;
+using WIDESEA_DTO.ERP;
 using WIDESEA_DTO.MES;
 using WIDESEA_ITaskInfoRepository;
 using WIDESEA_ITaskInfoService;
@@ -30,14 +32,15 @@
             MesResponseContent responseContent = new MesResponseContent();
             try
             {
-                //鑾峰彇搴撳瓨璁板綍 warehouseID鏆傚畾鍏堢敤鍥哄畾鍊� TEST
-                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == 1 && 
-                  x.PalletCode == model.ToolCode && 
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA64.ToString());
+                //鑾峰彇搴撳瓨璁板綍
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => 
+                  x.WarehouseId == warehouse.WarehouseId && 
                   x.StockStatus==(int)StockStatusEmun.鍏ュ簱瀹屾垚)
-                .Includes(x => x.Details).First();
+                .Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == model.ToolCode)).First();
                 if (stockInfo==null)
                 {
-                    return responseContent.Error($"娴嬭瘯鏋舵墭鐩�:{model.ToolCode}鏃犲簱瀛樿褰�");
+                    return responseContent.Error($"娴嬭瘯鏋�:{model.ToolCode}鏃犲彲鐢ㄥ簱瀛�");
                 }
                 Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode &&
                   x.WarehouseId == stockInfo.WarehouseId &&
@@ -45,7 +48,7 @@
                   (x.EnableStatus == (int)EnableStatusEnum.Normal || x.EnableStatus == (int)EnableStatusEnum.OnlyOut));
                 if (locationInfo==null)
                 {
-                    return responseContent.Error($"璐т綅:{stockInfo.LocationCode}鍑哄簱鏉′欢涓嶆弧瓒�");
+                    return responseContent.Error($"娴嬭瘯鏋惰揣浣�:{stockInfo.LocationCode}鍑哄簱鏉′欢涓嶆弧瓒�");
                 }
                 //鐢熸垚娴嬭瘯鏋跺嚭搴撲换鍔� 閿佸畾搴撳瓨 鏇存敼璐т綅鐘舵��
                 Dt_Task taskOut = new()
@@ -57,8 +60,8 @@
                     Roadway = locationInfo.RoadwayNo,
                     SourceAddress = stockInfo.LocationCode,
                     TargetAddress = "",
-                    TaskStatus = (int)TaskOutStatusEnum.OutNew,
-                    TaskType = (int)TaskOutboundTypeEnum.OutTestStand,
+                    TaskStatus = (int)TaskStatusEnum.New,
+                    TaskType = (int)TaskTypeEnum.TestOutbound,
                     TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     PalletType = stockInfo.PalletType,
                     WarehouseId = stockInfo.WarehouseId,
@@ -66,6 +69,7 @@
                 stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
                 LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                 locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
+                //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
                 _unitOfWorkManage.BeginTran();
                 //鏇存柊搴撳瓨鐘舵��
                 _stockRepository.StockInfoRepository.UpdateData(stockInfo);
@@ -76,6 +80,8 @@
                 //鍔犲叆璐т綅鍙樺姩璁板綍
                 _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, locationStatus, LocationChangeType.OutboundAssignLocation, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", taskOut.TaskNum);
                 _unitOfWorkManage.CommitTran();
+                //灏嗕换鍔℃帹閫佸埌WCS
+                PushTasksToWCS();
                 responseContent.OK();
             }
             catch (Exception ex)
@@ -85,5 +91,65 @@
             }
             return responseContent;
         }
+        /// <summary>
+        /// 娴嬭瘯鏋堕��搴�
+        /// </summary>
+        /// <returns></returns>
+        public MesResponseContent TestReturnStock(TestToolBackModel backModel)
+        {
+            MesResponseContent responseContent = new MesResponseContent();
+            try
+            {
+                
+            }
+            catch (Exception ex)
+            {
+                responseContent.Error(ex.Message);
+            }
+            return responseContent;
+        }
+        /// <summary>
+        /// 娴嬭瘯鏋舵姤搴�
+        /// </summary>
+        /// <returns></returns>
+        public MesResponseContent TestScrap(TestToolScrap toolScrap)
+        {
+            MesResponseContent responseContent = new MesResponseContent();
+            try
+            {
+                //鑾峰彇娴嬭瘯鏋舵壒娆″彿搴撳瓨
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA64.ToString());
+                //鑾峰彇搴撳瓨璁板綍
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
+                  x.WarehouseId == warehouse.WarehouseId)
+                .Includes(x => x.Details).Where(x => x.Details.Any(x => x.MaterielCode == toolScrap.ToolCode)).First();
+            }
+            catch (Exception ex)
+            {
+                responseContent.Error(ex.Message);
+            }
+            return responseContent;
+        }
+        /// <summary>
+        /// 鍚屾娴嬭瘯鏋跺鍛�
+        /// </summary>
+        /// <param name="toolSynInfo"></param>
+        /// <returns></returns>
+        public WebResponseContent TestSynStock(TestToolSynInfo toolSynInfo)
+        {
+            WebResponseContent content= new WebResponseContent();
+            try
+            {
+                Root<TestToolSynInfo> root = new Root<TestToolSynInfo>()
+                {
+
+                };
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 6a05e7a..284909e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -57,6 +57,7 @@
         private readonly IRecordService _recordService;
         private readonly IOutboundService _outboundService;
         private readonly IStockService _stockService;
+        private readonly IBasicRepository _basicRepository;
 
         public ITaskRepository Repository => BaseDal;
 
@@ -66,11 +67,11 @@
                 {nameof(Dt_Task.CreateDate),OrderByType.Asc},
             };
 
-        public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList();
+        public List<int> TaskTypes => typeof(TaskTypeEnum).GetEnumIndexList();
 
-        public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
+        public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
 
-        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IOutboundService outboundService, IStockService stockService) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IOutboundService outboundService, IStockService stockService, IBasicRepository basicRepository) : base(BaseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
@@ -79,6 +80,7 @@
             _recordService = recordService;
             _outboundService = outboundService;
             _stockService = stockService;
+            _basicRepository = basicRepository;
         }
 
         /// <summary>
@@ -89,8 +91,7 @@
         {
             try
             {
-                List<Dt_Task> tasks = BaseDal.QueryData(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskStatus == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskStatus == (int)TaskOutStatusEnum.OutNew));
-
+                List<Dt_Task> tasks = BaseDal.QueryData(x => (TaskTypes.Contains(x.TaskType) && x.TaskStatus == (int)TaskStatusEnum.New));
                 List<WMSTaskDTO> taskDTOs = _mapper.Map<List<WMSTaskDTO>>(tasks);
 
                 string response = HttpHelper.Post("http://127.0.0.1:9291/api/Task/ReceiveTask", taskDTOs.Serialize());
@@ -118,7 +119,7 @@
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅");
                 }
 
-                if (task.TaskType != TaskInboundTypeEnum.Inbound.ObjToInt())
+                if (task.TaskType != TaskTypeEnum.Inbound.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"浠诲姟绫诲瀷閿欒");
                 }
@@ -154,7 +155,7 @@
                 locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
 
                 //娴嬭瘯鏋跺叆搴撳簱瀛樼姸鎬�
-                if (task.TaskType == TaskInboundTypeEnum.TestInbound.ObjToInt())
+                if (task.TaskType == TaskTypeEnum.TestInbound.ObjToInt())
                 {
                     stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚鏈缓鍑哄簱鍗�.ObjToInt();
                 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index f1a3944..183f715 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -34,7 +34,7 @@
                     return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡鐢熸垚浠诲姟");
                 }
 
-                if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == TaskInStatusEnum.InNew.ObjToInt()) != null)
+                if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
                 {
                     return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
                 }
@@ -62,8 +62,8 @@
                     Roadway = "",
                     SourceAddress = stationCode,
                     TargetAddress = "",
-                    TaskType = TaskInboundTypeEnum.Inbound.ObjToInt(),
-                    TaskStatus = TaskInStatusEnum.InNew.ObjToInt(),
+                    TaskType = TaskTypeEnum.Inbound.ObjToInt(),
+                    TaskStatus = TaskStatusEnum.New.ObjToInt(),
                 };
 
                 stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
@@ -107,7 +107,7 @@
 
                 task.Roadway = roadwayNo;
                 task.TargetAddress = locationInfo.LocationCode;
-                task.TaskStatus = TaskInStatusEnum.SC_InExecute.ObjToInt();
+                task.TaskStatus = TaskStatusEnum.SC_Execute.ObjToInt();
 
                 LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index 9e6af5c..188e1b7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -45,8 +45,8 @@
                             Roadway = locationInfo.RoadwayNo,
                             SourceAddress = stockInfo.LocationCode,
                             TargetAddress = "",
-                            TaskStatus = TaskOutStatusEnum.OutNew.ObjToInt(),
-                            TaskType = TaskOutboundTypeEnum.Outbound.ObjToInt(),
+                            TaskStatus = TaskStatusEnum.New.ObjToInt(),
+                            TaskType = TaskTypeEnum.Outbound.ObjToInt(),
                             TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                             PalletType = stockInfo.PalletType,
                             WarehouseId = stockInfo.WarehouseId,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/AGV/AgvController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/AGV/AgvController.cs"
index 4f5a47d..e3a6553 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/AGV/AgvController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/AGV/AgvController.cs"
@@ -25,6 +25,7 @@
 
 namespace WIDESEA_WMSServer.Controllers.ERP
 {
+    #region 寮冪敤
     /// <summary>
     /// 鐗瑰垱AGV鎺ュ彛
     /// </summary>
@@ -64,4 +65,5 @@
         }
 
     }
+    #endregion
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
index dc9e78e..4ef3bc1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
@@ -44,5 +44,15 @@
         {
             return _taskService.TestToolOut(model.Content);
         }
+        /// <summary>
+        /// 鎺ユ敹MES娴嬭瘯鏋堕��搴�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost, Route("TestReturnStock"), AllowAnonymous, MethodParamsValidate]
+        public MesResponseContent TestReturnStock([FromBody] Root<TestToolBackModel> model)
+        {
+            return _taskService.TestReturnStock(model.Content);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\226\207\346\241\243/MES\344\270\232\345\212\241\346\265\201\347\250\213\345\233\276V1.0.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\226\207\346\241\243/MES\344\270\232\345\212\241\346\265\201\347\250\213\345\233\276V1.0.xlsx"
index 164de36..82f0a1c 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\226\207\346\241\243/MES\344\270\232\345\212\241\346\265\201\347\250\213\345\233\276V1.0.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\226\207\346\241\243/MES\344\270\232\345\212\241\346\265\201\347\250\213\345\233\276V1.0.xlsx"
Binary files differ

--
Gitblit v1.9.3