1
HuBingJie
2025-12-05 28110912ca4803e5793f181517d7bf2d7a5ea2ad
´úÂë¹ÜÀí/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -9,6 +9,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 +25,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 +36,7 @@
            _mapper = mapper;
            _gvOperationService = gvOperationService;
            _equipmentStatusService=equipmentStatusService;
            //_task = task;
        }
        public async Task Execute(IJobExecutionContext context)
@@ -88,7 +91,7 @@
            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)
@@ -97,7 +100,8 @@
                        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);
@@ -105,10 +109,12 @@
                    }
                }
                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);
                    }
@@ -227,18 +233,61 @@
        }
        //站台信号
        public bool StoticCommand(CommonConveyorLine conveyorLine, string kladder)
     /*   public bool StoticCommand(CommonConveyorLine conveyorLine, string kladder)
        {
            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 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;
            }
            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=有货不可放
            }
        }
    }
}