hutongqing
2024-08-23 e98b07c84a2a496da895ef6b523b29ccc75e004d
WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -82,7 +82,11 @@
        /// <param name="e"></param>
        private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e)
        {
            _taskService.TaskCompleted(e.TaskNum);
            Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
            _taskService.StackCraneTaskCompleted(e.TaskNum);
            CommonStackerCrane commonStackerCrane = sender as CommonStackerCrane;
            commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
        }
        /// <summary>
@@ -109,23 +113,23 @@
                    task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
                    if (task != null)
                    {
                        //if (OutTaskStationIsOccupied(task) != null)
                        if (OutTaskStationIsOccupied(task) != null)
                        {
                            return task;
                        }
                        //else
                        //{
                        //    List<string> otherOutStaionCodes = _routerService.QueryRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
                        //    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
                        //    foreach (var item in tasks)
                        //    {
                        //        if (OutTaskStationIsOccupied(task) != null)
                        //        {
                        //            return task;
                        //        }
                        //    }
                        //    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                        //}
                        else
                        {
                            List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
                            List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
                            foreach (var item in tasks)
                            {
                                if (OutTaskStationIsOccupied(task) != null)
                                {
                                    return task;
                                }
                            }
                            task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                        }
                    }
                }
            }
@@ -139,7 +143,7 @@
        /// <returns>如果未被占用,返回传入的任务信息,否则,返回null</returns>
        private Dt_Task? OutTaskStationIsOccupied(Dt_Task task)
        {
            Dt_Router? router = _routerService.QueryRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
            Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
            if (router != null)
            {
                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
@@ -179,7 +183,7 @@
            stackerCraneTaskCommand.TrayType = 0;
            if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result))//判断是否是入库任务
            {
                List<Dt_Router> routers = _routerService.QueryRoutes(task.CurrentAddress, task.Roadway);
                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
                if (routers.Count > 0)
                {
                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
@@ -208,7 +212,7 @@
            }
            else if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out result))
            {
                List<Dt_Router> routers = _routerService.QueryRoutes(task.Roadway, task.TargetAddress);
                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
                if (routers.Count > 0)
                {
                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);