From 7086c88c6c080aa9ff15664c5c97aee7bbcdc55b Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期三, 05 三月 2025 16:56:11 +0800 Subject: [PATCH] 阻焊仓堆垛机对接 --- 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 105 insertions(+), 5 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" index 0c1cc60..0197b6c 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -16,6 +16,7 @@ #endregion << 鐗� 鏈� 娉� 閲� >> using AutoMapper; +using HslCommunication.Enthernet; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using SqlSugar; @@ -65,6 +66,7 @@ private Dictionary<string, OrderByType> _taskOrderBy = new() { {nameof(Dt_Task.Grade),OrderByType.Desc }, + {nameof(Dt_Task.TaskNum),OrderByType.Asc}, {nameof(Dt_Task.CreateDate),OrderByType.Asc}, }; @@ -198,9 +200,20 @@ task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosi; } - else if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt()) + else if (item.TaskType == TaskTypeEnum.MesPalletReturn.ObjToInt() && router.IsEnd) { task.NextAddress = router.NextPosi; + task.DeviceCode = router.ChildPosi; + } + else if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt() || item.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt() || item.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || (item.TaskType == TaskTypeEnum.OutAllocate.ObjToInt() && item.RoadWay.Contains("BC"))) + { + task.NextAddress = router.NextPosi; + task.DeviceCode = stationManger.StackerCraneCode; + task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); + } + else if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt() && item.RoadWay.Contains("ZH")) + { + task.NextAddress = stationManger.StackerCraneStationCode; task.DeviceCode = stationManger.StackerCraneCode; task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); } @@ -244,7 +257,6 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢遍厤缃俊鎭�"); } router = routers.FirstOrDefault(); - task.NextAddress = router?.StartPosi ?? ""; task.DeviceCode = item.RoadWay; task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); @@ -258,8 +270,7 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢遍厤缃俊鎭�"); } router = routers.FirstOrDefault(); - string stationCode = router?.NextPosi ?? ""; - Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == stationCode); + Dt_StationManger? stationManger = _stationMangerRepository.QueryData(x => true).FirstOrDefault(x=>x.StationCode== router?.NextPosi); if (stationManger == null) { return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃俊鎭�"); @@ -326,6 +337,12 @@ return content; } + /// <summary> + /// + /// </summary> + /// <param name="palletCode"></param> + /// <param name="sourceAddress"></param> + /// <returns></returns> public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress) { WebResponseContent content = new WebResponseContent(); @@ -355,6 +372,13 @@ return content; } + /// <summary> + /// + /// </summary> + /// <param name="palletCode"></param> + /// <param name="sourceAddress"></param> + /// <param name="roadway"></param> + /// <returns></returns> public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway) { WebResponseContent content = new WebResponseContent(); @@ -366,6 +390,43 @@ return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); } string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={roadway}&palletCode={palletCode}"); + WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); + if (responseContent != null && responseContent.Status && responseContent.Data != null) + { + WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString()); + if (taskDTO != null) + { + content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); + } + } + + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } + + /// <summary> + /// + /// </summary> + /// <param name="sourceAddress"></param> + /// <param name="palletCode"></param> + /// <param name="heightType"></param> + /// <param name="roadways"></param> + /// <returns></returns> + public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, int heightType, List<string> roadways) + { + WebResponseContent content = new WebResponseContent(); + try + { + string address = AppSettings.Get("WMSApiAddress"); + if (string.IsNullOrEmpty(address)) + { + return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + } + string responseStr = HttpHelper.Post($"{address}/api/Task/DeviceRequestInboundTaskByRoadways?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}", roadways.Serialize()); WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); if (responseContent != null && responseContent.Status && responseContent.Data != null) { @@ -401,6 +462,38 @@ return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); } string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadway?taskNum={taskNum}", roadwayNos.Serialize()); + WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); + if (responseContent != null && responseContent.Status && responseContent.Data != null) + { + return responseContent; + } + + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } + + /// <summary> + /// + /// </summary> + /// <param name="roadwayNos"></param> + /// <param name="palletCode"></param> + /// <param name="heightType"></param> + /// <returns></returns> + public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, string palletCode, int heightType) + { + WebResponseContent content = new WebResponseContent(); + try + { + string address = AppSettings.Get("WMSApiAddress"); + if (string.IsNullOrEmpty(address)) + { + return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + } + string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadwayByHeightAndCode?palletCode={palletCode}&heightType={heightType}", roadwayNos.Serialize()); WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); if (responseContent != null && responseContent.Status && responseContent.Data != null) { @@ -499,7 +592,7 @@ } /// <summary> - /// + /// 鍚慦MS鐢宠鍒嗛厤璐т綅 /// </summary> /// <param name="taskNum"></param> /// <param name="roadwayNo"></param> @@ -731,5 +824,12 @@ return WebResponseContent.Instance.Error(ex.Message); } } + /// <summary> + /// //鍒ゆ柇绉诲簱璐т綅浠诲姟鏄惁宸插瓨鍦紝濡傚瓨鍦ㄥ厛鎵ц + /// </summary> + public Dt_Task QueryStackerExistTask(string PalletCode, string locationCode) + { + return BaseDal.QueryFirst(x => x.PalletCode == PalletCode && x.SourceAddress == locationCode && x.TaskState == (int)TaskStatusEnum.SC_Execute); + } } } -- Gitblit v1.9.3