From 824853fe17b79ed253cd52db58459806bf0371ee Mon Sep 17 00:00:00 2001 From: xiaoyang <xiaoyang@hnkhzn.com> Date: 星期五, 08 十一月 2024 17:27:50 +0800 Subject: [PATCH] 11.08 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 223 +++----------- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 395 ++++++++----------------- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs | 5 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs | 17 + Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs | 31 + Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 138 +++++---- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs | 13 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs | 21 + Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 8 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs | 1 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 26 - Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs | 7 12 files changed, 353 insertions(+), 532 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs index 7e1206a..91d5f89 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs @@ -17,8 +17,11 @@ using HttpClient httpClient = new HttpClient(); httpClient.Timeout = new TimeSpan(0, 0, 60); - foreach (var header in headers) - httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); + if (headers != null) + { + foreach (var header in headers) + httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); + } result = await httpClient.GetAsync(serviceAddress).Result.Content.ReadAsStringAsync(); return result; diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs index 80735df..320f70e 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs @@ -17,5 +17,10 @@ /// 鎵樼洏鍙� /// </summary> public string PalletCode { get; set; } + + /// <summary> + /// 绌烘墭鐩樺彲鍏ュ贩鍒� + /// </summary> + public string PositionList { get; set; } } } \ No newline at end of file diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs index 70f9860..71e16ac 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json; using SqlSugar; using System.Diagnostics.CodeAnalysis; +using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; @@ -133,45 +134,53 @@ { #region 鐪熷疄鏁版嵁 // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧� - //// 鍒涘缓璇锋眰瀵硅薄 - //RequestTaskDto request = new RequestTaskDto() - //{ - // Position = sourceAddress, - // PalletCode = palletCode, - //}; - - //// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲 - //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; - - //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭 - //content = JsonConvert.DeserializeObject<WebResponseContent>(result); - - //// 妫�鏌ョ姸鎬佸苟杩斿洖 - //if (!content.Status) - // return content; - - //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁 - //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - - //// 澶勭悊浠诲姟骞惰繑鍥炵粨鏋� - //content = ReceiveWMSTask(new List<WMSTaskDTO> { task }); - - #endregion - - WMSTaskDTO taskDTO = new WMSTaskDTO() + // 鍒涘缓璇锋眰瀵硅薄 + RequestTaskDto request = new RequestTaskDto() { - TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), - Grade = 1, + Position = sourceAddress, PalletCode = palletCode, - RoadWay = "CHSC01", - SourceAddress = sourceAddress, - TargetAddress = "CHSC01", - TaskState = (int)TaskInStatusEnum.InNew, - Id = 0, - TaskType = (int)TaskInboundTypeEnum.Inbound }; - content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); + // 鍙戦�佽姹傚苟绛夊緟鍝嶅簲 + var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTaskAsync", request.ToJsonString()).Result; + + // 鍙嶅簭鍒楀寲鍝嶅簲鍐呭 + content = JsonConvert.DeserializeObject<WebResponseContent>(result); + + WMSTaskDTO task = new WMSTaskDTO(); + // 妫�鏌ョ姸鎬佸苟杩斿洖 + if (!content.Status) + { + task = new WMSTaskDTO() + { + TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), + Grade = 1, + PalletCode = palletCode, + RoadWay = "CHSC01", + SourceAddress = sourceAddress, + TargetAddress = "1020", + TaskState = (int)TaskOutStatusEnum.Line_OutExecuting, + Id = 0, + TaskType = (int)TaskOutboundTypeEnum.Outbound + }; + + Dt_Task task1 = _mapper.Map<Dt_Task>(task); + task1.CurrentAddress = task.SourceAddress; + task1.NextAddress = "1020"; + BaseDal.AddData(task1); + return content.OK(); + } + else + { + // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁 + task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); + // 澶勭悊浠诲姟骞惰繑鍥炵粨鏋� + content = ReceiveWMSTask(new List<WMSTaskDTO> { task }); + } + + + + #endregion } catch (Exception ex) { @@ -419,35 +428,22 @@ if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) { - //if (task.Roadway.Contains("CH")) - //{ - // Random random = new Random(); - // task.CurrentAddress = task.NextAddress; - // task.NextAddress = $"{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(0, 0).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}"; - // task.TargetAddress = task.NextAddress; - //} - //else - //{ - // Random random = new Random(); - // task.CurrentAddress = task.NextAddress; - // task.NextAddress = "002-020-001"; - // task.TargetAddress = task.NextAddress; - //} #region 鐪熷疄鏁版嵁 - // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧� + // TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 // 鍒涘缓璇锋眰瀵硅薄 - RequestTaskDto request = new RequestTaskDto() + RequestTaskDto taskDto = new RequestTaskDto() { Position = task.NextAddress, PalletCode = task.PalletCode, }; // 鍙戦�佽姹傚苟绛夊緟鍝嶅簲 - var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; - + var abc = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTaskAsync", taskDto.ToJsonString()).Result; + if (abc == null) + return content.Error(); // 鍙嶅簭鍒楀寲鍝嶅簲鍐呭 - content = JsonConvert.DeserializeObject<WebResponseContent>(result); + content = JsonConvert.DeserializeObject<WebResponseContent>(abc); // 妫�鏌ョ姸鎬佸苟杩斿洖 if (!content.Status) @@ -478,6 +474,16 @@ BaseDal.UpdateData(task); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�"); + + #region 鏇存柊浠诲姟鐘舵�� + object request = new + { + TaskNum = task.TaskNum, + TaskState = task.TaskState + }; + var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result; + content = JsonConvert.DeserializeObject<WebResponseContent>(result); + #endregion content = WebResponseContent.Instance.OK(); } @@ -550,7 +556,7 @@ BaseDal.UpdateData(task); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); - //todo 鍚屾鍒癢MS + //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙� } @@ -565,12 +571,6 @@ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�"); - #region WMS鍚屾浠诲姟瀹屾垚 - var x = new { taskNum = taskNum }; - var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; - content = JsonConvert.DeserializeObject<WebResponseContent>(result); - #endregion - } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { @@ -583,6 +583,22 @@ { throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�"); } + + + #region WMS鍚屾浠诲姟瀹屾垚 + //var x = new { taskNum = taskNum }; + var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync?taskNum={taskNum}").Result; + content = JsonConvert.DeserializeObject<WebResponseContent>(result); + #endregion + #region 鏇存柊浠诲姟鐘舵�� + object request = new + { + TaskNum = task.TaskNum, + TaskState = task.TaskState + }; + result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result; + content = JsonConvert.DeserializeObject<WebResponseContent>(result); + #endregion //content = WebResponseContent.Instance.OK(); } catch (Exception ex) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs index cb46e26..16dccc6 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs @@ -175,139 +175,25 @@ /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { - // 鑾峰彇涓嬩竴涓换鍔� - var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); - //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); - //return; - // 澶勭悊鍑哄簱浠诲姟 - HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task); - - // 濡傛灉娌℃湁鍑哄簱浠诲姟锛屽鐞嗘柊浠诲姟 - if (task == null && command.Barcode != "NoRead") + try { - HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + // 鑾峰彇涓嬩竴涓换鍔� + var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); + //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + //return; + // 澶勭悊鍑哄簱浠诲姟 + HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task); + + // 濡傛灉娌℃湁鍑哄簱浠诲姟锛屽鐞嗘柊浠诲姟 + if (task == null && command.Barcode != "NoRead") + { + HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + } } - - #region 鑰佺増鏈� - - //var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode); - //var Taskout = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); - //if (Taskout != null) - //{ - // // 绌烘墭鐩樹换鍔� - // if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray) - // { - // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); - // taskCommand.InteractiveSignal = command.InteractiveSignal; - // if (command.Barcode == "") - // { - // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity; - // taskCommand.TargetAddress = NGAddress; - // } - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - // _taskService.UpdateTaskStatusToNext(Taskout); - // } - // else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound) - // { - // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); - // taskCommand.InteractiveSignal = command.InteractiveSignal; - // if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) - // { - // if (command.Barcode == "") - // { - // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity; - // taskCommand.TargetAddress = NGAddress; - // } - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - // _taskService.UpdateTaskStatusToNext(Taskout); - // } - // else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) - // { - // if (command.Barcode == "") - // { - // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity; - // taskCommand.TargetAddress = NGAddress; - - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - // _taskService.UpdateTaskStatusToNext(Taskout); - // } - // else - // { - // // todo 璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛 - // var x = new { taskNum = Taskout.TaskNum }; - // var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; - // WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); - // if (content.Status) - // { - // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - // _taskService.UpdateTaskStatusToNext(Taskout); - // } - // } - // } - // } - //} - //if (taskNew == null) - //{ - // // 鍖栨垚->闄堝寲绌烘墭鐩樺洖娴� - // if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") - // { - // //TODO 璋冪敤WMS鍒涘缓鍖栨垚->闄堝寲绌烘墭鐩樺洖娴� - // WMSTaskDTO taskDTO = new WMSTaskDTO() - // { - // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), - // Grade = 1, - // PalletCode = command.Barcode, - // RoadWay = "CHSC01", - // SourceAddress = childDeviceCode, - // TargetAddress = "CHSC01", - // TaskState = (int)TaskInStatusEnum.InNew, - // Id = 0, - // TaskType = (int)TaskInboundTypeEnum.InTray, - // }; - // WebResponseContent content = CreateAndSendTask(taskDTO); - // if (content.Status) - // { - // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); - // if (task != null) - // { - // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); - // taskCommand.InteractiveSignal = command.InteractiveSignal; - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - // _taskService.UpdateTaskStatusToNext(task); - // } - // } - // } - // else - // { - // if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) - // { - // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); - // if (task != null) - // { - // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); - // taskCommand.InteractiveSignal = command.InteractiveSignal; - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - // _taskService.UpdateTaskStatusToNext(task); - // } - // } - // } - //} - - #endregion + catch (Exception ex) + { + return; + } } /// <summary> @@ -418,18 +304,6 @@ taskCommand.TargetAddress = 0; } - #region 鍚慦MS涓婃姤浠诲姟瀹屾垚 - - WMSTaskDTO wMSTaskDTO = new WMSTaskDTO(); - var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", (new { taskNum = command.TaskNum }).ToJsonString()).Result; - - content = JsonConvert.DeserializeObject<WebResponseContent>(result); - - // 妫�鏌ョ姸鎬佸苟杩斿洖 - if (!content.Status) - return; - - #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔� conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); @@ -437,18 +311,6 @@ } } - /// <summary> - /// 鍒涘缓浠诲姟骞跺彂閫佽姹� - /// </summary> - public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO) - { - var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); - if (content.Status) - { - Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛"); - } - return content; - } /// <summary> /// 闄堝寲绌烘墭鐩樺嚭搴� @@ -457,14 +319,21 @@ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform) + public async void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform) { - TaskOutboundTypeEnum taskOutboundTypeEnum; - if (platform.PlatformType.Contains("OutTray")) - taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray; - else - taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound; - CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList()); + try + { + TaskOutboundTypeEnum taskOutboundTypeEnum; + if (platform.PlatformType.Contains("OutTray")) + taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray; + else + taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound; + await CheckAndCreateTask(taskOutboundTypeEnum, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList()); + } + catch (Exception) + { + + } } #region @@ -506,33 +375,21 @@ /// <summary> /// 妫�鏌ヤ换鍔″苟鍒涘缓鏂颁换鍔� /// </summary> - private void CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null) + private async Task CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null) { var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode); if (tasks.Count < index) { - //var taskDTO = new WMSTaskDTO() - //{ - // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), - // Grade = 1, - // PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"), - // RoadWay = roadWay, - // SourceAddress = sourceAddress, - // TargetAddress = childDeviceCode, - // TaskState = (int)TaskOutStatusEnum.OutNew, - // Id = 0, - // TaskType = (int)taskType - //}; #region 璋冪敤WMS鑾峰彇鍑哄簱浠诲姟 WMSTaskDTO taskDTO = new WMSTaskDTO(); - dynamic dynamic = new + object dynamic = new { position = childDeviceCode, tag = (int)taskType, areaCdoe = roadWay, roadways = roadways }; - var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", dynamic.ToJsonString()).Result; + var result = await HttpHelper.PostAsync("http://localhost:5000/api/Task/RequestTrayOutTaskAsync", dynamic.ToJsonString()); WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); @@ -548,6 +405,18 @@ } /// <summary> + /// 鍒涘缓浠诲姟 + /// </summary> + public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO) + { + var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); + if (content.Status) + { + Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛"); + } + return content; + } + /// <summary> /// 杈撻�佺嚎浜や簰瀹屾垚 /// </summary> /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs index 6f9ab39..a6424b2 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs @@ -62,7 +62,7 @@ // 璇锋眰WMS绌烘墭鐩樹换鍔� CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); } - else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088")||(conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339")) + else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339")) { // 璇锋眰WMS鍏ュ簱浠诲姟 RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); @@ -97,7 +97,7 @@ } // TODO璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛 - var result = HttpHelper.GetAsync("http://127.0.0.1:8098/api/Task/CompleteTaskAsync", new { taskNum = taskOut.TaskNum }.ToJsonString()).Result; + var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync?taskNum={taskOut.TaskNum}").Result; WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (content.Status) { @@ -143,32 +143,18 @@ /// </summary> private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode) { - // 鍒涘缓骞惰繑鍥炵┖鎵樼洏浠诲姟DTO - //return new WMSTaskDTO - //{ - // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), - // Grade = 1, - // PalletCode = barcode, - // RoadWay = "JZSC01", - // SourceAddress = childDeviceCode, - // TargetAddress = "JZSC01", - // TaskState = (int)TaskInStatusEnum.InNew, - // Id = 0, - // TaskType = (int)TaskInboundTypeEnum.InTray, - //}; - #region 鍚慦MS璇锋眰绌烘墭鐩樹换鍔� - WMSTaskDTO wMSTaskDTO = new WMSTaskDTO(); RequestTaskDto request = new RequestTaskDto() { Position = childDeviceCode, PalletCode = barcode, }; - var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; + var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTrayInTaskAsync", request.ToJsonString()).Result; + if (result == null) + return wMSTaskDTO; WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); - // 妫�鏌ョ姸鎬佸苟杩斿洖 if (!content.Status) return wMSTaskDTO; @@ -187,7 +173,7 @@ if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) { // 鏌ヨ浠诲姟 - Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + Dt_Task task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); if (task != null) { // 鏄犲皠浠诲姟鍛戒护 diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs index 99582b3..fea5ff2 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs @@ -441,22 +441,24 @@ AlertDescription = commonStackerCrane.StackerCraneStatusDes, AlertReset = "0" }; - await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString()); + var S= await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString()); + WriteInfo("EqptAlive", S); } RequestEqptStatusDto requestEqptStatus = new RequestEqptStatusDto() { EmployeeNo = "T00001", - EquipmentCode = commonStackerCrane.DeviceCode, + EquipmentCode = "ECH001-B", RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), SessionId = Guid.NewGuid().ToString(), Software = commonStackerCrane.DeviceName, - ChangeTime = DateTime.Now.ToString(), + ChangeTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), Description = commonStackerCrane.StackerCraneStatusDes, LocationID = "NA", ReasonCode = "123", StatusCode = code }; var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptStatus", requestEqptStatus.ToJsonString()); + WriteInfo("EqptStatus", respone); } } } \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs index 525996e..8ca8d59 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs @@ -11,4 +11,17 @@ /// 鎵樼洏鍙� /// </summary> public string PalletCode { get; set; } + + /// <summary> + /// 绌烘墭鐩樺彲鍏ュ贩鍒� + /// </summary> + public string PositionList { get; set; } +} + +public class RequestOutTaskDto +{ + public string Position { get; set; } + public int Tag { get; set; } + public string AreaCdoe { get; set; } + public List<string> Roadways { get; set; } } \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs new file mode 100644 index 0000000..2b109c5 --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs @@ -0,0 +1,21 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO +{ + public class UpdateStatusDto + { + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public int TaskNum { get; set; } + + /// <summary> + /// 浠诲姟鐘舵�� + /// </summary> + public int TaskState { get; set; } + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs index 0f1ba4f..b83fc36 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs @@ -11,6 +11,7 @@ /// 鐢佃姱鍒楄〃 /// </summary> public List<SerialNoDto> SerialNos { get; set; } = new List<SerialNoDto>(); + public string BindCode { get; set; } public string TrayStatus { get; set; } /// <summary> diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs index 8cc81fc..7b13658 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs @@ -134,6 +134,13 @@ Task<WebResponseContent> RequestTaskAsync(RequestTaskDto input); /// <summary> + /// 璇锋眰绌烘墭鐩樹换鍔� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input); + + /// <summary> /// 璇锋眰鎵樼洏浠诲姟 /// </summary> /// <param name="position">鐩爣浣嶇疆</param> @@ -141,5 +148,13 @@ /// <param name="areaCode">鍖哄煙缂栫爜</param> /// <param name="roadways">宸烽亾鍒楄〃</param> /// <returns>杩斿洖缁撴灉闆�</returns> - Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways); + Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways); + + + /// <summary> + /// 浠诲姟鐘舵�佷慨鏀� + /// </summary> + /// <param name="input">璇锋眰鏁版嵁</param> + /// <returns></returns> + Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState); } \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs index db6dbf3..5901b8a 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs @@ -190,7 +190,7 @@ { var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>() .FirstAsync(x => x.EquipmentName == task.Roadway); - var info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue); + var info = JsonConvert.DeserializeObject<List<EquipmentParameterInfo>>(process.ProcessValue); var agingOutputDto = MapToAgingOutputDto(stock, info); content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto); @@ -218,7 +218,7 @@ } } - private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, EquipmentParameterInfo info) + private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, List<EquipmentParameterInfo> info) { return new AgingOutputDto { @@ -230,20 +230,17 @@ SlotNo = x.OrderNo.ToInt32(), SerialNo = x.SerialNumber, SerialNoResult = true, - ParameterInfo = new List<ParameterInfo> - { - new ParameterInfo + ParameterInfo = info.Select(x => new ParameterInfo() { - LowerLomit = info.LowerControlLimit, - UpperLimit = info.UpperControlLimit, - ParameterResult = info.EquipmentAvailabilityFlag, - ParameterCode = info.ParameterCode, - ParameterDesc = info.Description, - TargetValue = info.TargetValue, - Value = info.TargetValue, - DefectCode = info.UOMCode - } - } + LowerLomit = x.LowerControlLimit, + UpperLimit = x.UpperControlLimit, + ParameterResult = x.EquipmentAvailabilityFlag, + ParameterCode = x.ParameterCode, + ParameterDesc = x.Description, + TargetValue = x.TargetValue, + Value = (DateTime.Now - stock.CreateDate).TotalMinutes.ToString(), + DefectCode = x.UOMCode + }).ToList() }).ToList() }; } @@ -346,91 +343,6 @@ #region 鍏ュ簱浠诲姟瀹屾垚 /// <summary> - /// 鍏ュ簱浠诲姟瀹屾垚 - /// </summary> - /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param> - /// <returns>杩斿洖缁撴灉闆�</returns> - //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task) - //{ - // WebResponseContent content = new WebResponseContent(); - // try - // { - // var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode); - // var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress); - - // locationInf.LocationStatus = (int)LocationEnum.InStock; - - // // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷 - // var taskHty = CreateHistoricalTask(task); - - // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷 - // DtStockInfo stock; - // if (boxing == null) - // { - // // 绌烘墭鐩� - - // stock = new DtStockInfo() - // { - // PalletCode = task.PalletCode, - // LocationCode = task.TargetAddress, - // CreateDate = DateTime.Now, - // Creater = "system", - // IsFull = boxing.IsFull, - // StockInfoDetails = new List<DtStockInfoDetail>() - // { - // new DtStockInfoDetail() - // { - // MaterielCode = "绌烘墭鐩�", - // Id = 0, - // } - // } - // }; - // } - // else - // { - // // 瀹炵洏 - // var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); - // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷 - // stock = new DtStockInfo() - // { - // PalletCode = task.PalletCode, - // LocationCode = task.TargetAddress, - // CreateDate = DateTime.Now, - // Creater = "system", - // IsFull = boxing.IsFull, - // StockInfoDetails = boxDetail, - // }; - - // AgingInputDto agingInputDto = new AgingInputDto() - // { - // SerialNos = boxing.BoxingInfoDetails - // .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) - // .ToList(), - // TrayBarcode = task.PalletCode, - // OpFlag = 1 - // }; - // var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto); - // stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime; - - // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}"); - - // } - - // // 鎵ц鏁版嵁搴撲簨鍔� - // bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId); - // if (isResult) - // content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛"); - // else - // content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触"); - // } - // catch (Exception err) - // { - // Console.WriteLine(err.Message.ToString()); - // } - // return content; - //} - - /// <summary> /// 瀹屾垚鍏ュ簱浠诲姟 /// </summary> /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param> @@ -522,10 +434,13 @@ .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo }) .ToList(), TrayBarcode = task.PalletCode, - OpFlag = 1 + OpFlag = 1, + EquipmentCode = "ECH001-B", + Software = "WMS" }; var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result; - stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime; + var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()); + stock.Remark = respone.LinedProcessFeedbackTime; // 璁板綍鏃ュ織 LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}"); @@ -595,12 +510,28 @@ try { - // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔� var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode); if (task != null) { - content = await UpdateExistingTask(input, task); + if (task.TaskState == (int)TaskInStatusEnum.InNew) + { + // 鍒涘缓WMS浠诲姟 + WMSTaskDTO taskDTO = new WMSTaskDTO() + { + TaskNum = task.TaskNum.Value, + Grade = 1, + PalletCode = task.PalletCode, + RoadWay = task.Roadway, + SourceAddress = task.SourceAddress, + TargetAddress = task.Roadway, + TaskState = task.TaskState.Value, + Id = 0, + TaskType = task.TaskType, + }; + return content.OK(data: taskDTO); + } + content = await UpdateExistingTask(input, task); return content; } // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� @@ -608,7 +539,7 @@ { Software = "WMS", TrayBarcode = input.PalletCode, - EquipmentCode = "ECH001-B" + EquipmentCode = "ECH001-B" }; // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� @@ -619,6 +550,8 @@ // 娣诲姞缁勭洏淇℃伅 // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄 var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); + if (result.SerialNos.Count <= 0) + return content.Error(result.MOMMessage); var boxing = await CreateBoxingInfo(result, input.PalletCode); // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾� @@ -631,7 +564,7 @@ var processResponse = await GetProcessResponseAsync(process, input.Position); // 濡傛灉task涓嶄负null锛屽垯璋冪敤UpdateExistingTask鏂规硶锛屾洿鏂颁换鍔★紱鍚﹀垯璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟 - content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(processResponse, input); + content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(input, processResponse); if (content.Status) { var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); @@ -646,6 +579,41 @@ // 杩斿洖content return content; + } + + public async Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input) + { + WebResponseContent content = new WebResponseContent(); + try + { + + // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔� + var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode); + if (task != null && task.TaskState == (int)TaskInStatusEnum.InNew) + { + // 鍒涘缓WMS浠诲姟 + WMSTaskDTO taskDTO = new WMSTaskDTO() + { + TaskNum = task.TaskNum.Value, + Grade = 1, + PalletCode = task.PalletCode, + RoadWay = task.Roadway, + SourceAddress = task.SourceAddress, + TargetAddress = task.Roadway, + TaskState = task.TaskState.Value, + Id = 0, + TaskType = task.TaskType, + }; + return content.OK(data: task); + } + + return await CreateNewTask(input, null, 1); + } + catch (Exception) + { + + throw; + } } // 鑾峰彇鎵樼洏鍗曞厓鏍肩姸鎬� @@ -679,8 +647,8 @@ // 鍒涘缓涓�涓狿rocessApplyDto瀵硅薄锛屽苟璧嬪�� return new ProcessApplyDto() { - EquipmentCode = "ECH001-B", - Software = "WMS", + EquipmentCode = "ECH001-B", + Software = "WMS", //WipOrderNo = result.BindCode, SerialNos = content.SerialNos.Select(item => new SerialNos { @@ -723,104 +691,7 @@ #endregion 璇锋眰浠诲姟鍏ュ簱 - #region 璇锋眰鍑哄簱 - - //public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCdoe,List<string> roadways) - //{ - // WebResponseContent content = new WebResponseContent(); - // try - // { - // // 1==瀹炵洏 2 ==绌虹洏 - // if (tag == 1) - // { - // // 鏌ヨ搴撳瓨淇℃伅 - // DtStockInfo? stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault(); - // // 鍒涘缓鏂颁换鍔″疄渚� - // var task = new Dt_Task() - // { - // Grade = 1, - // Roadway = stockInfo.LocationInfo.RoadwayNo, - // TargetAddress = position, - // Dispatchertime = DateTime.Now, - // MaterialNo = "", - // NextAddress = position, - // OrderNo = null, - // PalletCode = stockInfo.PalletCode, - // SourceAddress = stockInfo.LocationCode, - // TaskState = (int)TaskOutStatusEnum.OutNew, - // TaskType = (int)TaskOutboundTypeEnum.Outbound, - // TaskNum = await BaseDal.GetTaskNo(), - // Creater = "Systeam" - // }; - // var taskId = await BaseDal.AddDataAsync(task); - // bool isResult = taskId > 0; - // if (isResult) - // { - // WMSTaskDTO taskDTO = new WMSTaskDTO() - // { - // TaskNum = task.TaskNum.Value, - // Grade = 1, - // PalletCode = DateTime.Now.ToString("MMddHHmmss"), - // RoadWay = task.Roadway, - // SourceAddress = stockInfo.LocationCode, - // TargetAddress = task.Roadway, - // TaskState = (int)TaskOutStatusEnum.OutNew, - // Id = 0, - // TaskType = (int)TaskOutboundTypeEnum.OutTray - // }; - // stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; - // _locationRepository.UpdateData(stockInfo.LocationInfo); - // content.OK(data: taskDTO); - // } - // } - // else - // { - // var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault(); - // // 鍒涘缓鏂颁换鍔″疄渚� - // var task = new Dt_Task - // { - // CurrentAddress = stockInfo.LocationCode, - // Grade = 1, - // Roadway = stockInfo.LocationInfo.RoadwayNo, - // TargetAddress = position, - // Dispatchertime = DateTime.Now, - // MaterialNo = "", - // NextAddress = position, - // OrderNo = null, - // PalletCode = stockInfo.PalletCode, - // SourceAddress = stockInfo.LocationCode, - // TaskState = (int)TaskOutStatusEnum.OutNew, - // TaskType = (int)TaskOutboundTypeEnum.OutTray, - // TaskNum = await BaseDal.GetTaskNo(), - // Creater = "Systeam" - // }; - - // var taskId = await BaseDal.AddDataAsync(task); - // bool isResult = taskId > 0; - // if (isResult) - // { - // WMSTaskDTO taskDTO = new WMSTaskDTO() - // { - // TaskNum = task.TaskNum.Value, - // Grade = 1, - // PalletCode = DateTime.Now.ToString("MMddHHmmss"), - // RoadWay = task.Roadway, - // SourceAddress = stockInfo.LocationCode, - // TargetAddress = task.Roadway, - // TaskState = (int)TaskOutStatusEnum.OutNew, - // Id = 0, - // TaskType = (int)TaskOutboundTypeEnum.OutTray - // }; - // content.OK(data: taskDTO); - // } - // } - // } - // catch (Exception ex) - // { - // throw; - // } - // return content; - //} + #region 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛� /// <summary> /// 璇锋眰鎵樼洏浠诲姟 @@ -830,13 +701,13 @@ /// <param name="areaCode">鍖哄煙缂栫爜</param> /// <param name="roadways">宸烽亾缂栫爜闆嗗悎</param> /// <returns>杩斿洖缁撴灉闆�</returns> - public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways) + public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways) { WebResponseContent content = new WebResponseContent(); try { // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅 - DtStockInfo stockInfo = tag == 1 + DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound ? QueryStockInfoForRealTray(areaCode, roadways) : QueryStockInfoForEmptyTray(areaCode, roadways); @@ -856,7 +727,7 @@ // 鍒涘缓浠诲姟DTO WMSTaskDTO taskDTO = CreateTaskDTO(task); - if (tag == 1) + //if (tag == 1) { // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢� stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; @@ -870,7 +741,7 @@ { // 璁板綍寮傚父淇℃伅骞舵姏鍑� LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, ex); - throw; + return content.Error(ex.Message); } } @@ -879,9 +750,11 @@ /// </summary> private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways) { - return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) + return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) + .Includes(x => x.LocationInfo) + .Includes(x => x.StockInfoDetails) .OrderBy(x => x.CreateDate) - .FirstOrDefault(); + .First(); } /// <summary> @@ -889,9 +762,11 @@ /// </summary> private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways) { - return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo)) + return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo)) + .Includes(x => x.LocationInfo) + .Includes(x => x.StockInfoDetails) .OrderBy(x => x.CreateDate) - .FirstOrDefault(); + .First(); } /// <summary> @@ -910,8 +785,9 @@ OrderNo = null, PalletCode = stockInfo.PalletCode, SourceAddress = stockInfo.LocationCode, + CurrentAddress = stockInfo.LocationCode, TaskState = (int)TaskOutStatusEnum.OutNew, - TaskType = tag == 1 ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray, + TaskType = tag == (int)TaskOutboundTypeEnum.Outbound ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray, TaskNum = BaseDal.GetTaskNo().Result, Creater = "System" // 淇鎷煎啓閿欒 }; @@ -938,64 +814,31 @@ #endregion 璇锋眰鍑哄簱 - #region 闄堝寲璇锋眰鍑哄簱 + #region 浠诲姟鐘舵�佹洿鏀� - // 闄堝寲璇锋眰鍑哄簱 - public async Task<WebResponseContent> OutTrayByCh(string position) + public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState) { WebResponseContent content = new WebResponseContent(); try { - var area = _areaInfoRepository.QueryFirst(x => x.AreaName == "闄堝寲鍖�"); - - // 鏌ヨ搴撳瓨淇℃伅 - var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == area.AreaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).OrderBy(x => x.CreateDate).FirstOrDefault(); - // 鍒涘缓鏂颁换鍔″疄渚� - var task = new Dt_Task() - { - Grade = 1, - Roadway = stockInfo.LocationInfo.RoadwayNo, - TargetAddress = position, - Dispatchertime = DateTime.Now, - MaterialNo = "", - NextAddress = position, - OrderNo = null, - PalletCode = stockInfo.PalletCode, - SourceAddress = stockInfo.LocationCode, - TaskState = (int)TaskOutStatusEnum.OutNew, - TaskType = (int)TaskOutboundTypeEnum.OutTray, - TaskNum = await BaseDal.GetTaskNo(), - Creater = "Systeam" - }; - var taskId = await BaseDal.AddDataAsync(task); - bool isResult = taskId > 0; - if (isResult) - { - WMSTaskDTO taskDTO = new WMSTaskDTO() - { - TaskNum = task.TaskNum.Value, - Grade = 1, - PalletCode = DateTime.Now.ToString("MMddHHmmss"), - RoadWay = task.Roadway, - SourceAddress = stockInfo.LocationCode, - TargetAddress = task.Roadway, - TaskState = (int)TaskOutStatusEnum.OutNew, - Id = 0, - TaskType = (int)TaskOutboundTypeEnum.OutTray - }; - stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; - _locationRepository.UpdateData(stockInfo.LocationInfo); - content.OK(data: taskDTO); - } + var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum); + if (task == null) + return content.Error("鏈壘鍒颁换鍔�"); + task.TaskState = taskState; + var asb = await BaseDal.UpdateDataAsync(task); + if (asb) + content.OK(); + else + content.Error(); } catch (Exception ex) { - throw; + content.Error(ex.Message); } return content; } - #endregion 闄堝寲璇锋眰鍑哄簱 + #endregion #endregion 澶栭儴鎺ュ彛鏂规硶 @@ -1361,10 +1204,18 @@ /// <param name="areaId">鍖哄煙ID</param> /// <param name="content">鍝嶅簲鍐呭</param> /// <returns></returns> - private async Task<WebResponseContent> CreateNewTask(List<Dt_EquipmentProcess> process, RequestTaskDto input) + private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<Dt_EquipmentProcess> process = null, int flag = 0) { WebResponseContent content = new WebResponseContent(); - List<string> strings = process.Select(x => x.EquipmentName).ToList(); + List<string> strings = new List<string>(); + if (process != null) + { + strings = process.Select(x => x.EquipmentName).ToList(); + } + else + { + strings = input.Position.Split(',').ToList(); + } // 鑾峰彇鐩爣鍦板潃 string ToAddress = await GetRoadWayAsync(strings); @@ -1382,7 +1233,7 @@ PalletCode = input.PalletCode, SourceAddress = input.Position, TaskState = (int)TaskInStatusEnum.InNew, - TaskType = (int)TaskTypeEnum.Inbound, + TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray, TaskNum = await BaseDal.GetTaskNo(), Creater = "Systeam" }; @@ -1460,6 +1311,22 @@ { var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free) .GroupBy(x => x.RoadwayNo) + .OrderByDescending(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭 + .First(); // 鍙栧嚭鏁伴噺鏈�澶氱殑缁� + + string minRoadwayNo = minGroup.Key; // 鏁伴噺鏈�澶氱殑缁勭殑Key + + return minRoadwayNo; + } + + /// <summary> + /// 鑾峰彇宸烽亾鎴栫珯鍙� + /// </summary> + /// <returns></returns> + public async Task<string> GetRoadWayAsync(int areaCode) + { + var minGroup = _locationRepository.QueryData(x => x.AreaId == areaCode && x.LocationStatus == (int)LocationEnum.Free) + .GroupBy(x => x.RoadwayNo) .OrderBy(g => g.Count()) // 鏍规嵁姣忎釜缁勭殑鍏冪礌鏁伴噺鎺掑簭 .First(); // 鍙栧嚭鏁伴噺鏈�灏戠殑缁� diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs index 7583011..58cf6b7 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs @@ -1,4 +1,5 @@ 锘縰sing WIDESEA_DTO; +using static WIDESEA_DTO.RequestTaskDto; namespace WIDESEA_WMSServer.Controllers; @@ -56,13 +57,35 @@ } /// <summary> - /// 绌烘墭鐩樿姹� + /// 绌烘墭鐩樺叆搴撹姹� /// </summary> /// <param name="input">璇锋眰鏁版嵁</param> /// <returns></returns> - [HttpPost, AllowAnonymous, Route("RequestTrayTaskAsync")] - public async Task<WebResponseContent> RequestTrayTaskAsync([FromBody] string position, int tag, string areaCdoe, List<string> roadways) + [HttpPost, AllowAnonymous, Route("RequestTrayInTaskAsync")] + public async Task<WebResponseContent> RequestTrayInTaskAsync([FromBody] RequestTaskDto input) { - return await Service.RequestTrayTaskAsync(position, tag, areaCdoe, roadways); + return await Service.RequestTrayInTaskAsync(input); + } + + /// <summary> + /// 绌烘墭鐩�&婊$洏鍑哄簱璇锋眰 + /// </summary> + /// <param name="input">璇锋眰鏁版嵁</param> + /// <returns></returns> + [HttpPost, AllowAnonymous, Route("RequestTrayOutTaskAsync")] + public async Task<WebResponseContent> RequestTrayOutTaskAsync([FromBody] RequestOutTaskDto request) + { + return await Service.RequestTrayOutTaskAsync(request.Position, request.Tag, request.AreaCdoe, request.Roadways); + } + + /// <summary> + /// 浠诲姟鐘舵�佷慨鏀� + /// </summary> + /// <param name="input">璇锋眰鏁版嵁</param> + /// <returns></returns> + [HttpPost, AllowAnonymous, Route("UpdateTaskStatus")] + public async Task<WebResponseContent> UpdateTaskStatus([FromBody] UpdateStatusDto input) + { + return await Service.UpdateTaskStatus(input.TaskNum, input.TaskState); } } \ No newline at end of file -- Gitblit v1.9.3