From cd78554c3da306ed8c866d971bee94457665f80c Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 30 八月 2025 17:35:51 +0800
Subject: [PATCH] ERP一期接口

---
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs |  103 +++++++++++++++++++++++++++------------------------
 1 files changed, 54 insertions(+), 49 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
index 0d28a1b..04b620f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
@@ -60,22 +60,26 @@
                     commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
                     if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
                     {
-                        Dt_Task? task = GetTask(commonStackerCrane);
-                        if (task != null)
+                        short stackerError = commonStackerCrane.Communicator.Read<short>("DB1000.54.0");
+                        if (stackerError==0)
                         {
-                            StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
-                            if (stackerCraneTaskCommand != null)
+                            Dt_Task? task = GetTask(commonStackerCrane);
+                            if (task != null)
                             {
-                                bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
-                                if (sendFlag)
+                                StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+                                if (stackerCraneTaskCommand != null)
                                 {
-                                    commonStackerCrane.LastTaskType = task.TaskType;
-                                    task.Dispatchertime = DateTime.Now;
-                                    task.ExceptionMessage = "";
-                                    _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
-                                    commonStackerCrane.Communicator.Write("DB1000.20.0", true);
-                                    //寤舵椂1s
-                                    Thread.Sleep(1000);
+                                    bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+                                    if (sendFlag)
+                                    {
+                                        commonStackerCrane.LastTaskType = task.TaskType;
+                                        task.Dispatchertime = DateTime.Now;
+                                        task.ExceptionMessage = "";
+                                        _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
+                                        commonStackerCrane.Communicator.Write("DB1000.20.0", true);
+                                        //寤舵椂1s
+                                        Thread.Sleep(1000);
+                                    }
                                 }
                             }
                         }
@@ -112,7 +116,7 @@
         {
             try
             {
-                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum && x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt());
                 if (task != null)
                 {
                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
@@ -132,16 +136,10 @@
                             return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
                         }
                         int oldStatus = task.TaskState;
-                        task.DeviceCode = stationManger.StationDeviceCode;
-                        task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt();
-                        task.CurrentAddress = stationManger.StationCode;
-                        task.NextAddress = router.NextPosi;
-                        task.TargetAddress = router.NextPosi;
-                        _taskRepository.UpdateData(task);
-                        //todo 鍫嗗灈鏈哄畬鎴愬畬鎴�
-                        //_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
+                        // 鍫嗗灈鏈哄畬鎴�
+                        _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi);
                         _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�");
-                        WriteInfo(deviceCode, $"鍫嗗灈鏈轰换鍔″畬鎴�,浠诲姟鍙�:{taskNum}");
+                        WriteInfo(deviceCode, $"鍫嗗灈鏈哄嚭搴撲换鍔″畬鎴�,浠诲姟鍙�:{taskNum}");
                     }
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                     {
@@ -178,7 +176,7 @@
         /// <returns></returns>
         private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
         {
-            Dt_Task task;
+            Dt_Task? task;
             if (commonStackerCrane.LastTaskType == null)
             {
                 task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
@@ -187,6 +185,7 @@
             {
                 if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
+                    //涓婁竴涓负鍑哄簱鍒欐煡鏄惁瀛樺湪鍏ュ簱浠诲姟 浜ゆ浛鎵ц
                     task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                     if (task == null)
                     {
@@ -195,6 +194,7 @@
                 }
                 else
                 {
+                    //涓婁竴涓负鍏ュ簱鍒欐煡鏄惁瀛樺湪鍑哄簱浠诲姟 浜ゆ浛鎵ц
                     task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
                     if (task == null)
                     {
@@ -203,28 +203,33 @@
                 }
             }
 
-            //if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
-            //{
-            //    if (OutTaskStationIsOccupied(task) == null)
-            //    {
-            //        bool flag = false;
-            //        List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList();
-            //        List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
-            //        foreach (var item in tasks)
-            //        {
-            //            if (OutTaskStationIsOccupied(task) != null)
-            //            {
-            //                flag = true;
-            //                break;
-            //            }
-            //        }
-            //        if (!flag)
-            //        {
-            //            task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
-            //        }
-            //    }
-            //}
-
+            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            {
+                //鍒ゆ柇鍑哄簱绔欏彴鍗犵敤
+                if (OutTaskStationIsOccupied(task) == null)
+                {
+                    bool flag = false;
+                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList();
+                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
+                    foreach (var item in tasks)
+                    {
+                        if (OutTaskStationIsOccupied(task) != null)
+                        {
+                            flag = true;
+                            break;
+                        }
+                    }
+                    if (!flag)
+                    {
+                        task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    }
+                }
+            }
+            if (task == null)
+            {
+                task = _taskService.QuertStackerCraneTask(commonStackerCrane.DeviceCode, TaskTypeGroup.RelocationGroup);
+            }
+            
             return task;
         }
 
@@ -242,7 +247,7 @@
                 if (device != null)
                 {
                     OtherDevice client = (OtherDevice)device;
-                    if (client.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode) == 3)//鍑哄簱绔欏彴鏈鍗犵敤
+                    if (client.GetValue<WR_CLineYLDB, short>(WR_CLineYLDB.WR_Request, stationManger.StationCode) != 99)//鍑哄簱绔欏彴鏈鍗犵敤
                     {
                         task.NextAddress = stationManger.StackerCraneStationCode;
                         _taskRepository.UpdateData(task);
@@ -304,7 +309,7 @@
                     return null;
                 }
             }
-            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍒ゆ柇鏄惁鏄嚭搴撲换鍔�
             {
                 string[] targetCodes = task.NextAddress.Split("-");
                 if (targetCodes.Length == 3)
@@ -333,7 +338,7 @@
                     return null;
                 }
             }
-            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)//鍒ゆ柇鏄惁鏄Щ搴撲换鍔�
             {
                 string[] targetCodes = task.NextAddress.Split("-");
                 if (targetCodes.Length == 5)

--
Gitblit v1.9.3