huanghongfeng
3 天以前 5ffc36a1db18d3112a9b50a9cf3953d7fcf21bae
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -24,6 +24,7 @@
using Newtonsoft.Json;
using Quartz;
using SqlSugar;
using System.Net;
using System.Reflection;
using System.Threading.Tasks;
using WIDESEAWCS_BasicInfoRepository;
@@ -43,6 +44,7 @@
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_SignalR;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_Tasks.StackerCraneJob;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
namespace WIDESEAWCS_Tasks
@@ -85,9 +87,12 @@
                if (conveyorLine != null)
                {
                    List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode);
                    ConveyorLineTaskCommand command2 = new ConveyorLineTaskCommand();
                    foreach (var station in stationManagers)
                    {
                        ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode);
                        DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == command.ConveyorLineSingal.ToString());
@@ -140,11 +145,12 @@
            }
            catch (Exception ex)
            {
                //WriteError("CommonConveyorLineJob", ex);
                Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
            }
            finally
            {
                //WriteDebug("CommonConveyorLineJob", "test");
                WriteDebug("CommonConveyorLineJob", "test");
                //Console.Out.WriteLine(DateTime.Now);
            }
            return;
@@ -174,7 +180,17 @@
                    if (task != null)
                    {
                        conveyorLine.SetValue(ConveyorLineDBName.Number, task.PalletCode, stationInfo.stationChildCode);
                        conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.NextAddress, stationInfo.stationChildCode);
                        if ((task.TargetAddress == "2042" || task.TargetAddress == "2032") && task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
                        {
                            conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                        }
                        else
                        {
                            conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.NextAddress, stationInfo.stationChildCode);
                        }
                        //conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.NextAddress, stationInfo.stationChildCode);
                        conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                        _taskService.UpdateTaskStatusToNext(task);
@@ -189,7 +205,16 @@
            else
            {
                conveyorLine.SetValue(ConveyorLineDBName.Number, taskNew.PalletCode, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taskNew.NextAddress, stationInfo.stationChildCode);
                if ((taskNew.TargetAddress == "2042" || taskNew.TargetAddress == "2032") && taskNew.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
                {
                    conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taskNew.TargetAddress, stationInfo.stationChildCode);
                }
                else
                {
                    conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taskNew.NextAddress, stationInfo.stationChildCode);
                }
                //conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taskNew.NextAddress, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                _taskService.UpdateTaskStatusToNext(taskNew);
@@ -272,9 +297,15 @@
                conveyorLine.SetValue(ConveyorLineDBName.WheelsDiameter, task.wheels_gkcc, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.WheelsLX, task.WheelsLX, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                _taskService.UpdatePosition(task.TaskNum, stationInfo.stationChildCode);
                Dt_Task dt_Task = _taskService.UpdatePosition(task.TaskNum, stationInfo.stationChildCode);
                if (dt_Task != null)
                {
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                }
                else
                {
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 3, stationInfo.stationChildCode);
                }
            }
        }
@@ -318,35 +349,62 @@
            var task = _taskService.QueryExecutingTaskByBarcode(command.Number, stationInfo.stationChildCode);
            if (task != null)
            {
                //根据车轴缓存位置 å†™å…¥å¯¹åº”目标地址
                if (task.TargetAddress == stationInfo.stationChildCode)
                if (task.TargetAddress == "2032" || task.TargetAddress == "2042")
                {
                    WebResponseContent content = _taskService.RequestWheelsFlow(task.task_CZInfo).Result;
                    bool k1 = conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                    bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                    bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                    WebResponseContent k4 = _taskService.UpdateTaskStatusToNext(task);
                    Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},任务修改状态:{k4.Status}))");
                }
                else
                {
                    WebResponseContent content = _taskService.RequestWheelsFlow(task.PalletCode).Result;
                    if (content.Status)
                    {
                        string taraddress = content.Data.ToString(); // "2032";
                        string taraddress = content.Data.ToString(); // "2032";SourceAddress
                        conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taraddress, stationInfo.stationChildCode);
                        conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                        _taskService.UpdateTaskStatusToNext(task);
                        bool k1 = conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                        bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                        bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                        WebResponseContent k4 = _taskService.UpdateTaskStatusToNext(task);
                        Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},任务修改状态:{k4.Status}))");
                    }
                    else
                    {
                        conveyorLine.SetValue(ConveyorLineDBName.ResponState, 2, stationInfo.stationChildCode);
                        Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},向WMS申请去向失败,原因:{content.Message},写入申诉信故障:2");
                    }
                }
                else
                {
                    conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                    _taskService.UpdateTaskStatusToNext(task);
                }
            }
            else
            {
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 2, stationInfo.stationChildCode);
                string taraddresspos = _taskService.RequestWheletHty(command.Number);
                if (taraddresspos != null)
                {
                    bool k1 = conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                    bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taraddresspos, stationInfo.stationChildCode);
                    bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                    Console.Out.WriteLine($"历史查询信息,,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},写入目标地址为:{taraddresspos})");
                }
                else
                {
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 2, stationInfo.stationChildCode);
                    Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},未找到任务,申请下一地址为:{stationInfo.stationChildCode},写入申诉信故障:2");
                }
            }
            //_taskService.UpdatePosition(task.TaskNum, stationInfo.stationChildCode);
        }
        #region è½¦è½´çº¿äº¤äº’
@@ -359,15 +417,16 @@
        /// <param name="ProtocalDetailValue">线体当前bool读取偏移地址</param>
        public void RequestCZInfo(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager stationInfo)
        {
            var task = _taskService.QueryExecutingTaskByBarcode(command.Number, stationInfo.stationChildCode);
            if (task == null)
            WebResponseContent content = _taskService.GetFeedbackAxleloading();
            if (content.Status)
            {
                //todo  æŸ¥è¯¢WMS车轴数据返回
                Random random = new Random(20);
                string cztm = "CZ00" + random.Next();
                //conveyorLine
                //conveyorLine.SetValue(ConveyorLineDBName.Number, cztm, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.Number, content.Data.ToString(), stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.CarType, "001", stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
            }
            else
            {
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 2, stationInfo.stationChildCode);
            }
        }
@@ -380,11 +439,37 @@
        /// <param name="ProtocalDetailValue">线体当前bool读取偏移地址</param>
        public void RequestTakeCZ(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager stationInfo)
        {
            var task = _taskService.QueryExecutingTaskByBarcode(command.Number, stationInfo.stationChildCode);
            if (task == null)
            WebResponseContent content = _taskService.UpdateAxleCurrentStatue(command.Number);
            if (content.Status)
            {
                //conveyorLine
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                Console.Out.WriteLine("成功!写出车轴线末端生成agv取货任务,反馈输送线信号:1");
            }
            /*else
            {
                var log = $"【{conveyorLine.DeviceName}】,车轴条码:{command.Number},更新失败原因:{content.Message}";
                WriteInfo(conveyorLine.DeviceName, log);
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 3, stationInfo.stationChildCode);
            }*/
        }
        /// <summary>
        /// agv站台申请取料
        /// </summary>
        /// <param name="conveyorLine">输送线实例对象</param>
        /// <param name="command">读取的请求信息</param>
        /// <param name="childDeviceCode">子设备编号</param>
        /// <param name="ProtocalDetailValue">线体当前bool读取偏移地址</param>
        public void RequestagvStation(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, Dt_StationManager stationInfo)
        {
            DeviceProDTO? deviceProDTOt = conveyorLine.DeviceProDTOs.Find(x => x.DeviceChildCode == "3022" && x.DeviceProParamName == "Number");
            string Number = conveyorLine.Communicator.Read<string>(deviceProDTOt.DeviceProAddress);
            if (Number != "" && Number != null)
            {
                //调取wms接口申请agv任务
                WebResponseContent content = _taskService.GetAGVTaskdistribution(stationInfo.stationLocation);
            }
        }
        #endregion