wangxinhui
2025-06-20 225d11e2ddaa55d1d482201cb4d89c9486cdba69
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ÓÍÄ«²Ö/CommonHoisterJob.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_IBasicInfoRepository;
@@ -93,9 +94,11 @@
                                task.NextAddress = locationCode;
                                task.DeviceCode = stationManger.StackerCraneCode;
                                task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
                                _taskRepository.UpdateData(task);
                                bool isWrite = hoister.SetValue(HoisterDBName.RequestIn, false, deviceChildCode);
                                if (isWrite)
                                {
                                    _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, deviceCode: task.DeviceCode, targetAddress: task.TargetAddress, currentAddress: task.CurrentAddress, nextAddress: task.NextAddress);
                                }
                            }
                            else
                            {
@@ -104,16 +107,31 @@
                        }
                        else if (leisure && !tray && !requestIn && !inbounding && !requestOut && !outbounding)
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.New.ObjToInt() && string.IsNullOrEmpty(x.TargetAddress) && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskType != TaskTypeEnum.MesOutbound.ObjToInt());
                            Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == deviceChildCode);
                            if (stationManger == null)
                            {
                                WriteError(hoister.DeviceName, $"未找到对应站台信息,设备编号:{deviceChildCode}");
                                break;
                            }
                            if (stationManger.StationType != StationTypeEnum.StationType_InboundAndOutbound.ObjToInt())
                            {
                                continue;
                            }
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.New.ObjToInt() && string.IsNullOrEmpty(x.TargetAddress) && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskType != TaskTypeEnum.MesOutbound.ObjToInt() && x.Roadway== stationManger.StackerCraneCode);
                            if (task != null)
                            {
                                task.TaskState=TaskStatusEnum.HT_Executing.ObjToInt();
                                bool isWrite = hoister.SetValue(HoisterDBName.RequestOut, true, deviceChildCode);
                                if (isWrite)
                                {
                                    _taskService.UpdateTask(task, TaskStatusEnum.HT_Executing);
                                }
                                WriteError(hoister.DeviceName, $"请求出库,设备编号:{deviceChildCode},任务号:{task.TaskNum}");
                            }
                        }
                        else if (!leisure && !tray && !requestIn && !inbounding && requestOut && outbounding)
                        {
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.New.ObjToInt() && string.IsNullOrEmpty(x.TargetAddress) && _taskService.TaskOutboundTypes.Contains(x.TaskType));
                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.HT_Executing.ObjToInt() && string.IsNullOrEmpty(x.TargetAddress) && _taskService.TaskOutboundTypes.Contains(x.TaskType));
                            if (task != null)
                            {
                                Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == deviceChildCode);
@@ -127,9 +145,11 @@
                                task.NextAddress = stationManger.StackerCraneStationCode; ;
                                task.DeviceCode = stationManger.StackerCraneCode;
                                task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
                                _taskRepository.UpdateData(task);
                                bool isWrite = hoister.SetValue(HoisterDBName.RequestOut, false, deviceChildCode);
                                if (isWrite)
                                {
                                    _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, deviceCode: task.DeviceCode, targetAddress: task.TargetAddress, nextAddress: task.NextAddress);
                                }
                            }
                            else
                            {