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