| 新建文件夹/WIDESEA_WMSServer/ClassLibrary1/IMessageInfoService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/AlarmJob.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WMS/src/views/Index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WMS/src/views/index/Message.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 新建文件夹/WMS/src/views/index/MessageConfig.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
н¨Îļþ¼Ð/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(); } } н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs
@@ -1,4 +1,9 @@ using SqlSugar.Extensions; using 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; } } } н¨Îļþ¼Ð/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; } } } } н¨Îļþ¼Ð/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(); } } } н¨Îļþ¼Ð/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>();//æ°æ®æé н¨Îļþ¼Ð/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) => { н¨Îļþ¼Ð/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> н¨Îļþ¼Ð/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);