| | |
| | | using WIDESEAWCS_Core.Utilities; |
| | | using WIDESEAWCS_DTO.Enum; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_IBasicInfoRepository; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_TaskInfoRepository; |
| | | using static Microsoft.IO.RecyclableMemoryStreamManager; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | |
| | | private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository; |
| | | private readonly ITask_HtyService _task_HtyService; |
| | | private readonly IMapper _mapper; |
| | | private readonly IDt_StationManagerRepository _stationManagerRepository; |
| | | |
| | | |
| | | private Dictionary<string, OrderByType> _taskOrderBy = new() |
| | |
| | | public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList(); |
| | | public List<int> AGVTaskTypes => typeof(AGVTaskTypeEnum).GetEnumIndexList(); |
| | | |
| | | public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService task_HtyService) : base(BaseDal) |
| | | public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService task_HtyService, IDt_StationManagerRepository stationManagerRepository) : base(BaseDal) |
| | | { |
| | | _routerService = routerService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | | _taskExecuteDetailRepository = taskExecuteDetailRepository; |
| | | _task_HtyService = task_HtyService; |
| | | _mapper = mapper; |
| | | _stationManagerRepository = stationManagerRepository; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | tasks.Add(item); |
| | | } |
| | | BaseDal.AddData(tasks); |
| | | BaseDal.AddData(tasks); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "æ¥æ¶WMSä»»å¡"); |
| | | content = WebResponseContent.Instance.OK("æå"); |
| | | } |
| | |
| | | return content; |
| | | } |
| | | |
| | | public WebResponseContent AddTask(WMSTaskDTO WMSDTO) |
| | | { |
| | | var SourceAddress= _stationManagerRepository.QueryFirst(x=>x.stationCode == WMSDTO.SourceAddress&&x.stationArea==int.Parse( WMSDTO.Area)); |
| | | var TargetAddress = _stationManagerRepository.QueryFirst(x=>x.stationCode == WMSDTO.TargetAddress && x.stationArea == int.Parse(WMSDTO.Area)); |
| | | if(SourceAddress == null || TargetAddress == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°èµ·ç¹æç»ç¹ç«å°ä¿¡æ¯,èµ·ç¹:ã{WMSDTO.SourceAddress}ã,ç»ç¹:ã{WMSDTO.TargetAddress}ã"); |
| | | } |
| | | if (QueryConveyorLineTask(SourceAddress.stationName) != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"èµ·ç¹:ã{WMSDTO.SourceAddress}ãåå¨ä»»å¡"); ; |
| | | } |
| | | if (QueryConveyorLineTask(TargetAddress.stationName) != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"ç»ç¹:ã{WMSDTO.TargetAddress}ãåå¨ä»»å¡"); ; |
| | | } |
| | | Dt_Task taskDTO = new Dt_Task() |
| | | { |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | Grade = 1, |
| | | Roadway = SourceAddress.stationArea.ToString(), |
| | | SourceAddress = SourceAddress.stationName, |
| | | CurrentAddress = SourceAddress.stationName, |
| | | TargetAddress = TargetAddress.stationName, |
| | | NextAddress = TargetAddress.stationName, |
| | | TaskState = (int)AGVTaskStatusEnum.AGVNew, |
| | | TaskType = (int)AGVTaskTypeEnum.AGVCarry, |
| | | AGVName = SourceAddress.stationArea switch |
| | | { |
| | | 1 => "AGV01", |
| | | 4 => "AGV03", |
| | | _ => "AGV02", |
| | | } |
| | | }; |
| | | ReceiveWMSTask(new List<Dt_Task> { taskDTO }); |
| | | return WebResponseContent.Instance.OK("任塿·»å æå"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥æ¾è¯¥ç«å°æ¯å¦æä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public List<string> QueryConveyorLineTaskSourceAddress() |
| | | public List<string> QueryConveyorLineTask() |
| | | { |
| | | return BaseDal.QueryData().Select(task => task.SourceAddress).ToList(); |
| | | var query = BaseDal.QueryData(); |
| | | return query.SelectMany(x => |
| | | new[] { x.SourceAddress, x.TargetAddress } |
| | | .Where(address => !string.IsNullOrEmpty(address))) |
| | | .ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥æ¾è¯¥ç«å°æ¯å¦æä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task QueryConveyorLineTask(string stationName) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.SourceAddress == stationName||x.TargetAddress==stationName); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <returns></returns> |
| | | public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null) |
| | | { |
| | | if(taskTypeGroup == null) |
| | | if (taskTypeGroup == null) |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); |
| | | if(taskTypeGroup.Value == TaskTypeGroup.InboundGroup) |
| | | if (taskTypeGroup.Value == TaskTypeGroup.InboundGroup) |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy); |
| | | if(taskTypeGroup.Value == TaskTypeGroup.OutbondGroup) |
| | | if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup) |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); |
| | | return null; |
| | | } |
| | |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡ï¼å¯è½ä¸ºnull</returns> |
| | | public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "") |
| | | { |
| | | return BaseDal.QueryFirst(x => x.TaskState == (int)TaskOutStatusEnum.OutNew && x.AGVName==deviceNo,TaskOrderBy); |
| | | return BaseDal.QueryFirst(x => x.TaskState == (int)AGVTaskStatusEnum.AGVNew && x.AGVName == deviceNo, TaskOrderBy); |
| | | } |
| | | |
| | | |