using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using RDH.Data.Models; using RDH.PharmacyPlatform.Sync.Core; namespace Rdh.SocketServer.Client.MQ { /// /// 表示消息服务的类 /// public class MQService { private String? _serviceState; private Boolean _initialized; private static MQService _singleton; static MQService() { _singleton = new MQService(); } private MQService() { _serviceState = "未初始化"; _initialized = false; } public static MQService Singleton { get => _singleton; } public String? EleMedKitCabinetNodeName { get; set; } public String? Init() { _initialized = true; _serviceState = Bootstrap.Init(); if (_serviceState == null) { Bootstrap.RegisteLogger(new MQLogger()); _serviceState = MessageClient.Register(); } return _serviceState; } public String? Send(MessageData data) { if (!_initialized) { Init(); } if (_serviceState != null) { return _serviceState; } return MessageClient.SendMessage(data); } /// /// 发送请求归还药箱的消息 /// public String? RequestReturnMedKit(UserInfo userInfo, StorageSpacePortableLink storageLink) { if (EleMedKitCabinetNodeName == null) { return "请设置药箱柜同步节点名称"; } MessageData data = new MessageData { CreateTime = DateTime.Now, FilterType = MessageFilterType.Id, MessageContent = JsonSerializer.SerializeObject(new Tuple(userInfo, storageLink)), MessageContentType = "RequestReturnMedKit", SourceId = Bootstrap.Config.LocalNodeId, TargetId = EleMedKitCabinetNodeName, }; return Send(data); } } }