25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 

65 satır
3.0 KiB

  1. using Google.Protobuf;
  2. using JT809.DotNetty.Core.Handlers;
  3. using JT809.DotNetty.Core.Interfaces;
  4. using JT809.DotNetty.Core.Metadata;
  5. using JT809.GrpcProtos;
  6. using JT809.KafkaService;
  7. using JT809.Protocol;
  8. using JT809.Protocol.SubMessageBody;
  9. using JT809.PubSub.Abstractions;
  10. using JT809.Superior.Server.Configs;
  11. using Microsoft.Extensions.Logging;
  12. using Microsoft.Extensions.Options;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.Text;
  16. namespace JT809.Superior.Server
  17. {
  18. public sealed class JT809SuperiorMsgIdReceiveHandler : JT809SuperiorMsgIdReceiveHandlerBase
  19. {
  20. private readonly JT809_GpsPositio_Producer producer;
  21. private readonly JT809GpsOptions gpsOptions;
  22. public JT809SuperiorMsgIdReceiveHandler(
  23. IOptions<JT809GpsOptions>jt809GpsAccessor,
  24. JT809_GpsPositio_Producer producer,
  25. ILoggerFactory loggerFactory,
  26. IJT809SubordinateLoginService jT809SubordinateLoginService,
  27. IJT809VerifyCodeGenerator verifyCodeGenerator)
  28. : base(loggerFactory, jT809SubordinateLoginService, verifyCodeGenerator)
  29. {
  30. this.producer = producer;
  31. this.gpsOptions = jt809GpsAccessor.Value;
  32. }
  33. public override JT809Response Msg0x1200_0x1202(JT809Request request)
  34. {
  35. var exchangeMessageBodies = request.Package.Bodies as JT809ExchangeMessageBodies;
  36. var gpsBodies = exchangeMessageBodies.SubBodies as JT809_0x1200_0x1202;
  37. JT809GpsPosition gpsPosition = new JT809GpsPosition();
  38. gpsPosition.Vno = exchangeMessageBodies.VehicleNo;
  39. gpsPosition.VColor = (byte)exchangeMessageBodies.VehicleColor;
  40. gpsPosition.Alarm = (int)gpsBodies.VehiclePosition.Alarm;
  41. gpsPosition.Altitude = gpsBodies.VehiclePosition.Altitude;
  42. gpsPosition.Direction = gpsBodies.VehiclePosition.Direction;
  43. gpsPosition.Encrypt = (byte)gpsBodies.VehiclePosition.Encrypt;
  44. gpsPosition.State = (int)gpsBodies.VehiclePosition.State;
  45. gpsPosition.Lat = gpsBodies.VehiclePosition.Lat;
  46. gpsPosition.Lon= gpsBodies.VehiclePosition.Lon;
  47. gpsPosition.Vec1 = gpsBodies.VehiclePosition.Vec1;
  48. gpsPosition.Vec2 = gpsBodies.VehiclePosition.Vec2;
  49. gpsPosition.Vec3 =(int)gpsBodies.VehiclePosition.Vec3;
  50. gpsPosition.GpsTime = (new DateTime(
  51. gpsBodies.VehiclePosition.Year,
  52. gpsBodies.VehiclePosition.Month,
  53. gpsBodies.VehiclePosition.Day,
  54. gpsBodies.VehiclePosition.Hour,
  55. gpsBodies.VehiclePosition.Minute,
  56. gpsBodies.VehiclePosition.Second).ToUniversalTime().Ticks - 621355968000000000) / 10000000;
  57. gpsPosition.FromChannel = gpsOptions.FromChannel;
  58. producer.ProduceAsync($"{0x1202}", $"{exchangeMessageBodies.VehicleNo}{exchangeMessageBodies.VehicleColor}", gpsPosition.ToByteArray());
  59. return base.Msg0x1200_0x1202(request);
  60. }
  61. }
  62. }