yanjinhui
5 天以前 3d3598eea1b93ed7f977d077355ebbcc1270ba38
н¨Îļþ¼Ð/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;
@@ -40,6 +51,8 @@
                    dt_MessageInfo = BaseDal.QueryFirst(x => x.MessageName == messageName && x.MessageRemark == messageRemark);
                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();
@@ -54,6 +67,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;
@@ -68,18 +82,36 @@
            }
            return content;
        }
        public WebResponseContent DeleteAndIntoHty(int[] keys)
        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)
            {
@@ -87,5 +119,79 @@
            }
            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());
                messagesinfo = messagesinfo.Where(x => !messinfo.Select(x => x.Id).Contains(x.Id)).ToList();
                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;
        }
    }
}