肖洋
2024-12-09 9b567a8304c3d202ddd1f716cb63c2a4535b6417
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
@@ -14,6 +14,7 @@
using HslCommunication;
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_Common;
using Masuit.Tools;
namespace WIDESEAWCS_Tasks
{
@@ -51,57 +52,125 @@
        {
            Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationPLC == conveyorLine.DeviceCode && x.stationChildCode == childDeviceCode);
            if (stationManager.stationType == 8)
            if (stationManager == null)
            {
                var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
                if (task != null)
                {
                    RequestInNextAddress(conveyorLine, command, childDeviceCode);
                }
                // Handle the case where stationManager is not found, if necessary
                Console.WriteLine($"未找到{childDeviceCode}站台");
                return;
            }
            else if (stationManager.stationType == 9)
            // 根据站类型执行相应的方法
            switch (stationManager.stationType)
            {
                var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
                if (task != null)
                {
                    ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
                }
            }
            else if (stationManager.stationType == 1)
            {
                if (stationManager.stationArea.Contains("GW"))
                {
                    var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && x.TaskState == (int)TaskOutStatusEnum.OutFinish);
                    if (taskGW != null)
                case 8:
                case 9:
                case 11:
                case 12:
                    var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
                    if (task != null)
                    {
                        command.ConveyorLineBarcode = taskGW.PalletCode;
                        ExecuteStationAction(stationManager, conveyorLine, command, childDeviceCode);
                    }
                }
                RequestWmsTask(conveyorLine, command, childDeviceCode);
                    break;
                case 1:
                case 6:
                case 10:
                    ExecuteStationAction(stationManager, conveyorLine, command, childDeviceCode);
                    break;
            }
            else if (stationManager.stationType == 10)
            #region
            //Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationPLC == conveyorLine.DeviceCode && x.stationChildCode == childDeviceCode);
            //if (stationManager.stationType == 8)
            //{
            //    var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
            //    if (task != null)
            //    {
            //        RequestInNextAddress(conveyorLine, command, childDeviceCode);
            //    }
            //}
            //else if (stationManager.stationType == 9)
            //{
            //    var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
            //    if (task != null)
            //    {
            //        ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
            //    }
            //}
            //else if (stationManager.stationType == 1)
            //{
            //    if (stationManager.stationArea.Contains("GW"))
            //    {
            //        var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && x.TaskState == (int)TaskOutStatusEnum.OutFinish);
            //        if (taskGW != null)
            //        {
            //            command.ConveyorLineBarcode = taskGW.PalletCode;
            //        }
            //    }
            //    RequestWmsTask(conveyorLine, command, childDeviceCode);
            //}
            //else if (stationManager.stationType == 10)
            //{
            //    var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
            //    if (task != null)
            //    {
            //        RequestOutbound(conveyorLine, command, childDeviceCode);
            //    }
            //}
            //else if (stationManager.stationType == 11)
            //{
            //    var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
            //    if (task != null)
            //    {
            //        RequestOutNextAddress(conveyorLine, command, childDeviceCode);
            //    }
            //}
            //else if (stationManager.stationType == 12)
            //{
            //    var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
            //    if (task != null)
            //    {
            //        ConveyorLineOutFinish(conveyorLine, command, childDeviceCode);
            //    }
            //}
            #endregion
        }
        private void ExecuteStationAction(Dt_StationManager stationManager, CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
        {
            switch (stationManager.stationType)
            {
                var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
                if (task != null)
                {
                case 8:
                    RequestInNextAddress(conveyorLine, command, childDeviceCode);
                    break;
                case 9:
                    ConveyorLineInFinish(conveyorLine, command, childDeviceCode);
                    break;
                case 10:
                    RequestOutbound(conveyorLine, command, childDeviceCode);
                }
            }
            else if (stationManager.stationType == 11)
            {
                var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
                if (task != null)
                {
                    break;
                case 11:
                    RequestOutNextAddress(conveyorLine, command, childDeviceCode);
                }
            }
            else if (stationManager.stationType == 12)
            {
                var task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
                if (task != null)
                {
                    RequestOutNextAddress(conveyorLine, command, childDeviceCode);
                }
                    break;
                case 12:
                    ConveyorLineOutFinish(conveyorLine, command, childDeviceCode);
                    break;
                case 6:
                    CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode);
                    break;
                case 1:
                    //if (stationManager.stationArea.Contains("GW"))
                    //{
                    //    var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutPending));
                    //    if (taskGW != null)
                    //    {
                    //        command.ConveyorLineBarcode = taskGW.PalletCode;
                    //    }
                    //}
                    RequestWmsTask(conveyorLine, command, childDeviceCode);
                    break;
            }
        }
@@ -213,9 +282,10 @@
        /// </summary>
        private async void RequestWmsTask(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
        {
            var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && x.TaskState == (int)TaskOutStatusEnum.OutFinish);
            if (taskGW != null)
                _taskRepository.DeleteData(taskGW);
            //var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutPending));
            //if (taskGW != null)
            //    _taskRepository.DeleteData(taskGW);
            if (command.ConveyorLineBarcode.IsNullOrEmpty()) return;
            var content = await _taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode);
            if (content.Status)
            {
@@ -235,7 +305,8 @@
            else
            {
                WriteInfo(conveyorLine.DeviceName, content.Message);
                _taskRepository.AddData(taskGW);
                ConsoleHelper.WriteErrorLine($"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{content.Message}】");
                //_taskRepository.AddData(taskGW);
            }
        }
    }