From f44c5df9cc045644982f578fb0b3c3e60b88eb68 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 25 九月 2024 18:54:17 +0800 Subject: [PATCH] 修改分拣任务读取 --- Admin.NET/WCS.Application/Hub/CheckTaskHub.cs | 51 ++++++++++++ Web/src/views/device/sortPallet/index.vue | 17 ++++ Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs | 35 ++++++++ Admin.NET/WCS.Application/Hub/HubUtil.cs | 14 +++ Admin.NET/WCS.Application/Entity/WcsCheckTask.cs | 4 Admin.NET/WCS.Application/Hub/ICheckTaskHub.cs | 19 ++++ Web/src/views/device/sortPallet/signalR.ts | 45 +++++++++++ 7 files changed, 180 insertions(+), 5 deletions(-) diff --git a/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs b/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs index 4d888c8..96428a6 100644 --- a/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs +++ b/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs @@ -105,14 +105,14 @@ /// 鎵规鍋忕Щ閲� /// </summary> [Required] - [SugarColumn(ColumnName = "PlcPos", ColumnDescription = "鎵规鍋忕Щ閲�", Length = 10)] + [SugarColumn(ColumnName = "PosLot", ColumnDescription = "鎵规鍋忕Щ閲�", Length = 10)] public string PosLot { get; set; } /// <summary> /// 鎵规娴佺▼瀛楃被鍨� /// </summary> [Required] - [SugarColumn(ColumnName = "PosType", ColumnDescription = "鎵规娴佺▼瀛楃被鍨�")] + [SugarColumn(ColumnName = "PosTypeLot", ColumnDescription = "鎵规娴佺▼瀛楃被鍨�")] public PLCDataTypeEnum PosTypeLot { get; set; } /// <summary> diff --git a/Admin.NET/WCS.Application/Hub/CheckTaskHub.cs b/Admin.NET/WCS.Application/Hub/CheckTaskHub.cs new file mode 100644 index 0000000..65e0d75 --- /dev/null +++ b/Admin.NET/WCS.Application/Hub/CheckTaskHub.cs @@ -0,0 +1,51 @@ +锘縰sing Furion.InstantMessaging; +using Microsoft.AspNetCore.SignalR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WCS.Application.Service.WcsDevice.Dto; + +namespace WCS.Application.Hub; +/// <summary> +/// +/// </summary> +[MapHub("/hubs/CheckTask")] +public class CheckTaskHub : Hub<ICheckTaskHub> +{ + private readonly IHubContext<CheckTaskHub, ICheckTaskHub> _checkTaskHubContext; + + public CheckTaskHub(IHubContext<CheckTaskHub, ICheckTaskHub> checkTaskHubContext) + { + _checkTaskHubContext = checkTaskHubContext; + } + + /// <summary> + /// 杩炴帴 + /// </summary> + /// <returns></returns> + public override async Task OnConnectedAsync() + { + await base.OnConnectedAsync(); + } + + /// <summary> + /// 鏂紑 + /// </summary> + /// <param name="exception"></param> + /// <returns></returns> + public override async Task OnDisconnectedAsync(Exception exception) + { + await base.OnDisconnectedAsync(exception); + } + + /// <summary> + /// 涓嬪彂鍒嗘嫞浠诲姟 + /// </summary> + /// <returns></returns> + public async Task PublicCheckTask(WcsDeviceTaskOrderDto context) + { + await _checkTaskHubContext.Clients.All.PublicCheckTask(context); + } +} diff --git a/Admin.NET/WCS.Application/Hub/HubUtil.cs b/Admin.NET/WCS.Application/Hub/HubUtil.cs index 988aab8..fadebde 100644 --- a/Admin.NET/WCS.Application/Hub/HubUtil.cs +++ b/Admin.NET/WCS.Application/Hub/HubUtil.cs @@ -4,6 +4,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using WCS.Application.Hub; +using WCS.Application.Service.WcsDevice.Dto; namespace WCS.Application; public static class HubUtil @@ -11,6 +13,7 @@ private static readonly IHubContext<PlcHub, IPlcHub> _plcHubContext = App.GetService<IHubContext<PlcHub, IPlcHub>>(); private static readonly IHubContext<PlcDeviceHub, IPlcDeviceHub> _plcDeviceHubContext = App.GetService<IHubContext<PlcDeviceHub, IPlcDeviceHub>>(); private static readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext = App.GetService<IHubContext<TaskLogHub, ITaskLogHub>>(); + private static readonly IHubContext<CheckTaskHub, ICheckTaskHub> _checkTaskHubContext = App.GetService<IHubContext<CheckTaskHub, ICheckTaskHub>>(); /// <summary> /// 涓嬪彂PLC杩炴帴鐘舵�� @@ -85,4 +88,15 @@ if (PLCTaskAction.boRefresh) await _plcDeviceHubContext.Clients.All.PublicPlcDevice(context); } + + /// <summary> + /// 涓嬪彂鍒嗘嫞浠诲姟淇℃伅 + /// </summary> + /// <param name="context"></param> + /// <returns></returns> + public static async Task PublicCheckTask(WcsDeviceTaskOrderDto context) + { + if (PLCTaskAction.boRefresh) + await _checkTaskHubContext.Clients.All.PublicCheckTask(context); + } } diff --git a/Admin.NET/WCS.Application/Hub/ICheckTaskHub.cs b/Admin.NET/WCS.Application/Hub/ICheckTaskHub.cs new file mode 100644 index 0000000..4ad2213 --- /dev/null +++ b/Admin.NET/WCS.Application/Hub/ICheckTaskHub.cs @@ -0,0 +1,19 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WCS.Application.Service.WcsDevice.Dto; + +namespace WCS.Application.Hub +{ + public interface ICheckTaskHub + { + /// <summary> + /// 涓嬪彂鍒嗘嫞浠诲姟淇℃伅 + /// </summary> + /// <param name="context"></param> + /// <returns></returns> + Task PublicCheckTask(WcsDeviceTaskOrderDto context); + } +} diff --git a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs index 91deb8c..154209a 100644 --- a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs +++ b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs @@ -6,6 +6,7 @@ using Admin.NET.Core.Service; using AngleSharp.Dom; +using DocumentFormat.OpenXml.Vml.Office; using Elastic.Clients.Elasticsearch.Tasks; using Microsoft.AspNetCore.Http; using WCS.Application.Entity; @@ -147,13 +148,13 @@ } /// <summary> - /// 鎵嬪姩缁戝畾浠诲姟鍒癙LC + /// 鎵嬪姩缁戝畾浠诲姟 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "BindTaskForPLC")] - [DisplayName("鎵嬪姩缁戝畾浠诲姟鍒癙LC")] + [DisplayName("鎵嬪姩缁戝畾浠诲姟")] public async Task BindTaskForPLC(BindTaskPLCInput input) { var deviceInfo = await _wcsDeviceRep.GetByIdAsync(input.deviceId); @@ -211,6 +212,11 @@ #endregion } + /// <summary> + /// 浠诲姟缁撴壒 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "CloseTaskForPLC")] [DisplayName("浠诲姟缁撴壒")] @@ -253,6 +259,31 @@ //鏇存柊鍒嗘嫞浠诲姟 await _wcsCheckTaskRep.AsUpdateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } + + //Service.WcsDevice.Dto.WcsDeviceTaskOrderDto order= await _wcsDeviceRep.Context.Queryable<WcsDevice>() + // .InnerJoin<WcsPlc>((device, plc) => device.PlcId == plc.Id) + // .LeftJoin<WcsCheckTask>((device, plc, task) => device.StationNum == task.Port) + // .Where((device, plc, task) => device.PlcId == 1000 && task.Port=="") + // .Select((device, plc, task) => new Service.WcsDevice.Dto.WcsDeviceTaskOrderDto() + // { + // Id = device.Id, + // Text = device.Text, + // TaskNo = task.TaskNo, + // OrderNo = task.OrderNo, + // LotNo = task.LotNo, + // SkuNo = task.SkuNo, + // SkuName = task.SkuName, + // LineNo = task.LineNo, + // Status = task.Status, + // PZNo = task.PZNo, + // Qty = task.Qty, + + // Type = plc.Type + // }) + // .FirstAsync(); + ////涓嬪彂鍒嗘嫞浠诲姟 + //HubUtil.PublicCheckTask(order.Adapt<Service.WcsDevice.Dto.WcsDeviceTaskOrderDto>()); + #endregion } } diff --git a/Web/src/views/device/sortPallet/index.vue b/Web/src/views/device/sortPallet/index.vue index 1a8c905..d73c05a 100644 --- a/Web/src/views/device/sortPallet/index.vue +++ b/Web/src/views/device/sortPallet/index.vue @@ -109,10 +109,25 @@ </template> <script lang="ts" setup> -import { ref } from 'vue'; +import { ref, onMounted } from 'vue'; import { GetWcsPackPlcList,GetWcsPackStationPlcList,BindTaskForPLC,CloseTaskForPLC } from '/@/api/wcs/wcsDevice'; import { pageWcsOderTask } from '/@/api/device/wcsOderTask'; import { ElMessageBox,ElMessage } from 'element-plus'; +import { signalR,stopConnection } from './signalR'; +//杩炴帴signalR 鐩戝惉鍙樻洿 +onMounted(async () => { + signalR.off('PublicCheckTask'); + signalR.on('PublicCheckTask', (data: any) => { + //todo 闇�瑕佹祴璇� + // if (data.type == 0) { + + // } + var index = devicePointData.value.findIndex(s => s.id == data.id); + if (index !== -1) { + devicePointData.value.splice(index, 1, data); + } + }); +}); //璁惧鏁版嵁 const deviceList=ref<any>([]); diff --git a/Web/src/views/device/sortPallet/signalR.ts b/Web/src/views/device/sortPallet/signalR.ts new file mode 100644 index 0000000..d9b25f2 --- /dev/null +++ b/Web/src/views/device/sortPallet/signalR.ts @@ -0,0 +1,45 @@ +import * as SignalR from '@microsoft/signalr'; +import { getToken } from '/@/utils/axios-utils'; + +// 鍒濆鍖朣ignalR瀵硅薄 +const connection = new SignalR.HubConnectionBuilder() + .configureLogging(SignalR.LogLevel.Information) + .withUrl(`${window.__env__.VITE_API_URL}/hubs/CheckTask?token=${getToken()}`, { transport: SignalR.HttpTransportType.WebSockets, skipNegotiation: true }) + .withAutomaticReconnect({ + nextRetryDelayInMilliseconds: () => { + return 5000; // 姣�5绉掗噸杩炰竴娆� + }, + }) + .build(); + +connection.keepAliveIntervalInMilliseconds = 15 * 1000; // 蹇冭烦妫�娴�15s +connection.serverTimeoutInMilliseconds = 30 * 60 * 1000; // 瓒呮椂鏃堕棿30m + +// 鍚姩杩炴帴 +connection.start().then(() => { + console.log('鍚姩杩炴帴checkTask'); +}); +// 鏂紑杩炴帴 +connection.onclose(async () => { + console.log('鏂紑杩炴帴checkTask'); +}); +// 閲嶈繛涓� +connection.onreconnecting(() => { + console.log('鏈嶅姟鍣ㄥ凡鏂嚎checkTask'); +}); +// 閲嶈繛鎴愬姛 +connection.onreconnected(() => { + console.log('閲嶈繛鎴愬姛checkTask'); +}); +// 鍏抽棴杩炴帴鐨勬柟娉� +async function stopConnection() { + try { + await connection.stop(); + console.log('杩炴帴宸插叧闂�'); + } catch (error) { + console.error('鍏抽棴杩炴帴鏃跺彂鐢熼敊璇�:', error); + } + } +// connection.on('PublicPlcConn', () => {}); + +export { connection as signalR,stopConnection }; -- Gitblit v1.8.0