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;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common;
|
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
|
{
|
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;
|
/// <summary>
|
/// 添加通知信息
|
/// </summary>
|
/// <param name="groupByEnum"></param>
|
/// <param name="messageName"></param>
|
/// <param name="messageInfo"></param>
|
/// <param name="statusEnum"></param>
|
/// <param name="messageRemark"></param>
|
/// <returns></returns>
|
public WebResponseContent AddMessageInfo(MessageGroupByEnum groupByEnum, string messageName, string messageInfo, MessageStatusEnum statusEnum = MessageStatusEnum.Undisposed, string messageRemark = "")
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
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();
|
dt_MessageInfo.MessageGroupBy = groupByEnum.ObjToInt();
|
dt_MessageInfo.MessageStatus = statusEnum.ObjToInt();
|
dt_MessageInfo.MessageName = messageName;
|
dt_MessageInfo.MessageInfo = messageInfo;
|
dt_MessageInfo.MessageRemark = messageRemark;
|
BaseDal.AddData(dt_MessageInfo);
|
}
|
else
|
{
|
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;
|
dt_MessageInfo.MessageRemark = messageRemark;
|
BaseDal.UpdateData(dt_MessageInfo);
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
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;
|
}
|
}
|
}
|