From e81c782b3e7a632ffb8e32be56fce931a8c89ae6 Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期一, 09 二月 2026 08:55:42 +0800
Subject: [PATCH] 修复bug

---
 项目代码/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs |   86 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 72 insertions(+), 14 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index 51c7860..76914e7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -2,6 +2,7 @@
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
 using System.Text;
 using System.Text.RegularExpressions;
 using WIDESEA_DTO.Agv;
@@ -56,29 +57,84 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                var task = _taskRepository.QueryFirst(x => (agvUpdateDTO.ContainerCode ?? "")==x.PalletCode);
+                if (agvUpdateDTO.Message != null && agvUpdateDTO.Message == "ROBOT_ERROR-haiUnknownError")
+                {
+                    var task1 = _taskRepository.QueryFirst(x => (agvUpdateDTO.MissionCode ?? "") == x.GroupId);
+                    if (task1 != null)
+                    {
+                        Dt_ErrorInfo errorInfo = new Dt_ErrorInfo()
+                        {
+                            RobotCode = agvUpdateDTO.RobotId,
+                            Message = agvUpdateDTO.Message,
+                            ErrorType = 2
+                        };
+                        if (task1.TaskType == 500)
+                        {
+                            errorInfo.Message = "鍏ュ簱寮傚父";
+                            errorInfo.StationCode = task1.CurrentAddress;
+                        }
+                        else
+                        {
+                            errorInfo.Message = "鍑哄簱寮傚父";
+                            errorInfo.StationCode = task1.NextAddress;
+                        }
+                        _taskService.AgvSearchStatus1(errorInfo);
+                    }
+                }
+                var task = _taskRepository.QueryFirst(x => (agvUpdateDTO.ContainerCode ?? "") == x.PalletCode);
                 switch (agvUpdateDTO.MissionStatus)
                 {
                     case nameof(AGVStatusEnum.PICKER_RECEIVE):
                         if (task == null) throw new Exception($"鏈壘鍒版枡绠便�恵agvUpdateDTO.ContainerCode}銆戜换鍔�");
                         _taskService.UpdateTask(task, TaskStatusEnum.AGV_TakeFinish);
+                        Dt_ErrorInfo e1 = new Dt_ErrorInfo()
+                        {
+                            RobotCode = agvUpdateDTO.RobotId,
+                            Message = agvUpdateDTO.Message,
+                            ErrorType = 0
+                        };
+                        _taskService.AgvSearchStatus1(e1);
+
                         break;
                     case nameof(AGVStatusEnum.PICKER_SEND):
                         if (task == null) throw new Exception($"鏈壘鍒版枡绠便�恵agvUpdateDTO.ContainerCode}銆戜换鍔�");
-                        _taskService.TaskCompleted(task.TaskNum);
+                        Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.PickStationCode == task.NextAddress);
+                        if (task.IsCancel > 0 && stationManger != null && stationManger.StationCode != agvUpdateDTO.CurrentPosition)
+                        {
+                            _taskService.TaskCancelCompleted(task.TaskNum);
+                        }
+                        else
+                        {
+                            _taskService.TaskCompleted(task.TaskNum);
+                        }
+                        Dt_ErrorInfo e2 = new Dt_ErrorInfo()
+                        {
+                            RobotCode = agvUpdateDTO.RobotId,
+                            Message = agvUpdateDTO.Message,
+                            ErrorType = 0
+                        };
+                        _taskService.AgvSearchStatus1(e2);
                         break;
                     case nameof(AGVStatusEnum.WAITFEEDBACK):
                         //AGV鏀捐
-                        List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x=>x.StationType==StationTypeEnum.StationType_OnlyInbound.ObjToInt());
-                        if (!stationMangers.Select(x=>x.StationCode).Contains(agvUpdateDTO.CurrentPosition))
+                        List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt());
+                        if (!stationMangers.Select(x => x.StationCode).Contains(agvUpdateDTO.CurrentPosition))
                         {
                             WebResponseContent responseContent = _taskService.AgvTaskFlow(agvUpdateDTO.MissionCode);
                             if (!responseContent.Status) throw new Exception($"{responseContent.Message}");
                         }
+                        Dt_ErrorInfo e3 = new Dt_ErrorInfo()
+                        {
+                            RobotCode = agvUpdateDTO.RobotId,
+                            Message = agvUpdateDTO.Message,
+                            ErrorType = 0
+                        };
+                        _taskService.AgvSearchStatus1(e3);
                         break;
                     default:
                         break;
                 }
+
                 content.OK();
             }
             catch (Exception ex)
@@ -141,26 +197,28 @@
 
                 if (stationManger.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt())
                 {
-                    commonConveyorLine.Communicator.Write("21", (short)256);
+                    commonConveyorLine.Communicator.Write("21", new byte[] { 1, 0 });
                 }
                 else
                 {
-                    commonConveyorLine.Communicator.Write("23", (short)256);
+                    commonConveyorLine.Communicator.Write("23", new byte[] { 1, 0 });
                 }
                 content.OK();
             }
             catch (Exception ex)
             {
-                if (ex.Message.Contains("鏁版嵁鍐欏叆锛屽湴鍧�锛氥��23銆戯紝鍐欏叆鐨勬暟鎹細銆�256銆�") || ex.Message.Contains("鏁版嵁鍐欏叆锛屽湴鍧�锛氥��21銆戯紝鍐欏叆鐨勬暟鎹細銆�256銆�"))
-                {
-                    content.OK();
-                }
-                else
-                {
-                    content.Error(ex.Message);
-                }
+                content.Error(ex.Message);
             }
             return content;
         }
+        /// <summary>
+        /// AGV浣滀笟瀹屾垚
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("AgvSearchStatus"), AllowAnonymous]
+        public void AgvSearchStatus()
+        {
+            _taskService.AgvSearchStatus();
+        }
     }
 }

--
Gitblit v1.9.3