DataCollectionSysyem.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. using Newtonsoft.Json;
  2. using ServiceCenter;
  3. using ServiceCenter.Extensions;
  4. using ServiceCenter.Redis;
  5. using ServiceCenter.SqlSugars;
  6. using System.ComponentModel;
  7. using WCS.Core;
  8. using WCS.Entity;
  9. using WCS.Entity.Protocol.BCR;
  10. using WCS.Entity.Protocol.DataStructure;
  11. using WCS.Entity.Protocol.SRM;
  12. using WCS.Entity.Protocol.Station;
  13. using WCS.Service.Worlds;
  14. using WCS.WorkEngineering.Extensions;
  15. namespace WCS.Service.Systems
  16. {
  17. /// <summary>
  18. /// 数据采集系统
  19. /// </summary>
  20. [BelongTo(typeof(DataCollectionWorld))]
  21. [Description("数据采集系统")]
  22. public class DataCollectionSysyem : DeviceSystem<SRM>
  23. {
  24. public List<Station> ConvList;
  25. public List<Device<IStation91>> Conv91List;
  26. public List<Device<IBCR81>> Bcrs;
  27. public List<SRM> Srms;
  28. public DataCollectionSysyem()
  29. {
  30. ConvList = Device.All.Where(v => v.HasProtocol(typeof(IStation523))).Select(v => new Station(v, this.World)).ToList();
  31. Conv91List = Device.All.Where(v => v.HasProtocol(typeof(IStation91))).Select(v => new Device<IStation91>(v, this.World)).ToList();
  32. Bcrs = Device.All.Where(v => v.HasProtocol(typeof(IBCR81))).Select(v => new Device<IBCR81>(v, this.World)).ToList();
  33. Srms = Device.All.Where(v => v.HasProtocol(typeof(ISRM520))).Select(v => new SRM(v, this.World)).ToList();
  34. }
  35. protected override bool ParallelDo => true;
  36. protected override bool SaveLogsToFile => true;
  37. public override bool Select(Device dev)
  38. {
  39. return dev.Code == "SRM1";
  40. }
  41. public override void Do(SRM obj)
  42. {
  43. //try
  44. //{
  45. // SqlSugarHelper.Do(db =>
  46. // {
  47. // DeviceDataPack pack = new DeviceDataPack();
  48. // //处理输送线
  49. // List<StationData> DevList = new List<StationData>();
  50. // foreach (var item in ConvList)
  51. // {
  52. // var dev = new StationData()
  53. // {
  54. // Code = item.Entity.Code,
  55. // Frame = DateTime.Now,
  56. // D520 = TypeExtension.Mapper<WCS_Station520, IStation520>(item.Data),
  57. // D521 = TypeExtension.Mapper<WCS_Station521, IStation521>(item.Data2),
  58. // D523 = TypeExtension.Mapper<WCS_Station523, IStation523>(item.Data3),
  59. // D90 = new WCS_Station90(),
  60. // D91 = new WCS_Station91(),
  61. // D80 = new WCS_BCR80(),
  62. // D81 = new WCS_BCR81()
  63. // };
  64. // if (Conv91List.Any(v => v.Entity.Code == item.Entity.Code))
  65. // {
  66. // var d91 = Conv91List.First(v => v.Entity.Code == item.Entity.Code);
  67. // dev.D91 = TypeExtension.Mapper<WCS_Station91, IStation91>(d91.Data);
  68. // }
  69. // if (Bcrs.Any(v => v.Entity.Code == item.Entity.Code))
  70. // {
  71. // var d81 = Bcrs.First(v => v.Entity.Code == item.Entity.Code);
  72. // dev.D81 = TypeExtension.Mapper<WCS_BCR81, IBCR81>(d81.Data);
  73. // }
  74. // //保存报警
  75. // RedisHub.WMS.Set($"{nameof(EquipmentAlarm)}:{item.Entity.Code}", JsonConvert.SerializeObject(new EquipmentAlarm()
  76. // {
  77. // Code = item.Entity.Code,
  78. // Msg = item.Data3.Alarm.ToString(),
  79. // Time = DateTime.Now
  80. // }));
  81. // DevList.Add(dev);
  82. // }
  83. // //保存模式
  84. // var status = ConvList.Select(v => new Tuple<string, string>(v.Entity.Code, v.Data2.Mode.ToString()));
  85. // RedisHub.WMS.Set($"ConvStatus", JsonConvert.SerializeObject(status));
  86. // pack.StationDatas = new DeviceDataCollection<StationData>(DateTime.Now, DevList.ToArray());
  87. // //处理堆垛机
  88. // List<SRMData> srmList = new List<SRMData>();
  89. // foreach (var item in Srms)
  90. // {
  91. // var dev = new SRMData()
  92. // {
  93. // Code = item.Entity.Code,
  94. // Frame = DateTime.Now,
  95. // D520 = TypeExtension.Mapper<WCS_SRM520, ISRM520>(item.Data),
  96. // D521 = TypeExtension.Mapper<WCS_SRM521, ISRM521>(item.Data2),
  97. // D537 = TypeExtension.Mapper<WCS_SRM537, ISRM537>(item.Data3),
  98. // };
  99. // //保存报警
  100. // RedisHub.WMS.Set($"{nameof(EquipmentAlarm)}:{item.Entity.Code}", JsonConvert.SerializeObject(new EquipmentAlarm()
  101. // {
  102. // Code = item.Entity.Code,
  103. // Msg = item.Data3.Alarm.ToString(),
  104. // Time = DateTime.Now
  105. // }));
  106. // srmList.Add(dev);
  107. // }
  108. // //保存模式
  109. // var status1 = Srms.Select(v => new Tuple<string, string>(v.Entity.Code, v.Data2.AutoStatus.ToString()));
  110. // RedisHub.WMS.Set($"SrmStatus", JsonConvert.SerializeObject(status1));
  111. // pack.SRMDatas = new DeviceDataCollection<SRMData>(DateTime.Now, srmList.ToArray());
  112. // pack.Frame = DateTime.Now;
  113. // //保存到Redis
  114. // RedisHub.Monitor.RPush("Packs", pack);
  115. // RedisHub.Monitor.Set(nameof(DeviceDataPack), pack);
  116. // if (RedisHub.Monitor.LLen("Packs") > 500000)
  117. // {
  118. // RedisHub.Monitor.LTrim("Packs", 5000, -1);
  119. // }
  120. // //保存到数据库
  121. // var plcData = new WCS_PlcData()
  122. // {
  123. // AddWho = "WCS",
  124. // WAREHOUSE = ServiceHub.WarehouseName,
  125. // CONTENT = JsonConvert.SerializeObject(pack, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }),
  126. // };
  127. // db.Default.Insertable(plcData).ExecuteCommand();
  128. // });
  129. //}
  130. //catch (Exception ex)
  131. //{
  132. // //World.Log(ex.StackTrace, ServiceCenter.Logs.LogLevelEnum.Mid);
  133. //}
  134. }
  135. }
  136. /// <summary>
  137. /// 设备报警
  138. /// </summary>
  139. public class EquipmentAlarm
  140. {
  141. /// <summary>
  142. /// 设备号
  143. /// </summary>
  144. public string Code { get; set; }
  145. /// <summary>
  146. /// 内容
  147. /// </summary>
  148. public string Msg { get; set; }
  149. /// <summary>
  150. /// 时间
  151. /// </summary>
  152. public DateTime Time { get; set; }
  153. }
  154. }