From f1d8d7b04a81619cb29457fa88538bbaf37d8c20 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 26 二月 2026 18:22:04 +0800
Subject: [PATCH] 优化WCS跟四向车接口

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs                   |   19 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs             |   10 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs   |    6 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs                     |   69 ----
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs     |    7 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs            |  157 ------------
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs             |  107 ++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs            |   22 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs |    7 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs   |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs                  |   58 ++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs   |   19 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs     |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs             |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs                  |  117 +++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs                    |   43 +++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs            |   88 ++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs                        |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs               |    1 
 19 files changed, 510 insertions(+), 230 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs"
index e1707b7..fda7004 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs"
@@ -1,10 +1,13 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
 using WIDESEAWCS_Core.BaseRepository;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_Model.Models;
 
@@ -15,7 +18,19 @@
         public RGVLocationInfoService(IRepository<Dt_RGVLocationInfo> BaseDal) : base(BaseDal)
         {
         }
-
+        private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
+        {
+            { nameof(Dt_RGVLocationInfo.Depth), OrderByType.Desc },
+            { nameof(Dt_RGVLocationInfo.Layer), OrderByType.Asc },
+            //{ nameof(Dt_RGVLocationInfo.Column), OrderByType.Asc },
+            { nameof(Dt_RGVLocationInfo.Row), OrderByType.Asc },
+        };
         public IRepository<Dt_RGVLocationInfo> Repository => BaseDal;
+
+        public Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode)
+        {
+            Dt_RGVLocationInfo? rGVLocationInfo = BaseDal.QueryFirst(x => x.WarehouseId.ToString() == AreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
+            return rGVLocationInfo;
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs"
index 0f206ac..cf89f02 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs"
@@ -3,8 +3,10 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common;
 using WIDESEAWCS_Core.BaseRepository;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_Model.Models;
 
@@ -17,5 +19,10 @@
         }
 
         public IRepository<Dt_StationManger> Repository => BaseDal;
+
+        public Dt_StationManger GetInStationInfo(string fromLocationCode)
+        {
+            return BaseDal.QueryFirst(x => x.StationCode == fromLocationCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt());
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs"
new file mode 100644
index 0000000..e80ef83
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs"
@@ -0,0 +1,43 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common
+{
+    public enum StationTypeEnum
+    {
+        /// <summary>
+        /// 鍏ュ簱绔欏彴
+        /// </summary>
+        StationType_OnlyInbound = 1,
+
+        /// <summary>
+        /// 鍑哄簱绔欏彴
+        /// </summary>
+        StationType_OnlyOutbound = 2,
+
+        /// <summary>
+        /// 鍑哄叆搴撶珯鍙�
+        /// </summary>
+        StationType_InboundAndOutbound = 3,
+
+        /// <summary>
+        /// 鍑哄叆搴撳彛
+        /// </summary>
+        StationType_InStartAndOutEnd = 33,
+        /// <summary>
+        /// 鎴愬搧鑷姩鍙栫珯鍙�
+        /// </summary>
+        StationType_ProductBackTake = 95,
+        /// <summary>
+        /// 鎴愬搧鑷姩琛ユ
+        /// </summary>
+        StationType_ProductBack = 98,
+        /// <summary>
+        /// 鐮佺洏鏈虹珯鍙�
+        /// </summary>
+        StationType_PakcPallet = 99,
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index 02fd846..6781704 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -15,14 +15,14 @@
         /// </summary>
         [Description("鏂板缓浠诲姟")]
         New,
-        ///// <summary>
-        ///// 寰呮墽琛�
-        ///// </summary>
+        /// <summary>
+        /// 寰呮墽琛�
+        /// </summary>
         [Description("寰呮墽琛�")]
         Execut,
-        ///// <summary>
-        ///// 鍙栬揣涓�
-        ///// </summary>
+        /// <summary>
+        /// 鍙栬揣涓�
+        /// </summary>
         [Description("鍙栬揣涓�")]
         Takeing,
         /// <summary>
@@ -47,6 +47,16 @@
         [Description("澶栧舰妫�娴嬩腑")]
         CheckShapeing,
         /// <summary>
+        /// 澶栧舰妫�娴嬫垚鍔�
+        /// </summary>
+        [Description("澶栧舰妫�娴嬫垚鍔�")]
+        CheckShapeingOk,
+        /// <summary>
+        /// 澶栧舰妫�娴嬪け璐�
+        /// </summary>
+        [Description("澶栧舰妫�娴嬪け璐�")]
+        CheckShapeingNG,
+        /// <summary>
         /// 鎵樼洏鍙风‘璁や腑
         /// </summary>
         [Description("鎵樼洏鍙风‘璁や腑")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs"
index 22d78c3..be0bafc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs"
@@ -15,7 +15,7 @@
         /// <summary>
         /// 浼樺厛绾�
         /// </summary>
-        public int priority { get; set; } = 3;
+        public int priority { get; set; }
 
         /// <summary>
         /// 鎼繍绫诲瀷
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs"
index b8de979..972e772 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs"
@@ -29,7 +29,7 @@
         /// <summary>
         /// 鍝嶅簲鏁版嵁
         /// </summary>
-        public object data { get; set; }
+        public FOURBOTnewMovePodTaskResponseData data { get; set; }
     }
 
     /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs"
index 76794cd..60761a0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs"
@@ -12,5 +12,12 @@
     public interface IRGVLocationInfoService : IService<Dt_RGVLocationInfo>
     {
        public IRepository<Dt_RGVLocationInfo> Repository { get; }
+        /// <summary>
+        /// 鑾峰彇鍙敤绌鸿揣浣�
+        /// </summary>
+        /// <param name="AreaCode"></param>
+        /// <param name="containerType"></param>
+        /// <returns></returns>
+        Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs"
index 450d3b1..c1d0dc1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs"
@@ -12,5 +12,11 @@
     public interface IStationMangerService : IService<Dt_StationManger>
     {
         public IRepository<Dt_StationManger> Repository { get; }
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱绔欏彴
+        /// </summary>
+        /// <param name="fromLocationCode"></param>
+        /// <returns></returns>
+        Dt_StationManger GetInStationInfo(string fromLocationCode);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
index a5488dd..f1b351f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
@@ -69,7 +69,7 @@
         [SugarColumn(IsNullable = false, ColumnDescription = "绔欏彴鏄惁鍙敤")]
         public int IsOccupied { get; set; }
         /// <summary>
-        /// 澶囨敞
+        /// 澶囨敞(澶栧舰妫�娴嬬偣ID)
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
         public string Remark { get; set; }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index 1aa0f22..b02b728 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -134,12 +134,12 @@
         public int Grade { get; set; }
 
         /// <summary>
-        /// WMS浠诲姟涓婚敭
+        /// 鍥涘悜杞︿换鍔D
         /// </summary>
-        [ImporterHeader(Name = "WMS浠诲姟涓婚敭")]
-        [ExporterHeader(DisplayName = "WMS浠诲姟涓婚敭")]
-        [SugarColumn(IsNullable = true, ColumnDescription = "WMS浠诲姟涓婚敭")]
-        public int WMSId { get; set; }
+        [ImporterHeader(Name = "鍥涘悜杞︿换鍔D")]
+        [ExporterHeader(DisplayName = "鍥涘悜杞︿换鍔D")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍥涘悜杞︿换鍔D")]
+        public int RGVTaskId { get; set; }
 
         /// <summary>
         /// 浠诲姟涓嬪彂鏃堕棿
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
new file mode 100644
index 0000000..518a8ee
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
@@ -0,0 +1,107 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Core.Helper;
+
+namespace WIDESEAWCS_TaskInfoService
+{
+    public partial class TaskService
+    {
+
+        #region 娴峰悍AGV浠诲姟鍒涘缓
+        /// <summary>
+        /// 鍒涘缓娴峰悍AGV鍏ュ簱浠诲姟
+        /// </summary>
+        /// <param name="taskDTO"></param>
+        /// <param name="taskType"></param>
+        /// <returns></returns>
+        public WebResponseContent CreateHKNewInTask(TaskDTO taskDTO, int taskType)
+        {
+            try
+            {
+                int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();//杩欓噷鎴戜笉鐭ラ亾鏄粈涔堢被鍨�
+                //鑾峰彇璐т綅淇℃伅
+                Dt_HKLocationInfo? kLSLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == containerType);
+                if (kLSLocationInfo == null) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+                Dt_Task dt_Task = new Dt_Task()
+                {
+                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    WMSTaskNum = taskDTO.taskCode,
+                    //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    Grade = taskDTO.taskPriority,
+                    PalletCode = taskDTO.containerCode,
+                    Roadway = kLSLocationInfo.RoadwayNo,
+                    TaskState = TaskStatusEnum.New.ObjToInt(),
+                    TaskType = taskType,
+                    SourceAddress = taskDTO.fromLocationCode,
+                    CurrentAddress = taskDTO.fromLocationCode,
+                    NextAddress = kLSLocationInfo.LocationCode,
+                    TargetAddress = kLSLocationInfo.LocationCode,
+                    Creater = "WMS",
+                };
+                kLSLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+                Db.Ado.BeginTran();
+                BaseDal.AddData(dt_Task);
+                _hKLocationInfoService.Repository.UpdateData(kLSLocationInfo);
+                Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鍒涘缓娴峰悍AGV鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="taskDTO"></param>
+        /// <param name="taskType"></param>
+        /// <returns></returns>
+        public WebResponseContent CreateHKNewOutTask(TaskDTO taskDTO, int taskType)
+        {
+            try
+            {
+                Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode);
+                if (hKLocationInfo == null) throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+                if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
+                Dt_Task dt_Task = new Dt_Task()
+                {
+                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    WMSTaskNum = taskDTO.taskCode,
+                    //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    Grade = taskDTO.taskPriority,
+                    PalletCode = taskDTO.containerCode,
+                    Roadway = hKLocationInfo.RoadwayNo,
+                    TaskState = TaskStatusEnum.New.ObjToInt(),
+                    TaskType = taskType,
+                    SourceAddress = taskDTO.fromLocationCode,
+                    CurrentAddress = taskDTO.fromLocationCode,
+                    NextAddress = taskDTO.toLocationCode,
+                    TargetAddress = taskDTO.toLocationCode,
+                    Creater = "WMS",
+                };
+                hKLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
+                Db.Ado.BeginTran();
+                BaseDal.AddData(dt_Task);
+                _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
+                Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
+        #endregion
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
index b5c2829..5253d68 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
@@ -74,7 +74,7 @@
                 {
                     TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     WMSTaskNum = taskDTO.taskCode,
-                    WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     Grade = taskDTO.taskPriority,
                     PalletCode = taskDTO.containerCode,
                     Roadway = kLSLocationInfo.RoadwayNo,
@@ -100,161 +100,6 @@
             }
         }
         #endregion
-
-        #region RGV浠诲姟鍒涘缓
-        /// <summary>
-        /// 鍒涘缓鍥涘悜杞﹀叆搴撲换鍔�
-        /// </summary>
-        /// <param name="taskDTO"></param>
-        /// <param name="taskType"></param>
-        /// <returns></returns>
-        public WebResponseContent CreateRGVNewInTask(TaskDTO taskDTO, int taskType)
-        {
-            try
-            {
-                List<Dt_RGVLocationInfo>? rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt());
-                if (rGVLocationInfos.Count < 1) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
-                var rGVLocationInfo = rGVLocationInfos.OrderBy(x => x.Depth).First();
-                Dt_Task dt_Task = new Dt_Task()
-                {
-                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    WMSTaskNum = taskDTO.taskCode,
-                    WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    Grade = taskDTO.taskPriority,
-                    PalletCode = taskDTO.containerCode,
-                    Roadway = rGVLocationInfo.RoadwayNo,
-                    TaskState = TaskStatusEnum.New.ObjToInt(),
-                    TaskType = taskType,
-                    SourceAddress = taskDTO.fromLocationCode,
-                    CurrentAddress = taskDTO.fromLocationCode,
-                    NextAddress = rGVLocationInfo.LocationCode,//鎵惧叆搴撶珯鍙板搴旂殑澶栧舰妫�娴嬬紪鍙�
-                    TargetAddress = rGVLocationInfo.LocationCode,
-                    Creater = "WMS",
-                };
-                rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
-                Db.Ado.BeginTran();
-                BaseDal.AddData(dt_Task);
-                _rGVLocationInfoService.Repository.UpdateData(rGVLocationInfo);
-                Db.Ado.CommitTran();
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                Db.Ado.RollbackTran();
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
-        /// <summary>
-        /// 鍒涘缓鍥涘悜杞﹀嚭搴撲换鍔�
-        /// </summary>
-        /// <param name="taskDTO"></param>
-        /// <param name="taskType"></param>
-        /// <returns></returns>
-        public WebResponseContent CreateRGVNewOutTask(TaskDTO taskDTO, int taskType)
-        {
-            try
-            {
-                Db.Ado.BeginTran();
-
-                Db.Ado.CommitTran();
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                Db.Ado.RollbackTran();
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
-        #endregion
-
-        #region 娴峰悍AGV浠诲姟鍒涘缓
-        /// <summary>
-        /// 鍒涘缓娴峰悍AGV鍏ュ簱浠诲姟
-        /// </summary>
-        /// <param name="taskDTO"></param>
-        /// <param name="taskType"></param>
-        /// <returns></returns>
-        public WebResponseContent CreateHKNewInTask(TaskDTO taskDTO, int taskType)
-        {
-            try
-            {
-                int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();//杩欓噷鎴戜笉鐭ラ亾鏄粈涔堢被鍨�
-                //鑾峰彇璐т綅淇℃伅
-                Dt_HKLocationInfo? kLSLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == containerType);
-                if (kLSLocationInfo == null) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
-                Dt_Task dt_Task = new Dt_Task()
-                {
-                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    WMSTaskNum = taskDTO.taskCode,
-                    WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    Grade = taskDTO.taskPriority,
-                    PalletCode = taskDTO.containerCode,
-                    Roadway = kLSLocationInfo.RoadwayNo,
-                    TaskState = TaskStatusEnum.New.ObjToInt(),
-                    TaskType = taskType,
-                    SourceAddress = taskDTO.fromLocationCode,
-                    CurrentAddress = taskDTO.fromLocationCode,
-                    NextAddress = kLSLocationInfo.LocationCode,
-                    TargetAddress = kLSLocationInfo.LocationCode,
-                    Creater = "WMS",
-                };
-                kLSLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
-                Db.Ado.BeginTran();
-                BaseDal.AddData(dt_Task);
-                _hKLocationInfoService.Repository.UpdateData(kLSLocationInfo);
-                Db.Ado.CommitTran();
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                Db.Ado.RollbackTran();
-                throw new Exception(ex.Message);
-            }
-        }
-        /// <summary>
-        /// 鍒涘缓娴峰悍AGV鍑哄簱浠诲姟
-        /// </summary>
-        /// <param name="taskDTO"></param>
-        /// <param name="taskType"></param>
-        /// <returns></returns>
-        public WebResponseContent CreateHKNewOutTask(TaskDTO taskDTO, int taskType)
-        {
-            try
-            {
-                Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode);
-                if (hKLocationInfo == null) throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
-                if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
-                Dt_Task dt_Task = new Dt_Task()
-                {
-                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    WMSTaskNum = taskDTO.taskCode,
-                    WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
-                    Grade = taskDTO.taskPriority,
-                    PalletCode = taskDTO.containerCode,
-                    Roadway = hKLocationInfo.RoadwayNo,
-                    TaskState = TaskStatusEnum.New.ObjToInt(),
-                    TaskType = taskType,
-                    SourceAddress = taskDTO.fromLocationCode,
-                    CurrentAddress = taskDTO.fromLocationCode,
-                    NextAddress = taskDTO.toLocationCode,
-                    TargetAddress = taskDTO.toLocationCode,
-                    Creater = "WMS",
-                };
-                hKLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
-                Db.Ado.BeginTran();
-                BaseDal.AddData(dt_Task);
-                _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
-                Db.Ado.CommitTran();
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                Db.Ado.RollbackTran();
-                throw new Exception(ex.Message);
-            }
-        }
-        #endregion
-
 
         #region 5 璺ㄦゼ灞傝繍杈撲换鍔″垱寤�
         public WebResponseContent CarryTask(TaskDTO taskDTO, int taskType)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs"
new file mode 100644
index 0000000..f7f99f9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs"
@@ -0,0 +1,88 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Core.Helper;
+
+namespace WIDESEAWCS_TaskInfoService
+{
+    public partial class TaskService
+    {
+        #region RGV浠诲姟鍒涘缓
+        /// <summary>
+        /// 鍒涘缓鍥涘悜杞﹀叆搴撲换鍔�
+        /// </summary>
+        /// <param name="taskDTO"></param>
+        /// <param name="taskType"></param>
+        /// <returns></returns>
+        public WebResponseContent CreateRGVNewInTask(TaskDTO taskDTO, int taskType)
+        {
+            try
+            {
+                //List<Dt_RGVLocationInfo>? rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt());
+                //if (rGVLocationInfos.Count < 1) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+                //var rGVLocationInfo = rGVLocationInfos.OrderBy(x => x.Depth).First();
+                //var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+                Dt_StationManger stationManger = _stationMangerService.GetInStationInfo(taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐逛綅缃�恵taskDTO.fromLocationCode}銆戠珯鍙颁俊鎭紒");
+                //if (stationManger.IsOccupied == 1) throw new Exception($"璧风偣浣嶇疆銆恵taskDTO.fromLocationCode}銆戠珯鍙拌鍗犵敤锛岃閲婃斁锛�");
+                Dt_Task dt_Task = new()
+                {
+                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    WMSTaskNum = taskDTO.taskCode,
+                    //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                    Grade = taskDTO.taskPriority,
+                    PalletCode = taskDTO.containerCode,
+                    Roadway = taskDTO.toAreaCode,
+                    TaskState = TaskStatusEnum.New.ObjToInt(),
+                    TaskType = taskType,
+                    SourceAddress = taskDTO.fromLocationCode,
+                    CurrentAddress = taskDTO.fromLocationCode,
+                    NextAddress = stationManger.Remark,//鎵惧叆搴撶珯鍙板搴旂殑澶栧舰妫�娴嬬紪鍙�
+                    TargetAddress = "",
+                    //Remark = taskDTO.toAreaCode,
+                    Creater = "WMS",
+                };
+                //rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+                //Db.Ado.BeginTran();
+                BaseDal.AddData(dt_Task);
+                //_rGVLocationInfoService.Repository.UpdateData(rGVLocationInfo);
+                //Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鍒涘缓鍥涘悜杞﹀嚭搴撲换鍔�
+        /// </summary>
+        /// <param name="taskDTO"></param>
+        /// <param name="taskType"></param>
+        /// <returns></returns>
+        public WebResponseContent CreateRGVNewOutTask(TaskDTO taskDTO, int taskType)
+        {
+            try
+            {
+                Db.Ado.BeginTran();
+
+                Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        #endregion
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 9c0bf7a..92506be 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -46,6 +46,7 @@
         private readonly IRGVLocationInfoService _rGVLocationInfoService;
         private readonly IRepository<Dt_TaskExecuteDetail> _taskExecuteDetailRepository;
         private readonly IApiInfoService _apiInfoService;
+        private readonly IStationMangerService _stationMangerService;
         private readonly IMapper _mapper;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
new file mode 100644
index 0000000..bc40d17
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+    public partial class TaskJob
+    {
+        #region 涓嬪彂娴峰悍AGV浠诲姟
+        public void SendHIKROBOTTask(List<Dt_Task> tasks)
+        {
+
+        }
+        #endregion
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs"
new file mode 100644
index 0000000..3edca3b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs"
@@ -0,0 +1,58 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+    public partial class TaskJob
+    {
+
+        #region 涓嬪彂鍑箰澹獳GV浠诲姟
+        public void SendGALAXISTask(List<Dt_Task> tasks)
+        {
+            GALAXISTaskInfo gALAXISTaskInfo = new();
+            try
+            {
+                gALAXISTaskInfo.groupId = DateTime.Now.ToString("yyMMddHHmmss");
+                gALAXISTaskInfo.msgTime = DateTime.Now.ToString();
+                gALAXISTaskInfo.tasks = new List<GALAXISTask>();
+                foreach (var task in tasks)
+                {
+                    GALAXISTask gALAXISTask = new GALAXISTask()
+                    {
+                        taskId = task.WMSTaskNum,
+                        taskType = task.TaskType == (int)TaskTypeEnum.MLInbound ? 0 : 1,
+                        barCode = task.PalletCode,
+                        endNode = task.TargetAddress,
+                        startNode = task.SourceAddress,
+                        priorityCode = task.Grade
+                    };
+                    gALAXISTaskInfo.tasks.Add(gALAXISTask);
+                }
+                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GALAXISTaskInfo)) ?? throw new Exception("鏈壘鍒板嚡涔愬+AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+                string response = HttpHelper.Post(apiInfo.ApiAddress, gALAXISTaskInfo.Serialize());
+                GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
+                if (agvContent.success)
+                {
+                    if (agvContent.data.returnStatus != 0) throw new Exception(agvContent.data.returnInfo);
+                    tasks.ForEach(task =>
+                    {
+                        task.TaskState = (int)TaskStatusEnum.Execut;
+                    });
+                    _taskService.UpdateData(tasks);
+                }
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(TaskJob), ex.Message, ex);
+            }
+        }
+        #endregion
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs"
new file mode 100644
index 0000000..f057da7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs"
@@ -0,0 +1,117 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_DTO.RGV.FOURBOT;
+using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+    public partial class TaskJob
+    {
+
+        #region 涓嬪彂鍥涘悜杞︿换鍔�
+        public void SendRGVTask(List<Dt_Task> tasks)
+        {
+            FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
+            try
+            {
+                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("鏈壘鍒板洓鍚戣溅浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+                #region 鍏ュ簱
+                var intasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).ToList();
+                foreach (var item in intasks)
+                {
+                    fOURBOTnewMovePodTask.priority = item.Grade;
+                    fOURBOTnewMovePodTask.podID = item.PalletCode;
+                    fOURBOTnewMovePodTask.destination = item.NextAddress;
+                    fOURBOTnewMovePodTask.desExt = new
+                    {
+                        unload = 0//鏄惁鏀句笅瀹瑰櫒,0鍚�1鏄�
+                    };
+                    fOURBOTnewMovePodTask.desType = 2;
+                    string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
+                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
+                    if (fOURBOTReturn.returnCode == 0)
+                    {
+                        item.RGVTaskId = fOURBOTReturn.data.taskID;
+                        item.TaskState = (int)TaskStatusEnum.Execut;
+                    }
+                }
+                _taskService.UpdateData(intasks);
+                #endregion
+
+                #region 鍑哄簱
+                var outtasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
+                foreach (var item in outtasks)
+                {
+                    ///鍒ゆ柇鏄惁闇�瑕佺Щ搴�
+                }
+                #endregion
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(TaskJob), ex.Message, ex);
+            }
+        }
+        #endregion
+        /// <summary>
+        /// 涓嬪彂澶栧舰妫�娴嬫垚鍔熶换鍔�
+        /// </summary>
+        /// <param name="tasks"></param>
+        public void SendCheckShapeingOkTask(List<Dt_Task> tasks)
+        {
+            FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
+            try
+            {
+                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("鏈壘鍒板洓鍚戣溅浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+                List<Dt_RGVLocationInfo> rGVLocationInfos = new List<Dt_RGVLocationInfo>();
+                foreach (var item in tasks)
+                {
+                    #region 鑾峰彇璐т綅
+                    var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway);
+                    if (rGVLocationInfo == null)
+                    {
+                        item.ExceptionMessage = $"鏈壘鍒扮粓鐐瑰簱鍖恒�恵item.Roadway}銆戝彲鐢ㄧ┖璐т綅锛�";
+                    }
+                    #endregion
+                    else
+                    {
+                        item.CurrentAddress = item.NextAddress;
+                        item.NextAddress = rGVLocationInfo.LocationCode;
+                        fOURBOTnewMovePodTask.priority = item.Grade;
+                        fOURBOTnewMovePodTask.podID = item.PalletCode;
+                        fOURBOTnewMovePodTask.destination = item.NextAddress;
+                        fOURBOTnewMovePodTask.desExt = new
+                        {
+                            unload = 1//鏄惁鏀句笅瀹瑰櫒,0鍚�1鏄�
+                        };
+                        fOURBOTnewMovePodTask.desType = 2;
+                        string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
+                        FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
+                        if (fOURBOTReturn.returnCode == 0)
+                        {
+                            item.RGVTaskId = fOURBOTReturn.data.taskID;
+                            item.TaskState = (int)TaskStatusEnum.Puting;
+                            rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+                            rGVLocationInfos.Add(rGVLocationInfo);
+                        }
+                    }
+                }
+                _taskService.Db.Ado.BeginTran();
+                _taskService.UpdateData(tasks);
+                _rGVLocationInfoService.UpdateData(rGVLocationInfos);
+                _taskService.Db.Ado.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(TaskJob), ex.Message, ex);
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
index 45158be..6b4a81c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
@@ -29,6 +29,16 @@
                     var Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.MLInbound || x.TaskType == (int)TaskTypeEnum.MLOutbound).ToList();
                     if (Tasks.Count > 0) SendGALAXISTask(Tasks);
                     #endregion
+
+                    #region 鏌ユ壘RGV浠诲姟
+                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound || x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
+                    if (Tasks.Count > 0) SendRGVTask(Tasks);
+                    #endregion
+
+                    #region 鏌ユ壘娴峰悍AGV浠诲姟
+                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.Carry || x.TaskType == (int)TaskTypeEnum.CJCarry || x.TaskType == (int)TaskTypeEnum.CJInbound || x.TaskType == (int)TaskTypeEnum.CJOutbound).ToList();
+                    if (Tasks.Count > 0) SendHIKROBOTTask(Tasks);
+                    #endregion
                 }
             }
             catch (Exception ex)
@@ -46,68 +56,13 @@
         {
             try
             {
-
+                var Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.CheckShapeingOk).ToList();
+                SendCheckShapeingOkTask(Tasks);
             }
             catch (Exception ex)
             {
                 WriteError(nameof(TaskJob), ex.Message, ex);
             }
-        }
-        #endregion
-
-        #region 涓嬪彂鍑箰澹獳GV浠诲姟
-        public void SendGALAXISTask(List<Dt_Task> tasks)
-        {
-            GALAXISTaskInfo gALAXISTaskInfo = new GALAXISTaskInfo();
-            try
-            {
-                gALAXISTaskInfo.groupId = DateTime.Now.ToString("yyMMddHHmmss");
-                gALAXISTaskInfo.msgTime = DateTime.Now.ToString();
-                gALAXISTaskInfo.tasks = new List<GALAXISTask>();
-                foreach (var task in tasks)
-                {
-                    GALAXISTask gALAXISTask = new GALAXISTask()
-                    {
-                        taskId = task.WMSTaskNum,
-                        taskType = task.TaskType == (int)TaskTypeEnum.MLInbound ? 0 : 1,
-                        barCode = task.PalletCode,
-                        endNode = task.TargetAddress,
-                        startNode = task.SourceAddress,
-                        priorityCode = task.Grade
-                    };
-                    gALAXISTaskInfo.tasks.Add(gALAXISTask);
-                }
-                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GALAXISTaskInfo)) ?? throw new Exception("鏈壘鍒板嚡涔愬+AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
-                string response = HttpHelper.Post(apiInfo.ApiAddress, gALAXISTaskInfo.Serialize());
-                GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
-                if (agvContent.success)
-                {
-                    if (agvContent.data.returnStatus != 0) throw new Exception(agvContent.data.returnInfo);
-                    tasks.ForEach(task =>
-                    {
-                        task.TaskState = (int)TaskStatusEnum.Execut;
-                    });
-                    _taskService.UpdateData(tasks);
-                }
-            }
-            catch (Exception ex)
-            {
-                WriteError(nameof(TaskJob), ex.Message, ex);
-            }
-        }
-        #endregion
-
-        #region 涓嬪彂鍥涘悜杞︿换鍔�
-        public void SendRGVTask(List<Dt_Task> tasks)
-        {
-
-        }
-        #endregion
-
-        #region 涓嬪彂娴峰悍AGV浠诲姟
-        public void SendHIKROBOTTask(List<Dt_Task> tasks)
-        {
-
         }
         #endregion
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
index 47e7144..21b41a2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
@@ -28,10 +28,12 @@
     {
         private readonly ITaskService _taskService;
         private readonly IApiInfoService _apiInfoService;
-        public TaskJob(ITaskService taskService, IApiInfoService apiInfoService)
+        private readonly IRGVLocationInfoService _rGVLocationInfoService;
+        public TaskJob(ITaskService taskService, IApiInfoService apiInfoService, IRGVLocationInfoService rGVLocationInfoService)
         {
             _taskService = taskService;//娉ㄥ叆
             _apiInfoService = apiInfoService;
+            _rGVLocationInfoService = rGVLocationInfoService;
         }
 
         public Task Execute(IJobExecutionContext context)

--
Gitblit v1.9.3