DataCollectionSysyem.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using Newtonsoft.Json;
  2. using ServiceCenter;
  3. using ServiceCenter.Extensions;
  4. using ServiceCenter.Helpers;
  5. using ServiceCenter.SqlSugars;
  6. using System.ComponentModel;
  7. using WCS.Core;
  8. using WCS.Entity;
  9. using WCS.Entity.Protocol.DataStructure;
  10. using WCS.Entity.Protocol.Station;
  11. using WCS.Service.Worlds;
  12. using WCS.WorkEngineering.Extensions;
  13. namespace WCS.Service.Systems
  14. {
  15. /// <summary>
  16. /// 数据采集系统
  17. /// </summary>
  18. [BelongTo(typeof(DataCollectionWorld))]
  19. [Description("数据采集系统")]
  20. public class DataCollectionSysyem : DeviceSystem<SRM>
  21. {
  22. public List<Station> ConvList;
  23. public List<Device<IStation91>> Conv91List;
  24. public DataCollectionSysyem()
  25. {
  26. ConvList = Device.All.Where(v => v.HasProtocol(typeof(IStation523))).Select(v => new Station(v, this.World)).ToList();
  27. Conv91List = Device.All.Where(v => v.HasProtocol(typeof(IStation91))).Select(v => new Device<IStation91>(v, this.World)).ToList();
  28. }
  29. protected override bool ParallelDo => true;
  30. protected override bool SaveLogsToFile => true;
  31. public override bool Select(Device dev)
  32. {
  33. return dev.Code == "SRM1";
  34. }
  35. public override void Do(SRM obj)
  36. {
  37. SqlSugarHelper.Do(db =>
  38. {
  39. DeviceDataPack pack = new DeviceDataPack();
  40. List<StationData> DevList = new List<StationData>();
  41. foreach (var item in ConvList)
  42. {
  43. var dev = new StationData()
  44. {
  45. Code = item.Entity.Code,
  46. Frame = DateTime.Now,
  47. D520 = TypeExtension.Mapper<WCS_Station520, IStation520>(item.Data),
  48. D521 = TypeExtension.Mapper<WCS_Station521, IStation521>(item.Data2),
  49. D523 = TypeExtension.Mapper<WCS_Station523, IStation523>(item.Data3),
  50. D91 = new WCS_Station91()
  51. };
  52. if (Conv91List.Any(v => v.Entity.Code == item.Entity.Code))
  53. {
  54. var d91 = Conv91List.First(v => v.Entity.Code == item.Entity.Code);
  55. dev.D91 = TypeExtension.Mapper<WCS_Station91, IStation91>(d91.Data);
  56. }
  57. DevList.Add(dev);
  58. }
  59. pack.StationDatas = new DeviceDataCollection<StationData>(DateTime.Now, DevList.ToArray());
  60. pack.Frame = DateTime.Now;
  61. //pack.
  62. //byte[] bytes = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
  63. var plcData = new WCS_PlcData()
  64. {
  65. AddWho = "WCS",
  66. WAREHOUSE = ServiceHub.WarehouseName,
  67. CONTENT = JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }),
  68. };
  69. var a = TypeConversionHelper.SerializeRedisValue(ConvList);
  70. //对bytes进行数据压缩
  71. //plcData.CONTENT = bytes.Compress();
  72. db.Default.Insertable(plcData).ExecuteCommand();
  73. });
  74. }
  75. }
  76. }