肖洋
2024-12-21 7c926c1e3ade5158e6b1b0b805cd1b9c142e4b6c
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -40,6 +40,7 @@
        private readonly IDt_StationManagerRepository _stationManagerRepository;
        private readonly IRouterRepository _routerRepository;
        private readonly ITask_HtyRepository _taskHtyRepository;
        private readonly IDt_needBarcodeRepository _taskNeedBarcodeRepository;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
        {
@@ -54,7 +55,7 @@
        public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
        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)
        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, IDt_needBarcodeRepository taskNeedBarcodeRepository) : base(BaseDal)
        {
            _routerService = routerService;
            _taskExecuteDetailService = taskExecuteDetailService;
@@ -65,6 +66,7 @@
            _stationManagerRepository = stationManagerRepository;
            _routerRepository = routerRepository;
            _taskHtyRepository = htyRepository;
            _taskNeedBarcodeRepository = taskNeedBarcodeRepository;
        }
        /// <summary>
@@ -88,32 +90,48 @@
                    task.Creater = "WMS";
                    if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                    {
                        List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
                        if (routers.Count > 0)
                        if (task.TargetAddress == "002-021-001")
                        {
                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = routers.FirstOrDefault().ChildPosi;
                        }
                        else
                        {
                            routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                            List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
                            if (routers.Count > 0)
                            {
                                task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
                                task.TaskState = (int)TaskOutStatusEnum.OutNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = routers.FirstOrDefault().ChildPosi;
                            }
                            else
                            {
                                routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                                if (routers.Count > 0)
                                {
                                    task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
                                    task.CurrentAddress = item.SourceAddress;
                                    task.NextAddress = routers.FirstOrDefault().ChildPosi;
                                }
                            }
                        }
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                    {
                        List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                        if (routers.Count > 0)
                        if (task.SourceAddress == "1359-4")
                        {
                            task.TaskState = (int)TaskInStatusEnum.InNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = routers.FirstOrDefault().ChildPosi;
                        }
                        else
                        {
                            List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                            if (routers.Count > 0)
                            {
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = routers.FirstOrDefault().ChildPosi;
                            }
                        }
                    }
                    tasks.Add(task);
@@ -247,6 +265,12 @@
            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
        }
        public Dt_Task QueryBarcodeTask(string barcode, string currentAddress)
        {
            return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy);
        }
        /// <summary>
        /// 根据任务号、当前地址查询输送线新建的任务
        /// </summary>
@@ -318,6 +342,21 @@
        }
        /// <summary>
        /// 根据设备编号、排除的任务、当前地址按照优先级以及创建时间排序查询任务池出库类型的新增的所有任务
        /// </summary>
        /// <param name="deviceNo">设备编号</param>
        /// <param name="excludedTaskId">排除的任务</param>
        /// <param name="currentAddress">当前地址</param>
        /// <returns>返回任务实体对象,可能为null</returns>
        public List<Dt_Task> QueryAllOutboundTasks(string deviceNo, string currentAddress = "")
        {
            if (string.IsNullOrEmpty(currentAddress))
                return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
            else
                return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy);
        }
        /// <summary>
        /// 根据设备编号、当前地址按照优先级以及创建时间排序查询任务池出库类型的新增的任务
        /// </summary>
        /// <param name="deviceNo">设备编号</param>