1
huangxiaoqiang
2025-10-20 63dcb7fc55d32960f643f4040900ce9a0e33536d
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -44,19 +44,32 @@
        private Dictionary<string, OrderByType> _taskOrderBy = new()
        {
            {nameof(Dt_Task.Grade), OrderByType.Desc },
            {nameof(Dt_Task.Grade), OrderByType.Asc },
            {nameof(Dt_Task.CreateDate), OrderByType.Asc},
        };
        public Dictionary<string, OrderByType> TaskOrderBy
        { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
        #region èŽ·å–æ‰€æœ‰ä»»åŠ¡ç±»åž‹ã€çŠ¶æ€
        public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList();
        public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
        public List<int> TaskRelocationboundTypes => typeof(TaskRelocationStatusEnum).GetEnumIndexList();
        public List<int> TaskAGVCarryboundTypes => typeof(TaskAGVCarryStatusEnum).GetEnumIndexList();
        public List<int> TaskAcrossFloorboundTypes => typeof(TaskAcrossFloorStatusEnum).GetEnumIndexList();
        public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList();
        public List<int> TaskAGVCarryboundTypes => typeof(TaskAGVCarryTypeEnum).GetEnumIndexList();
        public List<int> TaskAcrossFloorboundTypes => typeof(TaskAcrossFloorTypeEnum).GetEnumIndexList();
        public List<int> TaskInboundStates => typeof(TaskInStatusEnum).GetEnumIndexList();
        public List<int> TaskOutboundStates => typeof(TaskOutStatusEnum).GetEnumIndexList();
        public List<int> TaskRelocationboundStates => typeof(TaskRelocationStatusEnum).GetEnumIndexList();
        public List<int> TaskAGVCarryboundStates => typeof(TaskAGVCarryStatusEnum).GetEnumIndexList();
        public List<int> TaskAcrossFloorboundStates => typeof(TaskAcrossFloorStatusEnum).GetEnumIndexList();
        #endregion èŽ·å–æ‰€æœ‰ä»»åŠ¡ç±»åž‹ã€çŠ¶æ€
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository) : base(BaseDal)
        {
@@ -100,78 +113,179 @@
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå‡ºåº“ä»»åŠ¡
                    if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                        task.TaskState = (int)TaskOutStatusEnum.OutNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = station.stationChildCode;
                        task.Floor = "1F";
                        task.AGVSign = "";
                    }
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå…¥åº“ä»»åŠ¡
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                        task.TaskState = (int)TaskInStatusEnum.InNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = station.stationChildCode;
                        task.Floor = "1F";
                        task.AGVSign= "";
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                    {
                        task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = task.TargetAddress;
                        task.Floor = "1F";
                        task.AGVSign = "";
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.CarryGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                        task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = task.TargetAddress;
                        task.Floor = station.stationFloor;
                        task.AGVSign = "";
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                        if (station != null)
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                        {
                            var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                            task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = next.stationChildCode;
                            task.NextAddress = station.stationChildCode;
                            task.Floor = "1F";
                            task.AGVSign = "";
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.TargetAddress);
                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = station.stationFloor;
                            task.AGVSign = "";
                        }
                    }
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå…¥åº“ä»»åŠ¡
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                    {
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                            task.TaskState = (int)TaskInStatusEnum.InNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = station.stationChildCode;
                            task.Floor = "1F";
                            task.AGVSign = "";
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = station.stationFloor;
                            task.AGVSign = "";
                        }
                    }
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºç§»åº“ä»»åŠ¡
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                    {
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.RelocationGroup)
                        {
                            task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = "1F";
                            task.AGVSign = "";
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = station.stationFloor;
                            task.AGVSign = "";
                        }
                    }
                    //判断任务类型是否为跨楼层搬运任务
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                    {
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                    }
                    // å°†è½¬æ¢åŽçš„任务添加到任务列表中
                    tasks.Add(task);
                }