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