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/TestJob.cs |   96 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 75 insertions(+), 21 deletions(-)

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 fdf3f1f..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)
                     {
@@ -67,10 +68,6 @@
                             var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress);
                             //瓒呴珮璀﹀憡
                             var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress);
-                            //鍐欏叆鍋滄璐ㄦ淇″彿
-                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
-                            Thread.Sleep(500);
-                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                             if (qualityResult)
                             {
                                 //濡傛灉璐ㄦ閫氳繃浜嗭紝灏辨妸浠诲姟鐘舵�佹敼涓鸿川妫�瀹屾垚
@@ -89,6 +86,10 @@
                                 //鍐欏叆澶嶄綅淇″彿
                                 //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
                             }
+                            //鍐欏叆鍋滄璐ㄦ淇″彿
+                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
+                            Thread.Sleep(500);
+                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                         }
                         //else
                         //{
@@ -96,29 +97,84 @@
                         //    device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                         //    device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                         //}
+                        else
+                        {
+                            task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
+                            task.ExceptionMessage = "鏈娴嬪埌璐ㄦ瀹屾垚淇″彿";
+                            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)
                     {
-                        
-                            var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum);
-                            if (result.Status == false)
+                        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 = $"鏈壘鍒般�恵address}銆戠珯鍙颁俊鎭�";
+                            Uptasks.Add(item);
+                            continue;
+                        }
+                        var StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, address);
+                        if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
+                        {
+                            if (StockAvailableSymbol)
                             {
-                                if (item.ExceptionMessage != result.Message)
-                                {
-                                item.ExceptionMessage = result.Message;
-                                    Uptasks.Add(item);
-                                }
+                                item.ExceptionMessage = $"{address}绔欏彴鍏夌數妫�娴嬫湁璐э紒";
+                                Uptasks.Add(item);
                                 continue;
                             }
-                            item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
-                            item.ExceptionMessage = "";
+                            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)
+                        {
+                            if (item.ExceptionMessage != result.Message)
+                            {
+                                item.ExceptionMessage = result.Message;
+                                Uptasks.Add(item);
+                            }
+                            continue;
+                        }
+                        item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
+                        item.ExceptionMessage = "";
+                        Uptasks.Add(item);
                     }
-                    _taskService.UpdateData(Uptasks);
-                    WriteInfo(device.DeviceName, "infoLog");
 
-                    WriteDebug(device.DeviceName, "debugLog");
+                    _taskService.UpdateData(Uptasks);
+                    //WriteInfo(device.DeviceName, "infoLog");
+
+                    //WriteDebug(device.DeviceName, "debugLog");
                 }
                 catch (Exception ex)
                 {
@@ -129,8 +185,6 @@
             {
                 WriteError(nameof(TestJob), "鍙傛暟閿欒,鏈紶閫掕澶囧弬鏁版垨璁惧绫诲瀷閿欒");
             }
-
-
             return Task.CompletedTask;
         }
     }

--
Gitblit v1.9.3