From 8abc9481eafeb715b39a4f4f8d6f628a642e6b53 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 19 三月 2025 17:38:18 +0800
Subject: [PATCH] 优化AGV和输送线、产线对接逻辑

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs |  114 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 74 insertions(+), 40 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs"
index 95652a4..1865c95 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs"
@@ -10,6 +10,8 @@
 using WIDESEAWCS_DTO.WMSInfo;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_Tasks.ConveyorLineJob;
 
 namespace WIDESEAWCS_Tasks
@@ -30,26 +32,36 @@
                 try
                 {
                     ConveyorLineTaskCommandR command = conveyorLine.ReadCustomer<ConveyorLineTaskCommandR>(childDeviceCode);
-                    if (command != null && command.Status == (ushort)ConveyorStatus.Stored)//娣诲姞杈撻�佺嚎鐘舵�丆onveyorLineStatus enum
+                    if (command != null)
                     {
-                        switch (childDeviceCode)
+                        if (childDeviceCode == "1002" && command.Status == (ushort)ConveyorStatus.Wait)
                         {
-                            case "102":
-                                RequestInbound(conveyorLine, command, childDeviceCode);
-                                break;
-                            case "104":
-                                ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
-                                break;
-                            //case "105":
-                            //    RequestOutbound(conveyorLine, command, childDeviceCode);
-                            //    break;
-                            case "108":
-                                ConveyorLineOutFinish(conveyorLine, command, childDeviceCode);
-                                break;
-                                //default:
-                                //    RequestInNextAddress(conveyorLine, command, childDeviceCode);
-                                //    RequestOutNextAddress(conveyorLine, command, childDeviceCode);
-                                //    break;
+                            RequestInbound(conveyorLine, command, childDeviceCode);
+                        }
+                        else if (childDeviceCode == "1004" && command.Status == (ushort)ConveyorStatus.Stored)
+                        {
+                            ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
+                        }
+                        else if (childDeviceCode == "1008" && command.Status == (ushort)ConveyorStatus.Stored)
+                        {
+                            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+                            if (task != null)
+                            {
+                                List<Dt_Router> routers = _routerRepository.QueryData(x => x.StartPosi == task.NextAddress && x.ChildPosiDeviceCode == "AGV" && x.Remark == "鏈崰鐢�");
+                                if (routers != null && routers.Count > 0)
+                                {
+                                    var router = routers.FirstOrDefault();
+                                    if (router != null)
+                                    {
+                                        task.TaskState = TaskOutStatusEnum.Line_OutFinish.ObjToInt();
+                                        task.CurrentAddress = childDeviceCode;
+                                        task.NextAddress = router.ChildPosi;
+                                        router.Remark = "鍗犵敤";
+                                        _routerRepository.UpdateData(router);
+                                        _taskService.UpdateData(task);
+                                    }
+                                }
+                            }
                         }
                     }
                 }
@@ -71,8 +83,20 @@
         public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommandR command, string childDeviceCode)
         {
             Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode, command.Barcode);
+            //Dt_Task task = _taskService.QueryConveyorLineTaskNum(conveyorLine.DeviceCode, childDeviceCode, command.TaskNum);
             if (task != null)
             {
+                if (command.Spec > 0)
+                {
+                    DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.Spec.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommandR.Spec));
+                    string? Des = deviceProtocolDetail?.ProtocolDetailDes;
+                    if (Des != task.ExceptionMessage)
+                    {
+                        task.ExceptionMessage = deviceProtocolDetail?.ProtocolDetailDes;
+                        _taskService.UpdateData(task);
+                    }
+                    return;
+                }
                 ConveyorLineDTO lineDTO = new ConveyorLineDTO()
                 {
                     TaskNum = task.TaskNum,
@@ -82,31 +106,41 @@
                     Weight = command.Weight,
                 };
                 var content = _taskService.RequestWMSTask(lineDTO);
-
-                if (content.Status)
+                if (!content.Status)
                 {
-                    task.CurrentAddress = childDeviceCode;
-                    task.NextAddress = AppSettings.Configuration["OKAddress"];
-                    task.ExceptionMessage = null;
-                    ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task);
-                    taskCommand.WriterTrue = 1;
-
-                    if (conveyorLine.SendCommand(taskCommand, childDeviceCode))
-                        _taskService.UpdateTaskStatusToNext(task);
+                    task.ExceptionMessage = content?.Message;
+                    _taskService.UpdateData(task);
+                    return;
                 }
-                else
+                //if (content.Status)
+                //{
+                task.CurrentAddress = childDeviceCode;
+                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.TargetAddress);
+                if (routers.Count > 0)
                 {
-                    //if (content.Code == 404)//淇敼缁堢偣鍦板潃
-                    //{
-                    task.CurrentAddress = childDeviceCode;
-                    task.NextAddress = AppSettings.Configuration["NGAddress"];
-                    task.ExceptionMessage = content.Message;
-                    task.TaskState = (int)TaskInStatusEnum.InException;
-                    ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task);
-                    taskCommand.WriterTrue = 1;
-                    if (conveyorLine.SendCommand(taskCommand, childDeviceCode)) _taskService.UpdateData(task);
-                    //}
+                    task.NextAddress = routers.FirstOrDefault().ChildPosi;
                 }
+                //task.NextAddress = AppSettings.Configuration["OKAddress"];
+                task.ExceptionMessage = null;
+                ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task);
+                taskCommand.WriterTrue = (short)command.inRead;
+
+                if (conveyorLine.SendCommand(taskCommand, childDeviceCode))
+                    _taskService.UpdateTaskStatusToNext(task);
+                //}
+                //else
+                //{
+                //    //if (content.Code == 404)//淇敼缁堢偣鍦板潃
+                //    //{
+                //    task.CurrentAddress = childDeviceCode;
+                //    task.NextAddress = AppSettings.Configuration["NGAddress"];
+                //    task.ExceptionMessage = content.Message;
+                //    task.TaskState = (int)TaskInStatusEnum.InException;
+                //    ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task);
+                //    taskCommand.WriterTrue = 1;
+                //    if (conveyorLine.SendCommand(taskCommand, childDeviceCode)) _taskService.UpdateData(task);
+                //    //}
+                //}
             }
         }
 
@@ -142,7 +176,7 @@
             Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.Barcode, childDeviceCode);
             if (task != null) _taskService.UpdateTaskStatusToNext(task);
 
-            task = _taskService.QueryCompletedConveyorLineTask(command.TaskNum, childDeviceCode);
+            task = _taskService.QueryCompletedConveyorLineTask(command.Barcode, childDeviceCode);
             if (task != null && string.IsNullOrEmpty(task.TargetAddress))
             {
                 _taskService.StackerCraneRequestInbound(task);

--
Gitblit v1.9.3