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

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>
<returns>解密后的字符串</returns>
</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)">
<summary>
@ -879,6 +894,36 @@
id
</summary>
</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">
<summary>
台账
@ -1550,19 +1595,27 @@
注册日期
</summary>
</member>
<member name="M:langguanApi.Service.AlertService.Add(langguanApi.Model.Alert)">
<member name="M:langguanApi.Service.AlertService.Add(langguanApi.Model.AddAlertDto)">
<summary>
新加
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.AlertService.IndexData">
<member name="M:langguanApi.Service.AlertService.IndexData(System.Int32)">
<summary>
首页数据,最近7天的
</summary>
<returns></returns>
</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)">
<summary>
分页取数据
@ -1723,6 +1776,19 @@
<param name="exp"></param>
<returns></returns>
</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)">
<summary>
新加
@ -1914,7 +1980,7 @@
HomeService
</summary>
</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>
HomeService
</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 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.Dto;
using langguanApi.Model.Entity;
using Mapster;
using Npoi.Mapper;
using System.Linq.Expressions;
@ -18,11 +19,12 @@ namespace langguanApi.Service
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ApiResult> Add(Alert input)
public async Task<ApiResult> Add(AddAlertDto input)
{
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 = -1, msg = "" }; ;
@ -31,29 +33,46 @@ namespace langguanApi.Service
/// 首页数据,最近7天的
/// </summary>
/// <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;
return (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime);
Expression<Func<Alert, bool>> exp = filter => filter.IsDelete == false;
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
&& filter.CreateDateTime <= end
&& filter.IsDelete == false;
var list = await base.GetListWithExp(exp);
var list = (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime).ToList();
if (list.Any())
{
var mapper = new Mapper();
mapper.Map<Alert>("报警开始时间", s => s.CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss"))
mapper.Map<Alert>("报警开始时间", s => s.CreateDateTime)
.Map<Alert>("设备名称", s => s.deviceName)
// .Map<Alert>("工序", s => s.)
.Map<Ledger>("新能源", s => s.NewCar ? "是" : "否")
.Map<Ledger>("燃油车", s => s.Emissions)
.Map<Ledger>("出厂日间 ", s => s.OutTime)
.Map<Alert>("内容", s => s.AlertContent)
.Format<Alert>("yyyy-MM-dd HH:mm:ss", s => s.CreateDateTime);
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 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 readonly WeatherService _weatherService;
private readonly AlertService _alertService;
private readonly DetectionService _detectionService;
/// <summary>
/// HomeService
/// </summary>
@ -25,7 +26,8 @@ namespace langguanApi.Service
/// <param name="hj212Service"></param>
public HomeService(DeviceService device, Hj212Service hj212Service,
IConfiguration configuration, CacheManager cacheManager,
WeatherService weatherService, AlertService alertService)
WeatherService weatherService, AlertService alertService,
DetectionService detectionService)
{
_deviceService = device;
_hj212Service = hj212Service;
@ -33,6 +35,7 @@ namespace langguanApi.Service
_cacheManager = cacheManager;
_weatherService = weatherService;
_alertService = alertService;
_detectionService = detectionService;
}
/// <summary>
/// view
@ -48,14 +51,31 @@ namespace langguanApi.Service
};
Expression<Func<Model.HJ212, bool>> filter = exp => true;
var Realtime = await _hj212Service.Realtime();
var getViewTop = await _hj212Service.GetViewTop();
// 首页设备报警数据
var alerts = await _alertService.IndexData();
// 首页设备检测数据
var detections = await _detectionService.GetIndexData();
// 获取天气信息缓存1小时如果不存在则调用WeatherService获取
Func<Task<object>> getWeatherFunc = async () => await _weatherService.GetWeather();
var weather = await _cacheManager.GetConvertVale(RedisKeylist.Weather, getWeatherFunc, 60 * 60);
// 获取空气质量缓存2小时如果不存在则调用WeatherService获取
Func<Task<object>> getAriQualityFunc = async () => await _weatherService.GetAirQuality();
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
{
code = 0,
@ -71,11 +91,13 @@ namespace langguanApi.Service
title = _configuration.GetValue<string>("Home:Title"),
},
devices,
cleanData,
ariQuality,
Realtime,
getViewTop,
Realtime = "",
getViewTop = "",
weather,
alerts
alerts,
detections
}
};
}