From 5da3a276b7847187a7c155ee069d3cd4c9e58074 Mon Sep 17 00:00:00 2001
From: HuBingJie <3146306518@qq.com>
Date: 星期日, 07 十二月 2025 23:28:14 +0800
Subject: [PATCH] 1

---
 代码管理/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs |  138 +++++++++++++++++++++++++++++-----------------
 1 files changed, 87 insertions(+), 51 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
index 5d84dfb..d3c4465 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
@@ -1,5 +1,6 @@
 锘縰sing AutoMapper;
 using Quartz;
+using System.Net;
 using WIDESEA_Common.Log;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_DTO.Enum;
@@ -9,6 +10,7 @@
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DTO;
 using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_TaskInfoService;
 using WIDESEAWCS_Tasks.ConveyorLineJob;
 using WIDESEAWCS_Tasks.StackerCraneJob;
 
@@ -24,6 +26,7 @@
         private readonly IMapper _mapper;
         private readonly IRgvOperationService _gvOperationService;
         private readonly IEquipmentStatusService _equipmentStatusService;
+        //private readonly TaskService _task;
 
         public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IAgvStationService agvStation, IMapper mapper, IRgvOperationService gvOperationService, IEquipmentStatusService equipmentStatusService)
         {
@@ -34,6 +37,7 @@
             _mapper = mapper;
             _gvOperationService = gvOperationService;
             _equipmentStatusService=equipmentStatusService;
+            //_task = task;
         }
 
         public async Task Execute(IJobExecutionContext context)
@@ -52,13 +56,13 @@
                         if (Stations.Station_material == (int)RGVEquipment.AQMexit)
                         {
 
-                            bool Security = SecurityDoorEquipment(conveyorLine, Stations);
+                            bool Security = SecurityDoorEquipment(conveyorLine, Stations);  //瀹夊叏闂�
                             if (Security) continue;
 
                         }
                         else
                         {
-                            bool HCJPlat=PlatformEquipmentInformation(conveyorLine, Stations);
+                            bool HCJPlat=PlatformEquipmentInformation(conveyorLine, Stations);  //寮傚父绔欏彴锛屽嚭搴撶珯鍙�
                             if (HCJPlat) continue;
                         }
                         
@@ -76,16 +80,19 @@
         //澶勭悊瀹夊叏闂ㄧ殑閫昏緫
         private void HandleDoorRequest(AQMReturnnormal aQMConveyor, AGVStation aGVStation,int tasktype)  //1锛氬叆搴�  2锛氬嚭搴�
         {
-            if (_gvOperationService.AQMReadAlarminform(tasktype) && _equipmentStatusService.GetSCstatus())
+            /*bool RGValarm = _gvOperationService.AQMReadAlarminform(tasktype);
+            bool SCstatus = _equipmentStatusService.GetSCstatus();
+           if (RGValarm || SCstatus)
             {
                 //鍐欏叆鎶ヨ
                 GetDeviceAddress.WriteSecurityDoorpolice(aGVStation.ChildPosiDeviceCode, "AlarmSummary", 1);
-                _gvOperationService.WriteOutbuttonpause(null);
-            }
+
+                bool RGVRGV_DWorkingmode = tasktype == 1 ? _gvOperationService.InWriteOutbuttonpause(null).Status : _gvOperationService.WriteOutbuttonpause(null).Status;
+            }*/
 
             if (aQMConveyor.DoorRequest == 1 && aQMConveyor.IndicatorStatus == (int)SafetyDoorStatus.YellowBlink2Hz)
             {
-                if (aQMConveyor.EmergencyStopStatus == 1)
+                if (aQMConveyor.EmergencyStopStatus == 1)  //璇锋眰寮�闂ㄧ瓑寰呬换鍔″畬鎴�
                 {
                     bool AQMzckm = tasktype == 1 ? GetDeviceAddress.InRGVRGVStepprocess() : GetDeviceAddress.OutRGVRGVStepprocess();    //鍒ゆ柇鏄惁鏈夎繘绋嬩换鍔�
                     if (AQMzckm)
@@ -94,18 +101,21 @@
                         bool RGVRGV_DWorkingmode = tasktype == 1 ? _gvOperationService.InWriteOutbuttonpause(null).Status : _gvOperationService.WriteOutbuttonpause(null).Status;
 
                         bool RGVstate = tasktype == 1 ? GetDeviceAddress.InRGVStatice() : GetDeviceAddress.OutRGVStatice();     //鍒ゆ柇鏄惁鍏ㄤ负鎵嬪姩
-                        if (RGVstate)
+                        WebResponseContent webResponse = _taskService.StkRunStatus();
+                        if (RGVstate && webResponse.Status == true)
                         {
-                            //鍐欏叆寮�闂ㄤ俊鍙�
-                            GetDeviceAddress.WriteSecurityDoorpolice(aGVStation.ChildPosiDeviceCode, "OpenDoor", 1);
+                                //鍐欏叆寮�闂ㄤ俊鍙�
+                                GetDeviceAddress.WriteSecurityDoorpolice(aGVStation.ChildPosiDeviceCode, "OpenDoor", 1);
                         }
                     }
 
                 }
-                else
+                else //鎬ュ仠绔嬮┈鏆傚仠璁惧
                 {
                     bool AQMkm = tasktype == 1 ? GetDeviceAddress.InRGVStatice() : GetDeviceAddress.OutRGVStatice();
-                    if (AQMkm)
+                    WebResponseContent webResponse = _taskService.StkRunStatus();
+
+                    if (AQMkm && webResponse.Status == true)
                     {
                         GetDeviceAddress.WriteSecurityDoorpolice(aGVStation.ChildPosiDeviceCode, "OpenDoor", 1);
                     }
@@ -134,12 +144,12 @@
                     // 鏍规嵁浠诲姟绫诲瀷閫夋嫨澶勭悊绛栫暐
                     if (Stations.Station_tasktype == (int)RGVTasktype.Outbound)
                     {
-                        if (aQMConveyor.EmergencyStopStatus == 0) _gvOperationService.WriteOutbuttonpause(null);
+                        if (aQMConveyor.EmergencyStopStatus == 0 || aQMConveyor.SafetyLockStatus==0) _gvOperationService.WriteOutbuttonpause(null);
                         HandleDoorRequest(aQMConveyor, Stations, 2);
                     }
                     else
                     {
-                        if (aQMConveyor.EmergencyStopStatus == 0) _gvOperationService.InWriteOutbuttonpause(null);
+                        if (aQMConveyor.EmergencyStopStatus == 0 || aQMConveyor.SafetyLockStatus == 0) _gvOperationService.InWriteOutbuttonpause(null);
                         HandleDoorRequest(aQMConveyor, Stations, 1);
                     }
                 }
@@ -157,26 +167,22 @@
         {
             try
             {
-                PlatformStatus aQMConveyor = StoticCommand(conveyorLine, Stations.ChildPosiDeviceCode);
-                if (aQMConveyor != null)
+                if (StoticCommand(conveyorLine, Stations.HCJStorageaddress.ToString()))    //鍙繘琛屾斁璐�
                 {
-                    if (aQMConveyor.HCJ_GoodsStatus == 0)    //鍙繘琛屾斁璐�
+                    WebResponseContent webResponseContent = new WebResponseContent();
+                    //鏍规嵁绫诲瀷鏌ユ壘浠诲姟
+                    if (Stations.Station_material == (int)RGVEquipment.AbnormalOutbound)
                     {
-                        WebResponseContent webResponseContent = new WebResponseContent();
-                        //鏍规嵁绫诲瀷鏌ユ壘浠诲姟
-                        if (Stations.Station_material == (int)RGVEquipment.AbnormalOutbound)
-                        {
-                            //鏌ユ壘鏄惁鏈夊紓甯告惉杩愪换鍔�
-                            webResponseContent = _taskService.UpdateDeliveryAddress(Stations.HCJStorageaddress.ToString(), 1);   //杩橀渶瑕佷紶鍏ュ湴鍧�
-                        }
-                        else
-                        {
-                            //鍑哄簱绔欏彴鐨勪换鍔�
-                            webResponseContent = _taskService.UpdateDeliveryAddress(Stations.HCJStorageaddress.ToString(), 2);
-                        }
+                        //鏌ユ壘鏄惁鏈夊紓甯告惉杩愪换鍔�
+                        webResponseContent = _taskService.UpdateDeliveryAddress(Stations.HCJStorageaddress.ToString(), 1);   //杩橀渶瑕佷紶鍏ュ湴鍧�
+                    }
+                    else
+                    {
+                        //鍑哄簱绔欏彴鐨勪换鍔�
+                        webResponseContent = _taskService.UpdateDeliveryAddress(Stations.HCJStorageaddress.ToString(), 2);
                     }
                 }
-                
+
                 return false;
             }
             catch (Exception ex)
@@ -228,31 +234,61 @@
         }
 
         //绔欏彴淇″彿
-        public PlatformStatus StoticCommand(CommonConveyorLine conveyorLine, string kladder)
+     /*   public bool StoticCommand(CommonConveyorLine conveyorLine, string kladder)
         {
-            PlatformStatus conveyorRgvCommand = new PlatformStatus();
-            List<DeviceProDTO> deviceProDTO6 = conveyorLine.DeviceProDTOs
-                .Where(x => x.DeviceChildCode == kladder
-                            && x.DeviceProParamName== "HCJ_GoodsStatus"
-                            && x.DeviceProParamType == "ReadDeviceCommand")
-                .ToList();
-            foreach (var item in deviceProDTO6)
+            DeviceProDTO? deviceProDTO6 = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == kladder
+                            && x.DeviceProParamName == "HCJ_GoodsStatus"
+                            && x.DeviceProParamType == "ReadDeviceCommand");
+            if(deviceProDTO6 == null) { return false; }
+
+            if (deviceProDTO6.DeviceChildCode == "2016"||deviceProDTO6.DeviceChildCode == "2017"|| deviceProDTO6.DeviceChildCode == "2018"|| deviceProDTO6.DeviceChildCode == "2019"
+                || deviceProDTO6.DeviceChildCode == "1001"|| deviceProDTO6.DeviceChildCode == "1002")
             {
-                var paramName = item.DeviceProParamName;
-                var propertyInfo = typeof(PlatformStatus).GetProperty(paramName);
-
-                if (propertyInfo != null)
-                {
-                    if (item.DeviceDataType == "short")
-                    {
-                        var value = conveyorLine.Communicator.Read<short>(item.DeviceProAddress);
-                        propertyInfo.SetValue(conveyorRgvCommand, value);
-                    }
-                }
+                var value1 = conveyorLine.Communicator.Read<short>(deviceProDTO6.DeviceProAddress);
+                //寤舵椂5绉�
+                System.Threading.Thread.Sleep(5000);
+                var value2 = conveyorLine.Communicator.Read<short>(deviceProDTO6.DeviceProAddress);
+                if (value1 != value2 && (value1 !=0 && value2 !=0)) { return false; };
+                return true;
             }
-            return conveyorRgvCommand;
+            var value = conveyorLine.Communicator.Read<short>(deviceProDTO6.DeviceProAddress);
+
+            if (value == 0) {  return true; }
+            return false;
+        }*/
+
+
+
+        //绔欏彴淇″彿
+        public bool StoticCommand(CommonConveyorLine conveyorLine, string kladder)
+        {
+            DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == kladder
+                            && x.DeviceProParamName == "HCJ_GoodsStatus"
+                            && x.DeviceProParamType == "ReadDeviceCommand");
+            // 杩欎簺绔欏彴闇�瑕佲�滃欢鏃�5绉掑苟姣旇緝绗竴娆′笌鏈�鍚庝竴娆$粨鏋溾��
+            bool isPlatformCode =
+                kladder == "2016" || kladder == "2017" || kladder == "2018" || kladder == "2019" ||
+                kladder == "1001" || kladder == "1002";
+
+            if (isPlatformCode)
+            {
+                // 绗竴娆¤鍙�
+                short first = conveyorLine.Communicator.Read<short>(deviceProDTO.DeviceProAddress);
+
+                // 寤舵椂5绉�
+                System.Threading.Thread.Sleep(5000);
+
+                // 鏈�鍚庝竴娆¤鍙�
+                short last = conveyorLine.Communicator.Read<short>(deviceProDTO.DeviceProAddress);
+
+                // 鍗忚锛�0=鏃犱俊鍙�=鏃犺揣=绌轰綅
+                return first == 0 && last == 0;
+            }
+            else
+            {
+                short value = conveyorLine.Communicator.Read<short>(deviceProDTO.DeviceProAddress);
+                return value == 0; // 0=绌轰綅鍙斁锛�1=鏈夎揣涓嶅彲鏀�
+            }
         }
-
-
     }
 }

--
Gitblit v1.9.3