From 011ca316e6ec2ed93e31c45a9ebd9d3c66664871 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 17 四月 2026 11:47:03 +0800
Subject: [PATCH] 代码更新

---
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs         |   11 
 项目代码/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs                   |  108 ---------
 项目资料/变更管理/龙利得项目需求变更确认书-20260416.doc                                                   |    0 
 项目资料/接口协议/龙利得RCS顶升AGV确认目标点接口.pdf                                                      |    0 
 项目资料/接口协议/博斯通利拓接口.V2.xlsx                                                             |    0 
 项目资料/接口协议/龙利得RCS叉车AGV确认目标点接口.pdf                                                      |    0 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs                  |    6 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPH.cs                      |    1 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_SendStationCode.cs                 |   46 +++
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs               |    7 
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/SendStationCodeController.cs |   20 +
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs                   |    6 
 项目资料/变更管理/龙利得项目需求变更确认书-20260401.doc                                                   |    0 
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs                |   10 
 项目资料/通信协议/成品输送线通讯协议_20250707.xlsx                                                     |    0 
 项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs                         |   10 
 项目资料/通信协议/龙利得设备通讯协议.xls                                                               |    0 
 项目代码/WMS/WMSServices/WIDESEA_BasicRepository/SendStationCodeRepository.cs             |   20 +
 项目代码/WMS/WMSServices/WIDESEA_IOutboundService/IProDeliveryOrderService.cs             |   13 +
 项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs                       |   12 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPC.cs                      |    3 
 项目代码/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs                     |    8 
 项目代码/WMS/WMSServices/WIDESEA_OutboundService/ProDeliveryOrderService.cs               |  195 ++++++++++++++++
 项目代码/WMS/WMSServices/WIDESEA_IBasicRepository/ISendStationCodeRepository.cs           |   17 +
 项目代码/WMS/WMSServices/WIDESEA_IBasicService/ISendStationCodeService.cs                 |   19 +
 项目代码/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseOrderService.cs                 |    5 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutStockLockInfo.cs             |    2 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProDeliveryOrder.cs             |   12 +
 项目资料/通信协议/二楼环线20250715.xlsx                                                           |    0 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs                                |   47 ++-
 项目代码/WMS/WMSServices/WIDESEA_DTO/ERP/ERPProDeliveryDTO.cs                             |   20 +
 项目资料/变更管理/龙利得项目需求变更确认书-20260402.doc                                                   |    0 
 项目代码/WMS/WMSServices/WIDESEA_BasicService/SendStationCodeService.cs                   |   32 ++
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs                  |   73 +++++
 34 files changed, 549 insertions(+), 154 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
index bfe700b..4a29805 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs"
@@ -61,7 +61,6 @@
                 Dt_StationPackInfo? stationPackInfo = stationPackInfos.FirstOrDefault(x => x.PackType == packinfo.PackType && x.OrderNo == packinfo.OrderNo && x.AssignNum < x.PackNum);
                 Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask();
                 //濡傛灉璁㈠崟鐩稿悓銆佸灈鍨嬩竴鑷村苟涓斿垎閰嶆暟閲忓皯浜庣爜鍨涚粨鎵樻暟閲忓垯鍒嗛厤鍒颁竴璧�
-                _unitOfWorkManage.BeginTran();
                 if (stationPackInfo != null)
                 {
                     packaxisTask = new Dt_PackaxisTask()
@@ -82,14 +81,14 @@
                     stationPackInfo.AssignNum += 1;
                     stationPackInfo.ExecutingNum += 1;
                     packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
-
+                    _unitOfWorkManage.BeginTran();
                     //鏇存柊鐮佸灈鎵ц宸ヤ綅
                     _stationPackInfoRepository.UpdateData(stationPackInfo);
                     //鏇存柊寰呯爜鍨涗俊鎭〃
                     _packinfoRepository.UpdateData(packinfo);
                     //娣诲姞鐮佸灈浠诲姟
                     BaseDal.AddData(packaxisTask);
-
+                    _unitOfWorkManage.CommitTran();
                 }
                 else//鍒嗛厤鏂板伐浣�
                 {
@@ -130,14 +129,16 @@
                     packInfoAssign.AssignNum += 1;
                     packInfoAssign.ExecutingNum += 1;
                     packinfo.PackStatus = StationOccupiedEnum.Sure.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
                     //鏇存柊鐮佸灈鎵ц宸ヤ綅
                     _stationPackInfoRepository.UpdateData(packInfoAssign);
                     //鏇存柊寰呯爜鍨涗俊鎭〃
                     _packinfoRepository.UpdateData(packinfo);
                     //娣诲姞鐮佸灈浠诲姟
                     BaseDal.AddData(packaxisTask);
+                    _unitOfWorkManage.CommitTran();
                 }
-                _unitOfWorkManage.CommitTran();
+                
                 return content.OK(barCode, packaxisTask);
             }
             catch (Exception ex)
@@ -209,7 +210,6 @@
         {
             try
             {
-                
                 Dt_PackaxisTask? packaxisTaskFinish = null;
                 if (packaxisTask!=null)
                 {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs"
index 049f254..b688634 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs"
@@ -75,7 +75,7 @@
                     {
                         DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                         DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-                        if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null)
+                        if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null && deviceProWrite != null)
                         {
                             R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
                             //鐮佸灈婊$洏鐢熸垚RGV鎼繍浠诲姟
@@ -91,6 +91,7 @@
                                         Dt_Task taskNew = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt()));
                                         if (taskNew != null)
                                         {
+                                            device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
                                             _taskService.UpdateTask(taskNew, TaskStatusEnum.RGV_Execute);
                                         }
                                     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs"
index 1c9a8c6..3373570 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs"
@@ -217,6 +217,7 @@
                                                                     packaxisTask.DeviceCode = item.StackerCraneCode;
                                                                     packaxisTask.TaskState = TaskStatusEnum.MD_Executing.ObjToInt();
                                                                     _packaxisTaskRepository.UpdateData(packaxisTask);
+                                                                    device.SetValue(W_CLineCPHDB.W_Request, 1, item.StationCode);
                                                                 }
                                                             }
                                                             else
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
index 4663e0d..3f1fba4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
@@ -88,6 +88,7 @@
                         Dt_Task? task2 = tasks.FirstOrDefault(x => x.HeightType == 2);
                         Dt_Task? task3 = tasks.FirstOrDefault(x => x.HeightType == 3);
                         List<Dt_Task> tasksDown = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode).OrderBy(x=>x.CreateDate).Take(3).ToList();
+                        List<Dt_Task> taskSends = new List<Dt_Task>();
                         if (tasksDown.Count>0)
                         {
                             bool ReceivedDone = false;
@@ -102,8 +103,7 @@
                                     device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
                                     tasksDown[0].HeightType = 1;
-                                    _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
-                                    Thread.Sleep(100);
+                                    taskSends.Add(tasksDown[0]);
                                     ReceivedDone=true;
                                 }
                             }
@@ -114,19 +114,16 @@
                                 {
                                     //涓嬪彂鎵ц宸ヤ綅
                                     device.SetValue(W_RgvCPDB.WorkStation, 4);
-
                                     device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
                                     tasksDown[0].HeightType = 1;
-                                    _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
-                                    Thread.Sleep(100);
                                     device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress);
                                     tasksDown[1].HeightType = 2;
-                                    _taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing);
-                                    Thread.Sleep(100);
+                                    taskSends.Add(tasksDown[0]);
+                                    taskSends.Add(tasksDown[1]);
                                     ReceivedDone = true;
                                 }
                             }
@@ -136,39 +133,53 @@
                                 {
                                     //涓嬪彂鎵ц宸ヤ綅
                                     device.SetValue(W_RgvCPDB.WorkStation, 7);
-
                                     device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
                                     tasksDown[0].HeightType = 1;
-                                    _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
-                                    Thread.Sleep(100);
                                     device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress);
                                     tasksDown[1].HeightType = 2;
-                                    _taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing);
-                                    Thread.Sleep(100);
                                     device.SetValue(W_RgvCPDB.WcsTask3, tasksDown[2].TaskNum);
                                     device.SetValue(W_RgvCPDB.Qu3, tasksDown[2].CurrentAddress);
                                     device.SetValue(W_RgvCPDB.Fang3, tasksDown[2].NextAddress);
                                     tasksDown[2].HeightType = 3;
-                                    _taskService.UpdateTask(tasksDown[2], TaskStatusEnum.RGV_Executing);
-                                    Thread.Sleep(100);
+                                    taskSends.Add(tasksDown[0]);
+                                    taskSends.Add(tasksDown[1]);
+                                    taskSends.Add(tasksDown[2]);
                                     ReceivedDone = true;
                                 }
                             }
+                            //涓嬪彂鏇存柊浠诲姟
                             if (ReceivedDone)
                             {
                                 device.SetValue(W_RgvCPDB.TaskType, 4);
                                 device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
+                                foreach (var item in taskSends)
+                                {
+                                    _taskService.UpdateTask(item, TaskStatusEnum.RGV_Executing);
+                                }
                             }
                         }
                     }
                     else if((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.TaskDone == 3)
                     {
+                        int taskNum = 0;
+                        if (rgvInfoRead.RgvTask > 0)
+                        {
+                            taskNum = rgvInfoRead.RgvTask;
+                        }
+                        else if (rgvInfoRead.RgvEndTask > 0)
+                        {
+                            taskNum = rgvInfoRead.RgvEndTask;
+                        }
+                        else if (rgvInfoRead.RgvLastTask > 0)
+                        {
+                            taskNum = rgvInfoRead.RgvLastTask;
+                        }
                         //鑾峰彇浠诲姟
-                        Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvTask &&  _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
+                        Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== taskNum &&  _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
                         if (task != null)
                         {
                             //鑾峰彇涓嬩竴涓妭鐐圭殑璺敱
@@ -178,18 +189,18 @@
                             task.DeviceCode = stationManger.StationDeviceCode;
                             device.SetValue(W_RgvCPDB.TaskReceivedDone, 2);
                             _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute);
-                            WriteInfo(device.DeviceName, $"RGV浠诲姟瀹屾垚,浠诲姟鍙穥rgvInfoRead.RgvEndTask}");
+                            WriteInfo(device.DeviceName, $"RGV浠诲姟瀹屾垚,浠诲姟鍙穥taskNum}");
                         }
                         else
                         {
-                            WriteInfo(device.DeviceName, $"鏈壘鍒癛GV瀵瑰簲鐨勭粨鏉熶换鍔rgvInfoRead.RgvEndTask}");
+                            WriteInfo(device.DeviceName, $"鏈壘鍒癛GV瀵瑰簲鐨勭粨鏉熶换鍔taskNum}");
                         }
                     }
                     else if (rgvInfoRead.TaskDone == 2 && rgvInfoWrite.TaskReceivedDone == 1)
                     {
                         device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
                     }
-                    else if (rgvInfoRead.TaskDone == 0 && rgvInfoWrite.TaskReceivedDone == 2)
+                    else if (rgvInfoRead.TaskDone != 3 && rgvInfoWrite.TaskReceivedDone == 2)
                     {
                         device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
                     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicRepository/SendStationCodeRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicRepository/SendStationCodeRepository.cs"
new file mode 100644
index 0000000..18846db
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicRepository/SendStationCodeRepository.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicRepository
+{
+    /// <summary>
+    /// 鍙戣揣杞︿綅淇℃伅浠撳偍瀹炵幇灞�
+    /// </summary>
+    public class SendStationCodeRepository : RepositoryBase<Dt_SendStationCode>, ISendStationCodeRepository
+    {
+        public SendStationCodeRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SendStationCodeService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SendStationCodeService.cs"
new file mode 100644
index 0000000..62b31a5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/SendStationCodeService.cs"
@@ -0,0 +1,32 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_BasicRepository;
+using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public class SendStationCodeService : ServiceBase<Dt_SendStationCode, ISendStationCodeRepository>, ISendStationCodeService
+    {
+        public ISendStationCodeRepository Repository => BaseDal;
+        private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public SendStationCodeService(ISendStationCodeRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/ERPProDeliveryDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/ERPProDeliveryDTO.cs"
index 23765f2..43bb389 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/ERPProDeliveryDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/ERP/ERPProDeliveryDTO.cs"
@@ -9,27 +9,27 @@
     public class DeliveryDetailItem
     {
         /// <summary>
-        /// 
+        /// 閿�鍞彂璐ф槑缁咺D
         /// </summary>
         public int DetailId { get; set; }
         /// <summary>
-        /// 
+        /// 閿�鍞崟鍙�
         /// </summary>
         public string SaleOrderNo { get; set; }
         /// <summary>
-        /// 
+        /// 瀹㈡埛
         /// </summary>
         public string Customer { get; set; }
         /// <summary>
-        /// 
+        /// 鐗╂枡缂栫爜
         /// </summary>
         public string MaterialCode { get; set; }
         /// <summary>
-        /// 
+        /// 鐗╂枡鎵规
         /// </summary>
         public string MaterialLot { get; set; }
         /// <summary>
-        /// 
+        /// 鐗╂枡鏁伴噺
         /// </summary>
         public decimal MaterialQty { get; set; }
     }
@@ -37,7 +37,7 @@
     public class ERPProDeliveryDTO
     {
         /// <summary>
-        /// 
+        /// 閿�鍞崟鍙�
         /// </summary>
         public string DeliveryCode { get; set; }
         /// <summary>
@@ -53,10 +53,14 @@
         /// </summary>
         public int DeliveryType { get; set; }
         /// <summary>
-        /// 
+        /// 璁″垝鍑哄簱鏃堕棿
         /// </summary>
         public string PlanDate { get; set; }
         /// <summary>
+        /// 鍙戣揣杞﹀彿
+        /// </summary>
+        public string CarCode { get; set; }
+        /// <summary>
         /// 
         /// </summary>
         public string Remark { get; set; }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IBasicRepository/ISendStationCodeRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IBasicRepository/ISendStationCodeRepository.cs"
new file mode 100644
index 0000000..b82860c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IBasicRepository/ISendStationCodeRepository.cs"
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicRepository
+{
+    /// <summary>
+    /// 鍙戣揣杞︿綅淇℃伅浠撳偍鎺ュ彛灞�
+    /// </summary>
+    public interface ISendStationCodeRepository : IRepository<Dt_SendStationCode>
+    {
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IBasicService/ISendStationCodeService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IBasicService/ISendStationCodeService.cs"
new file mode 100644
index 0000000..4de29ea
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IBasicService/ISendStationCodeService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
+using WIDESEA_IBasicRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBasicService
+{
+    public interface ISendStationCodeService : IService<Dt_SendStationCode>
+    {
+        ISendStationCodeRepository Repository { get; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseOrderService.cs"
index b5b1842..ad2ea77 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IInboundService/IPurchaseOrderService.cs"
@@ -24,11 +24,6 @@
         /// <returns></returns>
         WebResponseContent ReceivePurchaseReturn(ERPReturnOrderDTO eRPReturnOrderDTO);
         /// <summary>
-        /// 鎺ユ敹ERP鎴愬搧閿�鍞嚭搴撲俊鎭�
-        /// </summary>
-        /// <returns></returns>
-        WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO);
-        /// <summary>
         /// 鎺ユ敹ERP闈炵敓浜ч鏂欎俊鎭�
         /// </summary>
         /// <returns></returns>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs"
index 7652437..0d92fd7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs"
@@ -32,5 +32,13 @@
         /// 鑰佸巶绾夸綋缂撳瓨涓氬姟鎺ュ彛灞�
         /// </summary>
         IOutLineViewService OutLineViewService { get; }
+        /// <summary>
+        /// 鏂板巶鎴愬搧閿�鍞笟鍔℃帴鍙e眰
+        /// </summary>
+        IProDeliveryOrderService ProDeliveryOrderService { get; }
+        /// <summary>
+        /// 鏂板巶鎴愬搧閿�鍞槑缁嗕笟鍔℃帴鍙e眰
+        /// </summary>
+        IProDeliveryOrderDetailService ProDeliveryOrderDetailService { get; }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IProDeliveryOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IProDeliveryOrderService.cs"
index d68bbc8..669bcb7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IProDeliveryOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_IOutboundService/IProDeliveryOrderService.cs"
@@ -3,7 +3,9 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IOutboundRepository;
 using WIDESEA_Model.Models;
 
@@ -12,5 +14,16 @@
     public interface IProDeliveryOrderService : IService<Dt_ProDeliveryOrder>
     {
         IProDeliveryOrderRepository Repository { get; }
+
+        /// <summary>
+        /// 鎺ユ敹ERP鎴愬搧閿�鍞嚭搴撲俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO);
+        /// <summary>
+        /// ERP鎴愬搧閿�鍞嚭搴撳垎閰嶅簱瀛�
+        /// </summary>
+        /// <returns></returns>
+        (List<Dt_ProStockInfo>, List<Dt_ProDeliveryOrder>, List<Dt_ProDeliveryOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignProStockOutbound(List<Dt_ProDeliveryOrder> proDeliveryOrders, List<Dt_ProDeliveryOrderDetail> deliveryOrderDetails);
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
index fb63cc9..2e44e6b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -262,6 +262,12 @@
         /// <returns></returns>
         WebResponseContent CreateSGManualTasks(List<int> ids);
         /// <summary>
+        /// 鍒涘缓閿�鍞嚭搴�
+        /// </summary>
+        /// <param name="ids"></param>
+        /// <returns></returns>
+        WebResponseContent CreateProDeliveryTasks(List<int> ids);
+        /// <summary>
         /// 绌烘墭鍙犵洏鍑哄簱
         /// </summary>
         /// <returns></returns>
@@ -276,6 +282,10 @@
         /// </summary>
         /// <returns></returns>
         WebResponseContent DisableStatus(int[] keys);
+        /// <summary>
+        /// 鎴愬搧缁勭洏
+        /// </summary>
+        /// <returns></returns>
         WebResponseContent BoxingInBound(string stationCode, List<string> barCodes);
         /// <summary>
         /// 鎴愬搧鍏ュ簱鎵爜璇锋眰鏇存柊鏉$爜
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs"
index bef080a..0255a3e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_InboundService/PurchaseOrderService.cs"
@@ -312,114 +312,6 @@
             return content;
         }
         /// <summary>
-        /// 鎺ユ敹ERP鎴愬搧閿�鍞嚭搴撲俊鎭�
-        /// </summary>
-        /// <returns></returns>
-        public WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                if (eRPProDeliveryDTO == null)
-                {
-                    return content.Error("閿�鍞嚭搴撲俊鎭笉鑳戒负绌�");
-                }
-                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == eRPProDeliveryDTO.WarehouseCode);
-                if (warehouse == null)
-                {
-                    return content.Error($"浠撳簱淇℃伅涓嶅瓨鍦▄eRPProDeliveryDTO.WarehouseCode}");
-                }
-                //鑾峰彇鎵�鏈夌墿鏂� 
-                List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == warehouse.WarehouseId && x.MaterielInvOrgId == MaterielInvOrgEnum.鏂板巶.ObjToInt());
-
-                //鑾峰彇鎵�鏈夊鎴�
-                List<Dt_CustomerInfo> customerInfos  = _basicRepository.CustomerInfoRepository.QueryData();
-
-                //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
-                DeliveryDetailItem? deliveryDetailItem = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode));
-                if (deliveryDetailItem != null)
-                {
-                    return content.Error($"鐗╂枡淇℃伅{deliveryDetailItem.MaterialCode}涓嶅瓨鍦�");
-                }
-
-                //鍒ゆ柇鏄惁瀛樺湪瀹㈡埛
-                DeliveryDetailItem? deliveryDetailCustom = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !customerInfos.Select(x => x.CustomerCode).Contains(x.Customer));
-
-                if (deliveryDetailCustom != null)
-                {
-                    return content.Error($"瀹㈡埛淇℃伅{deliveryDetailCustom.Customer}涓嶅瓨鍦�");
-                }
-
-                //鑾峰彇鎵�鏈夐攢鍞嚭搴撲俊鎭�
-                List<Dt_ProDeliveryOrder> proDeliveryOrdersOld = BaseDal.Db.Queryable<Dt_ProDeliveryOrder>().Includes(x => x.Details).ToList();
-
-                if (eRPProDeliveryDTO.OperateType == 1)
-                {
-                    //鍒ゆ柇閲嶅鎻掑叆
-                    Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode);
-                    if (proDeliveryOrderOld != null)
-                    {
-                        return content.Error($"閿�鍞嚭搴撳崟鍙穥proDeliveryOrderOld.DeliveryCode}淇℃伅宸插瓨鍦�");
-                    }
-                    List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = eRPProDeliveryDTO.DeliveryDetail.Select(x => _mapper.Map<Dt_ProDeliveryOrderDetail>(x)).ToList();
-                    Dt_ProDeliveryOrder proDeliveryOrderAdd = _mapper.Map<Dt_ProDeliveryOrder>(eRPProDeliveryDTO);
-                    proDeliveryOrderDetails.ForEach(x =>
-                    {
-                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
-                        x.MaterielName = materielInfo?.MaterielName;
-                        x.Unit = materielInfo?.MaterielUnit;
-                    });
-                    proDeliveryOrderAdd.Details = proDeliveryOrderDetails;
-                    proDeliveryOrderAdd.WarehouseId = warehouse.WarehouseId;
-                    //鏂板
-                    BaseDal.Db.InsertNav(proDeliveryOrderAdd).Include(x => x.Details).ExecuteCommand();
-
-                }
-                //else if (eRPPurchaseOrderDTO.OperateType == 2)
-                //{
-                //    //鍒ゆ柇鏄惁瀛樺湪
-                //    Dt_UserInfo? userInfoOld = OlduserInfos.FirstOrDefault(x => x.Code == eRPUserInfoDTO.StaffCode);
-                //    if (userInfoOld == null)
-                //    {
-                //        return content.Error($"鏇存柊宸ュ彿{eRPUserInfoDTO.StaffCode}锛屽憳宸eRPUserInfoDTO.StaffName}涓嶅瓨鍦�");
-                //    }
-                //    Dt_UserInfo userInfo = _mapper.Map<Dt_UserInfo>(eRPUserInfoDTO);
-                //    userInfo.Id = userInfoOld.Id;
-                //    Sys_User user = _userRepository.QueryFirst(x => x.UserName == userInfo.Code);
-                //    if (userInfoOld == null)
-                //    {
-                //        return content.Error($"鏇存柊宸ュ彿{eRPUserInfoDTO.StaffCode}锛屽憳宸eRPUserInfoDTO.StaffName}锛學MS璐﹀彿涓嶅瓨鍦�");
-                //    }
-                //    user.Enable = (byte)userInfo.State;
-                //    user.UserTrueName = userInfo.Name;
-                //    //鏇存柊
-                //    BaseDal.UpdateData(userInfo);
-                //    _userRepository.UpdateData(user);
-                //}
-                //else if (eRPPurchaseOrderDTO.OperateType == 3)
-                //{
-                //    //鍒ゆ柇鏄惁瀛樺湪
-                //    Dt_UserInfo? userInfoOld = OlduserInfos.FirstOrDefault(x => x.Code == eRPUserInfoDTO.StaffCode);
-                //    if (userInfoOld == null)
-                //    {
-                //        return content.Error($"鏇存柊宸ュ彿{eRPUserInfoDTO.StaffCode}锛屽憳宸eRPUserInfoDTO.StaffName}涓嶅瓨鍦�");
-                //    }
-                //    BaseDal.DeleteData(userInfoOld);
-                //}
-                else
-                {
-                    return content.Error("鏈壘鍒版搷浣滅被鍨�");
-                }
-                //鏇存柊鏁版嵁
-                return content.OK("鎺ユ敹鎴愬姛");
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-        /// <summary>
         /// 鎺ユ敹ERP闈炵敓浜ч鏂欎俊鎭�
         /// </summary>
         /// <returns></returns>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
index b4e37b0..d3fdda8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
@@ -42,6 +42,12 @@
         public int Depth { get; set; }
 
         /// <summary>
+        /// 杞︿綅鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true,Length = 50, ColumnDescription = "杞︿綅鍙�")]
+        public string CodeName { get; set; }
+
+        /// <summary>
         /// 鏄惁鍗犵敤
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏄惁鍗犵敤")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_SendStationCode.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_SendStationCode.cs"
new file mode 100644
index 0000000..3334dc3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_SendStationCode.cs"
@@ -0,0 +1,46 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍙戣揣鏈堝彴杞︿綅
+    /// </summary>
+    [SugarTable(nameof(Dt_SendStationCode), "鍙戣揣鏈堝彴杞︿綅")]
+    public class Dt_SendStationCode : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+        /// <summary>
+        /// 杞︿綅
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "杞︿綅")]
+        public string CodeName { get; set; }
+
+        /// <summary>
+        /// 褰撳墠杞﹀彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "褰撳墠杞﹀彿")]
+        public string CarCode { get; set; }
+
+        /// <summary>
+        /// 鎵�鍚彂璐у崟鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "鎵�鍚彂璐у崟鍙�")]
+        public string DeliveryCodes { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍗犵敤
+        /// </summary>
+        [SugarColumn(IsNullable = false,  ColumnDescription = "鏄惁鍗犵敤")]
+        public int IsOccupied { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutStockLockInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutStockLockInfo.cs"
index bae658a..1e1cc51 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutStockLockInfo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutStockLockInfo.cs"
@@ -10,7 +10,7 @@
 namespace WIDESEA_Model.Models
 {
     /// <summary>
-    /// 鍑哄簱璇︽儏(鍘熸枡)
+    /// 鍑哄簱璇︽儏
     /// </summary>
     [SugarTable(nameof(Dt_OutStockLockInfo), "鍑哄簱璇︽儏")]
     public class Dt_OutStockLockInfo : BaseEntity
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProDeliveryOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProDeliveryOrder.cs"
index 6033fbd..30503d5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProDeliveryOrder.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProDeliveryOrder.cs"
@@ -68,6 +68,18 @@
         public DateTime PlanDate { get; set; }
 
         /// <summary>
+        /// 鍙戣揣杞﹀彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍙戣揣杞﹀彿")]
+        public string CarCode { get; set; }
+
+        /// <summary>
+        /// 娲鹃�佽溅浣�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "娲鹃�佽溅浣�")]
+        public string SendStationCode { get; set; }
+
+        /// <summary>
         /// 澶囨敞
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs"
index 7941cbd..9c39911 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs"
@@ -32,13 +32,23 @@
         /// 鑰佸巶绾夸綋缂撳瓨涓氬姟鎺ュ彛灞�
         /// </summary>
         public IOutLineViewService OutLineViewService { get; }
-        public OutboundService(IOutMESOrderService outMESOrderService, IOutSGOrderService outSGOrderService, IOutSGOrderDetailService outSGOrderDetailService, IOutStockLockInfoService outStockLockInfoService, IOutLineViewService outLineViewService)
+        /// <summary>
+        /// 鏂板巶鎴愬搧閿�鍞笟鍔℃帴鍙e眰
+        /// </summary>
+        public IProDeliveryOrderService ProDeliveryOrderService { get; }
+        /// <summary>
+        /// 鏂板巶鎴愬搧閿�鍞槑缁嗕笟鍔℃帴鍙e眰
+        /// </summary>
+        public IProDeliveryOrderDetailService ProDeliveryOrderDetailService { get; }
+        public OutboundService(IOutMESOrderService outMESOrderService, IOutSGOrderService outSGOrderService, IOutSGOrderDetailService outSGOrderDetailService, IOutStockLockInfoService outStockLockInfoService, IOutLineViewService outLineViewService, IProDeliveryOrderService proDeliveryOrderService, IProDeliveryOrderDetailService proDeliveryOrderDetailService)
         {
             OutMESOrderService = outMESOrderService;
             OutSGOrderService = outSGOrderService;
             OutSGOrderDetailService = outSGOrderDetailService;
             OutStockLockInfoService = outStockLockInfoService;
             OutLineViewService = outLineViewService;
+            ProDeliveryOrderService = proDeliveryOrderService;
+            ProDeliveryOrderDetailService = proDeliveryOrderDetailService;
         }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/ProDeliveryOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/ProDeliveryOrderService.cs"
index 2b3e28c..e1ccebd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/ProDeliveryOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/ProDeliveryOrderService.cs"
@@ -4,7 +4,13 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IOutboundRepository;
 using WIDESEA_IOutboundService;
@@ -17,10 +23,197 @@
         public IProDeliveryOrderRepository Repository => BaseDal;
         private readonly IBasicRepository _basicRepository;
         private readonly IMapper _mapper;
-        public ProDeliveryOrderService(IProDeliveryOrderRepository BaseDal, IBasicRepository basicRepository, IMapper mapper) : base(BaseDal)
+        private readonly IProDeliveryOrderDetailRepository _proDeliveryOrderDetailRepository;
+        public ProDeliveryOrderService(IProDeliveryOrderRepository BaseDal, IBasicRepository basicRepository, IMapper mapper, IProDeliveryOrderDetailRepository proDeliveryOrderDetailRepository) : base(BaseDal)
         {
             _basicRepository = basicRepository;
             _mapper = mapper;
+            _proDeliveryOrderDetailRepository = proDeliveryOrderDetailRepository;
+        }
+        /// <summary>
+        /// 鎺ユ敹ERP鎴愬搧閿�鍞嚭搴撲俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent ReceiveProDeliveryOrder(ERPProDeliveryDTO eRPProDeliveryDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (eRPProDeliveryDTO == null)
+                {
+                    return content.Error("閿�鍞嚭搴撲俊鎭笉鑳戒负绌�");
+                }
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == eRPProDeliveryDTO.WarehouseCode);
+                if (warehouse == null)
+                {
+                    return content.Error($"浠撳簱淇℃伅涓嶅瓨鍦▄eRPProDeliveryDTO.WarehouseCode}");
+                }
+                //鑾峰彇鎵�鏈夌墿鏂� 
+                List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == warehouse.WarehouseId && x.MaterielInvOrgId == MaterielInvOrgEnum.鏂板巶.ObjToInt());
+
+                //鑾峰彇鎵�鏈夊鎴�
+                List<Dt_CustomerInfo> customerInfos = _basicRepository.CustomerInfoRepository.QueryData();
+
+                //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
+                DeliveryDetailItem? deliveryDetailItem = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode));
+                if (deliveryDetailItem != null)
+                {
+                    return content.Error($"鐗╂枡淇℃伅{deliveryDetailItem.MaterialCode}涓嶅瓨鍦�");
+                }
+
+                //鍒ゆ柇鏄惁瀛樺湪瀹㈡埛
+                DeliveryDetailItem? deliveryDetailCustom = eRPProDeliveryDTO.DeliveryDetail.FirstOrDefault(x => !customerInfos.Select(x => x.CustomerCode).Contains(x.Customer));
+
+                if (deliveryDetailCustom != null)
+                {
+                    return content.Error($"瀹㈡埛淇℃伅{deliveryDetailCustom.Customer}涓嶅瓨鍦�");
+                }
+
+                //鑾峰彇鎵�鏈夐攢鍞嚭搴撲俊鎭�
+                List<Dt_ProDeliveryOrder> proDeliveryOrdersOld = BaseDal.Db.Queryable<Dt_ProDeliveryOrder>().Includes(x => x.Details).ToList();
+
+                if (eRPProDeliveryDTO.OperateType == 1)
+                {
+                    //鍒ゆ柇閲嶅鎻掑叆
+                    Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode);
+                    if (proDeliveryOrderOld != null)
+                    {
+                        return content.Error($"閿�鍞嚭搴撳崟鍙穥proDeliveryOrderOld.DeliveryCode}淇℃伅宸插瓨鍦�");
+                    }
+                    List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = eRPProDeliveryDTO.DeliveryDetail.Select(x => _mapper.Map<Dt_ProDeliveryOrderDetail>(x)).ToList();
+                    Dt_ProDeliveryOrder proDeliveryOrderAdd = _mapper.Map<Dt_ProDeliveryOrder>(eRPProDeliveryDTO);
+                    proDeliveryOrderDetails.ForEach(x =>
+                    {
+                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
+                        x.MaterielName = materielInfo?.MaterielName;
+                        x.Unit = materielInfo?.MaterielUnit;
+                    });
+                    proDeliveryOrderAdd.Details = proDeliveryOrderDetails;
+                    proDeliveryOrderAdd.WarehouseId = warehouse.WarehouseId;
+                    //鏂板
+                    BaseDal.Db.InsertNav(proDeliveryOrderAdd).Include(x => x.Details).ExecuteCommand();
+
+                }
+                else if (eRPProDeliveryDTO.OperateType == 2)
+                {
+                    //鍒ゆ柇鏄惁瀛樺湪
+                    Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode);
+                    if (proDeliveryOrderOld == null)
+                    {
+                        return content.Error($"閿�鍞嚭搴撳崟鍙穥eRPProDeliveryDTO.DeliveryCode}淇℃伅涓嶅瓨鍦�");
+                    }
+                    if (proDeliveryOrderOld.ProDeliveryStatus != OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                    {
+                        return content.Error($"閿�鍞嚭搴撳崟鍙穥proDeliveryOrderOld.DeliveryCode}鐘舵�佷负{(OutOrderStatusEnum)proDeliveryOrderOld.ProDeliveryStatus}");
+                    }
+                    List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = eRPProDeliveryDTO.DeliveryDetail.Select(x => _mapper.Map<Dt_ProDeliveryOrderDetail>(x)).ToList();
+                    Dt_ProDeliveryOrder proDeliveryOrder = _mapper.Map<Dt_ProDeliveryOrder>(eRPProDeliveryDTO);
+                    proDeliveryOrder.Id = proDeliveryOrderOld.Id;
+                    proDeliveryOrderDetails.ForEach(x =>
+                    {
+                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(t => t.MaterielCode == x.MaterialCode);
+                        x.MaterielName = materielInfo?.MaterielName;
+                        x.Unit = materielInfo?.MaterielUnit;
+                    });
+                    proDeliveryOrder.Details = proDeliveryOrderDetails;
+                    proDeliveryOrder.WarehouseId = warehouse.WarehouseId;
+                    //鏇存柊
+                    BaseDal.Db.UpdateNav(proDeliveryOrder).Include(x => x.Details).ExecuteCommand();
+                }
+                else if (eRPProDeliveryDTO.OperateType == 3)
+                {
+                    //鍒ゆ柇鏄惁瀛樺湪
+                    Dt_ProDeliveryOrder? proDeliveryOrderOld = proDeliveryOrdersOld.FirstOrDefault(x => x.DeliveryCode == eRPProDeliveryDTO.DeliveryCode);
+                    if (proDeliveryOrderOld == null)
+                    {
+                        return content.Error($"閿�鍞嚭搴撳崟鍙穥eRPProDeliveryDTO.DeliveryCode}淇℃伅涓嶅瓨鍦�");
+                    }
+                    if (proDeliveryOrderOld.ProDeliveryStatus != OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                    {
+                        return content.Error($"閿�鍞嚭搴撳崟鍙穥proDeliveryOrderOld.DeliveryCode}鐘舵�佷负{(OutOrderStatusEnum)proDeliveryOrderOld.ProDeliveryStatus}");
+                    }
+                    //鍒犻櫎
+                    BaseDal.Db.DeleteNav(proDeliveryOrderOld).Include(x => x.Details).ExecuteCommand();
+                }
+                else
+                {
+                    return content.Error("鏈壘鍒版搷浣滅被鍨�");
+                }
+                //鏇存柊鏁版嵁
+                return content.OK("鎺ユ敹鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// ERP鎴愬搧閿�鍞嚭搴撳垎閰嶅簱瀛�
+        /// </summary>
+        public (List<Dt_ProStockInfo>, List<Dt_ProDeliveryOrder>, List<Dt_ProDeliveryOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignProStockOutbound(List<Dt_ProDeliveryOrder> proDeliveryOrders,List<Dt_ProDeliveryOrderDetail> deliveryOrderDetails)
+        {
+            List<Dt_ProStockInfo> outStocks = new List<Dt_ProStockInfo>();
+
+            //鍑哄簱璇︽儏
+            List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+            //璐т綅瀛樺偍
+            List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+
+            //foreach (var item in )
+            //{
+
+            //}
+
+            //foreach (var item in deliveryOrderDetails)
+            //{
+            //    decimal needQuantity = item.ReqQuantity;
+            //    //鑾峰彇鍙敤搴撳瓨
+            //    List<Dt_ProStockInfo> stockInfos = _stockService.ProStockInfoService.GetUseableStocks(item.MaterialCode, WarehouseEnum.LLDCP.ObjToInt()).Where(x => !outStocks.Select(x => x.PalletCode).Contains(x.PalletCode)).ToList();
+            //    if (!stockInfos.Any())
+            //    {
+            //        continue;
+            //    }
+            //    //鍒嗛厤瀹為檯搴撳瓨
+            //    List<Dt_ProStockInfo> autoAssignStocks = _stockService.ProStockInfoService.GetOutboundStocks(stockInfos, needQuantity);
+            //    //娣诲姞搴撳瓨鍒嗛厤
+            //    outStocks.AddRange(autoAssignStocks);
+            //    //璁㈠崟鏁伴噺
+            //    decimal orderQuantity = item.ReqQuantity;
+            //    bool assignStop = true;
+            //    while (assignStop)
+            //    {
+            //        //鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲�
+            //        decimal detailAssignQuantity = outStockLockInfos.Where(x => x.OrderDetailId == item.OutDetailId).Sum(x => x.AssignQuantity);
+
+            //        decimal orderDetailNeedQuantity = item.ReqQuantity - detailAssignQuantity;
+
+            //        decimal useStockLength = autoAssignStocks[0].proStockInfoDetails
+            //            .Sum(x => x.StockQty);
+            //        if (orderDetailNeedQuantity > useStockLength)
+            //        {
+
+            //            //鐢熸垚璇︽儏
+            //            Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(item, autoAssignStocks[0], useStockLength);
+            //            outStockLockInfos.Add(outStockLockInfo);
+            //            item.AssignTotalUsage += useStockLength;
+            //            autoAssignStocks.Remove(autoAssignStocks[0]);
+            //        }
+            //        else
+            //        {
+            //            //鐢熸垚璇︽儏
+            //            Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(item, autoAssignStocks[0], orderDetailNeedQuantity);
+            //            outStockLockInfos.Add(outStockLockInfo);
+            //            item.AssignTotalUsage = orderQuantity;
+            //            autoAssignStocks.Remove(autoAssignStocks[0]);
+            //            assignStop = false;
+            //        }
+            //    }
+            //    item.OutMESOrderStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt();
+            //    locationInfos.AddRange(_basicRepository.LocationInfoRepository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList()));
+            //}
+
+            return (outStocks, proDeliveryOrders, deliveryOrderDetails, outStockLockInfos, locationInfos);
         }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index 7ec02fc..1913125 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -975,7 +975,7 @@
                 {
                     item.Count -= count.Count;
                 }
-                if (item.Count >= 50 && count?.Count<=2)
+                if (item.Count >= 50 && count?.Count<=1)
                 {
                     return item.RoadwayNo;
                 }
@@ -2158,6 +2158,10 @@
                 throw new Exception(ex.Message);
             }
         }
+        /// <summary>
+        /// 鎴愬搧缁勭洏
+        /// </summary>
+        /// <returns></returns>
         public WebResponseContent BoxingInBound(string stationCode,List<string> barCodes)
         {
             WebResponseContent content = new WebResponseContent();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index f97e01a..353bdab 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -61,7 +61,7 @@
                 }
                 tasks.ForEach(x =>
                 {
-                    x.Grade = 99;
+                    x.Grade = 1;
                 });
                 stockInfos.ForEach(x =>
                 {
@@ -907,7 +907,6 @@
                         item.StockLength = 0;
                         item.MaterielWeight = 0;
                         item.MaterielThickness = 0;
-                        item.MaterielWide = 0;
                         item.StockOutLength = 0;
                         item.IsFull = WhetherEnum.True.ObjToInt();
                         item.IsPick = WhetherEnum.True.ObjToInt();
@@ -960,6 +959,76 @@
             }
             return content;
         }
+        /// <summary>
+        /// 鍒涘缓閿�鍞嚭搴�
+        /// </summary>
+        /// <param name="ids"></param>
+        /// <returns></returns>
+        public WebResponseContent CreateProDeliveryTasks(List<int> ids)
+        {
+            WebResponseContent content=new WebResponseContent();
+            try
+            {
+                ////鑾峰彇閿�鍞嚭搴撳崟鎹�
+                //List<Dt_ProDeliveryOrder> deliveryOrders = BaseDal.Db.Queryable<Dt_ProDeliveryOrder>().Where(x=> ids.Contains(x.Id)).Includes(x=>x.Details).ToList();
+                //Dt_ProDeliveryOrder? proDeliveryOrder = deliveryOrders.FirstOrDefault(x => x.ProDeliveryStatus != OutOrderStatusEnum.鏈紑濮�.ObjToInt());
+                //if (proDeliveryOrder != null)
+                //{
+                //    return content.Error($"鍗曞彿{proDeliveryOrder.DeliveryCode},璁㈠崟鐘舵�亄(OutOrderStatusEnum)proDeliveryOrder.ProDeliveryStatus}");
+                //}
+                //List<Dt_ProDeliveryOrderDetail> proDeliveryOrderDetails = deliveryOrders.SelectMany(x=>x.Details).ToList();
+                //if (!proDeliveryOrderDetails.Any())
+                //{
+                //    throw new Exception($"鏈壘鍒伴渶鍑哄簱鐨勬槑缁嗕俊鎭�");
+                //}
+                //_unitOfWorkManage.BeginTran();
+                //List<Dt_Task> tasks = new List<Dt_Task>();
+                //List<Dt_ProStockInfo>? stockInfos = null;
+                //List<Dt_ProDeliveryOrder>? Orders = null;
+                //List<Dt_ProDeliveryOrderDetail>? OrderDetails = null;
+                //List<Dt_OutStockLockInfo>? outStockLockInfos = null;
+                //List<Dt_LocationInfo>? locationInfos = null;
+                //{
+                //    //鍒嗛厤搴撳瓨
+                //    (List<Dt_ProStockInfo>, List<Dt_ProDeliveryOrder>, List<Dt_ProDeliveryOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.ProDeliveryOrderService.AssignProStockOutbound(deliveryOrders, proDeliveryOrderDetails);
+                //    if (result.Item1 != null && result.Item1.Count > 0)
+                //    {
+                //        //鍒涘缓浠诲姟
+                //        tasks = GetTasks(result.Item1, result.Item3);
+                //        result.Item3.ForEach(x =>
+                //        {
+                //            x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
+                //        });
+                //        stockInfos = result.Item1;
+                //        Orders = result.Item2;
+                //        outStockLockInfos = result.Item3;
+                //        locationInfos = result.Item4;
+                //    }
+                //}
+                //if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0 && tasks.Count > 0)
+                //{
+                //    BaseDal.AddData(tasks);
+                //    stockInfos.ForEach(x =>
+                //    {
+                //        x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                //    });
+                //    WebResponseContent contentResponse = _outboundService.OutMESOrderService.LockOutboundStockDataUpdate(stockInfos, Orders, outStockLockInfos, locationInfos, tasks: tasks);
+
+                //    if (!contentResponse.Status)
+                //    {
+                //        _unitOfWorkManage.RollbackTran();
+                //        return content.Error(contentResponse.Message);
+                //    }
+                //}
+                //_unitOfWorkManage.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
         List<string> GradeCodes = new List<string>
         {
             "001"
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/SendStationCodeController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/SendStationCodeController.cs"
new file mode 100644
index 0000000..085cbe1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/SendStationCodeController.cs"
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    /// <summary>
+    /// 鍙戣揣杞︿綅淇℃伅
+    /// </summary>
+    [Route("api/SendStationCode")]
+    [ApiController]
+    public class SendStationCodeController : ApiBaseController<ISendStationCodeService, Dt_SendStationCode>
+    {
+        public SendStationCodeController(ISendStationCodeService service) : base(service)
+        {
+        }
+    }
+}
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
index 1fd1298..06ef6ec 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
@@ -16,6 +16,7 @@
 using WIDESEA_IBasicRepository;
 using WIDESEA_IBasicService;
 using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_WMSServer.Controllers.ERP
@@ -30,12 +31,14 @@
         private readonly IBasicService _basicService;
         private readonly IInvokeERPService _invokeERPService;
         private readonly IInboundService _inboundService;
+        private readonly IOutboundService _outboundService;
 
-        public ErpController(IBasicService basicService,IInvokeERPService invokeERPService, IInboundService inboundService)
+        public ErpController(IBasicService basicService,IInvokeERPService invokeERPService, IInboundService inboundService, IOutboundService outboundService)
         {
             _basicService = basicService;
             _invokeERPService = invokeERPService;
             _inboundService = inboundService;
+            _outboundService = outboundService;
         }
         /// <summary>
         /// 娣诲姞浜屾湡鐗╂枡
@@ -109,7 +112,7 @@
 
         public WebResponseContent ProDeliveryOrder([FromBody] ERPRoot<ERPProDeliveryDTO> eRPRoot)
         {
-            return _inboundService.PurchaseOrderService.ReceiveProDeliveryOrder(eRPRoot.Content);
+            return _outboundService.ProDeliveryOrderService.ReceiveProDeliveryOrder(eRPRoot.Content);
         }
 
         /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index 6d8321a..f9fd92f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -148,7 +148,16 @@
         {
             return Service.CreateSGManualTasks(ids);
         }
-
+        /// <summary>
+        /// 鍒涘缓閿�鍞嚭搴�
+        /// </summary>
+        /// <param name="ids"></param>
+        /// <returns></returns>
+        [HttpPost, Route("CreateSGManualTasks"), AllowAnonymous]
+        public WebResponseContent CreateProDeliveryTasks([FromBody] List<int> ids)
+        {
+            return Service.CreateProDeliveryTasks(ids);
+        }
         /// <summary>
         /// 淇敼浠诲姟鐘舵��
         /// </summary>
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260401.doc" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260401.doc"
index f46ee08..24cf85e 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260401.doc"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260401.doc"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260402.doc" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260402.doc"
index b452c4b..c58f6a3 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260402.doc"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260402.doc"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260416.doc" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260416.doc"
new file mode 100644
index 0000000..253a8c4
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\217\230\346\233\264\347\256\241\347\220\206/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\351\234\200\346\261\202\345\217\230\346\233\264\347\241\256\350\256\244\344\271\246-20260416.doc"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\226\257\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.V2.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\226\257\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.V2.xlsx"
index 6354565..1cdd42c 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\226\257\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.V2.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\345\215\232\346\226\257\351\200\232\345\210\251\346\213\223\346\216\245\345\217\243.V2.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227RCS\345\217\211\350\275\246AGV\347\241\256\350\256\244\347\233\256\346\240\207\347\202\271\346\216\245\345\217\243.pdf" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227RCS\345\217\211\350\275\246AGV\347\241\256\350\256\244\347\233\256\346\240\207\347\202\271\346\216\245\345\217\243.pdf"
new file mode 100644
index 0000000..d0548ea
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227RCS\345\217\211\350\275\246AGV\347\241\256\350\256\244\347\233\256\346\240\207\347\202\271\346\216\245\345\217\243.pdf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227RCS\351\241\266\345\215\207AGV\347\241\256\350\256\244\347\233\256\346\240\207\347\202\271\346\216\245\345\217\243.pdf" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227RCS\351\241\266\345\215\207AGV\347\241\256\350\256\244\347\233\256\346\240\207\347\202\271\346\216\245\345\217\243.pdf"
new file mode 100644
index 0000000..b2022c4
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227RCS\351\241\266\345\215\207AGV\347\241\256\350\256\244\347\233\256\346\240\207\347\202\271\346\216\245\345\217\243.pdf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\272\214\346\245\274\347\216\257\347\272\27720250715.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\272\214\346\245\274\347\216\257\347\272\27720250715.xlsx"
index b176c23..511cad7 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\272\214\346\245\274\347\216\257\347\272\27720250715.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\272\214\346\245\274\347\216\257\347\272\27720250715.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
index 35bcfce..5dd5898 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\256\276\345\244\207\351\200\232\350\256\257\345\215\217\350\256\256.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\256\276\345\244\207\351\200\232\350\256\257\345\215\217\350\256\256.xls"
index ffe8c37..f2f0854 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\256\276\345\244\207\351\200\232\350\256\257\345\215\217\350\256\256.xls"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\256\276\345\244\207\351\200\232\350\256\257\345\215\217\350\256\256.xls"
Binary files differ

--
Gitblit v1.9.3