From e2655143a06ee42eec06a97b045f33a09fbb3a3f Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期二, 24 十二月 2024 17:40:18 +0800 Subject: [PATCH] 合并更改 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 331 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 255 insertions(+), 76 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs index 6bf1a2e..d5c8429 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs @@ -1,10 +1,13 @@ -锘� -using AutoMapper; +锘縰sing AutoMapper; using HslCommunication; +using Mapster; +using Microsoft.AspNetCore.Components.Routing; using Newtonsoft.Json; using SqlSugar; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; +using WIDESEAWCS_BasicInfoRepository; +using WIDESEAWCS_BasicInfoService; using WIDESEAWCS_Common; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; @@ -13,10 +16,14 @@ using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_DTO.WMS; using WIDESEAWCS_ISystemServices; +using WIDESEAWCS_ITaskInfo_HtyRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.Service; namespace WIDESEAWCS_TaskInfoService @@ -28,6 +35,11 @@ private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository; private readonly ISys_ConfigService _sys_ConfigService; private readonly IMapper _mapper; + private readonly IDt_StationManagerService _stationManagerService; + 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() { @@ -42,13 +54,18 @@ public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList(); - public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService) : 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; _taskExecuteDetailRepository = taskExecuteDetailRepository; _mapper = mapper; _sys_ConfigService = sys_ConfigService; + _stationManagerService = stationManagerService; + _stationManagerRepository = stationManagerRepository; + _routerRepository = routerRepository; + _taskHtyRepository = htyRepository; + _taskNeedBarcodeRepository = taskNeedBarcodeRepository; } /// <summary> @@ -58,50 +75,110 @@ /// <returns>杩斿洖澶勭悊缁撴灉</returns> public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs) { + // 鍒涘缓涓�涓猈ebResponseContent瀵硅薄鐢ㄤ簬瀛樺偍杩斿洖缁撴灉 WebResponseContent content = new WebResponseContent(); try { + // 鍒涘缓涓�涓狣t_Task绫诲瀷鐨勫垪琛ㄧ敤浜庡瓨鍌ㄨ浆鎹㈠悗鐨勪换鍔℃暟鎹� List<Dt_Task> tasks = new List<Dt_Task>(); + // 閬嶅巻浼犲叆鐨刉MSTaskDTO鍒楄〃 foreach (var item in taskDTOs) { + // 鏌ヨ鏁版嵁搴撲腑鏄惁瀛樺湪鐩稿悓浠诲姟缂栧彿鎴栨墭鐩樼爜鐨勪换鍔★紝濡傛灉瀛樺湪鍒欒烦杩囧綋鍓嶅惊鐜� if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null) { continue; } + // 灏哤MSTaskDTO瀵硅薄鏄犲皠涓篋t_Task瀵硅薄 Dt_Task task = _mapper.Map<Dt_Task>(item); + // 璁剧疆浠诲姟鐨勫垱寤鸿�呬负"WMS" 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.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray) { + // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓 task.TaskState = (int)TaskOutStatusEnum.OutNew; + // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃 task.CurrentAddress = item.SourceAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; + // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧� + task.NextAddress = item.TargetAddress; + } + else + { + // 鏌ヨ涓嬩竴涓矾鐢� + List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress); + if (routers.Count > 0) + { + // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓 + 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) + // 鍒ゆ柇婧愬湴鍧�鏄惁涓嶇瓑浜�"1359-4" + if (task.SourceAddress != "1359-4") { - task.TaskState = (int)TaskInStatusEnum.InNew; - task.CurrentAddress = item.SourceAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; + // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢� + 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; + } + } + else + { + // 璁剧疆褰撳墠鍦板潃涓�"002-021-001" + task.CurrentAddress = "002-021-001"; + // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧� + task.NextAddress = item.TargetAddress; } } + // 灏嗚浆鎹㈠悗鐨勪换鍔℃坊鍔犲埌浠诲姟鍒楄〃涓� tasks.Add(task); } + // 灏嗕换鍔″垪琛ㄦ坊鍔犲埌鏁版嵁搴撲腑 BaseDal.AddData(tasks); + // 娣诲姞浠诲姟鎵ц璇︽儏 _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟"); + // 璁剧疆杩斿洖缁撴灉涓烘垚鍔� content = WebResponseContent.Instance.OK("鎴愬姛"); } catch (Exception ex) { + // 鎹曡幏寮傚父骞惰缃繑鍥炵粨鏋滀负閿欒淇℃伅 content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}"); } + // 杩斿洖缁撴灉 return content; } @@ -119,17 +196,19 @@ var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); if (hasTask != null) { - return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟"); + return content.OK("褰撳墠鎵樼洏瀛樺湪浠诲姟"); } - 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.RequestTask)?.ConfigValue; - if (wmsBase == null || requestTask == null) + var wmsIpAddrss = string.Empty; + var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == sourceAddress); + if (stationManager.stationType == 5) { - throw new InvalidOperationException("WMS IP 鏈厤缃�"); + wmsIpAddrss = GetIpAddress(SysConfigKeyConst.WMSIP_BASE, SysConfigKeyConst.RequestInBoundTaskNG); } - var wmsIpAddrss = wmsBase + requestTask; + else + { + wmsIpAddrss = GetIpAddress(SysConfigKeyConst.WMSIP_BASE, SysConfigKeyConst.RequestTask); + } var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = sourceAddress, PalletCode = palletCode }.ToJsonString()); content = JsonConvert.DeserializeObject<WebResponseContent>(result); @@ -141,7 +220,23 @@ } var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - return ReceiveWMSTask(new List<WMSTaskDTO> { task }); + if (task.TaskType == (int)TaskInboundTypeEnum.InNG) + { + var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == task.SourceAddress); + Dt_Task _Task = _mapper.Map<Dt_Task>(task); + _Task.TaskState = (int)TaskInStatusEnum.InNew; + _Task.CurrentAddress = task.SourceAddress; + _Task.NextAddress = station.stationNGChildCode; + _Task.TargetAddress = task.TargetAddress; + + BaseDal.AddData(_Task); + _taskExecuteDetailService.AddTaskExecuteDetail(_Task.TaskNum, "鎺ユ敹WMS浠诲姟"); + return content.OK(); + } + else + { + return ReceiveWMSTask(new List<WMSTaskDTO> { task }); + } } catch (Exception ex) { @@ -157,7 +252,7 @@ /// <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); + 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> @@ -168,7 +263,7 @@ /// <returns></returns> public Dt_Task QueryNextConveyorLineTask(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.NextAddress == currentAddress, TaskOrderBy); + return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.NextAddress == currentAddress, TaskOrderBy); } /// <summary> @@ -179,7 +274,7 @@ /// <returns></returns> public Dt_Task QueryBarCodeConveyorLineTask(string Barcode, 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 && x.PalletCode == Barcode, TaskOrderBy); + 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 && x.PalletCode == Barcode, TaskOrderBy); } /// <summary> @@ -205,6 +300,17 @@ } /// <summary> + /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨ浠诲姟 + /// </summary> + /// <param name="taskNum">浠诲姟鍙�</param> + /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <returns></returns> + public Dt_Task QueryBarcodeTask(string barcode, string currentAddress) + { + return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy); + } + + /// <summary> /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏂板缓鐨勪换鍔� /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> @@ -224,7 +330,7 @@ public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? 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); + 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) return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy); if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup) @@ -241,9 +347,9 @@ public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "") { if (string.IsNullOrEmpty(currentAddress)) - 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); + 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); else - return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); + return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy); } /// <summary> @@ -272,6 +378,21 @@ return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); else return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy); + } + + /// <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> @@ -375,7 +496,17 @@ { 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); + } + if (task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) + { + content = StackCraneTaskCompleted(task.TaskNum); + return content; } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) @@ -385,8 +516,8 @@ if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) { - #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 + // TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 // 鍒涘缓璇锋眰瀵硅薄 var taskDto = new RequestTaskDto() @@ -422,16 +553,19 @@ task.CurrentAddress = task.NextAddress; task.NextAddress = taskResult.TargetAddress; task.TargetAddress = task.NextAddress; - #endregion + #endregion 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 } else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish) { - 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 @@ -450,7 +584,8 @@ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�"); - #region 鏇存柊浠诲姟鐘舵�� + #region 鏇存柊浠诲姟鐘舵�� + // 鑾峰彇WMSip鍦板潃 var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; @@ -463,7 +598,8 @@ var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result; content = JsonConvert.DeserializeObject<WebResponseContent>(result); - #endregion + + #endregion 鏇存柊浠诲姟鐘舵�� content = WebResponseContent.Instance.OK(); } @@ -522,21 +658,72 @@ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�"); + #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); + if (!content.Data.IsNullOrEmpty()) + { + if (content.Data.ToString() == "NG") + { + task.Remark = "NG"; + //BaseDal.UpdateData(task); + //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG"); + } + } + task.ExceptionMessage += " " + content.Message; + + #endregion WMS鍚屾浠诲姟瀹屾垚 + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { - var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); - if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�"); + if (!task.Roadway.Contains("GW")) + { + var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); + if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�"); - int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(); - task.TaskState = nextStatus; - task.CurrentAddress = task.NextAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; - task.ModifyDate = DateTime.Now; - task.Modifier = "System"; - BaseDal.UpdateData(task); + int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(); + task.TaskState = nextStatus; + task.CurrentAddress = task.NextAddress; + task.NextAddress = routers.FirstOrDefault().ChildPosi; + task.ModifyDate = DateTime.Now; + task.Modifier = "System"; + BaseDal.UpdateData(task); - _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + } + else + { + task.TaskState = (int)TaskOutStatusEnum.OutFinish; + //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙� + if (task.Remark == "NG") + { + BaseDal.UpdateData(task); + } + else + { + BaseDal.DeleteData(task); + ConsoleHelper.WriteWarningLine($"楂樻俯鍑哄簱鐩殑鍦板潃{task.TargetAddress}"); + } + var taskHty = task.Adapt<Dt_Task_Hty>(); + _taskHtyRepository.AddData(taskHty); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + } //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙� } @@ -547,7 +734,12 @@ task.TaskState = nextStatus; task.ModifyDate = DateTime.Now; task.Modifier = "System"; - BaseDal.UpdateData(task); + + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + + BaseDal.DeleteData(task); + _taskHtyRepository.AddData(task_Hty); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�"); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) @@ -561,41 +753,6 @@ { 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 - - - #region 鏇存柊浠诲姟鐘舵�� - - var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.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) { @@ -693,5 +850,27 @@ } return content; } + + public Dt_Task QueryRelocationTask(string deviceNo) + { + return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskStatus.Created); + } + + public Dt_Task QueryExecutingTaskByBarcode(string barcode, string nextAddress) + { + return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy); + } + + private string GetIpAddress(string baseIp, string name) + { + var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + var wcsBasez = configz.Where(x => x.ConfigKey == baseIp).FirstOrDefault()?.ConfigValue; + var address = configz.Where(x => x.ConfigKey == name).FirstOrDefault()?.ConfigValue; + if (wcsBasez == null || address == null) + { + throw new InvalidOperationException("WMS IP 鏈厤缃�"); + } + return wcsBasez + address; + } } } \ No newline at end of file -- Gitblit v1.9.3