From 649c2be62d7628292e8852d2a525fd704929818b Mon Sep 17 00:00:00 2001 From: yanghongwei Date: Mon, 10 Jun 2024 17:55:56 +0800 Subject: [PATCH] =?UTF-8?q?st=20=20=E8=AE=BE=E7=BD=AE=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- langguanApi.xml | 12 ++++++++++ langguanApi/Program.cs | 3 +++ langguanApi/Service/AlertService.cs | 20 +++++++++++++++++ langguanApi/Service/DeviceService.cs | 28 +++++++++++++++++++----- langguanApi/Service/HJ212SocketServer.cs | 28 +++++++++++++++++++++--- langguanApi/Service/Hj212Service.cs | 25 ++++++++++----------- langguanApi/Service/PingService.cs | 2 +- 7 files changed, 95 insertions(+), 23 deletions(-) diff --git a/langguanApi.xml b/langguanApi.xml index 891a57d..e227f9c 100644 --- a/langguanApi.xml +++ b/langguanApi.xml @@ -1725,6 +1725,13 @@ + + + 取设备及数据 + + + + 是否存在 @@ -2321,5 +2328,10 @@ 暂存服务 + + + 服务容器 + + diff --git a/langguanApi/Program.cs b/langguanApi/Program.cs index bf25e16..9a14adf 100644 --- a/langguanApi/Program.cs +++ b/langguanApi/Program.cs @@ -91,5 +91,8 @@ app.Run(); /// public static class ServiceLocator { + /// + /// + /// public static IServiceProvider Instance { get; set; } } diff --git a/langguanApi/Service/AlertService.cs b/langguanApi/Service/AlertService.cs index 2a522ac..ce099b2 100644 --- a/langguanApi/Service/AlertService.cs +++ b/langguanApi/Service/AlertService.cs @@ -1,6 +1,8 @@ using langguanApi.Extensions.AutoDI; using langguanApi.Model; using langguanApi.Model.Dto; +using langguanApi.Model.Entity; +using Npoi.Mapper; using System.Linq.Expressions; namespace langguanApi.Service @@ -34,6 +36,24 @@ namespace langguanApi.Service Expression> exp = filter => filter.CreateDateTime >= DateTime.Now.AddDays(-7) && filter.IsDelete == false; return (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime); } + public async Task ExportData(DateTime start, DateTime end) + { + Expression> exp = filter => filter.CreateDateTime >= start + && filter.CreateDateTime <= end + && filter.IsDelete == false; + var list = await base.GetListWithExp(exp); + var mapper = new Mapper(); + mapper.Map("报警开始时间", s => s.CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss")) + .Map("设备名称", s => s.deviceName) + // .Map("工序", s => s.) + .Map("新能源", s => s.NewCar ? "是" : "否") + .Map("燃油车", s => s.Emissions) + .Map("出厂日间 ", s => s.OutTime) + .Format("yyyy-MM-dd HH:mm:ss", s => s.CreateDateTime); + MemoryStream stream = new MemoryStream(); + mapper.Save(stream, list.ToList(), sheetName: "sheet1", leaveOpen: true); + return stream.ToArray(); + } /// /// 分页取数据 /// diff --git a/langguanApi/Service/DeviceService.cs b/langguanApi/Service/DeviceService.cs index eeee61c..bca08d2 100644 --- a/langguanApi/Service/DeviceService.cs +++ b/langguanApi/Service/DeviceService.cs @@ -10,10 +10,8 @@ namespace langguanApi.Service [ServiceInjection(InjectionType.Transient)] public class DeviceService : BaseService { - public Hj212Service _hj212Service; - public DeviceService(IConfiguration config, Hj212Service hj212Service) : base(config, nameof(Device)) + public DeviceService(IConfiguration config) : base(config, nameof(Device)) { - _hj212Service = hj212Service; } /// @@ -31,6 +29,11 @@ namespace langguanApi.Service await base.CreateAsync(entity); return new ApiResult { code = 0, msg = "" }; } + /// + /// 取设备及数据 + /// + /// + /// public async Task GetDeviceAndData(string id) { var entity = await base.GetAsync(id); @@ -38,8 +41,23 @@ namespace langguanApi.Service { return new ApiResult { code = 1, msg = "设备不存在" }; } - var items = await _hj212Service.GetViewByDeviceMn(entity.deviceMN); - return new ApiResult { code = 0, msg = "", data = new { device = entity, items } }; + var _service = ServiceLocator.Instance.GetService(); + if (_service == null) + { + return new ApiResult + { + code = 0, + msg = "", + data = new + { + device = entity, + items = await _service.GetViewByDeviceMn(entity.deviceMN) + } + }; + + } + // var items = await _hj212Service.GetViewByDeviceMn(entity.deviceMN); + return new ApiResult { code = 0, msg = "", data = new { device = entity, items = "" } }; } /// diff --git a/langguanApi/Service/HJ212SocketServer.cs b/langguanApi/Service/HJ212SocketServer.cs index 98834b6..049d6fa 100644 --- a/langguanApi/Service/HJ212SocketServer.cs +++ b/langguanApi/Service/HJ212SocketServer.cs @@ -10,13 +10,15 @@ using langguanApi.Extensions.AutoDI; namespace langguanApi.Service { - + public class HJ212SocketServer { private Hj212Service _hj212Service; - public HJ212SocketServer(Hj212Service hj212Service) + private DeviceService _deviceService; + public HJ212SocketServer(Hj212Service hj212Service, DeviceService deviceService) { _hj212Service = hj212Service; + _deviceService = deviceService; } /// /// 缓冲器 @@ -90,15 +92,35 @@ namespace langguanApi.Service { Console.WriteLine("收到自: " + session.RemoteIPEndPoint + ": " + rawText); HJ212_2017 hj = new HJ212_2017(); + // st 27 =voc,st=31 cems, st=32,tsp if (hj.DecodeData(rawText)) { var body = JsonConvert.SerializeObject(hj.CP); var entity = JsonConvert.DeserializeObject(body); entity.deviceMN = hj.DATA_HEAD["MN"]; + await _deviceService.Add(new DeviceAddDto + { + deviceMN = hj.DATA_HEAD["MN"], + DeviceType = SetDeviceType(hj.DATA_HEAD["ST"]), + Ip= session.RemoteIPEndPoint.ToString(), + }); //校验通过,开始入库 - await _hj212Service.Add(entity, session.RemoteIPEndPoint.ToString()); + await _hj212Service.Add(entity, session.RemoteIPEndPoint.ToString()); } } + private int SetDeviceType(string st) + { + //st 27 =voc,st=31 cems, st=32,tsp + //1 voc,2 cems,3,tsp,4 video + switch (st) + { + case "27": return 1; + case "31": return 2; + case "32": return 3; + case "33": return 4; + } + return 0; + } private void OnNetServer_ExceptionCaught(Exception ex) { Console.WriteLine("Error in NetServer" + ex); diff --git a/langguanApi/Service/Hj212Service.cs b/langguanApi/Service/Hj212Service.cs index ef2906b..80cb919 100644 --- a/langguanApi/Service/Hj212Service.cs +++ b/langguanApi/Service/Hj212Service.cs @@ -22,20 +22,17 @@ namespace langguanApi.Service public async Task Add(Model.HJ212 hJ212, string deviceIp) { ////判断设备类型 tsp 会有经纬度数据 - int deviceType = 1;//设备类型为1 =voc - if (hJ212.lat > 0 && hJ212.lng > 0) - { - deviceType = 1; - } - //先判断当前设备是否存在 - await _deviceSerive.Add(new DeviceAddDto() - { - deviceMN = hJ212.deviceMN, - Ip = deviceIp, - lat = hJ212.lat, - lng = hJ212.lng, - DeviceType = deviceType - }); + // int deviceType = 1;//设备类型为1 =voc + + ////先判断当前设备是否存在 + //await _deviceSerive.Add(new DeviceAddDto() + //{ + // deviceMN = hJ212.deviceMN, + // Ip = deviceIp, + // lat = hJ212.lat, + // lng = hJ212.lng, + // DeviceType = deviceType + //}); await base.CreateAsync(hJ212); } /// diff --git a/langguanApi/Service/PingService.cs b/langguanApi/Service/PingService.cs index 20f9d0a..da80029 100644 --- a/langguanApi/Service/PingService.cs +++ b/langguanApi/Service/PingService.cs @@ -24,7 +24,7 @@ namespace langguanApi.Service /// /// /// - public void CreatTask() + public async void CreatTask() { //5分钟执行一次