电子药箱通讯服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MQService.cs 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using RDH.Data.Models;
  7. using RDH.PharmacyPlatform.Sync.Core;
  8. namespace Rdh.SocketServer.Client.MQ
  9. {
  10. /// <summary>
  11. /// 表示消息服务的类
  12. /// </summary>
  13. public class MQService
  14. {
  15. private String? _serviceState;
  16. private Boolean _initialized;
  17. private static MQService _singleton;
  18. static MQService()
  19. {
  20. _singleton = new MQService();
  21. }
  22. private MQService()
  23. {
  24. _serviceState = "未初始化";
  25. _initialized = false;
  26. }
  27. public static MQService Singleton
  28. {
  29. get => _singleton;
  30. }
  31. public String? EleMedKitCabinetNodeName { get; set; }
  32. public String? Init()
  33. {
  34. _initialized = true;
  35. _serviceState = Bootstrap.Init();
  36. if (_serviceState == null)
  37. {
  38. Bootstrap.RegisteLogger(new MQLogger());
  39. _serviceState = MessageClient.Register();
  40. }
  41. return _serviceState;
  42. }
  43. public String? Send(MessageData data)
  44. {
  45. if (!_initialized)
  46. {
  47. Init();
  48. }
  49. if (_serviceState != null)
  50. {
  51. return _serviceState;
  52. }
  53. return MessageClient.SendMessage(data);
  54. }
  55. /// <summary>
  56. /// 发送请求归还药箱的消息
  57. /// </summary>
  58. public String? RequestReturnMedKit(UserInfo userInfo, StorageSpacePortableLink storageLink)
  59. {
  60. if (EleMedKitCabinetNodeName == null)
  61. {
  62. return "请设置药箱柜同步节点名称";
  63. }
  64. MessageData data = new MessageData
  65. {
  66. CreateTime = DateTime.Now,
  67. FilterType = MessageFilterType.Id,
  68. MessageContent = JsonSerializer.SerializeObject(new Tuple<UserInfo, StorageSpacePortableLink>(userInfo, storageLink)),
  69. MessageContentType = "RequestReturnMedKit",
  70. SourceId = Bootstrap.Config.LocalNodeId,
  71. TargetId = EleMedKitCabinetNodeName,
  72. };
  73. return Send(data);
  74. }
  75. }
  76. }