From 3b7569285434bb38736627821f7d7eb34fabca28 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 09 四月 2026 16:32:30 +0800
Subject: [PATCH] 优化海康跨楼层任务,处理设备信息写入失败任务

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs                            |   98 +++----------
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs                      |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs                |    8 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs                              |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs                        |   96 +++++++------
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs              |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs                      |    7 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs                     |   16 +-
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs                                      |   64 +++++++--
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs                           |   16 +-
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs                                 |   26 +++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                        |   18 +-
 13 files changed, 188 insertions(+), 173 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
index 77fc8ab..87b6ddd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
@@ -37,7 +37,7 @@
         /// </summary>
         /// <param name="agvcode"></param>
         /// <returns></returns>
-        public WebResponseContent CheckTheCar()
+        public WebResponseContent CheckTheCar(string hkagvType)
         {
             WebResponseContent content = new WebResponseContent();
             List<HIKROBOTQueryData> dataList = new List<HIKROBOTQueryData>();
@@ -51,7 +51,7 @@
 
             try
             {
-                var agvInfo = Repository.QueryData();
+                var agvInfo = Repository.QueryData(x => x.HkagvType == hkagvType);
                 if (agvInfo == null || !agvInfo.Any())
                 {
                     content.Error("鏈煡璇㈠埌AGV灏忚溅淇℃伅");
@@ -63,7 +63,7 @@
 
                 foreach (var item in agvInfo)
                 {
-                     var headers = new Dictionary<string, string>
+                    var headers = new Dictionary<string, string>
                     {
                         { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + item.AGVCode }
                     };
@@ -156,6 +156,6 @@
         }
 
 
-       
+
     }
 }
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 74374cd..1031a7d 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"
@@ -124,28 +124,28 @@
 
 
         /// <summary>
-        /// 绛夊緟娴峰悍AGV鎼繍鍒颁綅  19
+        /// 鍛煎彨AGV灏忚溅涓�
         /// </summary>
-        [Description("绛夊緟娴峰悍AGV鎼繍鍒颁綅")]
+        [Description("鍛煎彨AGV灏忚溅涓�")]
         WaitingHkAGVMovePosition,
 
 
         /// <summary>
-        /// 鍛煎彨娴峰悍鎼繍涓� 
+        /// 娴峰悍AGV绌鸿溅璺ㄥ眰涓嬪彂 
         /// </summary>
-        [Description("鍛煎彨娴峰悍AGV鎼繍")]
+        [Description("娴峰悍AGV绌鸿溅璺ㄥ眰涓嬪彂")]
         CallingHKtransportation,
 
         /// <summary>
-        /// 娴峰悍AGV鎼繍涓� 
+        /// 娴峰悍AGV绌鸿溅璺ㄥ眰杩愯涓� 
         /// </summary>
-        [Description("娴峰悍AGV鎼繍涓�")]
+        [Description("娴峰悍AGV绌鸿溅璺ㄥ眰杩愯涓�")]
         HktransportIng,
 
         /// <summary>
-        /// 娴峰悍AGV鎼繍瀹屾垚 22
+        /// 娴峰悍AGV绌鸿溅璺ㄥ眰瀹屾垚
         /// </summary>
-        [Description("娴峰悍AGV鎼繍瀹屾垚")]
+        [Description("娴峰悍AGV绌鸿溅璺ㄥ眰瀹屾垚")]
         HkTransportCompleted,
 
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
index 3041606..0ea2e8e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
@@ -19,6 +19,6 @@
         /// 妫�鏌ユ捣搴峰皬杞�
         /// </summary>
         /// <returns></returns>
-        WebResponseContent CheckTheCar();
+        WebResponseContent CheckTheCar(string hkagvType);
     }
 }
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 78c2736..96d8fab 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"
@@ -58,7 +58,7 @@
         /// </summary>
         [ImporterHeader(Name = "鎵樼洏缂栧彿")]
         [ExporterHeader(DisplayName = "鎵樼洏缂栧彿")]
-        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
         public string PalletCode { get; set; }
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
index 1703ffe..45f0d87 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
@@ -20,9 +20,9 @@
         }
 
         [HttpPost,Route("CheckTheCar"), AllowAnonymous]
-        public WebResponseContent CheckTheCar()
+        public WebResponseContent CheckTheCar(string hkagvType)
         {
-            return Service.CheckTheCar();
+            return Service.CheckTheCar(hkagvType);
         }
 
     }
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"
index bc292cc..cfce8e7 100644
--- "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"
@@ -44,14 +44,14 @@
                 //鑾峰彇璐т綅淇℃伅
                 else
                     hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
-                if (taskType==(int)TaskTypeEnum.Q1TSJ4)
+                if (taskType == (int)TaskTypeEnum.Q1TSJ4)
                 {
                     var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                     if (device.IsConnected)
                     {
                         var reslu = device.GetValue<HoistEnum, string>(HoistEnum.Emptycontainernumber);
                         var result = reslu?.TrimEnd('\0')?.Substring(2);
-                        if (reslu== taskDTO.containerCode&&result!=null)
+                        if (reslu == taskDTO.containerCode && result != null)
                         {
                             throw new Exception($"褰撳墠鐨勬枡绠卞彿涓簕reslu}涓巤taskDTO.containerCode}鏂欑鍙蜂笉鍖归厤");
                         }
@@ -246,8 +246,7 @@
                 hIKROBOTTaskSubmit.initPriority = task.Grade;
                 hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum;
                 hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto();
-                if (task.TaskType != (int)TaskTypeEnum.MOVE &&task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK &&
-                    task.TaskType != (int)TaskTypeEnum.F01)
+                if (task.TaskType != (int)TaskTypeEnum.MOVE && task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK && task.TaskType != (int)TaskTypeEnum.F01)
                 {
                     CarrierInfoDto carrierInfoDto = new CarrierInfoDto()
                     {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
index ac17fd7..7380d53 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
@@ -83,12 +83,6 @@
                                 task.TaskState = (int)TaskStatusEnum.HktransportIng;
                                 BaseDal.UpdateData(task);
                             }
-                            else if (task.TaskType == (int)TaskTypeEnum.Q3CK|| task.TaskType == (int)TaskTypeEnum.Q3RK)
-                            {
-                                //UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Lock);
-                                task.TaskState = (int)TaskStatusEnum.Takeing;
-                                TaskFeedback(task, 1);
-                            }
                             else
                             {
                                 task.TaskState = (int)TaskStatusEnum.Takeing;
@@ -97,24 +91,11 @@
                             break;
                         case "outbin"://绂诲紑璧风偣
                             {
-                                  if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK)
-                                {
-                                    UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Free);
-                                    task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt();
-                                    BaseDal.UpdateData(task);
-                                    TaskFeedback(task, 1);
-                                }
-                                else
-                                {
-                                    
-                                    TaskFromCompleted(task, deviceTypeEnum); //浠诲姟鐘朵綋鏀逛负3鍙栬揣瀹屾垚锛屾洿鏂拌捣鐐硅揣浣嶇姸鎬侊紝骞跺弽棣圵MS璧风偣瀹屾垚
-                                }
-                                ///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
+                                TaskFromCompleted(task, deviceTypeEnum); //浠诲姟鐘朵綋鏀逛负3鍙栬揣瀹屾垚锛屾洿鏂拌捣鐐硅揣浣嶇姸鎬侊紝骞跺弽棣圵MS璧风偣瀹屾垚
                             }
                             break;
                         case "finish"://绂诲紑鎻愬崌鏈�
                             {
-
                                 //鍏ユ彁鍗囨満
                                 if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish)
                                 {
@@ -146,7 +127,7 @@
                                     BaseDal.UpdateData(task);
                                 }
                                 //鍥涙ゼ 鍑哄簱  
-                                else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) 
+                                else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                 {
                                     var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                                     if (device == null) task.ExceptionMessage = "鏈壘鍒版彁鍗囨満淇℃伅";
@@ -160,7 +141,7 @@
                                     BaseDal.UpdateData(task);
                                 }
                                 // //鍥涙ゼ鍑烘彁鍗囨満 鍏ュ簱 涔嬪墠鏄疉GV_ToExecute  //瑕佸啓鎴愬彇璐у畬鎴愮姸鎬乀akeFinish
-                                if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+                                else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                 {
                                     var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                                     if (device == null) task.ExceptionMessage = "鏈壘鍒版彁鍗囨満淇℃伅";
@@ -175,21 +156,29 @@
                                     BaseDal.UpdateData(task);
                                 }
                                 //璺ㄦゼ灞�
-                                else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.TakeFinish)
+                                else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt()/* && task.TaskState == (int)TaskStatusEnum.TakeFinish*/)
                                 {
-                                    if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()|| task.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
+                                    var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
+                                    if (device == null) task.ExceptionMessage = "鏈壘鍒拌川妫�闂ㄤ俊鎭�";
+                                    else
                                     {
-                                        var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
-                                        if (device == null) task.ExceptionMessage = "鏈壘鍒拌川妫�闂ㄤ俊鎭�";
-                                        else
+                                        bool Wok = false;
+                                        var Address = task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? task.TargetAddress : task.SourceAddress;
+                                        if (device.IsConnected)
                                         {
-                                            if (device.IsConnected)
-                                                //鍐欎互涓�涓嚭搴撳畬鎴愪俊鍙�
-                                                device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, task.TargetAddress);
-                                            else
-                                                task.ExceptionMessage = "璐ㄦ闂ㄤ俊鎭澶囪繛鎺ュけ璐�";
+                                            int i = 0;
+                                            while (!Wok && i <= 3)
+                                            {
+                                                i++;
+                                                Wok = device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, Address);
+                                                Thread.Sleep(500);
+                                            }
                                         }
-
+                                        if (!Wok)
+                                        {
+                                            task.ExceptionMessage = $"銆恵Address}銆戝叧闂姹傝繘鍏ュけ璐ワ紒";
+                                            task.Remark = $"{device.DeviceCode}_RequestToEnter_{false}_{Address}";
+                                        }
                                     }
                                     BaseDal.UpdateData(task);
                                 }
@@ -209,8 +198,8 @@
                                 else
                                 {
                                     if (device.IsConnected)
-                                         //鎵撳紑鎵爜鍣�
-                                       device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
+                                        //鎵撳紑鎵爜鍣�
+                                        device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
                                     else
                                         task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
                                 }
@@ -220,16 +209,16 @@
                             break;
                         case "end"://浠诲姟瀹屾垚閫氱煡
                             {
-                                 if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK|| task.TaskType == (int)TaskTypeEnum.MOVE)
+                                if (task.TaskType == (int)TaskTypeEnum.MOVE)
                                 {
                                     task.TaskState = TaskStatusEnum.Finish.ObjToInt();
-                                    BaseDal.UpdateData(task);
-                                    TaskFeedback(task, 2);
                                     BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
+                                    var Task = BaseDal.QueryFirst(x => task.WMSTaskNum.Contains(x.WMSTaskNum));
+                                    Task.TaskState = TaskStatusEnum.HkTransportCompleted.ObjToInt();
+                                    BaseDal.UpdateData(Task);
                                 }
                                 else
                                 {
-                                    ///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
                                     TaskCompleted(task, deviceTypeEnum);
                                 }
                             }
@@ -237,14 +226,14 @@
                         case "intolift": //杩涘叆鐢垫
                             {
                                 //鍏ゼ鍒颁竴妤肩殑鍏ュ簱浠诲姟
-                                if (task.TaskType==(int)TaskTypeEnum.Q3RK||task.TaskType==(int)TaskTypeEnum.MOVE||task.TaskType==(int)TaskTypeEnum.F01)
+                                if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01)
                                 {
                                     task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt();
                                     BaseDal.UpdateData(task);
                                 }
                             }
                             break;
-                            case "leavelift": //绂诲紑鐢垫
+                        case "leavelift": //绂诲紑鐢垫
                             {
                                 if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01)
                                 {
@@ -443,7 +432,7 @@
             try
             {
                 dt_Task.TaskState = TaskStatusEnum.Finish.ObjToInt();
-                TaskFeedback(dt_Task, 2);
+                TaskFeedback(dt_Task, 2, string.IsNullOrEmpty(dt_Task.Remark));
                 //Db.Ado.BeginTran();
                 UpdateLocationStatus(dt_Task.TargetAddress, dt_Task.PalletCode, deviceTypeEnum, LocationStatusEnum.InStock);
 
@@ -517,6 +506,21 @@
                         stationInfo.StationStatus = locationStatusEnum.ObjToInt();
                         _stationInfo.UpdateData(stationInfo);
                     }
+                    Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode);
+                    if (stationManger != null)
+                    {
+                        if (locationStatusEnum == LocationStatusEnum.Free) //濡傛灉璧风偣瀹屾垚灏辩粰璐т綅璧嬪�兼墭鐩樺彿
+                        {
+                            stationManger.Remark = "";
+                            stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
+                        }
+                        else
+                        {
+                            stationManger.Remark = palletCode;
+                            stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt();
+                        }
+                        _stationMangerService.UpdateData(stationManger);
+                    }
                 }
                 else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe)
                 {
@@ -551,7 +555,7 @@
         #endregion
 
         #region 鏇存柊涓�妤肩珯鍙扮姸鎬�
-        public WebResponseContent UpdateStandStatus(Dt_Task task,string stationCode,LocationStatusEnum locationStatusEnum)
+        public WebResponseContent UpdateStandStatus(Dt_Task task, string stationCode, LocationStatusEnum locationStatusEnum)
         {
             try
             {
@@ -579,7 +583,7 @@
         #endregion
 
         #region 涓婃姤WMS
-        public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status)
+        public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status, bool Del = true)
         {
             WebResponseContent content = new WebResponseContent();
             WMSInOutBoundCompleteFeedback boundCompleteFeedback = new WMSInOutBoundCompleteFeedback();
@@ -596,7 +600,7 @@
                     boundCompleteFeedback.toLocationCode = dt_Task.TargetAddress;
                     boundCompleteFeedback.status = Status;
                     boundCompleteFeedback.custStatus = "";
-                    string response = HttpHelper.Post(apiInfo.ApiAddress,boundCompleteFeedback.Serialize());
+                    string response = HttpHelper.Post(apiInfo.ApiAddress, boundCompleteFeedback.Serialize());
                     agvContent = response.DeserializeObject<WMSReturn>();
                     content.OK(data: agvContent);
                     if (agvContent.code != 200)
@@ -613,7 +617,7 @@
             finally
             {
                 _trackloginfoService.AddTrackLog(boundCompleteFeedback, content, "鍑哄叆搴撲换鍔$姸鎬佸弽棣圵MS", "", "");
-                if (agvContent != null && agvContent.code == 200 && Status == 2)
+                if (agvContent != null && agvContent.code == 200 && Del)
                     BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.鑷姩瀹屾垚);
                 else
                     BaseDal.UpdateData(dt_Task);
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 50b210d..eae3f6f 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"
@@ -130,7 +130,7 @@
                             continue;
                             //throw new Exception($"鎵樼洏鍙枫�恵task.containerCode}銆戝凡瀛樺湪浠诲姟");
                         }
-                        if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType&&x.TaskState<TaskStatusEnum.TakeFinish.ObjToInt())!=null)
+                        if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType && x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()) != null)
                         {
                             objects.Add(new
                             {
@@ -168,7 +168,7 @@
                                 break;
                             #endregion
                             #region 娴峰悍AGV
-                            case(int)TaskTypeEnum.STURR:
+                            case (int)TaskTypeEnum.STURR:
                             case (int)TaskTypeEnum.Q1TSJ4:
                                 content = CreateHKNewInTask(task, item.taskType);
                                 objects.Add(content.Data);
@@ -178,7 +178,7 @@
                                 content = CreateHKNewOutTask(task, item.taskType);
                                 objects.Add(content.Data);
                                 break;
-                           
+
                             case (int)TaskTypeEnum.Q3RK:
                             case (int)TaskTypeEnum.Q3CK:
                                 content = CarryTask(task, item.taskType);
@@ -243,7 +243,7 @@
                 //鍥涘悜杞�
                 bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound;
                 //娴峰悍
-                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK||dt_Task.TaskType==(int)TaskTypeEnum.STURR;
+                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK || dt_Task.TaskType == (int)TaskTypeEnum.STURR;
                 //杩欓噷灏嗙姸鎬佹敼鍙樹簡198鍙栨秷浠诲姟
                 dt_Task.TaskType = TaskStatusEnum.WMSCancel.ObjToInt();
                 #region 鍑箰澹�
@@ -331,7 +331,7 @@
 
                     Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelHIKROBOTTask));
                     if (apiInfo == null) throw new Exception("鏈壘鍒板洓鍚戣溅AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
-                    string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(),headers: headers);
+                    string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(), headers: headers);
                     HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                     content.OK(data: hIKROBOTReturn);
                     if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "鎴愬姛")
@@ -1146,7 +1146,7 @@
                             LoctionCode = item.LocationCode,
                             LocationStatus = item.LocationStatus,
                             EnableStatus = item.EnableStatus,
-                              PalletCode = item.PalletCode
+                            PalletCode = item.PalletCode
                         });
                     }
                     content.OK(data: list);
@@ -1161,7 +1161,7 @@
                     list.Add(new
                     {
                         LoctionCode = value,
-                        LocationStatus = value!=0? 100 : 0,
+                        LocationStatus = value != 0 ? 100 : 0,
                         EnableStatus = 0,
                     });
                     content.OK(data: list);
@@ -1180,7 +1180,7 @@
                             LoctionCode = item.LocationCode,
                             LocationStatus = item.LocationStatus,
                             EnableStatus = item.EnableStatus,
-                              PalletCode = item.PalletCode
+                            PalletCode = item.PalletCode
                         });
                     }
                     content.OK(data: list);
@@ -1191,7 +1191,7 @@
                     var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
                     if (device == null) throw new Exception("鏈壘鍒�1妤艰川妫�闂ㄨ澶囦俊鎭�");
                     if (!device.IsConnected) throw new Exception("PLC1妤艰川妫�闂ㄨ澶囪繛鎺ュけ璐�");
-                    var sta = _stationMangerService.Repository.QueryData(x => x.Remark == "鎴愬搧搴�");
+                    var sta = _stationMangerService.Repository.QueryData(x => x.StationName.Contains("鎴愬搧浠�"));
                     foreach (var item in sta)
                     {
                         bool value = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.StationCode);
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"
index 07b97b6..ba18d44 100644
--- "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"
@@ -50,10 +50,10 @@
             foreach (var item in tasks)
             {
                 // 鍑哄簱浠诲姟澶勭悊 (浠�1妤煎嚭搴撳埌6妤�)
-                if (item.TaskType == (int)TaskTypeEnum.Q3CK)
+                if (item.TaskType == (int)TaskTypeEnum.Q3CK || item.TaskType == (int)TaskTypeEnum.Q3RK)
                 {
                     // 璋冪敤鎺ュ彛鑾峰彇灏忚溅淇℃伅
-                    var result = _agvcartInfoService.CheckTheCar();
+                    var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)(YWGP)");
                     if (result != null && result.Status)
                     {
                         var dataList = result.Data as List<HIKROBOTQueryData>;
@@ -61,7 +61,8 @@
                         {
                             // 鍑哄簱浠诲姟锛氭鏌ユ槸鍚︽湁鍦�1妤�(AA)鐨勫皬杞�
                             // Q3CK 鏄疉A鈫扚F鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
-                            var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == "AA" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+                            var code = item.TaskType == (int)TaskTypeEnum.Q3CK ? "AA" : "FF";
+                            var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == code);
 
                             if (specialCarInAA != null)
                             {
@@ -75,11 +76,11 @@
                             else
                             {
                                 // 娌℃湁涓撶敤灏忚溅鍦�1妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�1妤�
-                                var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+                                var anySpecialCar = dataList.FirstOrDefault();
                                 if (anySpecialCar != null)
                                 {
                                     // 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細1妤肩偣浣�
-                                    var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "AA");
+                                    var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, code);
                                     if (callCarResult.Status)
                                     {
                                         // 鍘熶换鍔$姸鎬佹敼涓虹瓑寰呯┖杞�
@@ -98,54 +99,10 @@
                         item.ExceptionMessage = "鑾峰彇AGV灏忚溅淇℃伅澶辫触";
                     }
                 }
-                // 鍏ュ簱浠诲姟澶勭悊 (浠�6妤煎叆搴撳埌1妤�)
-                else if (item.TaskType == (int)TaskTypeEnum.Q3RK)
-                {
-                    var result = _agvcartInfoService.CheckTheCar();
-
-                    if (result != null && result.Status)
-                    {
-                        var dataList = result.Data as List<HIKROBOTQueryData>;
-                        if (dataList != null && dataList.Any())
-                        {
-                            // Q3RK 鏄疐F鈫扐A鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
-                            var specialCarInFF = dataList.FirstOrDefault(d => d.mapCode == "FF" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
-
-                            if (specialCarInFF!=null)
-                            {
-                                // 鏈夊湪1妤肩殑灏忚溅锛岀洿鎺ユ墽琛屼换鍔�
-                                var content = _taskService.SendHIKROBOTTask(item);
-                                item.TaskState = (int)TaskStatusEnum.Execut;
-                            }
-                            else
-                            {
-                                // 娌℃湁涓撶敤灏忚溅鍦�6妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�6妤�
-                                var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
-                                if (anySpecialCar != null)
-                                {
-                                    // 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細6妤肩偣浣�
-                                    var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "FF");
-                                    if (callCarResult.Status)
-                                    {
-                                        item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
-                                    }
-                                }
-                                else
-                                {
-                                    item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
-                                }
-                            }
-                        }
-                    }
-                    else
-                    {
-                        item.ExceptionMessage = "鑾峰彇AGV灏忚溅淇℃伅澶辫触";
-                    }
-                }
                 else if (item.TaskType == (int)TaskTypeEnum.F01)
                 {
                     // F01浠诲姟澶勭悊锛氭牴鎹洰鏍囧湴鍧�鍒ゆ柇闇�瑕佸摢涓ゼ灞傜殑灏忚溅
-                    var result = _agvcartInfoService.CheckTheCar();
+                    var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)");
 
                     if (result != null && result.Status)
                     {
@@ -162,9 +119,9 @@
                             }
 
                             // 妫�鏌ユ槸鍚︽湁鍦ㄧ洰鏍囨ゼ灞傜殑灏忚溅
-                            var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode&&d.CarType== "MR-Q3-600LE-D(M)");
+                            var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode);
 
-                            if (hasRequiredCar!=null)
+                            if (hasRequiredCar != null)
                             {
                                 // 鏈夊湪鐩爣妤煎眰鐨勫皬杞︼紝鐩存帴鎵ц浠诲姟
                                 var content = _taskService.SendHIKROBOTTask(item);
@@ -193,7 +150,7 @@
                             }
                         }
                     }
-                    }
+                }
                 _taskService.UpdateData(item);
             }
         }
@@ -239,7 +196,7 @@
 
                 Dt_Task newTask = new Dt_Task
                 {
-                    WMSTaskNum="HKkc"+ DateTime.Now.ToString("yyyyMMddHHmmss"), // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
+                    WMSTaskNum = "HK_" + task.WMSTaskNum, // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
                     TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     SourceAddress = currentFloorInfo.PointCode,
                     CurrentAddress = currentFloorInfo.PointCode,
@@ -247,16 +204,16 @@
                     NextAddress = targetFloorInfo.PointCode,
                     TaskType = (int)TaskTypeEnum.MOVE,
                     Grade = task.Grade,
-                    PalletCode = null,
+                    PalletCode = "",
                     TaskState = (int)TaskStatusEnum.CallingHKtransportation,
                     // 澶嶅埗鍏朵粬蹇呰瀛楁
                     CreateDate = DateTime.Now,
                     Creater = "System"
                 };
-                _taskService.AddData(newTask);  // 娣诲姞鏂颁换鍔�
                 var result = _taskService.SendHIKROBOTTask(newTask);
                 if (result.Status)
                 {
+                    _taskService.AddData(newTask);  // 娣诲姞鏂颁换鍔�
                     content.OK("绌鸿溅鍛煎彨浠诲姟鍒涘缓鎴愬姛", newTask);
                 }
                 else
@@ -274,26 +231,22 @@
         #endregion
 
         #region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
-        public void SendHKWaitTask()
+        public void SendHKWaitTask(List<Dt_Task> Tasks)
         {
             try
             {
-                List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.MOVE);
-                if (reslut.Count<=0)
+                List<Dt_Task> Uptasks = new List<Dt_Task>();
+                foreach (var item in Tasks)
                 {
-                    List<Dt_Task> reslut2 = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Q3RK||x.TaskType==(int)TaskTypeEnum.Q3CK || x.TaskType == (int)TaskTypeEnum.F01);
-                    foreach (var item in reslut2)
+                    var content = _taskService.SendHIKROBOTTask(item);
+                    if (content.Status)
                     {
-                        var content = _taskService.SendHIKROBOTTask(item);
-                    }   
-                    reslut.ForEach(x =>
-                    {
-                        x.TaskState =(int)TaskStatusEnum.Execut;
-                    });
-
+                        item.TaskState = (int)TaskStatusEnum.Execut;
+                        Uptasks.Add(item);
+                    }
                 }
-                _taskService.UpdateData(reslut);
-               
+                _taskService.UpdateData(Uptasks);
+
             }
             catch (Exception ex)
             {
@@ -314,14 +267,13 @@
 
             // 鍦板潃鏍煎紡绀轰緥 锛欰A 瀵瑰簲 0339050AA0309145
             // keys 鏄� AA銆丅B銆丆C銆丏D銆丒E銆丗F锛寁ule鏄搴旂殑鐐逛綅淇℃伅
-            foreach (var floorCode in FloorMapping.FloorMap.Keys) 
+            foreach (var floorCode in FloorMapping.FloorMap.Keys)
             {
-                if (address.Contains(floorCode)) 
+                if (address.Contains(floorCode))
                 {
                     return floorCode;//杩斿洖鐨勫氨鏄疉A銆丅B銆丆C銆丏D銆丒E銆丗F涓殑涓�涓紝浠h〃瀵瑰簲鐨勬ゼ灞�
                 }
             }
-
             return null;
         }
 
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"
index 5c7d346..d1d3cfd 100644
--- "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"
@@ -300,12 +300,12 @@
                                 locationsToUpdate.Add(rGVLocationInfo);
 
                                 #region 閲婃斁鍏ュ簱绔欏彴
-                                //var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress);
-                                //if (stationManger != null)
-                                //{
-                                //    stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
-                                //    stationsToUpdate.Add(stationManger);
-                                //}
+                                var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress);
+                                if (stationManger != null)
+                                {
+                                    stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
+                                    stationsToUpdate.Add(stationManger);
+                                }
                                 content.OK();
                                 #endregion
                             }
@@ -412,8 +412,8 @@
                             _taskService.UpdateData(tasksToUpdate);
                         if (locationsToUpdate.Any())
                             _rGVLocationInfoService.UpdateData(locationsToUpdate);
-                        //if (stationsToUpdate.Any())
-                        //    _stationMangerService.UpdateData(stationsToUpdate);
+                        if (stationsToUpdate.Any())
+                            _stationMangerService.UpdateData(stationsToUpdate);
 
                         _unitOfWorkManage.CommitTran();
                     }
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 4729c55..a6e4358 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"
@@ -113,8 +113,8 @@
 
 
                     #region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
-                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.WaitingHkAGVMovePosition).OrderByDescending(x => x.Grade).ToList();
-                    if (Tasks.Count > 0) SendHKWaitTask();
+                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.HkTransportCompleted).OrderByDescending(x => x.Grade).ToList();
+                    if (Tasks.Count > 0) SendHKWaitTask(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 a402251..8e37567 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"
@@ -2,6 +2,7 @@
 using HslCommunication;
 using HslCommunication.Core;
 using Microsoft.VisualBasic.FileIO;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using Quartz;
 using SixLabors.ImageSharp.PixelFormats;
 using SqlSugar;
@@ -15,12 +16,14 @@
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Communicator;
 using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_QuartzJob.DTO;
 using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
 
 namespace WIDESEAWCS_Tasks
@@ -54,6 +57,29 @@
                 SendNewTask();
 
                 SendWaitToTask();
+
+                #region 澶勭悊鍐欏叆璁惧淇″彿寮傚父浠诲姟
+                var tasks = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.Finish.ObjToInt() && !string.IsNullOrEmpty(x.Remark));
+                if (tasks.Count > 0)
+                {
+                    List<Dt_Task> list = new List<Dt_Task>();
+                    foreach (var item in tasks)
+                    {
+                        var infos = item.Remark.Split("_");
+                        var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == infos[0]) as OtherDevice;
+                        if (device != null && device.IsConnected)
+                        {
+                            DeviceProDTO? devicePro = device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == infos[1] && x.DeviceChildCode == infos[3]);
+                            if (devicePro != null)
+                            {
+                                var W = device.Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, infos[2]);
+                                if (W) list.Add(item);
+                            }
+                        }
+                    }
+                    _taskService.Repository.DeleteAndMoveIntoHty(list, OperateTypeEnum.鑷姩鍒犻櫎);
+                }
+                #endregion
             }
             catch (Exception ex)
             {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
index b9bf715..77922a3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
@@ -12,6 +12,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.LocationEnum;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Communicator;
 using WIDESEAWCS_Core.Helper;
@@ -50,9 +51,9 @@
                 // _taskService.Repository 浠撳偍灞傦紝杩涜鏁版嵁搴撹闂�-
                 try
                 {
+                    #region 鍥涘悜杞︿换鍔�
                     List<Dt_Task> Uptasks = new List<Dt_Task>();
                     var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
-                    var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()&& (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6鍜�6-1妤间换鍔�
                     //浠诲姟鐨勭洰鏍囧湴鍧�瀵逛簬绔欏彴鍙凤紱
                     foreach (var task in taskList)
                     {
@@ -103,19 +104,57 @@
                             Uptasks.Add(task);
                         }
                     }
+                    #endregion
+
+                    var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6鍜�6-1妤间换鍔�
                     foreach (var item in AGVtaskList)
                     {
-
-                        if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.SourceAddress))
+                        var address = item.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? item.TargetAddress : item.SourceAddress;
+                        var stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == address);
+                        if (stationManger == null)
                         {
-                            item.ExceptionMessage = $"{item.SourceAddress}绔欏彴鏈夎揣,鏃犳硶杩涘叆";
+                            item.ExceptionMessage = $"鏈壘鍒般�恵address}銆戠珯鍙颁俊鎭�";
+                            Uptasks.Add(item);
                             continue;
                         }
-                        //into杩涘叆涓�妤间綅缃殑鏃跺�欙紝鍐欏叆杩涘叆淇″彿
-                        device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.SourceAddress);
-                        if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true)
+                        var StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, address);
+                        if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
                         {
-                            item.ExceptionMessage = $"{item.TargetAddress}绔欏彴鍏夋爡涓嶄负true锛�1锛�!";
+                            if (StockAvailableSymbol)
+                            {
+                                item.ExceptionMessage = $"{address}绔欏彴鍏夌數妫�娴嬫湁璐э紒";
+                                Uptasks.Add(item);
+                                continue;
+                            }
+                            if (stationManger.IsOccupied == (int)LocationStatusEnum.Lock)
+                            {
+                                item.ExceptionMessage = $"绔欏彴鏈夎揣锛�";
+                                Uptasks.Add(item);
+                                continue;
+                            }
+                        }
+                        else
+                        {
+                            if (!StockAvailableSymbol)
+                            {
+                                item.ExceptionMessage = $"{address}绔欏彴鍏夌數妫�娴嬫棤璐э紒";
+                                Uptasks.Add(item);
+                                continue;
+                            }
+                            if (stationManger.IsOccupied == (int)LocationStatusEnum.Free)
+                            {
+                                item.ExceptionMessage = $"绔欏彴鏃犺揣锛�";
+                                Uptasks.Add(item);
+                                continue;
+                            }
+                        }
+                        //into杩涘叆涓�妤间綅缃殑鏃跺�欙紝鍐欏叆杩涘叆淇″彿
+                        device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, address);
+                        if (!device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.Blocking, address))
+                        {
+                            item.ExceptionMessage = $"{address}绔欏彴鍏夋爡涓嶄负true锛�1锛�!";
+                            Uptasks.Add(item);
+                            continue;
                         }
                         var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum);
                         if (result.Status == false)
@@ -130,15 +169,12 @@
                         item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
                         item.ExceptionMessage = "";
                         Uptasks.Add(item);
-
-
                     }
 
-
                     _taskService.UpdateData(Uptasks);
-                    WriteInfo(device.DeviceName, "infoLog");
+                    //WriteInfo(device.DeviceName, "infoLog");
 
-                    WriteDebug(device.DeviceName, "debugLog");
+                    //WriteDebug(device.DeviceName, "debugLog");
                 }
                 catch (Exception ex)
                 {
@@ -149,8 +185,6 @@
             {
                 WriteError(nameof(TestJob), "鍙傛暟閿欒,鏈紶閫掕澶囧弬鏁版垨璁惧绫诲瀷閿欒");
             }
-
-
             return Task.CompletedTask;
         }
     }

--
Gitblit v1.9.3