xby-y
7 天以前 b3ff80e45d24a821ca0731983b1546b48570cdf1
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -160,14 +160,13 @@
            task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);         //获取入库任务
            List<Dt_Task> YKtasks = _taskService.QueryStackerCraneYKTasks(commonStackerCrane.DeviceCode);
            if (task != null)
            {
                if (task.Roadway == "SC02") return task;    //如果有任务则直接下发给堆垛机
                if (task.Depth == 1) return task;
                //2深位进行判断是否要移库
                Dt_Task dt_Task = _taskService.RequestWMSTaskMovelibrary(task);
                Dt_Task dt_Task = OutTaskMovelibrary(task);
                if (dt_Task != null) return dt_Task;
            }
            else if (YKtasks.Count > 0) //库位调拨
@@ -193,18 +192,8 @@
            {
                //进行获取堆垛机出库任务
                List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode);
                    foreach (var item in tasks)
                    {
                    //if (item.TargetAddress == "2021"||item.TargetAddress == "2020")
                    //{
                    //    ////bool IsOccupied = _lineJob.GetPick();
                    //    //if (!IsOccupied)
                    //    //{
                    //    //    return null;
                    //    //}
                    //}
                    if (OutTaskStationIsOccupied(item) != null)
                        {
                            if (item.Roadway == "SC01")
@@ -223,14 +212,22 @@
                    
                }
            }
            return task;
        }
        private Dt_Task? OutTaskMovelibrary([NotNull] Dt_Task task)
        {
            string[] targetCodes = task.SourceAddress.Split("-");
            string[] targetCodes;
            if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
            {
                targetCodes = task.TargetAddress.Split("-");
            }
            else
            {
                targetCodes = task.SourceAddress.Split("-");
            }
            if (targetCodes[1] == "001")
            {
                targetCodes[1] = "002";
@@ -266,36 +263,37 @@
                if (device != null)
                {
                    OtherDevice conveyorLine = (OtherDevice)device;
                    DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied");    //根据堆垛机地址,地址名称找协议
                    if (deviceProDTO != null)
                    if (task.TargetAddress == "2021" || task.TargetAddress == "2020" || task.TargetAddress == "2009")
                    {
                        bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress);        //判断输送线是否允许放货信号
                        if (!B_Event_Test)
                        DeviceProDTO? deviceProDTO2007 = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == "2007" && x.DeviceProParamName == "IsOccupied");    //根据堆垛机地址,地址名称找协议
                        DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied");    //根据堆垛机地址,地址名称找协议
                        if (deviceProDTO != null)
                        {
                            return task;
                            bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress);        //判断输送线是否允许放货信号
                            bool B_Event_Test2007 = conveyorLine.Communicator.Read<bool>(deviceProDTO2007.DeviceProAddress);        //判断2007输送线是否允许放货信号
                            if (!B_Event_Test && !B_Event_Test2007)
                            {
                                return task;
                            }
                        }
                    }
                    else
                    {
                        DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied");    //根据堆垛机地址,地址名称找协议
                        if (deviceProDTO != null)
                        {
                            bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress);        //判断输送线是否允许放货信号
                            if (!B_Event_Test)
                            {
                                return task;
                            }
                        }
                    }
                    //if (task.NextAddress == "2021" || task.NextAddress == "2020")
                    //{
                    //    DeviceProDTO? deviceProDTO1 = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == "2008" || x.DeviceChildCode == "2009" || x.DeviceChildCode == "2015" || x.DeviceChildCode == "2016" && x.DeviceProParamName == "IsOccupied");    //根据堆垛机地址,地址名称找协议
                    //    if (deviceProDTO != null)
                    //    {
                    //        bool IsOccupied2008 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
                    //        bool IsOccupied2009 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
                    //        bool IsOccupied2015 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
                    //        bool IsOccupied2016 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
                    //        //判断是否成立
                    //        if (IsOccupied2008 && IsOccupied2009 && IsOccupied2015 && IsOccupied2016)
                    //        {
                    //            return null;
                    //        }
                    //        else
                    //        {
                    //            return task;
                    //        }
                    //    }
                    //}
                }
            }
            catch (Exception ex)