From 528badf2f1efe5355975de7942fb7a26e71a8e18 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 01 十一月 2025 18:34:37 +0800
Subject: [PATCH] 优化盘点流程、出入库退货流程

---
 新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MessageInfoService.cs |  132 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 130 insertions(+), 2 deletions(-)

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 0eafba3..365a8ea 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,15 +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;
@@ -36,9 +48,14 @@
             {
                 Dt_MessageInfo dt_MessageInfo = null;
                 if (groupByEnum == MessageGroupByEnum.InventoryExceedAlarm)
+                {
                     dt_MessageInfo = BaseDal.QueryFirst(x => x.MessageName == messageName && x.MessageRemark == messageRemark);
+                    if (dt_MessageInfo != null && dt_MessageInfo.MessageInfo == messageInfo) return content;
+                }
                 else
                     dt_MessageInfo = BaseDal.QueryFirst(x => x.MessageName == messageName && x.MessageInfo == messageInfo);
+                if (groupByEnum != MessageGroupByEnum.InventoryExceedAlarm && dt_MessageInfo != null) return content;
+
                 if (dt_MessageInfo == null)
                 {
                     dt_MessageInfo = new Dt_MessageInfo();
@@ -53,6 +70,7 @@
                 {
                     if (dt_MessageInfo.MessageGroupBy == MessageGroupByEnum.InventoryExceedAlarm.ObjToInt())
                     {
+                        if (dt_MessageInfo.MessageInfo == messageInfo) return content;
                         dt_MessageInfo.MessageStatus = statusEnum.ObjToInt();
                         dt_MessageInfo.MessageName = messageName;
                         dt_MessageInfo.MessageInfo = messageInfo;
@@ -67,5 +85,115 @@
             }
             return content;
         }
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return DeleteAndIntoHty(keys);
+            //return base.DeleteData(keys);
+        }
+        public WebResponseContent DeleteAndIntoHty(object[] keys)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                List<Dt_MessageInfo> messageInfos = BaseDal.QueryData(x => keys.Contains(x.Id));
+                List<int> ints = new List<int>();
+                foreach (var item in messageInfos)
+                {
+                    item.MessageStatus = MessageStatusEnum.Processed.ObjToInt();
+                    item.Modifier = App.User.UserName;
+                    ints.Add(item.Id);
+                }
+                BaseDal.DeleteAndMoveIntoHty(messageInfos, OperateTypeEnum.浜哄伐瀹屾垚);
+                string MessageInfo = _cacheService.Get("MessageInfo");
+                if (!string.IsNullOrEmpty(MessageInfo))
+                {
+                    List<Message>? messages = JsonConvert.DeserializeObject<List<Message>>(MessageInfo);
+                    if (messages != null)
+                    {
+                        messages = messages.Where(x => !ints.Contains(x.Id)).ToList();
+                        _cacheService.AddOrUpdate("MessageInfo", JsonConvert.SerializeObject(messages));
+                    }
+                }
+                content.OK("澶勭悊鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+
+        public void GetMessageInfo()
+        {
+            try
+            {
+                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;
+                    }
+                }
+                var messinfo = BaseDal.QueryData(x => x.MessageStatus < MessageStatusEnum.Wait.ObjToInt());
+                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));
+                    item.MessageStatus = MessageStatusEnum.Wait.ObjToInt();
+                }
+                if (messagesinfo.Count > 0)
+                    _cacheService.AddOrUpdate("MessageInfo", JsonConvert.SerializeObject(messagesinfo));
+                BaseDal.UpdateData(messinfo);
+            }
+            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;
+        }
     }
 }

--
Gitblit v1.9.3