首页,报警数据,检测数据

This commit is contained in:
yanghongwei 2024-06-14 00:39:07 +08:00
parent f71dac2ac2
commit 846c921a65
7 changed files with 267 additions and 29 deletions

View File

@ -97,6 +97,21 @@
<param name="Source">需要解密的字符串</param> <param name="Source">需要解密的字符串</param>
<returns>解密后的字符串</returns> <returns>解密后的字符串</returns>
</member> </member>
<member name="M:langguanApi.Controllers.AlertController.export(System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
<summary>
export data
</summary>
<param name="start"></param>
<param name="end"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.AlertController.TestAdd(langguanApi.Model.AddAlertDto)">
<summary>
add alert
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.DeviceController.#ctor(langguanApi.Service.DeviceService)"> <member name="M:langguanApi.Controllers.DeviceController.#ctor(langguanApi.Service.DeviceService)">
<summary> <summary>
@ -879,6 +894,36 @@
id id
</summary> </summary>
</member> </member>
<member name="P:langguanApi.Model.Entity.Detection.DeviceId">
<summary>
deviceId
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Detection.DeviceName">
<summary>
deviceName
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Detection.OrganizedName">
<summary>
organizedName
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Detection.keyword">
<summary>
keyword
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Detection.Standard">
<summary>
standard
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Detection.deviceValue">
<summary>
deviceValue
</summary>
</member>
<member name="T:langguanApi.Model.Entity.Ledger"> <member name="T:langguanApi.Model.Entity.Ledger">
<summary> <summary>
台账 台账
@ -1550,19 +1595,27 @@
注册日期 注册日期
</summary> </summary>
</member> </member>
<member name="M:langguanApi.Service.AlertService.Add(langguanApi.Model.Alert)"> <member name="M:langguanApi.Service.AlertService.Add(langguanApi.Model.AddAlertDto)">
<summary> <summary>
新加 新加
</summary> </summary>
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.AlertService.IndexData"> <member name="M:langguanApi.Service.AlertService.IndexData(System.Int32)">
<summary> <summary>
首页数据,最近7天的 首页数据,最近7天的
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.AlertService.ExportData(System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
<summary>
导出数据
</summary>
<param name="start"></param>
<param name="end"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.AlertService.GetPage(langguanApi.Model.reqpage)"> <member name="M:langguanApi.Service.AlertService.GetPage(langguanApi.Model.reqpage)">
<summary> <summary>
分页取数据 分页取数据
@ -1723,6 +1776,19 @@
<param name="exp"></param> <param name="exp"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.DetectionService.GetIndexData(System.Int32)">
<summary>
//获取最新的数据
</summary>
<param name="num"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.DetectionService.Export(System.DateTime,System.DateTime)">
<summary>
导出数据
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Service.DeviceService.Add(langguanApi.Model.DeviceAddDto)"> <member name="M:langguanApi.Service.DeviceService.Add(langguanApi.Model.DeviceAddDto)">
<summary> <summary>
新加 新加
@ -1914,7 +1980,7 @@
HomeService HomeService
</summary> </summary>
</member> </member>
<member name="M:langguanApi.Service.HomeService.#ctor(langguanApi.Service.DeviceService,langguanApi.Service.Hj212Service,Microsoft.Extensions.Configuration.IConfiguration,langguanApi.Common.CacheManager,langguanApi.Service.WeatherService,langguanApi.Service.AlertService)"> <member name="M:langguanApi.Service.HomeService.#ctor(langguanApi.Service.DeviceService,langguanApi.Service.Hj212Service,Microsoft.Extensions.Configuration.IConfiguration,langguanApi.Common.CacheManager,langguanApi.Service.WeatherService,langguanApi.Service.AlertService,langguanApi.Service.DetectionService)">
<summary> <summary>
HomeService HomeService
</summary> </summary>

View File

@ -0,0 +1,44 @@
using langguanApi.Model;
using langguanApi.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace langguanApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AlertController : ControllerBase
{
private readonly AlertService _alertService;
public AlertController(AlertService alertService)
{
_alertService = alertService;
}
/// <summary>
/// export data 默认最近7天数据
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
[HttpGet("export")]
public async Task<IActionResult> export(DateTime? start, DateTime? end)
{
start = start.HasValue ? start.Value.Date : DateTime.Now.AddDays(-7);
end = end.HasValue ? end.Value.Date.AddDays(1) : DateTime.Now.Date.AddDays(1);
var alerts = await _alertService.ExportData(start, end);
return File(alerts, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
$"{start.Value.ToString("yyyy-MM-dd")}-{end.Value.ToString("yyyy-MM-dd")}_设备报警.xlsx");
}
/// <summary>
/// add alert
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("TestAdd")]
public async Task<IActionResult> TestAdd(AddAlertDto input)
{
var result = await _alertService.Add(input);
return Ok(result);
}
}
}

View File

@ -10,4 +10,14 @@
public string AlertType { get; set; } public string AlertType { get; set; }
public string AlertContent { get; set; } public string AlertContent { get; set; }
} }
public class AddAlertDto
{
public string DeviceId { get; set; }
public string DeviceMn { get; set; }
public string deviceName { get; set; }
public string DeviceType { get; set; }
public string DeviceStatus { get; set; }
public string AlertType { get; set; }
public string AlertContent { get; set; }
}
} }

View File

@ -0,0 +1,30 @@
namespace langguanApi.Model.Entity
{
public class Detection : BaseModel
{
/// <summary>
/// deviceId
/// </summary>
public string DeviceId { get; set; }
/// <summary>
/// deviceName
/// </summary>
public string DeviceName { get; set; }
/// <summary>
/// organizedName
/// </summary>
public string OrganizedName { get; set; }
/// <summary>
/// keyword
/// </summary>
public string keyword { get; set; }
/// <summary>
/// standard
/// </summary>
public string Standard { get; set; }
/// <summary>
/// deviceValue
/// </summary>
public string deviceValue { get; set; }
}
}

View File

@ -2,6 +2,7 @@
using langguanApi.Model; using langguanApi.Model;
using langguanApi.Model.Dto; using langguanApi.Model.Dto;
using langguanApi.Model.Entity; using langguanApi.Model.Entity;
using Mapster;
using Npoi.Mapper; using Npoi.Mapper;
using System.Linq.Expressions; using System.Linq.Expressions;
@ -18,11 +19,12 @@ namespace langguanApi.Service
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
public async Task<ApiResult> Add(Alert input) public async Task<ApiResult> Add(AddAlertDto input)
{ {
if (input != null) if (input != null)
{ {
await base.CreateAsync(input); var entity = input.Adapt<Alert>();
await base.CreateAsync(entity);
return new ApiResult { code = 0, msg = "" }; return new ApiResult { code = 0, msg = "" };
} }
return new ApiResult { code = -1, msg = "" }; ; return new ApiResult { code = -1, msg = "" }; ;
@ -31,28 +33,45 @@ namespace langguanApi.Service
/// 首页数据,最近7天的 /// 首页数据,最近7天的
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task<object> IndexData() public async Task<object> IndexData(int num = 50)
{ {
Expression<Func<Alert, bool>> exp = filter => filter.CreateDateTime >= DateTime.Now.AddDays(-7) && filter.IsDelete == false; Expression<Func<Alert, bool>> exp = filter => filter.IsDelete == false;
return (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime); return (await base.GetListWithExp(exp))
.OrderByDescending(s => s.CreateDateTime)
.Take(num)
.Select(s => new
{
s.AlertContent,
s.deviceName,
s.CreateDateTime
}).ToList();
} }
public async Task<byte[]> ExportData(DateTime start, DateTime end) /// <summary>
///导出数据
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
public async Task<byte[]> ExportData(DateTime? start, DateTime? end)
{ {
Expression<Func<Alert, bool>> exp = filter => filter.CreateDateTime >= start Expression<Func<Alert, bool>> exp = filter => filter.CreateDateTime >= start
&& filter.CreateDateTime <= end && filter.CreateDateTime <= end
&& filter.IsDelete == false; && filter.IsDelete == false;
var list = await base.GetListWithExp(exp); var list = (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime).ToList();
var mapper = new Mapper(); if (list.Any())
mapper.Map<Alert>("报警开始时间", s => s.CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss")) {
.Map<Alert>("设备名称", s => s.deviceName) var mapper = new Mapper();
// .Map<Alert>("工序", s => s.) mapper.Map<Alert>("报警开始时间", s => s.CreateDateTime)
.Map<Ledger>("新能源", s => s.NewCar ? "是" : "否") .Map<Alert>("设备名称", s => s.deviceName)
.Map<Ledger>("燃油车", s => s.Emissions) // .Map<Alert>("工序", s => s.)
.Map<Ledger>("出厂日间 ", s => s.OutTime) .Map<Alert>("内容", s => s.AlertContent)
.Format<Alert>("yyyy-MM-dd HH:mm:ss", s => s.CreateDateTime); .Format<Alert>("yyyy-MM-dd HH:mm:ss", s => s.CreateDateTime);
MemoryStream stream = new MemoryStream(); MemoryStream stream = new MemoryStream();
mapper.Save(stream, list.ToList(), sheetName: "sheet1", leaveOpen: true); mapper.Save(stream, list, sheetName: "sheet1", leaveOpen: true);
return stream.ToArray(); return stream.ToArray();
}
return null;
} }
/// <summary> /// <summary>
/// 分页取数据 /// 分页取数据

View File

@ -0,0 +1,47 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using langguanApi.Model.Entity;
using Npoi.Mapper;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace langguanApi.Service
{
[ServiceInjection(InjectionType.Transient)]
public class DetectionService : BaseService<Detection>
{
public DetectionService(IConfiguration config) : base(config, nameof(Detection))
{
}
/// <summary>
/// //获取最新的数据
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public async Task<object> GetIndexData(int num = 50)
{
Expression<Func<Detection, bool>> exp = filter => true;
var result = (await GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime).Take(num).ToList();
return result;
}
/// <summary>
/// 导出数据
/// </summary>
/// <returns></returns>
public async Task<byte[]> Export(DateTime start, DateTime end)
{
Expression<Func<Detection, bool>> exp = filter => filter.CreateDateTime >= start && filter.CreateDateTime <= end;
var result = (await GetListWithExp(exp)).OrderBy(s => s.CreateDateTime).ToList();
var mapper = new Mapper();
mapper.Map<Detection>("时间", s => s.CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss"))
.Map<Detection>("工序", s => s.OrganizedName)
.Map<Detection>("设备名称", s => s.DeviceName)
.Map<Detection>("项目", s => s.keyword)
.Map<Detection>("检测值", s => s.deviceValue)
.Format<Detection>("yyyy-MM-dd HH:mm:ss", s => s.CreateDateTime);
MemoryStream stream = new MemoryStream();
mapper.Save(stream, result.ToList(), sheetName: "sheet1", leaveOpen: true);
return stream.ToArray();
}
}
}

View File

@ -18,6 +18,7 @@ namespace langguanApi.Service
private CacheManager _cacheManager; private CacheManager _cacheManager;
private readonly WeatherService _weatherService; private readonly WeatherService _weatherService;
private readonly AlertService _alertService; private readonly AlertService _alertService;
private readonly DetectionService _detectionService;
/// <summary> /// <summary>
/// HomeService /// HomeService
/// </summary> /// </summary>
@ -25,7 +26,8 @@ namespace langguanApi.Service
/// <param name="hj212Service"></param> /// <param name="hj212Service"></param>
public HomeService(DeviceService device, Hj212Service hj212Service, public HomeService(DeviceService device, Hj212Service hj212Service,
IConfiguration configuration, CacheManager cacheManager, IConfiguration configuration, CacheManager cacheManager,
WeatherService weatherService, AlertService alertService) WeatherService weatherService, AlertService alertService,
DetectionService detectionService)
{ {
_deviceService = device; _deviceService = device;
_hj212Service = hj212Service; _hj212Service = hj212Service;
@ -33,6 +35,7 @@ namespace langguanApi.Service
_cacheManager = cacheManager; _cacheManager = cacheManager;
_weatherService = weatherService; _weatherService = weatherService;
_alertService = alertService; _alertService = alertService;
_detectionService = detectionService;
} }
/// <summary> /// <summary>
/// view /// view
@ -46,16 +49,33 @@ namespace langguanApi.Service
Yesterday = 0.8, Yesterday = 0.8,
LastWeek = 0.6, LastWeek = 0.6,
}; };
Expression<Func<Model.HJ212, bool>> filter = exp => true; Expression<Func<Model.HJ212, bool>> filter = exp => true;
var Realtime = await _hj212Service.Realtime(); // 首页设备报警数据
var getViewTop = await _hj212Service.GetViewTop();
var alerts = await _alertService.IndexData(); var alerts = await _alertService.IndexData();
// 首页设备检测数据
var detections = await _detectionService.GetIndexData();
// 获取天气信息缓存1小时如果不存在则调用WeatherService获取 // 获取天气信息缓存1小时如果不存在则调用WeatherService获取
Func<Task<object>> getWeatherFunc = async () => await _weatherService.GetWeather(); Func<Task<object>> getWeatherFunc = async () => await _weatherService.GetWeather();
var weather = await _cacheManager.GetConvertVale(RedisKeylist.Weather, getWeatherFunc, 60 * 60); var weather = await _cacheManager.GetConvertVale(RedisKeylist.Weather, getWeatherFunc, 60 * 60);
Func<Task<object>> getAriQualityFunc= async () => await _weatherService.GetAirQuality(); // 获取空气质量缓存2小时如果不存在则调用WeatherService获取
Func<Task<object>> getAriQualityFunc = async () => await _weatherService.GetAirQuality();
var ariQuality = await _cacheManager.GetConvertVale(RedisKeylist.AriQuality, getAriQualityFunc, 60 * 120); var ariQuality = await _cacheManager.GetConvertVale(RedisKeylist.AriQuality, getAriQualityFunc, 60 * 120);
//首页清洁运输比例
var cleaData = new
{
yesterday = 0.8,
lastWeek = 0.6
};
var day = new
{
day = new { voc = "70mg/m3", cemes = "100mg/m3" },
week = new
{
}
};
return new ApiResult return new ApiResult
{ {
code = 0, code = 0,
@ -71,11 +91,13 @@ namespace langguanApi.Service
title = _configuration.GetValue<string>("Home:Title"), title = _configuration.GetValue<string>("Home:Title"),
}, },
devices, devices,
cleanData,
ariQuality, ariQuality,
Realtime, Realtime = "",
getViewTop, getViewTop = "",
weather, weather,
alerts alerts,
detections
} }
}; };
} }