首页,报警数据,检测数据
This commit is contained in:
parent
f71dac2ac2
commit
846c921a65
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
@ -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,28 +33,45 @@ 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 mapper = new Mapper();
|
||||
mapper.Map<Alert>("报警开始时间", s => s.CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss"))
|
||||
.Map<Alert>("设备名称", s => s.deviceName)
|
||||
// .Map<Alert>("工序", s => s.)
|
||||
.Map<Ledger>("新能源", s => s.NewCar ? "是" : "否")
|
||||
.Map<Ledger>("燃油车", s => s.Emissions)
|
||||
.Map<Ledger>("出厂日间 ", s => s.OutTime)
|
||||
.Format<Alert>("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();
|
||||
var list = (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime).ToList();
|
||||
if (list.Any())
|
||||
{
|
||||
var mapper = new Mapper();
|
||||
mapper.Map<Alert>("报警开始时间", s => s.CreateDateTime)
|
||||
.Map<Alert>("设备名称", s => s.deviceName)
|
||||
// .Map<Alert>("工序", s => s.)
|
||||
.Map<Alert>("内容", s => s.AlertContent)
|
||||
.Format<Alert>("yyyy-MM-dd HH:mm:ss", s => s.CreateDateTime);
|
||||
MemoryStream stream = new MemoryStream();
|
||||
mapper.Save(stream, list, sheetName: "sheet1", leaveOpen: true);
|
||||
return stream.ToArray();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 分页取数据
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -46,16 +49,33 @@ namespace langguanApi.Service
|
|||
Yesterday = 0.8,
|
||||
LastWeek = 0.6,
|
||||
};
|
||||
|
||||
|
||||
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);
|
||||
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 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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue