From 3799054e5cd8a42a49cc902cc9d9cb46059b3a7d Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期日, 14 九月 2025 10:54:54 +0800 Subject: [PATCH] 添加WebSocket将设备运行信息推送到前端,前端将数据接收赋值到对应设备监控页面 --- 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 277 ++++++++++++++++++++++++++----------------------------- 1 files changed, 132 insertions(+), 145 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" index 8110c69..9330cc5 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -14,21 +14,10 @@ * *----------------------------------------------------------------*/ #endregion << 鐗� 鏈� 娉� 閲� >> - using AutoMapper; -using HslCommunication.Enthernet; using Newtonsoft.Json; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using SqlSugar; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; using WIDESEA_DTO.Agv; using WIDESEAWCS_Common; using WIDESEAWCS_Common.APIEnum; @@ -37,18 +26,15 @@ using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; -using WIDESEAWCS_DTO.BasicInfo; -using WIDESEAWCS_DTO.System; +using WIDESEAWCS_Core.LogHelper; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; -using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.Service; -using WIDESEAWCS_TaskInfoRepository; using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; namespace WIDESEAWCS_TaskInfoService @@ -208,10 +194,6 @@ task.CurrentAddress = router.StartPosi; task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosiDeviceCode; - if (task.TaskType == TaskTypeEnum.ProductMD.ObjToInt()) - { - task.TaskState = TaskStatusEnum.Line_Executing.ObjToInt(); - } } else //鍑哄簱 { @@ -346,7 +328,31 @@ } return content; } + // <summary> + /// 鍏ュ簱鐢宠 + /// </summary> + public WebResponseContent YLPurchaseBoxing(string palletCode) + { + WebResponseContent? content = new WebResponseContent(); + try + { + string address = AppSettings.Get("WMSApiAddress"); + if (string.IsNullOrEmpty(address)) + { + return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + } + string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}"); + WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); + content = responseContent; + + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } // <summary> /// 璇锋眰鎴愬搧鍏ュ簱宸烽亾 /// </summary> @@ -488,132 +494,6 @@ // } // return content; //} - - - /// <summary> - /// 鍒嗛厤宸烽亾 - /// </summary> - /// <param name="taskNum"></param> - /// <param name="roadwayNos"></param> - /// <returns></returns> - public WebResponseContent RequestWMSAssignRoadway(int taskNum, List<string> roadwayNos) - { - 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/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) - { - return responseContent; - } - - } - catch (Exception ex) - { - content = WebResponseContent.Instance.Error(ex.Message); - } - return content; - } - - /// <summary> - /// 鍒嗛厤宸烽亾 - /// </summary> - /// <param name="roadwayNos"></param> - /// <param name="taskNum"></param> - /// <param name="heightType"></param> - /// <returns></returns> - public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, int taskNum, 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/AssignRoadway?taskNum={taskNum}&heightType={heightType}", 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> - /// <returns></returns> - public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos) - { - 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/SingleAssignRoadway", 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> /// 鍚慦MS鐢宠鍒嗛厤璐т綅 @@ -878,5 +758,112 @@ return WebResponseContent.Instance.Error(ex.Message); } } + + public Dt_Task QueryBarCodeAGVFinishTask(int TaskNum, string currentAddress) + { + return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.AGV_Finish && x.NextAddress == currentAddress && x.TaskNum == TaskNum, TaskOrderBy); + } + + public Dt_Task QueryExecutingTaskByBarcode(int TaskNum, string nextAddress) + { + return BaseDal.QueryFirst(x => x.TaskNum == TaskNum && x.NextAddress == nextAddress && x.TaskState == (int)TaskStatusEnum.Line_Executing, TaskOrderBy); + } + + public Dt_Task QueryLineExecuteTaskByBarcode(int TaskNum, string nextAddress) + { + return BaseDal.QueryFirst(x => x.TaskNum == TaskNum && x.CurrentAddress == nextAddress && x.TaskState == (int)TaskStatusEnum.Line_Execute, TaskOrderBy); + } + + public WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task, Dt_StationManger stationManger = null) + { + WebResponseContent content = new WebResponseContent(); + try + { + TaskStatusEnum nextStatus = new TaskStatusEnum(); + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + if (task.TaskState == (int)TaskStatusEnum.SC_Executing) + { + task.CurrentAddress = task.NextAddress; + task.NextAddress = task.TargetAddress; + task.TaskState = (int)TaskStatusEnum.Line_Executing; + nextStatus = TaskStatusEnum.Line_Executing; + } + else if (task.TaskState == (int)TaskStatusEnum.SC_Execute) + { + task.TaskState = (int)TaskStatusEnum.SC_Executing; + nextStatus = TaskStatusEnum.SC_Executing; + } + } + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) + { + if (task.TaskState == (int)TaskStatusEnum.Line_Executing) + { + #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 + string? local = RequestAssignLocation(task.TaskNum, task.Roadway); + if (!string.IsNullOrEmpty(local)) + { + task.CurrentAddress = stationManger.StackerCraneStationCode; + task.TargetAddress = local; + task.NextAddress = local; + task.DeviceCode = stationManger.StackerCraneCode; + task.TaskState = (int)TaskStatusEnum.SC_Execute; + nextStatus = TaskStatusEnum.SC_Execute; + content.OK($"鑾峰彇璐т綅鍙穥local}"); + } + else + { + return content.Error($"璇锋眰鍏ュ簱璐т綅澶辫触"); + } + #endregion 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 + } + else if (task.TaskState == (int)TaskStatusEnum.AGV_Finish) + { + content = AssignYLRoadwayNo(task.PalletCode); + if (!content.Status) + { + return content.Error($"璇锋眰鍏ュ簱澶辫触锛歿content.Message}"); + } + string roadWay = content.Data.ToString(); + + List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi && x.ChildPosiDeviceCode == roadWay); + Dt_Router router = routers.FirstOrDefault(); + if (router == null) + { + return content.Error($"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�"); + } + + task.Roadway = roadWay; + task.NextAddress = router.NextPosi; + task.TaskState = (int)TaskStatusEnum.Line_Execute; + nextStatus = TaskStatusEnum.Line_Execute; + } + else if (task.TaskState == (int)TaskStatusEnum.Line_Execute) + { + task.TaskState = (int)TaskStatusEnum.Line_Executing; + nextStatus = TaskStatusEnum.Line_Executing; + } + else if (task.TaskState == (int)TaskStatusEnum.SC_Execute) + { + task.TaskState = (int)TaskStatusEnum.SC_Executing; + nextStatus = TaskStatusEnum.SC_Executing; + } + } + else + { + throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�"); + } + task.ModifyDate = DateTime.Now; + task.Modifier = "System"; + //BaseDal.UpdateData(task); + UpdateTask(task, nextStatus); + content = WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } } } -- Gitblit v1.9.3