From a0beecb00c6c0c8247b0c9b29c440369f583eb40 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 17 二月 2025 08:55:59 +0800
Subject: [PATCH] 退料,调拨优化等

---
 代码管理/淮安PDA/uview-ui/libs/request/index.js                                                                    |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/辅料仓/AGV_FLExtend.cs                                              |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs                           |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderDetailService.cs                              |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderRepository.cs                                |   18 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderDetailService.cs                                |   21 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs                                   |   56 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs                                         |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReturnModel.cs                                          |  102 +++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderRepository.cs                              |   17 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs                                          |    3 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs                                    |   53 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReturnOrderEnum.cs                                       |   49 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs                                      |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs                                       |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs                             |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs                                                      |    2 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/78f8b249-7154-4dec-a3ca-180499c24279.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs                                    |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs                                 |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs                                    |    9 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderService.cs                                    |   31 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                                     |  412 +++++++++++++-
 代码管理/淮安PDA/common/config.js                                                                                  |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs                                   |   15 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrderDetail.cs                              |  109 +++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderDetailRepository.cs                        |   17 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0f114663-dce3-4d0e-9b27-bfeaa6dfe2c7.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8a5ddf5d-8657-4a5f-ac29-bc17a0fcefb0.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrder.cs                                    |   75 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs                           |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs                                  |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs                                      |  235 ++++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpReturnOrderDTO.cs                                              |  127 ++++
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/637a2026-85ca-4ce6-92b0-9adf059b8fc4.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj                              |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/ReturnOrderController.cs                    |   40 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs                                 |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs                                   |   17 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs                                   |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs                            |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs                             |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs                                     |    8 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3e9cc858-6ac2-443f-971a-ce566dc6ef41.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                                |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                                           |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                            |   87 +-
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs                                |   34 +
 /dev/null                                                                                                    |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderDetailRepository.cs                          |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs                                        |   11 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpInOrderDTO.cs                                                  |    2 
 52 files changed, 1,556 insertions(+), 118 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/054489bd-234b-4089-9947-38a13fcde750.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/054489bd-234b-4089-9947-38a13fcde750.vsidx"
deleted file mode 100644
index 64ba42e..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/054489bd-234b-4089-9947-38a13fcde750.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3e9cc858-6ac2-443f-971a-ce566dc6ef41.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3e9cc858-6ac2-443f-971a-ce566dc6ef41.vsidx"
new file mode 100644
index 0000000..fb3c762
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3e9cc858-6ac2-443f-971a-ce566dc6ef41.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9dd1bf7a-dee2-4f6e-8ac4-0b6e1e963918.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9dd1bf7a-dee2-4f6e-8ac4-0b6e1e963918.vsidx"
deleted file mode 100644
index cb9d878..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9dd1bf7a-dee2-4f6e-8ac4-0b6e1e963918.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fb1ebcba-9e21-4a69-97c4-99bc37244eb9.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fb1ebcba-9e21-4a69-97c4-99bc37244eb9.vsidx"
deleted file mode 100644
index a522fd9..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fb1ebcba-9e21-4a69-97c4-99bc37244eb9.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index add9188..0e971ec 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -35,6 +35,11 @@
         [Description("绌虹鍑哄簱")]
         OutEmpty = 140,
         /// <summary>
+        /// 璋冩嫧鍑哄簱
+        /// </summary>
+        [Description("璋冩嫧鍑哄簱")]
+        OutAllocate = 150,
+        /// <summary>
         /// MES鍑哄簱
         /// </summary>
         [Description("MES鍑哄簱")]
@@ -86,6 +91,12 @@
         MesMatReturn = 560,
 
         /// <summary>
+        /// 璋冩嫧鍏ュ簱
+        /// </summary>
+        [Description("璋冩嫧鍏ュ簱")]
+        InAllocate = 570,
+
+        /// <summary>
         /// 绾胯竟浠撳叆搴�
         /// </summary>
         [Description("绾胯竟浠撳叆搴�")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs"
index 16fbf0e..8b17b85 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs"
@@ -109,7 +109,7 @@
 
                 if (agvUpdateModel.Method == "end")
                 {
-                    if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt()) PutFinish(task.NextAddress);
+                    if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt()) PutFinish(task.NextAddress);
                     _taskService.TaskCompleted(task.TaskNum);
                 }
                 agvResponseContent.Code = "0";
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs"
index c8769f0..9f46db2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs"
@@ -148,6 +148,6 @@
 
 app.MapControllers();
 
-BarcodeScanner.StartServer();
+//BarcodeScanner.StartServer();
 app.Run();
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\350\276\205\346\226\231\344\273\223/AGV_FLExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\350\276\205\346\226\231\344\273\223/AGV_FLExtend.cs"
index 5770b32..1a07ce5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\350\276\205\346\226\231\344\273\223/AGV_FLExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\350\276\205\346\226\231\344\273\223/AGV_FLExtend.cs"
@@ -27,7 +27,7 @@
                 {
                     try
                     {
-                        if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt())
+                        if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt())
                             task.CurrentAddress = GetAGVAddress(task.CurrentAddress);
                         else
                             task.NextAddress = GetAGVAddress(task.NextAddress);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0f114663-dce3-4d0e-9b27-bfeaa6dfe2c7.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0f114663-dce3-4d0e-9b27-bfeaa6dfe2c7.vsidx"
new file mode 100644
index 0000000..8ba20f3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/0f114663-dce3-4d0e-9b27-bfeaa6dfe2c7.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/1f069ca3-0197-4b08-8580-6ad491643add.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1f069ca3-0197-4b08-8580-6ad491643add.vsidx"
deleted file mode 100644
index 5ead7aa..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1f069ca3-0197-4b08-8580-6ad491643add.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/5d432982-08c1-4c2c-9cb4-199bb27be3a0.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5d432982-08c1-4c2c-9cb4-199bb27be3a0.vsidx"
deleted file mode 100644
index 99f5f88..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5d432982-08c1-4c2c-9cb4-199bb27be3a0.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/637a2026-85ca-4ce6-92b0-9adf059b8fc4.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/637a2026-85ca-4ce6-92b0-9adf059b8fc4.vsidx"
new file mode 100644
index 0000000..c7e9ff1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/637a2026-85ca-4ce6-92b0-9adf059b8fc4.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/78f8b249-7154-4dec-a3ca-180499c24279.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/78f8b249-7154-4dec-a3ca-180499c24279.vsidx"
new file mode 100644
index 0000000..3e5a8e7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/78f8b249-7154-4dec-a3ca-180499c24279.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/8a5ddf5d-8657-4a5f-ac29-bc17a0fcefb0.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8a5ddf5d-8657-4a5f-ac29-bc17a0fcefb0.vsidx"
new file mode 100644
index 0000000..d6c2eff
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8a5ddf5d-8657-4a5f-ac29-bc17a0fcefb0.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
index 904222d..2d4174a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/InboundOrderMenu.cs"
@@ -88,6 +88,11 @@
         /// 鍏朵粬鍏ュ簱鍗�
         /// </summary>
         [Description("鍏朵粬鍏ュ簱鍗�")]
-        Other = 130
+        Other = 130,
+        /// <summary>
+        /// 瀹緵鍥炴敹
+        /// </summary>
+        [Description("瀹緵鍥炴敹")]
+        CustomerRecovery=135
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
index 3b43f33..6e3d2e7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/OutboundOrderEnum.cs"
@@ -91,6 +91,12 @@
         /// 鍏朵粬鍑哄簱鍗�
         /// </summary>
         [Description("鍏朵粬鍑哄簱鍗�")]
-        Other = 235
+        Other = 235,
+
+        /// <summary>
+        /// 缁翠慨鍙戞枡鍗�
+        /// </summary>
+        [Description("缁翠慨鍙戞枡鍗�")]
+        MaintenanceIssue = 240,
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReturnOrderEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReturnOrderEnum.cs"
new file mode 100644
index 0000000..1a04ffb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/ReturnOrderEnum.cs"
@@ -0,0 +1,49 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.OrderEnum
+{
+    /// <summary>
+    /// 閫�鏂欑姸鎬�
+    /// </summary>
+    public enum ReturnOrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈��鏂�
+        /// </summary>
+        [Description("鏈��鏂�")]
+        NotReturn = 0,
+
+        /// <summary>
+        /// 閫�鏂欎腑
+        /// </summary>
+        [Description("閫�鏂欎腑")]
+        Returning = 1,
+
+        /// <summary>
+        /// 閫�鏂欏畬鎴�
+        /// </summary>
+        [Description("閫�鏂欏畬鎴�")]
+        Returned = 2
+    }
+    /// <summary>
+    /// 閫�鏂欑被鍨�
+    /// </summary>
+    public enum ReturnOrderTypeEnum
+    {
+        /// <summary>
+        /// 鏍囧噯閫�鏂�
+        /// </summary>
+        [Description("鏍囧噯閫�鏂�")]
+        StandardReturn = 1,
+        /// <summary>
+        /// Bom閫�鏂�
+        /// </summary>
+        [Description("Bom閫�鏂�")]
+        BomReturn = 2
+    }
+}
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 1013730..bd83eec 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"
@@ -37,6 +37,12 @@
         OutEmpty = 140,
 
         /// <summary>
+        /// 璋冩嫧鍑哄簱
+        /// </summary>
+        [Description("璋冩嫧鍑哄簱")]
+        OutAllocate = 150,
+
+        /// <summary>
         /// MES鍑哄簱
         /// </summary>
         [Description("MES鍑哄簱")]
@@ -88,6 +94,12 @@
         MesMatReturn = 560,
 
         /// <summary>
+        /// 璋冩嫧鍏ュ簱
+        /// </summary>
+        [Description("璋冩嫧鍏ュ簱")]
+        InAllocate = 570,
+
+        /// <summary>
         /// 绌虹鍏ュ簱
         /// </summary>
         [Description("绌虹鍏ュ簱")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs"
index f270e87..5692d8d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs"
@@ -44,6 +44,11 @@
         /// 鍏ユ枡鍗曞彿缂栫爜瑙勫垯
         /// </summary>
         [Description("鍏ユ枡鍗曞彿缂栫爜瑙勫垯")]
-        RLCodeRule
+        RLCodeRule,
+        /// <summary>
+        /// 閫�鏂欏崟鍙风紪鐮佽鍒�
+        /// </summary>
+        [Description("閫�鏂欏崟鍙风紪鐮佽鍒�")]
+        TLCodeRule,
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpInOrderDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpInOrderDTO.cs"
index 25ccfa0..2846683 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpInOrderDTO.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpInOrderDTO.cs"
@@ -78,7 +78,7 @@
         /// 澶囨敞
         /// </summary>
         [PropertyValidate("澶囨敞")]
-        public string Node { get; set; }
+        public string Note { get; set; }
 
         /// <summary>
         /// 鍥炴敹绫诲瀷
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpReturnOrderDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpReturnOrderDTO.cs"
new file mode 100644
index 0000000..6a3c68f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpReturnOrderDTO.cs"
@@ -0,0 +1,127 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.ERP
+{
+    /// <summary>
+    /// 鏍囧噯/bom閫�鏂�
+    /// </summary>
+    [ModelValidate]
+    public class ErpReturnOrderDTO
+    {
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷<br/>
+        /// 1锛氭柊澧�<br/>
+        /// 2锛氫慨鏀�<br/>
+        /// 3锛氬垹闄�(鍒犻櫎鍙鏄庣粏琛屽彿鍜岄鏂欏崟鍙�)
+        /// </summary>
+        [PropertyValidate("鎿嶄綔绫诲瀷", NotNullAndEmpty = true, Check = new object[] { 1, 2, 3 })]
+        public int Way { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欒鍗曞彿
+        /// </summary>
+        [PropertyValidate("閫�鏂欒鍗曞彿", NotNullAndEmpty = true)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [PropertyValidate("浠撳簱缂栧彿", NotNullAndEmpty = true)]
+        public string WaCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁澶囨敞
+        /// </summary>
+        public string? Note { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟绫诲瀷<br/>
+        /// 1锛氭爣鍑嗛��鏂�<br/>
+        /// 2锛歜om閫�鏂�<br/>
+        /// </summary>
+        [PropertyValidate("璁㈠崟绫诲瀷", NotNullAndEmpty = true, Check = new object[] { 1, 2 })]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鐮斿彂
+        /// 0:鍚�
+        /// 1:鏄�
+        /// </summary>
+        [PropertyValidate("鏄惁鐮斿彂", NotNullAndEmpty = true, Check = new object[] { 0, 1 })]
+        public int IsDev { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃
+        /// </summary>
+        [PropertyValidate("鍒楄〃", NotNullAndEmpty = true)]
+        public List<ReturnDetail> Issitem { get; set; }
+    }
+    /// <summary>
+    /// 閫�鏂欐槑缁�
+    /// </summary>
+    [ModelValidate]
+    public class ReturnDetail
+    {
+        /// <summary>
+        /// 鐢宠鍗曞彿(鍙戞枡鍗�)
+        /// </summary>
+        [PropertyValidate("鐢宠鍗曞彿", NotNullAndEmpty = true)]
+        public string PickCode { get; set; }
+
+        /// <summary>
+        /// 鐢宠鍗曞彿琛屽彿(鍙戞枡鍗曟槑缁嗚鍙�)
+        /// </summary>
+        [PropertyValidate("鐢宠鍗曞彿琛屽彿", NotNullAndEmpty = false)]
+        public int? ApplyRow { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欒鍙�
+        /// </summary>
+        [PropertyValidate("閫�鏂欒鍙�", NotNullAndEmpty = true)]
+        public int RowId { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欎俊鎭�
+        /// </summary>
+        [PropertyValidate("閫�鏂欎俊鎭�", NotNullAndEmpty = true)]
+        public List<ReturnInfo> PickList { get; set; }
+    }
+    /// <summary>
+    /// 閫�鏂欎俊鎭�
+    /// </summary>
+    [ModelValidate]
+    public class ReturnInfo
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        [PropertyValidate("鐗╂枡缂栫爜", NotNullAndEmpty = true)]
+        public string MCode { get; set; }
+
+        /// <summary>
+        /// 鍙��鏁伴噺
+        /// </summary>
+        [PropertyValidate("鍙��鏁伴噺", NotNullAndEmpty = true)]
+        public float Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [PropertyValidate("鍗曚綅", NotNullAndEmpty = true)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 閫�鍥炴暟閲�
+        /// </summary>
+        [PropertyValidate("閫�鍥炴暟閲�", NotNullAndEmpty = true)]
+        public float ReturnQty { get; set; }
+
+        public string? Code { get; set; }
+    }
+}
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 59750dd..92f9b70 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"
@@ -108,6 +108,23 @@
             return response;
         }
         /// <summary>
+        /// ERP閫�鏂欎笂鎶ユ帴鍙h皟鐢�
+        /// </summary>
+        public string InvokeReturnApi(ERPReturnModel returnModel)
+        {
+            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
+            ERPBaseModel<ERPReturnModel> model = new ERPBaseModel<ERPReturnModel>()
+            {
+                Data = returnModel,
+                Desc = "鏉愭枡閫�搴�",
+                Type = "importMaterialsIssueNoteWMS",
+                SecurityCode = "TeChuang"
+            };
+            string request = JsonConvert.SerializeObject(model, settings).Replace("issitem", "Issitem");
+            string response = HttpHelper.Post(apiInfo.ApiAddress, request);
+            return response;
+        }
+        /// <summary>
         /// ERP鐗╂枡鍑哄簱鎺ュ彛璋冪敤
         /// </summary>
         /// <param name="outboundModel"></param>
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 c8ff954..2748335 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"
@@ -36,9 +36,10 @@
         /// <summary>
         /// ERP鐗╂枡鍑哄簱鎺ュ彛璋冪敤
         /// </summary>
-        /// <param name="outboundModel"></param>
-        /// <returns></returns>
-        //string InvokeOutboundOrderApi(ERPOutboundModel outboundModel);
         string InvokeOutStandardsApi(ERPIssueModel issueModel);
+        /// <summary>
+        /// ERP閫�鏂欎笂鎶ユ帴鍙h皟鐢�
+        /// </summary>
+        string InvokeReturnApi(ERPReturnModel returnModel);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReturnModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReturnModel.cs"
new file mode 100644
index 0000000..c9ed632
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReturnModel.cs"
@@ -0,0 +1,102 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_External.Model
+{
+    /// <summary>
+    /// 閫�鏂欏崟鍥炰紶ERP
+    /// </summary>
+    public class ERPReturnModel
+    {
+        /// <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 Createtime { get; set; }
+        /// <summary>
+        /// 閫�鏂欎汉鍛�
+        /// </summary>
+        public string Createuser { get; set; }
+        /// <summary>
+        /// 鏄惁鐮斿彂
+        /// </summary>
+        public int IsDev { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ReturnItem> Issitem { get; set; }
+    }
+    public class ReturnItem
+    {
+        /// <summary>
+        /// 閫�鏂欑敵璇峰崟鍙�
+        /// </summary>
+        public string Pickcode { get; set; }
+        /// <summary>
+        /// 閫�鏂欒鍙�
+        /// </summary>
+        public int Rowindex { get; set; }
+        /// <summary>
+        /// 閫�鏂欎俊鎭�
+        /// </summary>
+        public List<ReturnPickItem> PickList { get; set; }
+    }
+
+    public class ReturnPickItem
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string Material { get; set; }
+        /// <summary>
+        /// 鎵规鏁伴噺鎬诲拰
+        /// </summary>
+        public float Qty { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ReturnDataItem> Dataitem { get; set; }
+    }
+
+    public class ReturnDataItem
+    {
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string Lotno { get; set; }
+        /// <summary>
+        /// 閫�鍥炴暟閲�
+        /// </summary>
+        public float Qty { get; set; }
+        /// <summary>
+        /// 鍌ㄥ尯
+        /// </summary>
+        public string Location { get; set; }
+        /// <summary>
+        /// 鍒堕�犻儴浠�
+        /// </summary>
+        public string Msfpart { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs"
index ec7fdbe..f1c6ac1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs"
@@ -20,5 +20,7 @@
         IPurchaseOrderDetailRepository PurchaseOrderDetailRepository { get; }
 
         IPurchaseOrderRepository PurchaseOrderRepository { get; }
+        IReturnOrderRepository ReturnOrderRepository { get; }
+        IReturnOrderDetailRepository ReturnOrderDetailRepository { get; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderDetailRepository.cs"
new file mode 100644
index 0000000..d48ac9d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderDetailRepository.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_IInboundRepository
+{
+    /// <summary>
+    /// 閫�鏂欏崟鏄庣粏浠撳偍鎺ュ彛灞�
+    /// </summary>
+    public interface IReturnOrderDetailRepository : IRepository<Dt_ReturnOrderDetail>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderRepository.cs"
new file mode 100644
index 0000000..a4d689e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IReturnOrderRepository.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_IInboundRepository
+{
+    /// <summary>
+    /// 閫�鏂欏崟浠撳偍鎺ュ彛灞�
+    /// </summary>
+    public interface IReturnOrderRepository : IRepository<Dt_ReturnOrder>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
index 23a51f2..26760b3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
@@ -6,6 +6,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO;
+using WIDESEA_DTO.ERP;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_External.Model;
 using WIDESEA_IInboundRepository;
@@ -33,12 +34,18 @@
         /// <returns></returns>
         WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder);
         /// <summary>
-        /// 
+        /// 閫�鏂欏畬鎴愪笂鎶ヨ嚦ERP
         /// </summary>
-        /// <param name="warehouse"></param>
-        /// <param name="palletCode"></param>
-        /// <param name="materielInfo"></param>
+        public WebResponseContent FeedbackReturnOrder(Dt_InboundOrder inboundOrder,Dt_ReturnOrder returnOrder);
+        /// <summary>
+        /// 鏍规嵁浠撳簱鍜屾墭鐩樺彿鑾峰彇鎵樼洏绫诲瀷
+        /// </summary>
         /// <returns></returns>
         int GetPalletType(Dt_Warehouse warehouse, string palletCode);
+        /// <summary>
+        /// 鍏朵粬鍏ュ簱鍗曟帴鏀�(璋冩嫈鍏ヤ粨,瀹緵鍥炴敹,鐗╂枡閿�鍞��璐�)
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent ReceiveWarehousingOrder(ErpInOrderDTO model);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderDetailService.cs"
new file mode 100644
index 0000000..233ee1c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderDetailService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IReturnOrderDetailService : IService<Dt_ReturnOrderDetail>
+    {
+        IReturnOrderDetailRepository Repository { get; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderService.cs"
new file mode 100644
index 0000000..4b470a0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReturnOrderService.cs"
@@ -0,0 +1,31 @@
+锘縰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.ERP;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IInboundService
+{
+    public interface IReturnOrderService : IService<Dt_ReturnOrder>
+    {
+        IReturnOrderRepository Repository { get; }
+        /// <summary>
+        /// 鑾峰彇鎺ユ敹閫�鏂欏崟
+        /// </summary>
+        WebResponseContent ReturnOrder(ErpReturnOrderDTO model);
+        /// <summary>
+        /// 鑾峰彇閫�鏂欏崟
+        /// </summary>
+        WebResponseContent GetReturnOrders(SaveModel saveModel);
+        /// <summary>
+        /// 纭閫�搴撴牴鎹��搴撳崟鐢熸垚鍏ュ簱鍗�
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent IsReturnCreateInOrder(int returnId);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs"
index b5d5b45..79e272f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs"
@@ -20,8 +20,10 @@
         public IPurchaseOrderDetailRepository PurchaseOrderDetailRepository { get; }
 
         public IPurchaseOrderRepository PurchaseOrderRepository { get; }
+        public IReturnOrderRepository ReturnOrderRepository { get; }
+        public IReturnOrderDetailRepository ReturnOrderDetailRepository { get; }
 
-        public InboundRepository(IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository, IReceiveOrderRepository receiveOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IPurchaseOrderRepository purchaseOrderRepository)
+        public InboundRepository(IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository, IReceiveOrderRepository receiveOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IPurchaseOrderRepository purchaseOrderRepository, IReturnOrderRepository returnOrderRepository, IReturnOrderDetailRepository returnOrderDetailRepository)
         {
             InboundOrderDetailRepository = inboundOrderDetailRepository;
             InboundOrderRepository = inboundOrderRepository;
@@ -29,6 +31,8 @@
             ReceiveOrderRepository = receiveOrderRepository;
             PurchaseOrderDetailRepository = purchaseOrderDetailRepository;
             PurchaseOrderRepository = purchaseOrderRepository;
+            ReturnOrderRepository = returnOrderRepository;
+            ReturnOrderDetailRepository = returnOrderDetailRepository;
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderDetailRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderDetailRepository.cs"
new file mode 100644
index 0000000..09ed473
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderDetailRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundRepository
+{
+    public class ReturnOrderDetailRepository : RepositoryBase<Dt_ReturnOrderDetail>, IReturnOrderDetailRepository
+    {
+        public ReturnOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderRepository.cs"
new file mode 100644
index 0000000..a72ab45
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/ReturnOrderRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IInboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundRepository
+{
+    public class ReturnOrderRepository : RepositoryBase<Dt_ReturnOrder>, IReturnOrderRepository
+    {
+        public ReturnOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index e7acce2..4d71ad1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -71,43 +71,158 @@
             _palletTypeInfoRepository = palletTypeInfoRepository;
         }
         /// <summary>
-        /// 鍏朵粬鍏ュ簱鍗曞垱寤�
+        /// 鍏朵粬鍏ュ簱鍗曟帴鏀�(璋冩嫈鍏ヤ粨,瀹緵鍥炴敹,鐗╂枡閿�鍞��璐�)
         /// </summary>
         /// <returns></returns>
-        public WebResponseContent ReceiveWarehousingOrder(ErpInOrderDTO erpInOrder)
+        public WebResponseContent ReceiveWarehousingOrder(ErpInOrderDTO model)
+        {
+            try
+            {
+                return model.Way switch
+                {
+                    1 => AddSingOrder(model),
+                    2 => UpdateSingOrder(model),
+                    3 => DeleteSingOrder(model),
+                    _ => WebResponseContent.Instance.Error($"鎿嶄綔绫诲瀷涓嶅瓨鍦�,Way:{model.Way}"),
+                };
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鏂板鍗曟嵁
+        /// </summary>
+        public WebResponseContent AddSingOrder(ErpInOrderDTO model)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
-                //鑾峰彇浠撳簱淇℃伅
-                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseCode == erpInOrder.WaId);
+                //鑾峰彇鐗╂枡淇℃伅
+                Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode==model.MCode);
+                if (materielInfo==null)
+                {
+                    return content.Error($"鐗╂枡{model.MCode}涓嶅瓨鍦�!");
+                }
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == model.WaId);
                 if (warehouse == null)
                 {
-                    return content.Error("鏈壘鍒颁粨搴撲俊鎭�");
+                    return content.Error($"鏈壘鍒颁粨搴撲俊鎭�");
                 }
-                //鑾峰彇鏄惁瀛樺湪璁㈠崟
-                Dt_InboundOrder inboundOrder = BaseDal.QueryFirst(x => x.InboundOrderNo == erpInOrder.OrderNo);
-                if (erpInOrder.Way == 1)
+                Dt_InboundOrder inboundOrderOld = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == model.OrderNo).Includes(x=>x.Details).First();
+                if (inboundOrderOld!=null)
                 {
-                    if (inboundOrder != null)
+                    if (inboundOrderOld.OrderStatus!= OrderDetailStatusEnum.New.ObjToInt())
                     {
-
+                        return content.Error($"{model.OrderNo}鍗曟嵁宸插紑濮�!");
                     }
-                }
-                else if (erpInOrder.Way == 2)
-                {
-
+                    Dt_InboundOrderDetail? inboundOrderDetailOld = inboundOrderOld.Details?.FirstOrDefault(x => x.RowNo == model.RowNo.ObjToInt() && x.MaterielCode == model.MCode);
+                    if (inboundOrderDetailOld!=null)
+                    {
+                        inboundOrderDetailOld.OrderQuantity += model.Qty;
+                        _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetailOld);
+                    }
+                    else
+                    {
+                        Dt_InboundOrderDetail orderDetail = new Dt_InboundOrderDetail()
+                        {
+                            OrderId= inboundOrderOld.Id,
+                            MaterielCode = model.MCode,
+                            BatchNo = "",
+                            OrderQuantity = model.Qty,
+                            ReceiptQuantity = 0,
+                            OverInQuantity = 0,
+                            OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
+                            Unit = materielInfo.MaterielUnit,
+                            RowNo = model.RowNo.ObjToInt(),
+                            MaterielName = materielInfo.MaterielName,
+                            MaterielSpec = materielInfo.MaterielSpec
+                        };
+                        _inboundRepository.InboundOrderDetailRepository.AddData(orderDetail);
+                    }
                 }
                 else
                 {
+                    Dt_InboundOrderDetail orderDetail = new Dt_InboundOrderDetail()
+                    {
+                        MaterielCode = model.MCode,
+                        BatchNo = "",
+                        OrderQuantity = model.Qty,
+                        ReceiptQuantity = 0,
+                        OverInQuantity = 0,
+                        OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
+                        Unit = materielInfo.MaterielUnit,
+                        RowNo = model.RowNo.ObjToInt(),
+                        MaterielName = materielInfo.MaterielName,
+                        MaterielSpec = materielInfo.MaterielSpec
+                    };
 
+                    Dt_InboundOrder inboundOrder = new Dt_InboundOrder()
+                    {
+                        UpperOrderNo = model.OrderNo,
+                        WarehouseId = warehouse.WarehouseId,
+                        SupplierId = "",
+                        OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
+                        CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
+                        Remark = model.Note,
+                        Details = new List<Dt_InboundOrderDetail> { orderDetail }
+                    };
+                    switch (model.OType)
+                    {
+                        case 1:
+                            inboundOrder.OrderType = InOrderTypeEnum.Allocat.ObjToInt();
+                            break;
+                        case 3:
+                            inboundOrder.OrderType = InOrderTypeEnum.CustomerRecovery.ObjToInt();
+                            break;
+                        case 6:
+                            inboundOrder.OrderType = InOrderTypeEnum.SaleReturn.ObjToInt();
+                            break;
+                        default:
+                            break;
+                    };
+                    Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                 }
-                return content.OK();
+                return content.OK("鎴愬姛");
             }
             catch (Exception ex)
             {
                 content.Error(ex.Message);
             }
+            return content;
+        }
+        /// <summary>
+        /// 淇敼鍗曟嵁
+        /// </summary>
+        public WebResponseContent UpdateSingOrder(ErpInOrderDTO model)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //鑾峰彇鍗曟嵁淇℃伅
+                Dt_InboundOrder inboundOrder = Db.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == model.OrderNo).First();
+                if (inboundOrder == null)
+                {
+                    return content.Error($"鍗曟嵁{model.OrderNo}涓嶅瓨鍦�!");
+                }
+                if (inboundOrder.OrderStatus>=InOrderStatusEnum.鍏ュ簱涓�.ObjToInt())
+                {
+                    return content.Error($"鍗曟嵁{model.OrderNo}鍏ュ簱涓垨宸插畬鎴�");
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鍒犻櫎鍗曟嵁
+        /// </summary>
+        public WebResponseContent DeleteSingOrder(ErpInOrderDTO model)
+        {
+            WebResponseContent content = new WebResponseContent();
             return content;
         }
         public WebResponseContent GetInboundOrders(SaveModel saveModel)
@@ -289,16 +404,16 @@
                 int oldCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
 
                 Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
-                if (receiveOrder == null)
+                if (receiveOrder == null && inboundOrder.OrderType==InOrderTypeEnum.Purchase.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑鏀惰揣鍗�");
                 }
-                if (receiveOrder.Details == null || receiveOrder.Details.Count <= 0)
+                if ((receiveOrder?.Details == null || receiveOrder?.Details.Count <= 0) && inboundOrder.OrderType == InOrderTypeEnum.Purchase.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑鏀惰揣鍗曟槑缁�");
                 }
 
-                List<string> purchaseOrderNos = receiveOrder.Details.Select(x => x.PurchaseOrderNo).ToList();
+                List<string> purchaseOrderNos = receiveOrder?.Details.Select(x => x.PurchaseOrderNo).ToList();
 
                 List<MatSerNumAnalysisModel> models = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNums);
 
@@ -325,7 +440,7 @@
                     if (!inboundOrderDetails.Any(x => x.BatchNo == model.LotNo))
                         return WebResponseContent.Instance.Error($"鏈湪鍏ュ簱鍗曟槑缁嗕腑鎵惧埌璇ョ墿鏂欐壒娆°�恵model.LotNo}銆�");
                 }
-                if (receiveOrder.Details.FirstOrDefault(x => x.MaterielCode == materielCode) == null)
+                if (receiveOrder?.Details.FirstOrDefault(x => x.MaterielCode == materielCode) == null && inboundOrder.OrderType == InOrderTypeEnum.Purchase.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"鏈湪鏀惰揣鍗曟槑缁嗕腑鎵惧埌璇ョ墿鏂欎俊鎭�");
                 }
@@ -342,9 +457,10 @@
 
                 List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
                 List<int> detailKeys = new List<int>();
+                Dt_ReturnOrder? returnOrder = null;
                 foreach (var model in models)
                 {
-                    if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null)
+                    if (purchaseOrderNos?.FirstOrDefault(x => x == model.PurchaseOrderNo) == null && inboundOrder.OrderType == InOrderTypeEnum.Purchase.ObjToInt())
                     {
                         return WebResponseContent.Instance.Error($"鏈湪鏀惰揣鍗曟槑缁嗕腑鎵惧埌璇ラ噰璐崟");
                     }
@@ -392,6 +508,21 @@
                 if (inboundOrder.Details.Count == oldCount)
                 {
                     inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
+                    //鍒ゆ柇鏄惁涓洪��鏂欏叆搴撳崟
+                    if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                    {
+                        returnOrder = _inboundRepository.ReturnOrderRepository.Db.Queryable<Dt_ReturnOrder>().Where(x => x.OrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
+                        returnOrder.ReturnOrderStatus = ReturnOrderStatusEnum.Returned.ObjToInt();
+                        foreach (var item in inboundOrder.Details)
+                        {
+                            Dt_ReturnOrderDetail returnOrderDetail = returnOrder.Details?.FirstOrDefault(x => x.MCode == item.MaterielCode);
+                            if (returnOrderDetail != null)
+                            {
+                                returnOrderDetail.OverReturnQty = item.OverInQuantity;
+                                returnOrderDetail.OrderDetailStatus = ReturnOrderStatusEnum.Returned.ObjToInt();
+                            }
+                        }
+                    }
                 }
                 else
                     inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
@@ -408,12 +539,26 @@
                 }
                 _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails);
                 _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
+                if (returnOrder != null)
+                {
+                    _inboundRepository.ReturnOrderRepository.UpdateData(returnOrder);
+                    _inboundRepository.ReturnOrderDetailRepository.UpdateData(returnOrder.Details);
+                }
                 _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.Inbound);
                 _unitOfWorkManage.CommitTran();
 
                 #region 鍏ュ簱瀹屾垚涓婃姤ERP
-                if (inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
-                    FeedbackInboundOrder(inboundOrder);
+                if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType != InOrderTypeEnum.Allocat.ObjToInt())
+                {
+                    if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                    {
+                        FeedbackReturnOrder(inboundOrder, returnOrder);
+                    }
+                    else
+                    {
+                        FeedbackInboundOrder(inboundOrder);
+                    }
+                }
                 #endregion
                 content.OK();
             }
@@ -541,7 +686,12 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅");
                 }
-
+                List<MatSerNumAnalysisModel> models = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNums);
+                //闄ら噰璐叆搴撳崟浠ュ鍏朵粬鍏ュ簱鍗曠粍鐩樻暟鎹鐞�
+                if (inboundOrder.OrderType != InOrderTypeEnum.Purchase.ObjToInt())
+                {
+                    return OtherInGroup(inboundOrder, palletCode, Initiallife, warehouse, models);
+                }
                 Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
                 if (receiveOrder == null)
                 {
@@ -553,8 +703,6 @@
                 }
 
                 List<string> purchaseOrderNos = receiveOrder.Details.Select(x => x.PurchaseOrderNo).ToList();
-
-                List<MatSerNumAnalysisModel> models = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNums);
 
                 if (models.Select(x => x.MaterielCode).Distinct().Count() > 1)
                 {
@@ -637,10 +785,10 @@
                 {
                     if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null)
                     {
-                        return WebResponseContent.Instance.Error($"鏈湪鏀惰揣鍗曟槑缁嗕腑鎵惧埌璇ラ噰璐崟");
+                        return WebResponseContent.Instance.Error($"鏈湪閲囪喘鍗曟槑缁嗕腑鎵惧埌璇ラ噰璐崟");
                     }
 
-                    Dt_InboundOrderDetail? notGroupDetail = inboundOrderDetails.Where(x => x.OrderDetailStatus < OrderDetailStatusEnum.Inbounding.ObjToInt() && x.MaterielCode==model.MaterielCode && x.BatchNo==model.LotNo && x.OrderQuantity > x.ReceiptQuantity).FirstOrDefault();
+                    Dt_InboundOrderDetail? notGroupDetail = inboundOrderDetails.Where(x => x.OrderDetailStatus <= OrderDetailStatusEnum.Inbounding.ObjToInt() && x.MaterielCode==model.MaterielCode && x.BatchNo==model.LotNo && x.OrderQuantity > x.ReceiptQuantity).FirstOrDefault();
 
                     if (notGroupDetail == null)
                     {
@@ -704,7 +852,149 @@
             }
             return content;
         }
+        public WebResponseContent OtherInGroup(Dt_InboundOrder inboundOrder,string? palletCode,int Initiallife,Dt_Warehouse warehouse,List<MatSerNumAnalysisModel> models)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (models.Select(x => x.MaterielCode).Distinct().Count() > 1)
+                {
+                    return content.Error($"鐗╂枡涓嶅彲娣锋斁");
+                }
 
+                string materielCode = models.FirstOrDefault()?.MaterielCode ?? "";
+                Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
+                if (materielInfo == null)
+                {
+                    return content.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
+                }
+
+                List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode).ToList();
+
+                if (inboundOrderDetails == null || inboundOrderDetails.Count <= 0)
+                {
+                    return content.Error($"鏈湪鍏ュ簱鍗曟槑缁嗕腑鎵惧埌璇ョ墿鏂欎俊鎭�");
+                }
+
+                float beforeQuantity = 0;
+
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+                if (stockInfo == null)
+                {
+                    stockInfo = new Dt_StockInfo()
+                    {
+                        PalletCode = palletCode,
+                        StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
+                        WarehouseId = inboundOrder.WarehouseId,
+                        PalletType = GetPalletType(warehouse, palletCode),
+                        Details = new List<Dt_StockInfoDetail>()
+                    };
+                }
+                else
+                {
+                    if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
+                    {
+                        return content.Error($"鎵樼洏鍙烽噸澶�");
+                    }
+                    beforeQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
+                }
+
+                if (warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
+                {
+                    stockInfo.Remark = Initiallife.ToString();
+                    string batchNo = models.FirstOrDefault()?.LotNo ?? "";
+                    Dt_StockInfoDetail existDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == batchNo);
+                    if (existDetail != null)
+                    {
+                        return content.Error($"{batchNo}娴嬭瘯鏋跺凡瀛樺湪");
+                    }
+                    if (models.Count >= 2)
+                    {
+                        return content.Error($"缁勭洏鏄庣粏涓嶅敮涓�");
+                    }
+                    if (palletCode.Substring(0, 1) == "6")
+                    {
+                        stockInfo.PalletType = PalletTypeEnum.MediumPallet.ObjToInt();
+                    }
+                    else
+                    {
+                        stockInfo.PalletType = PalletTypeEnum.LargestPallet.ObjToInt();
+                    }
+                }
+                else if (warehouse.WarehouseCode == WarehouseEnum.HA57.ToString())
+                {
+                    if (models.Count >= 2)
+                    {
+                        return content.Error($"缁勭洏鏄庣粏涓嶅敮涓�");
+                    }
+                }
+
+                List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
+                foreach (var model in models)
+                {
+                    Dt_InboundOrderDetail? notGroupDetail = inboundOrderDetails.Where(x => x.OrderDetailStatus <= OrderDetailStatusEnum.Inbounding.ObjToInt() && x.MaterielCode == model.MaterielCode && x.OrderQuantity > x.ReceiptQuantity).FirstOrDefault();
+
+                    if (notGroupDetail == null)
+                    {
+                        return WebResponseContent.Instance.Error($"璇ョ墿鏂欏湪璇ュ叆搴撳崟涓凡鍏ㄩ儴缁勭洏瀹屾垚");
+                    }
+                    Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
+                    {
+                        BatchNo = model.LotNo,
+                        MaterielCode = materielInfo.MaterielCode,
+                        MaterielName = materielInfo.MaterielName,
+                        MaterielSpec = materielInfo.MaterielSpec,
+                        OrderNo = inboundOrder.InboundOrderNo,
+                        SerialNumber = model.SerialNumber,
+                        StockQuantity = model.Quantity,
+                        OutboundQuantity = 0,
+                        Unit = materielInfo.MaterielUnit,
+                        Status = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
+                        ProductionDate = model.ProductionDate,
+                        EffectiveDate = model.EffectiveDate,
+                        InboundOrderRowNo = notGroupDetail.RowNo,
+                    };
+
+                    if (stockInfo.Id > 0)
+                    {
+                        stockInfoDetail.StockId = stockInfo.Id;
+                    }
+                    stockInfo.Details.Add(stockInfoDetail);
+
+                    stockInfoDetails.Add(stockInfoDetail);
+
+                    notGroupDetail.ReceiptQuantity += model.Quantity;
+                    if (notGroupDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
+                    {
+                        notGroupDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
+                    }
+                }
+
+                float totalQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
+
+                inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
+
+                _unitOfWorkManage.BeginTran();
+                if (stockInfo.Id == 0)
+                {
+                    _stockRepository.StockInfoRepository.Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
+                }
+                else
+                {
+                    _stockRepository.StockInfoRepository.Db.UpdateNav(stockInfo).Include(x => x.Details, new UpdateNavOptions() { OneToManyInsertOrUpdate = true }).ExecuteCommand();
+                }
+                _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails);
+                _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
+                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.MaterielGroup);
+                _unitOfWorkManage.CommitTran();
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
 
         public WebResponseContent MaterielGroup(string palletCode, int Initiallife, int warehouseId, List<string> serNums)
         {
@@ -909,6 +1199,70 @@
             }
             return content;
         }
+        /// <summary>
+        /// 閫�鏂欏畬鎴愪笂鎶ヨ嚦ERP
+        /// </summary>
+        public WebResponseContent FeedbackReturnOrder(Dt_InboundOrder inboundOrder,Dt_ReturnOrder returnOrder)
+        {
+            WebResponseContent content= new WebResponseContent();
+            try
+            {
+                if (returnOrder==null)
+                {
+                    return content.OK();
+                }
+                //鑾峰彇浠撳簱缂栫爜
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId==inboundOrder.WarehouseId);
+
+                var groupedDetails = returnOrder.Details.GroupBy(d => new { d.PickCode, d.RowId })
+                    .Select(g => new
+                    {
+                        PickCode = returnOrder.OrderNo,
+                        RowIndex = g.Key.RowId,
+                        Details = g.ToList()
+                    })
+                    .ToList();
+                // 鏋勫缓宓屽缁撴瀯
+                var issitems = groupedDetails.Select(g => new ReturnItem
+                {
+                    Pickcode = g.PickCode,
+                    Rowindex = g.RowIndex,
+                    PickList = g.Details
+                        .GroupBy(d => d.MCode)
+                        .Select(mg => new ReturnPickItem
+                        {
+                            Material = mg.Key,
+                            Qty = mg.Sum(x => x.Qty),
+                            Dataitem = mg.Select(d => new ReturnDataItem
+                            {
+                                Lotno = d.BatchNo,
+                                Qty = d.Qty,
+                                Location = warehouse.WarehouseCode,
+                                Msfpart = d.Code
+                            }).ToList()
+                        }).ToList()
+                }).ToList();
+                //鑾峰彇瀵瑰簲閫�鏂欏崟
+                ERPReturnModel returnModel = new ERPReturnModel()
+                {
+                    Way = 1,
+                    UniqueTag = returnOrder.Id.ToString(),
+                    Code = CreateCodeByRule(nameof(RuleCodeEnum.TLCodeRule)),
+                    WarehouseCode = warehouse.WarehouseCode,
+                    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    Createuser=inboundOrder.Creater,
+                    IsDev=returnOrder.IsDev,
+                    Issitem= issitems
+                };
+                _invokeERPService.InvokeReturnApi(returnModel);
+                return content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
         static object lock_code = new object();
         public string CreateCodeByRule(string ruleCode)
         {
@@ -968,7 +1322,7 @@
                 return code;
             }
         }
-
+        #region 寮冪敤
         /// <summary>
         /// 鍏ュ簱瀹屾垚鍥炰紶鍒癊RP
         /// </summary>
@@ -1051,7 +1405,7 @@
         //        return WebResponseContent.Instance.Error(ex.Message);
         //    }
         //}
-
+        #endregion
         public int GetPalletType(Dt_Warehouse warehouse, string palletCode)
         {
             if (warehouse.WarehouseCode == WarehouseEnum.HA64.ToString())
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderDetailService.cs"
new file mode 100644
index 0000000..653ced1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderDetailService.cs"
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public class ReturnOrderDetailService : ServiceBase<Dt_ReturnOrderDetail, IReturnOrderDetailRepository>, IReturnOrderDetailService
+    {
+        public IReturnOrderDetailRepository Repository => BaseDal;
+
+        public ReturnOrderDetailService(IReturnOrderDetailRepository BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs"
new file mode 100644
index 0000000..6d5f190
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReturnOrderService.cs"
@@ -0,0 +1,235 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+using WIDESEA_DTO.ERP;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_Common.OrderEnum;
+using SqlSugar.Extensions;
+using WIDESEA_Common.CommonEnum;
+
+namespace WIDESEA_InboundService
+{
+    public class ReturnOrderService : ServiceBase<Dt_ReturnOrder, IReturnOrderRepository>, IReturnOrderService
+    {
+        public IReturnOrderRepository Repository => BaseDal;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IBasicRepository _basicRepository;
+        private readonly IOutboundService _outboundService;
+        public ReturnOrderService(IReturnOrderRepository BaseDal,IUnitOfWorkManage unitOfWorkManage,IBasicRepository basicRepository,
+        IOutboundService outboundService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _basicRepository = basicRepository;
+            _outboundService = outboundService;
+        }
+        /// <summary>
+        /// 鑾峰彇閫�鏂欏崟
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public WebResponseContent GetReturnOrders(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                int pageNo = saveModel.MainData["pageNo"].ObjToInt();
+                string? orderNo = saveModel.MainData["orderNo"].ToString();
+                int warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
+                List<Dt_ReturnOrder> returnOrders = new List<Dt_ReturnOrder>();
+                if (string.IsNullOrEmpty(orderNo))
+                {
+                    returnOrders = Db.Queryable<Dt_ReturnOrder>().Where(x => x.ReturnOrderStatus < ReturnOrderStatusEnum.Returning.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 5);
+                }
+                else
+                {
+                    returnOrders = Db.Queryable<Dt_ReturnOrder>().Where(x => (x.OrderNo.Contains(orderNo)) && x.ReturnOrderStatus < ReturnOrderStatusEnum.Returning.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 5);
+                }
+
+                content.OK(data: returnOrders);
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鑾峰彇鎺ユ敹閫�鏂欏崟
+        /// </summary>
+        public WebResponseContent ReturnOrder(ErpReturnOrderDTO model)
+        {
+            try
+            {
+                return model.Way switch
+                {
+                    1 => AddReturnOrder(model),
+                    2 => UpdateReturnOrder(model),
+                    3 => DeleteReturnOrder(model),
+                    _ => WebResponseContent.Instance.Error($"鎿嶄綔绫诲瀷涓嶅瓨鍦�,Way:{model.Way}"),
+                };
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鏂板缓閫�鏂欏崟
+        /// </summary>
+        public WebResponseContent AddReturnOrder(ErpReturnOrderDTO model)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (BaseDal.QueryFirst(x => x.OrderNo == model.OrderNo) != null) 
+                {
+                    return content.Error($"閫�鏂欏崟鍙穥model.OrderNo}宸插瓨鍦�!");
+                }
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == model.WaCode);
+                if (warehouse == null)
+                {
+                    return content.Error($"鏈壘鍒颁粨搴撲俊鎭�");
+                }
+                List<Dt_ReturnOrderDetail> returnOrderDetails = new List<Dt_ReturnOrderDetail>();
+                foreach (var item in model.Issitem)
+                {
+                    //鍒ゆ柇鍙戞枡鍗曞彿
+                    Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Repository.Db.Queryable<Dt_OutboundOrder>().Where(x=>x.UpFLOrderNo==item.PickCode).Includes(x=>x.Details).First() ?? throw new Exception($"鐢宠鍗曞彿(鍙戞枡鍗�){item.PickCode}涓嶅瓨鍦�");
+                    
+                    foreach (var pickitem in item.PickList)
+                    {
+                        Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.Find(x => x.MaterielCode == pickitem.MCode) ?? throw new Exception($"{item.PickCode}鐢宠鍗曞彿涓墿鏂檣pickitem.MCode}涓嶅瓨鍦�");
+                        //鑾峰彇瀵瑰簲鍑哄簱鍗曡鎯�
+                        Dt_OutStockLockInfo outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.OrderDetailId == outboundOrderDetail.Id);
+                        
+                        Dt_ReturnOrderDetail returnOrderDetail = new Dt_ReturnOrderDetail()
+                        {
+                            PickCode = item.PickCode,
+                            ApplyRow = item.ApplyRow ?? 0,
+                            RowId = item.RowId,
+                            OrderDetailStatus = ReturnOrderStatusEnum.NotReturn.ObjToInt(),
+                            MCode = pickitem.MCode,
+                            MaterielName = outboundOrderDetail.MaterielName,
+                            MaterielSpec = outboundOrderDetail.MaterielSpec ?? "",
+                            BatchNo = outStockLockInfo.BatchNo,
+                            Qty = pickitem.Qty,
+                            ReturnQty = pickitem.ReturnQty,
+                            OverReturnQty = 0,
+                            Unit = pickitem.Unit,
+                            Code = pickitem.Code
+                        };
+                        returnOrderDetails.Add(returnOrderDetail);
+                    }
+                }
+                Dt_ReturnOrder returnOrder = new Dt_ReturnOrder()
+                {
+                    OrderNo=model.OrderNo,
+                    WarehouseId=warehouse.WarehouseId,
+                    ReturnOrderType=model.OrderType,
+                    ReturnOrderStatus=ReturnOrderStatusEnum.NotReturn.ObjToInt(),
+                    UploadStatus= WhetherEnum.False.ObjToInt(),
+                    IsDev=model.IsDev,
+                    Remark=model.Note,
+                    Details= returnOrderDetails
+                };
+                Db.InsertNav(returnOrder).Include(x => x.Details).ExecuteCommand();
+
+                content.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 淇敼閫�鏂欏崟
+        /// </summary>
+        public WebResponseContent UpdateReturnOrder(ErpReturnOrderDTO model)
+        {
+            WebResponseContent content = new WebResponseContent();
+            return content;
+        }
+        /// <summary>
+        /// 鍒犻櫎閫�鏂欏崟
+        /// </summary>
+        public WebResponseContent DeleteReturnOrder(ErpReturnOrderDTO model)
+        {
+            WebResponseContent content = new WebResponseContent();
+            return content;
+        }
+        /// <summary>
+        /// 纭閫�搴撴牴鎹��搴撳崟鐢熸垚鍏ュ簱鍗�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent IsReturnCreateInOrder(int returnId)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_ReturnOrder returnOrder = Db.Queryable<Dt_ReturnOrder>().Where(x => x.Id == returnId).Includes(x => x.Details).First();
+                if (returnOrder==null)
+                {
+                    return content.Error("鏈壘鍒伴��鏂欒淇℃伅");
+                }
+                if (returnOrder.Details==null || returnOrder.Details.Count<=0)
+                {
+                    return content.Error("鏈壘鍒拌閫�鏂欏崟淇℃伅");
+                }
+                if (returnOrder.ReturnOrderStatus!=ReturnOrderStatusEnum.NotReturn.ObjToInt())
+                {
+                    return content.Error("璇ラ��鏂欏崟宸插畬鎴愭垨閫�鏂欎腑");
+                }
+                List<Dt_InboundOrderDetail> inboundOrderDetails = new List<Dt_InboundOrderDetail>();
+                foreach (var item in returnOrder.Details)
+                {
+                    Dt_InboundOrderDetail orderDetail = new Dt_InboundOrderDetail()
+                    {
+                        MaterielCode=item.MCode,
+                        BatchNo=item.BatchNo,
+                        OrderQuantity=item.ReturnQty,
+                        ReceiptQuantity=0,
+                        OverInQuantity=0,
+                        OrderDetailStatus= OrderDetailStatusEnum.New.ObjToInt(),
+                        Unit=item.Unit,
+                        RowNo=item.RowId,
+                        MaterielName=item.MaterielName,
+                        MaterielSpec=item.MaterielSpec,
+                    };
+                    inboundOrderDetails.Add(orderDetail);
+                }
+                Dt_InboundOrder inboundOrder = new Dt_InboundOrder()
+                {
+                    WarehouseId=returnOrder.WarehouseId,
+                    UpperOrderNo=returnOrder.OrderNo,
+                    SupplierId="",
+                    OrderType= InOrderTypeEnum.Return.ObjToInt(),
+                    OrderStatus= InOrderStatusEnum.鏈紑濮�.ObjToInt(),
+                    CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
+                    Remark=returnOrder.Remark,
+                    Details= inboundOrderDetails
+                };
+                returnOrder.ReturnOrderStatus=ReturnOrderStatusEnum.Returning.ObjToInt();
+                _unitOfWorkManage.BeginTran();
+                BaseDal.UpdateData(returnOrder);
+                Db.InsertNav(inboundOrder).Include(x=>x.Details).ExecuteCommand();
+                _unitOfWorkManage.CommitTran();
+                return content.OK("鎴愬姛");
+            }
+            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_InboundService/WIDESEA_InboundService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj"
index 9b1e176..5023950 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj"
@@ -11,6 +11,7 @@
     <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
     <ProjectReference Include="..\WIDESEA_ICheckRepository\WIDESEA_ICheckRepository.csproj" />
     <ProjectReference Include="..\WIDESEA_IInboundService\WIDESEA_IInboundService.csproj" />
+    <ProjectReference Include="..\WIDESEA_IOutboundService\WIDESEA_IOutboundService.csproj" />
     <ProjectReference Include="..\WIDESEA_IRecordService\WIDESEA_IRecordService.csproj" />
     <ProjectReference Include="..\WIDESEA_IStockService\WIDESEA_IStockService.csproj" />
     <ProjectReference Include="..\WIDESEA_ITaskInfoRepository\WIDESEA_ITaskInfoRepository.csproj" />
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs"
index 7a3a1fa..16aea96 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs"
@@ -35,7 +35,7 @@
         /// <summary>
         /// 鐗╂枡鍚嶇О
         /// </summary>
-        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡鍚嶇О")]
+        [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
         public string MaterielName { get; set; }
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs"
index 4a6a5cc..7b7efc4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_PurchaseOrderDetail.cs"
@@ -77,7 +77,7 @@
         /// <summary>
         /// 鐗╂枡鍚嶇О
         /// </summary>
-        [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "鐗╂枡鍚嶇О")]
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
         public string MaterielName { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
index 7756011..428bb28 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReceiveOrderDetail.cs"
@@ -101,7 +101,7 @@
         /// <summary>
         /// 鐗╂枡鍚嶇О
         /// </summary>
-        [SugarColumn(IsNullable = true, Length = 100, ColumnDescription = "鐗╂枡鍚嶇О")]
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
         public string MaterielName { get; set; }
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrder.cs"
new file mode 100644
index 0000000..49ef233
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrder.cs"
@@ -0,0 +1,75 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 閫�鏂欏崟
+    /// </summary>
+    [SugarTable(nameof(Dt_ReturnOrder), "閫�鏂欏崟")]
+    public class Dt_ReturnOrder : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "閫�鏂欏崟鍙�")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟绫诲瀷<br/>
+        /// 1锛氭爣鍑嗛��鏂�<br/>
+        /// 2锛歜om閫�鏂�<br/>
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟绫诲瀷")]
+        public int ReturnOrderType { get; set; }
+
+        /// <summary>
+        /// 璁㈠崟鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鐘舵��")]
+        public int ReturnOrderStatus { get; set; }
+
+        /// <summary>
+        /// 涓婁紶鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "涓婁紶鐘舵��")]
+        public int UploadStatus { get; set; }
+
+        /// <summary>
+        /// 鏄惁鐮斿彂
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鐮斿彂")]
+        public int IsDev { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟鏄庣粏
+        /// </summary>
+        [PropertyValidate("閫�鏂欏崟鏄庣粏", NotNullAndEmpty = true), Navigate(NavigateType.OneToMany, nameof(Dt_ReturnOrderDetail.ReturnId), nameof(Id))]
+        public List<Dt_ReturnOrderDetail> Details { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrderDetail.cs"
new file mode 100644
index 0000000..85fb400
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_ReturnOrderDetail.cs"
@@ -0,0 +1,109 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 閫�鏂欏崟鏄庣粏
+    /// </summary>
+    [SugarTable(nameof(Dt_ReturnOrderDetail), "閫�鏂欏崟鏄庣粏")]
+    public class Dt_ReturnOrderDetail : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欏崟涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欏崟涓婚敭")]
+        public int ReturnId { get; set; }
+
+        /// <summary>
+        /// 鐢宠鍗曞彿(鍙戞枡鍗�)
+        /// </summary>
+        [SugarColumn(IsNullable = false,Length =50, ColumnDescription = "鐢宠鍗曞彿(鍙戞枡鍗�)")]
+        public string PickCode { get; set; }
+
+        /// <summary>
+        /// 鐢宠鍗曞彿琛屽彿(鍙戞枡鍗曟槑缁嗚鍙�)
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐢宠鍗曞彿琛屽彿(鍙戞枡鍗曟槑缁嗚鍙�)")]
+        public int ApplyRow { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欒鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欒鍙�")]
+        public int RowId { get; set; }
+
+        /// <summary>
+        /// 鏄庣粏鍗曠姸鎬�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄庣粏鍗曠姸鎬�")]
+        public int OrderDetailStatus { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = false,Length =50, ColumnDescription = "鐗╂枡缂栫爜")]
+        public string MCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡瑙勬牸")]
+        public string MaterielSpec { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵规鍙�")]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 鍙��鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鍙��鏁伴噺")]
+        public float Qty { get; set; }
+
+        /// <summary>
+        /// 閫�鍥炴暟閲�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鍥炴暟閲�")]
+        public float ReturnQty { get; set; }
+
+        /// <summary>
+        /// 宸查��鍥炴暟閲�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "宸查��鍥炴暟閲�")]
+        public float OverReturnQty { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [SugarColumn(IsNullable = false,Length =20, ColumnDescription = "鍗曚綅")]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鍒堕�犻儴浠禼ode
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍒堕�犻儴浠禼ode")]
+        public string Code { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs"
index c5aff01..35aae57 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs"
@@ -42,6 +42,12 @@
         public string UpperOrderNo { get; set; }
 
         /// <summary>
+        /// 鍙戞枡鎺ㄩ�佸崟鎹紪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍙戞枡鎺ㄩ�佸崟鎹紪鍙�")]
+        public string UpFLOrderNo { get; set; }
+
+        /// <summary>
         /// 鍗曟嵁绫诲瀷
         /// </summary>
         [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷", IsOnlyIgnoreUpdate = true)]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
index 78a2c67..500f310 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrderDetail.cs"
@@ -39,6 +39,12 @@
         public string MaterielName { get; set; }
 
         /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡瑙勬牸")]
+        public string MaterielSpec { get; set; }
+
+        /// <summary>
         /// 鎵规鍙�
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎵规鍙�")]
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 8cb1176..132956c 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"
@@ -210,7 +210,8 @@
                 _unitOfWorkManage.CommitTran();
 
                 #region 鍑哄簱瀹屾垚涓婃姤ERP
-                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+                //鐢熶骇棰嗘枡,鐮斿彂棰嗘枡锛屾爣鍑嗛鏂欙紝鎺ㄩ�丒RP鍑哄簱
+                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.OrderType==OutOrderTypeEnum.Issue.ObjToInt())
                     _invokeERPService.InvokeOutStandardsApi(GetERPIssueModel(outboundOrder, warehouse.WarehouseCode));
                 #endregion
                 content.OK();
@@ -268,6 +269,9 @@
                     Createuser = string.IsNullOrEmpty(Createuser) ? Createuser : "admin",
                     Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                 };
+                //鏇存柊鍙戞枡鍗曞彿
+                outboundOrder.UpFLOrderNo = issueModel.Code;
+                BaseDal.UpdateData(outboundOrder);
             }
             catch (Exception ex)
             {
@@ -313,6 +317,7 @@
                                 BatchNo = model.MLot,
                                 MaterielCode = model.MCode,
                                 MaterielName = materielInfo.MaterielName,
+                                MaterielSpec=materielInfo.MaterielSpec,
                                 OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                                 OrderQuantity = model.Qty,
                                 OrderId = oldOutboundOrder.Id
@@ -327,6 +332,7 @@
                             RowNo = Convert.ToInt32(model.RowNo),
                             BatchNo = model.MLot,
                             MaterielCode = model.MCode,
+                            MaterielSpec = materielInfo.MaterielSpec,
                             MaterielName = materielInfo.MaterielName,
                             OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                             OrderQuantity = model.Qty,
@@ -343,7 +349,16 @@
                             DepartmentName = model.DepartmentName,
                             Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail },
                             Remark = model.Node
-
+                        };
+                        outboundOrder.OrderType = model.OType switch
+                        {
+                            1 or 2 or 3=> OutOrderTypeEnum.Issue.ObjToInt(),
+                            4=>OutOrderTypeEnum.Quality.ObjToInt(),
+                            5=>OutOrderTypeEnum.Allocate.ObjToInt(),
+                            6=>OutOrderTypeEnum.MaintenanceIssue.ObjToInt(),
+                            7=>OutOrderTypeEnum.SaleOut.ObjToInt(),
+                            8=>OutOrderTypeEnum.Rework.ObjToInt(),
+                            _=>0
                         };
                         Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                     }
@@ -368,6 +383,7 @@
                         RowNo = Convert.ToInt32(model.RowNo),
                         BatchNo = model.MLot,
                         MaterielCode = model.MCode,
+                        MaterielSpec = materielInfo.MaterielSpec,
                         MaterielName = materielInfo.MaterielName,
                         OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
                         OrderQuantity = model.Qty,
@@ -382,6 +398,10 @@
                     {
                         return WebResponseContent.Instance.Error($"鏈壘鍒拌鍑哄簱鍗�");
                     }
+                    _unitOfWorkManage.BeginTran();
+                    BaseDal.DeleteData(oldOutboundOrder);
+                    _outboundOrderDetailRepository.DeleteData(oldOutboundOrder.Details);
+                    _unitOfWorkManage.CommitTran();
                 }
 
                 return WebResponseContent.Instance.OK();
@@ -463,6 +483,9 @@
                         Createuser = outboundOrder.Creater,
                         Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                     };
+                    //鏇存柊鍙戞枡鍗曞彿
+                    outboundOrder.UpFLOrderNo = issueModel.Code;
+                    BaseDal.UpdateData(outboundOrder);
                     _invokeERPService.InvokeOutStandardsApi(issueModel);
                 }
                 else
@@ -524,21 +547,20 @@
                     //    Issitem = new List<ERPIssueItemModel>() { issueItemModel },
                     //};
                     #endregion
-                }
-
-                if (stockInfos.Count > 0)
-                {
-                    _stockService.StockInfoService.Repository.UpdateData(stockInfos);
-                }
-                else
-                {
-                    _outStockLockInfoService.Repository.UpdateData(_OutStockLockInfos);
-                }
-                //鍑哄簱瀹屾垚涓婃姤ERP 娴嬭瘯娉ㄩ噴
-                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
-                {
-                    issueModel = GetERPIssueModel(outboundOrder, warehouse.WarehouseCode);
-                    _invokeERPService.InvokeOutStandardsApi(issueModel);
+                    if (stockInfos.Count > 0)
+                    {
+                        _stockService.StockInfoService.Repository.UpdateData(stockInfos);
+                    }
+                    else
+                    {
+                        _outStockLockInfoService.Repository.UpdateData(_OutStockLockInfos);
+                    }
+                    //鍑哄簱瀹屾垚涓婃姤ERP 娴嬭瘯娉ㄩ噴
+                    if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+                    {
+                        issueModel = GetERPIssueModel(outboundOrder, warehouse.WarehouseCode);
+                        _invokeERPService.InvokeOutStandardsApi(issueModel);
+                    }
                 }
                 return WebResponseContent.Instance.OK();
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs"
index 67d7666..229dea3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs"
@@ -67,16 +67,19 @@
 
         public List<Dt_StockInfo> GetStockInfos(string materielCode, string lotNo, List<string> locationCodes)
         {
+            List<Dt_StockInfo> stockInfos = null;
             if (!string.IsNullOrEmpty(lotNo))
             {
-                return Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode && v.BatchNo == lotNo)).ToList();
+                var stockSort = Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode && v.BatchNo == lotNo)).ToList();
+                stockInfos = stockSort.OrderBy(x=>x.Details.FirstOrDefault()?.EffectiveDate).ToList();
             }
             else
             {
-                return Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList();
+                var stockSort = Db.Queryable<Dt_StockInfo>().Where(x => locationCodes.Contains(x.LocationCode)).Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)).ToList();
+                stockInfos = stockSort.OrderBy(x => x.Details.FirstOrDefault()?.EffectiveDate).ToList();
             }
 
-
+            return stockInfos;
             //ISugarQueryable<Dt_LocationInfo> sugarQueryable = Db.Queryable<Dt_LocationInfo>().Where(x => locationCodes.Contains(x.LocationCode));
             //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode));
             //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).OrderBy(a => a.CreateDate).Includes(a => a.Details).ToList();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
index 0e31f7b..680641d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
@@ -7,6 +7,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.StockEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
@@ -141,7 +142,7 @@
         {
             List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>();
             float stockTotalQuantity = stockInfos.Select(x => x.Details.Sum(v => v.StockQuantity - v.OutboundQuantity)).Sum(x => x);
-            stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
+            //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
             if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
             {
                 int index = 0;
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 af36c1b..48e4a4f 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"
@@ -440,8 +440,8 @@
                     WarehouseId = warehouse.WarehouseId,
                     StockStatus = StockStatusEmun.MES閫�搴�.ObjToInt()
                 };
-
-                Dt_StockInfoDetail_Hty stockInfoDetail_Hty = _stockRepository.StockInfoDetail_HtyRepository.QueryFirst(x => x.BatchNo == model.MaterialLot && x.MaterielCode == model.MaterialCode);
+                Dt_StockInfo_Hty stockInfo_Hty = _stockRepository.StockInfo_HtyRepository.QueryData(x=>x.PalletCode== model.CarrierCode).OrderByDescending(x=>x.SourceId).First();
+                Dt_StockInfoDetail_Hty stockInfoDetail_Hty = _stockRepository.StockInfoDetail_HtyRepository.QueryFirst(x => x.StockId==stockInfo_Hty.SourceId);
 
                 Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                 {
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 1edf744..3cf8d6e 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"
@@ -199,7 +199,7 @@
                 stockInfo.LocationCode = locationInfo.LocationCode;
 
                 #region 绌虹鍏ュ簱/鎷i�夊洖搴�/鐢熶骇閫�鏂�
-                if (task.TaskType == TaskTypeEnum.InEmpty.ObjToInt() || task.TaskType == TaskTypeEnum.InPick.ObjToInt() || task.TaskType==TaskTypeEnum.ProductionReturn.ObjToInt())
+                if (task.TaskType == TaskTypeEnum.InEmpty.ObjToInt() || task.TaskType == TaskTypeEnum.InPick.ObjToInt() || (task.TaskType==TaskTypeEnum.ProductionReturn.ObjToInt() && warehouse.WarehouseCode==WarehouseEnum.HA64.ToString()))
                 {
                     stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
                     task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
@@ -220,49 +220,50 @@
 
                 Dt_InboundOrder? inboundOrder = _inboundRepository.InboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
                 Dt_InboundOrderDetail? inboundOrderDetail = null;
+                Dt_ReturnOrder? returnOrder = null;
                 //鏍囧噯鍏ュ簱娴佺▼鏌ユ壘鍏ュ簱鍗曟嵁
                 if (inboundOrder != null && stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt())
                 {
                     //鏌ヨ鍘熷畬鎴愮殑鍏ュ簱鏄庣粏鏁伴噺
                     int overCount = inboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
-                    if (stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt())
+                    inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.RowNo == stockInfo.Details.FirstOrDefault()?.InboundOrderRowNo);
+                    foreach (var item in stockInfo.Details)
                     {
-                        inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.RowNo == stockInfo.Details.FirstOrDefault()?.InboundOrderRowNo);
-                        foreach (var item in stockInfo.Details)
+                        if (inboundOrderDetail == null)
                         {
-                            if (inboundOrderDetail == null)
-                            {
-                                continue;
-                            }
-                            ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
-                            {
-                                ExpiryDate = item.EffectiveDate ?? "",
-                                LocationCode = warehouse.WarehouseCode,
-                                MaterialsCode = item.MaterielCode,
-                                MfgDate = item.ProductionDate ?? "",
-                                QtyCustoms = "0",
-                                Quantity = item.StockQuantity.ToString(),
-                                Rack = stockInfo.LocationCode,
-                                ReceiptCode = inboundOrder.UpperOrderNo,
-                                ReceiptSerNo = item.InboundOrderRowNo.ToString()
-                            };
-                            inboundOrderDetail.OverInQuantity += item.StockQuantity;
-                            if (inboundOrderDetail.OverInQuantity == inboundOrderDetail.OrderQuantity)
-                            {
-                                inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
-                                overCount += 1;
-                            }
-                            else if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
-                            {
-                                inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Inbounding.ObjToInt();
-                            }
+                            continue;
+                        }
+                        inboundOrderDetail.OverInQuantity += item.StockQuantity;
+                        if (inboundOrderDetail.OverInQuantity == inboundOrderDetail.OrderQuantity)
+                        {
+                            inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
+                            overCount += 1;
+                        }
+                        else if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
+                        {
+                            inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Inbounding.ObjToInt();
                         }
                     }
                     if (inboundOrder.Details.Count == overCount)
                     {
                         inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
+                        //鍒ゆ柇鏄惁涓洪��鏂欏叆搴撳崟
+                        if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                        {
+                            returnOrder = _inboundRepository.ReturnOrderRepository.Db.Queryable<Dt_ReturnOrder>().Where(x => x.OrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
+                            returnOrder.ReturnOrderStatus=ReturnOrderStatusEnum.Returned.ObjToInt();
+                            foreach (var item in inboundOrder.Details)
+                            {
+                                Dt_ReturnOrderDetail returnOrderDetail = returnOrder.Details?.FirstOrDefault(x=>x.MCode==item.MaterielCode);
+                                if (returnOrderDetail != null)
+                                {
+                                    returnOrderDetail.OverReturnQty = item.OverInQuantity;
+                                    returnOrderDetail.OrderDetailStatus = ReturnOrderStatusEnum.Returned.ObjToInt();
+                                }
+                            }
+                        }
                     }
-                    if (inboundOrder.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt())
+                    else if (inboundOrder.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt())
                     {
                         inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
                     }
@@ -301,10 +302,24 @@
                     _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                     _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
                 }
+                if (returnOrder!=null)
+                {
+                    _inboundRepository.ReturnOrderRepository.UpdateData(returnOrder);
+                    _inboundRepository.ReturnOrderDetailRepository.UpdateData(returnOrder.Details);
+                }
                 _unitOfWorkManage.CommitTran();
                 //瀛樺湪鍏ュ簱鍗曞苟鐘舵�佷负瀹屾垚鐘舵�佹帹閫佽嚦ERP
-                if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt())
-                    _inboundOrderService.FeedbackInboundOrder(inboundOrder);
+                if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType != InOrderTypeEnum.Allocat.ObjToInt())
+                {
+                    if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                    {
+                        _inboundOrderService.FeedbackReturnOrder(inboundOrder, returnOrder);
+                    }
+                    else
+                    {
+                        _inboundOrderService.FeedbackInboundOrder(inboundOrder);
+                    }
+                }
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
@@ -345,7 +360,7 @@
                 List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
                 List<Dt_MesOutboundOrder> mesOutboundOrders = new List<Dt_MesOutboundOrder>();
 
-                if ((outStockLockInfos == null || outStockLockInfos.Count == 0) && warehouse.WarehouseCode != WarehouseEnum.HA64.ToString() && task.TaskType != TaskTypeEnum.OutEmpty.ObjToInt())
+                if ((outStockLockInfos == null || outStockLockInfos.Count == 0) && warehouse.WarehouseCode != WarehouseEnum.HA64.ToString() && (task.TaskType != TaskTypeEnum.OutEmpty.ObjToInt()))
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板嚭搴撹鎯呬俊鎭�");
                 }
@@ -386,13 +401,13 @@
                 task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
                 _unitOfWorkManage.BeginTran();
 
-                if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt())
+                if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt()|| task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt())
                 {
+                    //澶勭悊鍑哄簱璇︽儏
                     if (outboundOrderDetails.Count > 0)
                     {
                         _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
                     }
-
                     stockInfo.LocationCode = "";
                     stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
                     _stockService.StockInfoService.Repository.UpdateData(stockInfo);
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 5d14e40..edeee12 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"
@@ -7,6 +7,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.StockEnum;
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.WareHouseEnum;
@@ -48,7 +49,7 @@
                     return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
                 }
 
-                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x=>x.PalletCode== palletCode).Includes(x=>x.Details).First();
                 if (stockInfo == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
@@ -82,21 +83,43 @@
                         Roadway = "",
                         SourceAddress = stationCode,
                         TargetAddress = "",
-                        TaskType = stockInfo.StockStatus == StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() ? TaskTypeEnum.InPick.ObjToInt() : TaskTypeEnum.Inbound.ObjToInt(),
+                        TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                         TaskStatus = TaskStatusEnum.New.ObjToInt(),
                         WarehouseId = stockInfo.WarehouseId,
                         PalletType = stockInfo.PalletType
                     };
-
+                    //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
+                    Dt_InboundOrder? inboundOrder =  null;
+                    if (stockInfo!=null && stockInfo.Details.Count>0)
+                    {
+                        string? orderNo = stockInfo.Details.FirstOrDefault()?.OrderNo ?? "";
+                        inboundOrder =_inboundOrderService.Repository.QueryFirst(x => x.InboundOrderNo == orderNo && x.OrderStatus < InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt());
+                    }
+                    
+                    if (inboundOrder != null)
+                    {
+                        if (inboundOrder.OrderType == InOrderTypeEnum.Allocat.ObjToInt())
+                        {
+                            newTask.TaskType = TaskTypeEnum.InAllocate.ObjToInt();
+                        }
+                        else if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                        {
+                            newTask.TaskType = TaskTypeEnum.ProductionReturn.ObjToInt();
+                        }
+                    }
                     if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
                     {
                         stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+                    }
+                    else if (stockInfo.StockStatus == StockStatusEmun.鎷i�夊畬鎴�.ObjToInt())
+                    {
+                        stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
+                        newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
                     }
                     else
                     {
                         stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
                     }
-
                     _unitOfWorkManage.BeginTran();
                     int taskId = BaseDal.AddData(newTask);
                     newTask.TaskId = taskId;
@@ -254,7 +277,7 @@
                     return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
                 }
 
-                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
                 if (stockInfo == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
@@ -289,7 +312,25 @@
                     PalletType = stockInfo.PalletType
                 };
 
+                //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
+                Dt_InboundOrder? inboundOrder = null;
+                if (stockInfo != null && stockInfo.Details.Count > 0)
+                {
+                    string? orderNo = stockInfo.Details.FirstOrDefault()?.OrderNo ?? "";
+                    inboundOrder = _inboundOrderService.Repository.QueryFirst(x => x.InboundOrderNo == orderNo && x.OrderStatus < InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt());
+                }
 
+                if (inboundOrder != null)
+                {
+                    if (inboundOrder.OrderType == InOrderTypeEnum.Allocat.ObjToInt())
+                    {
+                        newTask.TaskType = TaskTypeEnum.InAllocate.ObjToInt();
+                    }
+                    else if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+                    {
+                        newTask.TaskType = TaskTypeEnum.ProductionReturn.ObjToInt();
+                    }
+                }
                 if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
                 {
                     stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
@@ -300,13 +341,13 @@
                 }
                 else if (stockInfo.StockStatus == StockStatusEmun.鎷i�夊畬鎴�.ObjToInt())
                 {
-                    stockInfo.StockStatus = StockStatusEmun.鎷i�夊畬鎴�.ObjToInt();
                     newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
                 }
                 else
                 {
                     stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
                 }
+                
                 LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                 _unitOfWorkManage.BeginTran();
                 _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation);
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 6ec106d..ebba105 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"
@@ -203,7 +203,15 @@
                 (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
                 if (result.Item1 != null && result.Item1.Count > 0)
                 {
-                    tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
+                    Dt_OutboundOrder outboundOrder =_outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId);
+                    TaskTypeEnum typeEnum = outboundOrder.OrderType switch
+                    {
+                        (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
+                        (int)OutOrderTypeEnum.Allocate=> TaskTypeEnum.OutAllocate,
+                        (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
+                        _ =>new TaskTypeEnum()
+                    };
+                    tasks = GetTasks(result.Item1, typeEnum);
                     result.Item2.ForEach(x =>
                     {
                         x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
@@ -360,7 +368,7 @@
                 #endregion
 
                 #region 涓婃姤ERP
-                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+                if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && outboundOrder.OrderType==OutOrderTypeEnum.Issue.ObjToInt())
                 {
                     //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
                     //outStockLockInfos.ForEach(x =>
@@ -427,6 +435,10 @@
                 BaseDal.AddData(tasks);
                 if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
                 {
+                    stockInfos.ForEach(x =>
+                    {
+                        x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                    });
                     WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
 
                     if (!content.Status)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
index 405fe83..9abaca5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
@@ -35,14 +35,16 @@
         private readonly IOutboundService _outboundService;
         private readonly IInboundService _inboundService;
         private readonly IInvokeERPService _invokeERPService;
+        private readonly IReturnOrderService _returnOrderService;
 
         public ErpController(IBasicService basicService, IOutboundService outboundService, IInboundService inboundService,
-            IInvokeERPService invokeERPService)
+            IInvokeERPService invokeERPService, IReturnOrderService returnOrderService)
         {
             _basicService = basicService;
             _outboundService = outboundService;
             _inboundService = inboundService;
             _invokeERPService = invokeERPService;
+            _returnOrderService = returnOrderService;
         }
 
         /// <summary>
@@ -122,6 +124,28 @@
             if (content.Status) return Instance.OK();
             else return Instance.Error(content.Message);
         }
+
+        /// <summary>
+        /// 鎺ユ敹ERP閫�鏂欏崟淇℃伅
+        /// </summary>
+        [HttpPost, Route("ReturnOrder"), AllowAnonymous, MethodParamsValidate]
+        public ErpResponseContent ReturnOrder([FromBody] Root<ErpReturnOrderDTO> model)
+        {
+            WebResponseContent content = _returnOrderService.ReturnOrder(model.Content);
+            if (content.Status) return Instance.OK();
+            else return Instance.Error(content.Message);
+        }
+        /// <summary>
+        /// 鍏朵粬鍏ュ簱鍗曟帴鏀�(璋冩嫈鍏ヤ粨,瀹緵鍥炴敹,鐗╂枡閿�鍞��璐�)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, Route("ReceiveWarehousingOrder"), AllowAnonymous, MethodParamsValidate]
+        public ErpResponseContent ReceiveWarehousingOrder([FromBody] Root<ErpInOrderDTO> model)
+        {
+            WebResponseContent content = _inboundService.InbounOrderService.ReceiveWarehousingOrder(model.Content);
+            if (content.Status) return Instance.OK();
+            else return Instance.Error(content.Message);
+        }
         /// <summary>
         /// 鎺ㄩ�丒RP鍑哄簱
         /// </summary>
@@ -149,5 +173,13 @@
         {
             return _invokeERPService.InvokeInboundOrderApi(inboundModel);
         }
+        /// <summary>
+        /// 鎺ㄩ�丒RP閫�鏂欎笂鎶�
+        /// </summary>
+        [HttpPost, Route("InvokeReturnApi"), AllowAnonymous]
+        public string InvokeReturnApi([FromBody] ERPReturnModel returnModel)
+        {
+            return _invokeERPService.InvokeReturnApi(returnModel);
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/ReturnOrderController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/ReturnOrderController.cs"
new file mode 100644
index 0000000..b513b3d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/ReturnOrderController.cs"
@@ -0,0 +1,40 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Inbound
+{
+    /// <summary>
+    /// 閫�鏂欏崟
+    /// </summary>
+    [Route("api/ReturnOrder")]
+    [ApiController]
+    public class ReturnOrderController : ApiBaseController<IReturnOrderService, Dt_ReturnOrder>
+    {
+        public ReturnOrderController(IReturnOrderService service) : base(service)
+        {
+        }
+        /// <summary>
+        /// 鑾峰彇閫�鏂欏崟
+        /// </summary>
+        [HttpPost,Route("GetReturnOrders")]
+        public WebResponseContent GetReturnOrders([FromBody] SaveModel saveModel)
+        {
+            return Service.GetReturnOrders(saveModel);
+        }
+        /// <summary>
+        /// 纭閫�搴撴牴鎹��搴撳崟鐢熸垚鍏ュ簱鍗�
+        /// </summary>
+        /// <param name="returnId">閫�鏂欏崟ID</param>
+        /// <returns></returns>
+        [HttpPost, Route("IsReturnCreateInOrder")]
+        public WebResponseContent IsReturnCreateInOrder(int returnId)
+        {
+            return Service.IsReturnCreateInOrder(returnId);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
index 0896fa9..283c8be 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -13,7 +13,7 @@
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
   //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  "ConnectionString": "Data Source=10.30.4.92;Initial Catalog=WMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //鏃MS鏁版嵁搴撹繛鎺�
   //"TeConnectionString": "Data Source=10.30.4.92;Initial Catalog=TeChuang;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/common/config.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/common/config.js"
index 0e01f92..2e28318 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/common/config.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/common/config.js"
@@ -1,5 +1,5 @@
 let config = {
-	baseUrl: 'http://10.30.4.92:9283',
+	baseUrl: 'http://127.0.0.1:9293',
 	urls: [
 		'http://10.30.4.92:9283',
 		'http://10.30.4.92:9283'
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/uview-ui/libs/request/index.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/uview-ui/libs/request/index.js"
index 1f5f471..cc215c1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/uview-ui/libs/request/index.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/uview-ui/libs/request/index.js"
@@ -111,7 +111,7 @@
 			responseType: 'text',
 			showLoading: true, // 鏄惁鏄剧ず璇锋眰涓殑loading
 			loadingText: '璇锋眰涓�...',
-			loadingTime: 800, // 鍦ㄦ鏃堕棿鍐咃紝璇锋眰杩樻病鍥炴潵鐨勮瘽锛屽氨鏄剧ず鍔犺浇涓姩鐢伙紝鍗曚綅ms
+			loadingTime: 1500, // 鍦ㄦ鏃堕棿鍐咃紝璇锋眰杩樻病鍥炴潵鐨勮瘽锛屽氨鏄剧ず鍔犺浇涓姩鐢伙紝鍗曚綅ms
 			timer: null, // 瀹氭椂鍣�
 			originalData: false, // 鏄惁鍦ㄦ嫤鎴櫒涓繑鍥炴湇鍔$鐨勫師濮嬫暟鎹紝瑙佹枃妗h鏄�
 			loadingMask: true, // 灞曠ずloading鐨勬椂鍊欙紝鏄惁缁欎竴涓�忔槑鐨勮挋灞傦紝闃叉瑙︽懜绌块��

--
Gitblit v1.9.3