From b9d9c0e91d8bbdf411540daa0d5887140d6327f9 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 28 十月 2025 21:34:28 +0800
Subject: [PATCH] 添加提示信息前端弹窗显示
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs | 66 ++++++++++++++++
新建文件夹/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs | 9 +-
新建文件夹/WMS/src/views/index/Message.vue | 38 ++++----
新建文件夹/WMS/src/views/index/MessageConfig.js | 2
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs | 87 +++++++++++++++++++++
新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | 1
新建文件夹/WMS/src/views/Index.vue | 8 +
新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/AlarmJob.cs | 8 +
8 files changed, 188 insertions(+), 31 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs"
index 9adfc9c..37a8d8c 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs"
@@ -17,13 +17,14 @@
/// <summary>
/// 娣诲姞閫氱煡淇℃伅
/// </summary>
- /// <param name="groupByEnum">鎶ヨ鍒嗙粍</param>
- /// <param name="messageName">鍚嶅瓧</param>
- /// <param name="messageInfo">鎶ヨ淇℃伅</param>
- /// <param name="statusEnum">鐘舵��</param>
+ /// <param name="groupByEnum"></param>
+ /// <param name="messageName"></param>
+ /// <param name="messageInfo"></param>
+ /// <param name="statusEnum"></param>
/// <param name="messageRemark"></param>
/// <returns></returns>
WebResponseContent AddMessageInfo(MessageGroupByEnum groupByEnum, string messageName, string messageInfo, MessageStatusEnum statusEnum = MessageStatusEnum.Undisposed, string messageRemark = "");
WebResponseContent DeleteAndIntoHty(int[] keys);
+ void GetMessageInfo();
}
}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs"
index 2af9277..ea8b9de 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs"
@@ -1,4 +1,9 @@
-锘縰sing SqlSugar.Extensions;
+锘縰sing HslCommunication.WebSocket;
+using NetTaste;
+using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using Quartz.Util;
+using SqlSugar.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -8,16 +13,22 @@
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Caches;
using WIDESEA_Core.Enums;
using WIDESEA_IWMsInfoServices;
using WIDESEA_Model.Models;
+using static WIDESEA_Core.WebSocketHostedService;
namespace WIDESEA_WMsInfoServices
{
public class MessageInfoService : ServiceBase<Dt_MessageInfo, IRepository<Dt_MessageInfo>>, IMessageInfoService
{
- public MessageInfoService(IRepository<Dt_MessageInfo> BaseDal) : base(BaseDal)
+ private readonly ICacheService _cacheService;
+ private readonly WebSocketServer _webSocketServer;
+ public MessageInfoService(IRepository<Dt_MessageInfo> BaseDal, ICacheService cacheService, WebSocketServer webSocketServer) : base(BaseDal)
{
+ _cacheService = cacheService;
+ _webSocketServer = webSocketServer;
}
public IRepository<Dt_MessageInfo> Repository => BaseDal;
@@ -87,5 +98,77 @@
}
return content;
}
+
+ public void GetMessageInfo()
+ {
+ try
+ {
+ List<int> keys = new List<int>();
+ List<Message> messagesinfo = new List<Message>();
+ string MessageInfo = _cacheService.Get("MessageInfo");
+ if (!string.IsNullOrEmpty(MessageInfo))
+ {
+ List<Message>? messages = JsonConvert.DeserializeObject<List<Message>>(MessageInfo);
+ if (messages != null)
+ {
+ messagesinfo = messages;
+ keys = messages.Select(x => x.Id).ToList();
+ }
+ }
+ var messinfo = BaseDal.QueryData(x => !keys.Contains(x.Id));
+ foreach (var item in messinfo)
+ {
+ Message message = new Message()
+ {
+ Id = item.Id,
+ MessageGroupBy = GetMessageGroupBy(item.MessageGroupBy),
+ MessageInfo = item.MessageInfo,
+ MessageName = item.MessageName,
+ Date = item.CreateDate,
+ };
+ messagesinfo.Add(message);
+ object obj = new
+ {
+ title = message.MessageGroupBy,
+ name = item.MessageName,
+ message = item.MessageInfo,
+ date = item.CreateDate,
+ };
+ if (_webSocketServer.OnlineCount > 0)
+ _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(obj));
+ }
+ _cacheService.AddOrUpdate("MessageInfo", JsonConvert.SerializeObject(messagesinfo));
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+ public string GetMessageGroupBy(int GroupBy)
+ {
+ string MessageGroupBy = GroupBy.ToString();
+ switch (GroupBy)
+ {
+ case (int)MessageGroupByEnum.EquipmentAlarm:
+ MessageGroupBy = "璁惧鎶ヨ";
+ break;
+ case (int)MessageGroupByEnum.InventoryExceedAlarm:
+ MessageGroupBy = "搴撳瓨杩囨湡棰勮";
+ break;
+ case (int)MessageGroupByEnum.InventoryLowAlarm:
+ MessageGroupBy = "浣庡簱瀛橀璀�";
+ break;
+ case (int)MessageGroupByEnum.MaterielAlarm:
+ MessageGroupBy = "鐗╂枡寰呯淮鎶ゆ姤璀�";
+ break;
+ case (int)MessageGroupByEnum.InOrderAlarm:
+ MessageGroupBy = "鍏ュ簱鍗曟姤璀�";
+ break;
+ case (int)MessageGroupByEnum.OutOrderAlarm:
+ MessageGroupBy = "鍑哄簱鍗曟姤璀�";
+ break;
+ }
+ return MessageGroupBy;
+ }
}
}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs"
index a389508..686f7e5 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs"
@@ -2,6 +2,7 @@
using HslCommunication.WebSocket;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.Ocsp;
using SqlSugar.Extensions;
using System;
@@ -10,20 +11,74 @@
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
namespace WIDESEA_Core
{
public class WebSocketHostedService : IHostedService
{
+ private readonly DBContext _dbContext;
+ private readonly ICacheService _cacheService;
private readonly WebSocketServer _webSocketServer;
- public WebSocketHostedService(WebSocketServer webSocketServer)
+ public WebSocketHostedService(DBContext dbContext, ICacheService cacheService, WebSocketServer webSocketServer)
{
_webSocketServer = webSocketServer;
+ _dbContext = dbContext;
+ _cacheService = cacheService;
+ _webSocketServer.OnClientConnected += webSocketServer_OnClientConnected;
+ }
+
+ private void webSocketServer_OnClientConnected(WebSocketSession session)
+ {
+ string MessageInfo = _cacheService.Get("MessageInfo");
+ if (!string.IsNullOrEmpty(MessageInfo))
+ {
+ List<Message>? messages = JsonConvert.DeserializeObject<List<Message>>(MessageInfo);
+ if (messages != null && messages.Count > 0)
+ {
+ foreach (var item in messages)
+ {
+ object obj = new
+ {
+ title = item.MessageGroupBy,
+ name = item.MessageName,
+ message = item.MessageInfo,
+ date = DateTime.Now.ToString(),
+ };
+ //_webSocketServer.PublishAllClientPayload(obj.Serialize());
+ _webSocketServer.SendClientPayload(session, obj.Serialize());
+ }
+ }
+ }
}
public async Task StartAsync(CancellationToken cancellationToken)
{
+ WebSocketSession? webSocketSession = _webSocketServer.OnlineSessions.FirstOrDefault(x => x.Url.Contains(App.User.UserName));
+ string MessageInfo = _cacheService.Get("MessageInfo");
+ if (!string.IsNullOrEmpty(MessageInfo))
+ {
+ List<Message>? messages = JsonConvert.DeserializeObject<List<Message>>(MessageInfo);
+ if (messages != null && messages.Count > 0)
+ {
+ foreach (var item in messages)
+ {
+ object obj = new
+ {
+ title = item.MessageGroupBy,
+ name = item.MessageName,
+ message = item.MessageInfo,
+ date = item.Date,
+ };
+ //_webSocketServer.PublishAllClientPayload(obj.Serialize());
+ if (webSocketSession != null)
+ _webSocketServer.SendClientPayload(webSocketSession, obj.Serialize());
+ }
+ }
+ }
await Task.CompletedTask;
}
@@ -31,5 +86,14 @@
{
await Task.CompletedTask;
}
+
+ public class Message
+ {
+ public int Id { get; set; }
+ public string MessageGroupBy { get; set; }
+ public string MessageName { get; set; }
+ public string MessageInfo { get; set; }
+ public DateTime Date { get; set; }
+ }
}
}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/AlarmJob.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/AlarmJob.cs"
index f53b921..6dee228 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/AlarmJob.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/AlarmJob.cs"
@@ -9,19 +9,21 @@
{
private readonly IContainerService _containerService;
private readonly IEquipmentAlarmInforService _equipmentAlarmInforService;
- public AlarmJob(IContainerService containerService, IEquipmentAlarmInforService equipmentAlarmInforService)
+ private readonly IMessageInfoService _messageInfoService;
+ public AlarmJob(IContainerService containerService, IEquipmentAlarmInforService equipmentAlarmInforService, IMessageInfoService messageInfoService)
{
_containerService = containerService;
_equipmentAlarmInforService = equipmentAlarmInforService;
+ _messageInfoService = messageInfoService;
}
//姣忛殧1绉掓墽琛屼竴娆�
- [Invoke(Begin = "2025-09-01", Interval = 1000 * 60, IsEnabled = false, SkipWhileExecuting = true)]
+ [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)]
public void Run()
{
//鍐峰簱
_containerService.Sensor();
_equipmentAlarmInforService.getDeviceStatus();
-
+ _messageInfoService.GetMessageInfo();
}
}
}
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index e96a56f..c763a66 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -45,6 +45,7 @@
builder.Services.AddWebSocketSetup();
builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
builder.Services.AddDbSetup();//Db 启动服务
+builder.Services.AddHostedService<WebSocketHostedService>();//应用初始化服务注入
builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
//builder.Services.AddHostedService<PermissionDataHostService>();//数据权限
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/Index.vue" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/Index.vue"
index a087196..7dc109d 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/Index.vue"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/Index.vue"
@@ -315,6 +315,8 @@
};
const handleMessage = (e) => {
+ // console.log("WebSocket 杩炴帴鎴愬姛");
+ // console.log("WebSocket 鎴愬姛:"+e.data);
let data = JSON.parse(e.data);
messageList.push(data);
ElNotification({
@@ -325,6 +327,9 @@
};
const createSocket = (url) => {
+ if (client && client.readyState === WebSocket.OPEN) {
+ return; // 閬垮厤閲嶅鍒涘缓杩炴帴
+ }
// 鍒涘缓WebSocket杩炴帴
//"ws://127.0.0.1:9295/admin"
client = new WebSocket(url);
@@ -333,6 +338,7 @@
client.onmessage = handleMessage;
store.commit("setWebsocket", client);
console.log("WebSocket 杩炴帴鎴愬姛");
+ // client.send("鍙戦�佹暟鎹�");
};
client.onclose = function () {
@@ -340,7 +346,7 @@
setTimeout(createSocket, 10000);
};
- client.onerror = function () {};
+ client.onerror = function (error) {console.error("WebSocket閿欒:", error);};
};
const changeTheme = (name) => {
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/Message.vue" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/Message.vue"
index e051ab6..597201a 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/Message.vue"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/Message.vue"
@@ -5,31 +5,31 @@
<div class="content">
<el-row>
<el-col :span="8">
- <label>鏀惰揣鍗曞彿锛歿{ item.formData.receiveOrderNo }}</label>
+ <label>{{ item.name}}</label>
+ </el-col>
+ <!-- <el-col :span="16">
+ <label>淇℃伅锛歿{ item.message }}</label>
</el-col>
<el-col :span="8">
- <label>璐ㄦ鍗曞彿锛歿{ item.formData.checkOrderNo }}</label>
- </el-col>
- <el-col :span="8">
- <label>鏀惰揣鏄庣粏琛屽彿锛歿{ item.formData.receiveDetailRowNo }}</label>
- </el-col>
+ <label>鏀惰揣鏄庣粏琛屽彿锛歿{ item.message }}</label>
+ </el-col> -->
</el-row>
<el-row>
- <el-col :span="8">
- <label>鐗╂枡缂栧彿锛歿{ item.formData.materielCode }}</label>
+ <el-col :span="24">
+ <label>淇℃伅锛歿{ item.message }}</label>
</el-col>
- <el-col :span="8">
+ <!-- <el-col :span="8">
<label>鍚堟牸鏁伴噺锛歿{ item.formData.qualifiedQuantity }}</label>
</el-col>
<el-col :span="8">
<label>鐗归噰鏁伴噺锛歿{ item.formData.defectedQuantity }}</label>
- </el-col>
+ </el-col> -->
</el-row>
- <el-row>
+ <!-- <el-row>
<el-col :span="8">
- <label>閫�璐ф暟閲忥細{{ item.formData.returnQuantity }}</label>
+ <label>閫�璐ф暟閲忥細{{ item.message }}</label>
</el-col>
<el-col :span="8">
<label>鎶ュ簾鏁伴噺锛歿{ item.formData.scrappedQuantity }}</label>
@@ -37,20 +37,20 @@
<el-col :span="8">
<label>璐ㄦ鎬绘暟锛歿{ item.formData.receivedQuantity }}</label>
</el-col>
- </el-row>
+ </el-row> -->
- <el-row>
+ <!-- <el-row>
<el-col :span="16">
- <label>鐗归噰璇存槑锛歿{ item.formData.defectedNote }}</label>
+ <label>鐗归噰璇存槑锛歿{ item.title }}</label>
</el-col>
<el-col :span="8">
- <label>妫�楠屼汉锛歿{ item.formData.checkUserName }}</label>
+ <label>妫�楠屼汉锛歿{ item.message }}</label>
</el-col>
- </el-row>
+ </el-row> -->
</div>
<div style="margin-top: 20px">
- <el-button type="primary">鍚屾剰</el-button
- ><el-button type="danger">椹冲洖</el-button>
+ <el-button type="primary">宸插鐞�</el-button>
+ <!-- <el-button type="danger">椹冲洖</el-button> -->
</div>
</div>
</div>
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/MessageConfig.js" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/MessageConfig.js"
index 0f18350..8c77070 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/MessageConfig.js"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WMS/src/views/index/MessageConfig.js"
@@ -10,7 +10,7 @@
//.withUrl(`${http.ipAddress}message`)
.build();
- connection.start().catch((err) => console.log(ex.message));
+ connection.start().catch((err) => console.log(err.message));
//鑷姩閲嶈繛鎴愬姛鍚庣殑澶勭悊
connection.onreconnected((connectionId) => {
console.log(connectionId);
--
Gitblit v1.9.3