| | |
| | | using LogLibrary.Log; |
| | | using Mapster; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using SqlSugar; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Threading.Tasks; |
| | |
| | | |
| | | task.NextAddress = station.stationChildCode; |
| | | |
| | | task.Floor = "1F"; |
| | | task.Floor = item.Floor; |
| | | |
| | | task.AGVSign = ""; |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup) |
| | | { |
| | | var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress); |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == item.Floor); |
| | | |
| | | if (station != null) |
| | | { |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor); |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | task.CurrentAddress = item.SourceAddress; |
| | | |
| | | task.CurrentAddress = item.SourceAddress; |
| | | task.NextAddress = next.stationChildCode; |
| | | |
| | | task.NextAddress = next.stationChildCode; |
| | | task.Floor = item.Floor; |
| | | |
| | | task.Floor = station.stationFloor; |
| | | task.AGVSign = ""; |
| | | |
| | | task.AGVSign = ""; |
| | | } |
| | | task.DoubleTray = item.DoubleTray; |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup) |
| | | { |
| | |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup) |
| | | { |
| | | var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress); |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == item.Floor); |
| | | |
| | | if (station != null) |
| | | { |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor); |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | task.CurrentAddress = item.SourceAddress; |
| | | |
| | | task.CurrentAddress = item.SourceAddress; |
| | | task.NextAddress = next.stationChildCode; |
| | | |
| | | task.NextAddress = next.stationChildCode; |
| | | task.Floor = item.Floor; |
| | | |
| | | task.Floor = station.stationFloor; |
| | | task.AGVSign = ""; |
| | | |
| | | task.AGVSign = ""; |
| | | } |
| | | task.DoubleTray = item.DoubleTray; |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup) |
| | | { |
| | |
| | | { |
| | | if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.RelocationGroup) |
| | | { |
| | | task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew; |
| | | //task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew; |
| | | |
| | | task.CurrentAddress = item.SourceAddress; |
| | | |
| | |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup) |
| | | { |
| | | var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress); |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == item.Floor); |
| | | |
| | | if (station != null) |
| | | { |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor); |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | task.CurrentAddress = item.SourceAddress; |
| | | |
| | | task.CurrentAddress = item.SourceAddress; |
| | | task.NextAddress = next.stationChildCode; |
| | | |
| | | task.NextAddress = next.stationChildCode; |
| | | task.Floor = item.Floor; |
| | | |
| | | task.Floor = station.stationFloor; |
| | | task.AGVSign = ""; |
| | | |
| | | task.AGVSign = ""; |
| | | } |
| | | task.DoubleTray = item.DoubleTray; |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup) |
| | | { |
| | | var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress); |
| | | |
| | | task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew; |
| | | |
| | |
| | | |
| | | task.NextAddress = task.TargetAddress; |
| | | |
| | | task.Floor = station.stationFloor; |
| | | task.Floor = item.Floor; |
| | | |
| | | task.AGVSign = ""; |
| | | } |
| | |
| | | { |
| | | if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup) |
| | | { |
| | | var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress); |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == item.Floor); |
| | | |
| | | if (station != null) |
| | | { |
| | | var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor); |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew; |
| | | task.CurrentAddress = item.SourceAddress; |
| | | |
| | | task.CurrentAddress = item.SourceAddress; |
| | | task.NextAddress = next.stationChildCode; |
| | | |
| | | task.NextAddress = next.stationChildCode; |
| | | task.Floor = item.Floor; |
| | | |
| | | task.Floor = station.stationFloor; |
| | | |
| | | task.AGVSign = ""; |
| | | } |
| | | task.AGVSign = ""; |
| | | } |
| | | |
| | | } |
| | | |
| | | // å°è½¬æ¢åç任塿·»å å°ä»»å¡åè¡¨ä¸ |
| | |
| | | /// <returns></returns> |
| | | public Dt_Task QueryRequestTSJSignalTask() |
| | | { |
| | | return BaseDal.QueryFirst(x => TaskAcrossFloorboundTypes.Contains(x.TaskType) && x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && (x.AGVSign == "RequestPickUp" || x.AGVSign == "RequestPut")); |
| | | return BaseDal.QueryFirst(x => x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && (x.AGVSign == "RequestPickUp" || x.AGVSign == "RequestPut")); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | if (task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) |
| | | { |
| | | content = StackCraneTaskCompleted(task.TaskNum); |
| | | return content; |
| | | } |
| | | if (task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) |
| | | { |
| | | string TargetAddress = GetLocation(task.PalletCode); |
| | | if (TargetAddress == "") |
| | | { |
| | | return content.Error($"æªè·ååºåºç»ç¹è´§ä½ä¿¡æ¯"); |
| | | } |
| | | task.NextAddress = TargetAddress; |
| | | task.TargetAddress = TargetAddress; |
| | | } |
| | | |
| | | } |
| | |
| | | { |
| | | #region å
¥åºè°ç¨æ¥å£è·åè´§ä½å°å |
| | | |
| | | //var taskDto = new RequestTaskDto() |
| | | //{ |
| | | // Position = task.NextAddress, |
| | | // PalletCode = task.PalletCode, |
| | | //}; |
| | | |
| | | //// è·åWMSipå°å |
| | | //var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | //var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue; |
| | | //var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue; |
| | | //if (wmsBasez == null || requestLocation == null) |
| | | //{ |
| | | // throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | //} |
| | | //var wmsIpAddrss = wmsBasez + requestLocation; |
| | | |
| | | //// åé请æ±å¹¶çå¾
ååº |
| | | //var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result; |
| | | //if (abc == null) |
| | | // return content.Error(); |
| | | //// ååºååååºå
容 |
| | | //content = JsonConvert.DeserializeObject<WebResponseContent>(abc); |
| | | |
| | | //LogFactory.WriteError($"Info_è·åè´§ä½", $"è·åè´§ä½,ä»»å¡å·:ã{task.TaskNum}ã,æçå·ï¼ã{task.PalletCode}ãè¿ååæ°ã{JsonConvert.SerializeObject(content)}ã{Environment.NewLine}{Environment.NewLine}"); |
| | | |
| | | //// æ£æ¥ç¶æå¹¶è¿å |
| | | //if (!content.Status) |
| | | //{ |
| | | // return content; |
| | | //} |
| | | |
| | | //// ååºåå任塿°æ® |
| | | //var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); |
| | | string TargetAddress= GetLocation(task.PalletCode); |
| | | if (TargetAddress == null) |
| | | { |
| | | return content.Error($"æªè·åå
¥åºç»ç¹è´§ä½ä¿¡æ¯"); |
| | | } |
| | | |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = task.TargetAddress; |
| | | task.TargetAddress = task.NextAddress; |
| | | task.NextAddress = TargetAddress; |
| | | task.TargetAddress = TargetAddress; |
| | | |
| | | #endregion å
¥åºè°ç¨æ¥å£è·åè´§ä½å°å |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.Line_InExecuting) |
| | | { |
| | | UpdateStartLocationInfo(task); |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish) |
| | | { |
| | |
| | | |
| | | if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish) |
| | | { |
| | | CompletedTask(task.TaskNum); |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | } |
| | | } |
| | | else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.RelocationGroup) |
| | | { |
| | | int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskRelocationStatusEnum>(); |
| | | |
| | | task.TaskState = nextStatus; |
| | | |
| | | if (task.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationFinish|| task.TaskState == (int)TaskRelocationStatusEnum.AGV_RelocationFinish) |
| | | { |
| | | CompletedTask(task.TaskNum); |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | |
| | | |
| | | if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarryFinish) |
| | | { |
| | | Dt_StationManager stationManager = new Dt_StationManager(); |
| | | string TaskTemplate = string.Empty; |
| | | if (task.Floor == "1F") |
| | | if (task.DoubleTray != 1) |
| | | { |
| | | stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "2F"); |
| | | TaskTemplate = "BBB"; |
| | | RequestAcrossFloor(task,0); |
| | | } |
| | | else |
| | | { |
| | | stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "1F"); |
| | | TaskTemplate = "CCC"; |
| | | var taskDouble = BaseDal.QueryFirst(x => x.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarryFinish); |
| | | if (taskDouble != null) |
| | | { |
| | | RequestAcrossFloor(task,1); |
| | | RequestAcrossFloor(taskDouble,1); |
| | | } |
| | | } |
| | | |
| | | var taskDto = new RequestAcrossFloorTaskDto() |
| | | { |
| | | NextAddress = task.NextAddress, |
| | | PalletCode = task.PalletCode, |
| | | TaskNum = task.TaskNum |
| | | }; |
| | | |
| | | // è·åWMSipå°å |
| | | var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue; |
| | | var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.AcrossFloorTask).FirstOrDefault()?.ConfigValue; |
| | | if (wmsBasez == null || requestLocation == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddrss = wmsBasez + requestLocation; |
| | | |
| | | var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result; |
| | | if (abc == null) |
| | | return content.Error(); |
| | | content = JsonConvert.DeserializeObject<WebResponseContent>(abc); |
| | | |
| | | if (!content.Status) |
| | | { |
| | | return content; |
| | | } |
| | | |
| | | // ååºåå任塿°æ® |
| | | var taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); |
| | | |
| | | Dt_Task taskNew = _mapper.Map<Dt_Task>(taskDTO); |
| | | task.Creater = "WMS"; |
| | | |
| | | taskNew.CurrentAddress = stationManager.stationChildCode; |
| | | |
| | | taskNew.NextAddress = task.TargetAddress; |
| | | |
| | | taskNew.Floor = stationManager.stationFloor; |
| | | |
| | | taskNew.AGVSign = ""; |
| | | |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.FirstCarryFinish; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | |
| | | BaseDal.AddData(taskNew); |
| | | |
| | | SendAgvTask(TaskTemplate, taskNew.TaskNum); |
| | | } |
| | | } |
| | | else |
| | |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | public WebResponseContent RequestAcrossFloor(Dt_Task task,int DoubleTray) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | Dt_StationManager stationManager = new Dt_StationManager(); |
| | | string TaskTemplate = string.Empty; |
| | | if (task.Floor == "1F") |
| | | { |
| | | stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "2F"); |
| | | TaskTemplate = "BBB"; |
| | | } |
| | | else |
| | | { |
| | | stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "1F"); |
| | | TaskTemplate = "CCC"; |
| | | } |
| | | |
| | | var taskDto = new RequestAcrossFloorTaskDto() |
| | | { |
| | | NextAddress = task.NextAddress, |
| | | PalletCode = task.PalletCode, |
| | | TaskNum = task.TaskNum |
| | | }; |
| | | |
| | | // è·åWMSipå°å |
| | | var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue; |
| | | var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.AcrossFloorTask).FirstOrDefault()?.ConfigValue; |
| | | if (wmsBasez == null || requestLocation == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddrss = wmsBasez + requestLocation; |
| | | |
| | | var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result; |
| | | if (abc == null) |
| | | return content.Error(); |
| | | content = JsonConvert.DeserializeObject<WebResponseContent>(abc); |
| | | |
| | | if (!content.Status) |
| | | { |
| | | return content; |
| | | } |
| | | |
| | | // ååºåå任塿°æ® |
| | | var taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); |
| | | |
| | | Dt_Task taskNew = _mapper.Map<Dt_Task>(taskDTO); |
| | | task.Creater = "WMS"; |
| | | |
| | | taskNew.CurrentAddress = stationManager.stationChildCode; |
| | | |
| | | taskNew.NextAddress = taskDTO.TargetAddress; |
| | | |
| | | taskNew.Floor = stationManager.stationFloor; |
| | | |
| | | taskNew.AGVSign = ""; |
| | | |
| | | taskNew.DoubleTray = DoubleTray; |
| | | |
| | | task.TaskState = (int)TaskAcrossFloorStatusEnum.FirstCarryFinish; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | |
| | | BaseDal.AddData(taskNew); |
| | | |
| | | return SendAgvTask(TaskTemplate, taskNew.TaskNum); |
| | | } |
| | | |
| | | public string GetLocation(string palletCode) |
| | | { |
| | | var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestLocation)?.ConfigValue; |
| | | if (wmsBase == null || updateTask == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddress = wmsBase + updateTask; |
| | | var keys = new Dictionary<string, object>() |
| | | { |
| | | {"palletCode", palletCode} |
| | | }; |
| | | var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result; |
| | | WebResponseContent? content = JsonConvert.DeserializeObject<WebResponseContent>(result); |
| | | if (content.Status) |
| | | { |
| | | return content.Data.ToString(); |
| | | } |
| | | else |
| | | { |
| | | return string.Empty; |
| | | } |
| | | } |
| | | |
| | | public void UpdateStartLocationInfo(Dt_Task task) |
| | | { |
| | | var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateStartLocationInfo)?.ConfigValue; |
| | | if (wmsBase == null || updateTask == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddress = wmsBase + updateTask; |
| | | |
| | | var result = HttpHelper.PostAsync(wmsIpAddress, task.ToJsonString()).Result; |
| | | } |
| | | |
| | | public void CompletedTask(int taskNum) |
| | |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | UpdateStartLocationInfo(task); |
| | | |
| | | content.OK(data: task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | } |
| | |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew); |
| | | } |
| | | |
| | | public Dt_Task QueryExecutingTask(string deviceNo) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo &&( x.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskInStatusEnum.SC_InExecuting)); |
| | | } |
| | | |
| | | |
| | | private string GetIpAddress(string baseIp, string name) |
| | | { |