using HslCommunication; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core; using WIDESEAWCS_DTO.TaskInfo; using System.Diagnostics.CodeAnalysis; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob.Models; namespace WIDESEAWCS_TaskInfoService { public partial class TaskService { /// <summary> /// æ ¹æ®æ‰˜ç›˜å·ã€èµ·å§‹åœ°å€å‘WMS请求任务 /// </summary> /// <param name="palletCode">托盘å·</param> /// <param name="sourceAddress">起始地å€</param> /// <returns></returns> public async Task<WebResponseContent> RequestTask(string palletCode, string EquiCodeMOM, string Roadways, string area, string CurrentChildCode) { WebResponseContent content = new WebResponseContent(); try { var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); if (hasTask != null) { return content.Error("当剿‰˜ç›˜å˜åœ¨ä»»åŠ¡"); } var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInTask)?.ConfigValue; if (wmsBase == null || requestTask == null) { throw new InvalidOperationException("WMS IP 未é…ç½®"); } var wmsIpAddrss = wmsBase + requestTask; var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, EquiCodeMOM = EquiCodeMOM, Roadways = Roadways, area = area, Position = CurrentChildCode }.ToJsonString()); content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (!content.Status) { // wms失败返回去NGå£ä»»åŠ¡ return content; } var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); return ReceiveByWMSTask(task); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// <summary> /// æ ¹æ®æ‰˜ç›˜å·ã€ç«™å°å‘WMS请求任务 /// </summary> /// <param name="palletCode">托盘å·</param> /// <param name="sourceAddress">起始地å€</param> /// <returns></returns> public async Task<WebResponseContent> RequestTask(string palletCode, Dt_StationManager stationManager) { WebResponseContent content = new WebResponseContent(); try { var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); if (hasTask != null) { return content.Error("当剿‰˜ç›˜å˜åœ¨ä»»åŠ¡"); } var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInTask)?.ConfigValue; if (wmsBase == null || requestTask == null) { throw new InvalidOperationException("WMS IP 未é…ç½®"); } var wmsIpAddrss = wmsBase + requestTask; var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString()); content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (!content.Status) { // wms失败返回去NGå£ä»»åŠ¡ return content; } var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); ConsoleHelper.WriteSuccessLine(content.Data.ToString()); return ReceiveByWMSTask(task); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// <summary> /// 接收WMSä»»åŠ¡ä¿¡æ¯ /// </summary> /// <param name="taskDTOs">WMS任务对象集åˆ</param> /// <returns>返回处ç†ç»“æžœ</returns> public WebResponseContent ReceiveByWMSTask([NotNull] WMSTaskDTO taskDTO) { WebResponseContent content = new WebResponseContent(); try { if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskNum || x.PalletCode == taskDTO.PalletCode) != null) { return content.OK(); } Dt_Task task = _mapper.Map<Dt_Task>(taskDTO); task.Creater = "WMS"; if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == taskDTO.TargetAddress && x.Roadway == taskDTO.RoadWay); task.TaskState = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = taskDTO.RoadWay; task.NextAddress = stationinfo.stationChildCode; task.SourceAddress = taskDTO.SourceAddress; task.TargetAddress = taskDTO.TargetAddress; } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == taskDTO.SourceAddress && x.Roadway == taskDTO.RoadWay); task.TaskState = (int)TaskInStatusEnum.Line_InFinish; task.SourceAddress = taskDTO.SourceAddress; task.CurrentAddress = stationinfo.stationChildCode; task.NextAddress = stationinfo.stationChildCode; task.TargetAddress = taskDTO.TargetAddress; } BaseDal.AddData(task); _taskExecuteDetailService.AddTaskExecuteDetail(task.WMSId, "接收WMS任务"); content = WebResponseContent.Instance.OK("æˆåŠŸ"); } catch (Exception ex) { content = WebResponseContent.Instance.Error($"任务接收错误,错误信æ¯:{ex.Message}"); } return content; } /// <summary> /// 高温出库 /// </summary> /// <param name="taskDTO"></param> /// <returns></returns> public WebResponseContent ReceiveByWMSGWTask([NotNull] WMSTaskDTO taskDTO) { WebResponseContent content = new WebResponseContent(); try { if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskNum || x.PalletCode == taskDTO.PalletCode) != null) { return content.OK(); } Dt_Task task = _mapper.Map<Dt_Task>(taskDTO); task.Creater = "WMS"; if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { task.TaskState = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = taskDTO.RoadWay; task.NextAddress = "002-000-002"; task.SourceAddress = taskDTO.SourceAddress; task.TargetAddress = taskDTO.TargetAddress; } BaseDal.AddData(task); _taskExecuteDetailService.AddTaskExecuteDetail(task.WMSId, "接收WMS任务"); content = WebResponseContent.Instance.OK("æˆåŠŸ"); } catch (Exception ex) { content = WebResponseContent.Instance.Error($"任务接收错误,错误信æ¯:{ex.Message}"); } return content; } /// <summary> /// 接收WMSä»»åŠ¡ä¿¡æ¯ /// </summary> /// <param name="taskDTOs">WMS任务对象集åˆ</param> /// <returns>返回处ç†ç»“æžœ</returns> public async Task<WebResponseContent> RequestFlow(Dt_StationManager stationManager) { WebResponseContent content = new WebResponseContent(); try { var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestFlow)?.ConfigValue; if (wmsBase == null || requestTask == null) { throw new InvalidOperationException("WMS IP 未é…ç½®"); } var wmsIpAddrss = wmsBase + requestTask; var result = await HttpHelper.PostAsync(wmsIpAddrss, new { EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString()); content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (!content.Status) { return content; } Dt_StationManager dt_Station = content.Data as Dt_StationManager; //dt_Station. } catch (Exception ex) { content = WebResponseContent.Instance.Error($"任务接收错误,错误信æ¯:{ex.Message}"); } return content; } /// <summary> /// æ ¹æ®æ‰˜ç›˜å·å’Œè®¾å¤‡å·æŸ¥è¯¢å…¥åº“任务 /// </summary> /// <param name="taskNum">任务å·</param> /// <param name="currentAddress">当å‰åœ°å€</param> /// <returns></returns> public Dt_Task QueryTaskByPalletCode(string palletCode, string Roadway) { return BaseDal.QueryFirst(x => x.PalletCode == palletCode && x.Roadway == Roadway, TaskOrderBy); } ///// <summary> ///// æ ¹æ®è®¾å¤‡ç¼–å·ã€å½“å‰åœ°å€æŸ¥è¯¢è¾“é€çº¿æœªæ‰§è¡Œçš„任务 ///// </summary> ///// <param name="deviceNo">设备编å·</param> ///// <param name="currentAddress">当å‰åœ°å€</param> ///// <returns></returns> //public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress) //{ // return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy); //} /// ä»»åŠ¡å®Œæˆ /// </summary> /// <param name="taskNum">任务编å·</param> /// <returns>返回处ç†ç»“æžœ</returns> public WebResponseContent StackCraneTaskCompletedByStation(int taskNum) { WebResponseContent content = new WebResponseContent(); try { var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信æ¯,任务å·:ã€{taskNum}】"); //if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) //{ // //todo //} //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) //{ // //todo åŒæ¥åˆ°WMS // BaseDal.DeleteData(task); //} //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) //{ // //todo 调用WMSç§»åº“å®Œæˆ //} //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup) //{ //} //else //{ // throw new Exception($"任务类型错误,未找到该任务类型,任务å·:ã€{taskNum}】,任务类型:ã€{task.TaskType}】"); //} #region WMSåŒæ¥ä»»åŠ¡å®Œæˆ var keys = new Dictionary<string, object>() { {"taskNum", taskNum} }; // 获å–WMSipåœ°å€ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue; if (wmsBase == null || completeTask == null) { throw new InvalidOperationException("WMS IP 未é…ç½®"); } var wmsIpAddress = wmsBase + completeTask; var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result; content = JsonConvert.DeserializeObject<WebResponseContent>(result); #endregion if (content.Status) { task.TaskState = 1; //ä»»åŠ¡å®Œæˆ BaseDal.DeleteData(task); } #region æ›´æ–°ä»»åŠ¡çŠ¶æ€ //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue; //if (wmsBase == null || updateTask == null) //{ // throw new InvalidOperationException("WMS IP 未é…ç½®"); //} //wmsIpAddress = wmsBase + updateTask; //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result; //content = JsonConvert.DeserializeObject<WebResponseContent>(result); #endregion //content = WebResponseContent.Instance.OK(); } catch (Exception ex) { content = WebResponseContent.Instance.Error($"任务完æˆå¼‚常,任务å·:ã€{taskNum}】"); } return content; } } }