You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

343 lines
13 KiB

using AutoMapper;
using Entity.Ammeter;
using Entity.Api.Resp;
using Entity.Dto.Req;
5 months ago
using HybirdFrameworkCore.Entity;
using Microsoft.AspNetCore.Mvc;
using Service.Ammeter;
using Service.Station;
using SqlSugar;
5 months ago
namespace WebStarter.Controllers.Ammeter
{
/// <summary>
/// 查询电表信息
/// </summary>
5 months ago
[ApiController]
[Route("api/[controller]")]
public class AmmeterController : ControllerBase
5 months ago
{
private EmeterDayEnergyService _emeterDayEnergyService;
private EmeterHourEnergyService _emeterHourEnergyService;
private EmeterMinutesEnergyService _emeterMinutesEnergyService;
private EmeterMinutesEnergyChangeService _emeterMinutesEnergyChangeService;
private EquipInfoService _equipInfoService;
/// <summary>
/// 直流电
/// </summary>
private EmeterEnergyService _emeterEnergyService;
private EmeterEnergyChangeService _emeterEnergyChangeService;
/// <summary>
/// 查询电表信息
/// </summary>
/// <param name="emeterDayEnergyService"></param>
/// <param name="emeterHourEnergyService"></param>
/// <param name="emeterMinutesEnergyService"></param>
/// <param name="emeterMinutesEnergyChangeService"></param>
/// <param name="equipInfoService"></param>
public AmmeterController(EmeterDayEnergyService emeterDayEnergyService, EmeterHourEnergyService emeterHourEnergyService,
EmeterMinutesEnergyService emeterMinutesEnergyService, EmeterMinutesEnergyChangeService emeterMinutesEnergyChangeService,
EquipInfoService equipInfoService,
EmeterEnergyService emeterEnergyService,
EmeterEnergyChangeService emeterEnergyChangeService)
5 months ago
{
_emeterDayEnergyService = emeterDayEnergyService;
_emeterHourEnergyService = emeterHourEnergyService;
_emeterMinutesEnergyService = emeterMinutesEnergyService;
_emeterMinutesEnergyChangeService = emeterMinutesEnergyChangeService;
_equipInfoService = equipInfoService;
_emeterEnergyService = emeterEnergyService;
_emeterEnergyChangeService = emeterEnergyChangeService;
5 months ago
}
/// <summary>
/// 七天电表用量
/// </summary>
/// <param name="Code"></param>
/// <returns></returns>
[HttpGet("SevenDaysElectrical")]
public async Task<Result<EmeterEnergyResp>> SevenDaysElectrical()
{
// 获取直流和交流表数据
List<EmeterEnergy> sevenDaysElectrical = await _emeterEnergyService.SevenDaysElectrical();
List<EmeterEnergyChange> emeterEnergyChanges = await _emeterEnergyChangeService.SevenDaysElectrical();
EmeterEnergyResp resp = new EmeterEnergyResp();
5 months ago
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<EmeterResp, EmeterEnergy>().ReverseMap();
cfg.CreateMap<EmeterResp, EmeterEnergyChange>().ReverseMap();
});
IMapper mapper = config.CreateMapper();
List<EmeterResp> emeterEnergyList = mapper.Map<List<EmeterResp>>(sevenDaysElectrical);
List<EmeterResp> sevenEmeterResps = mapper.Map<List<EmeterResp>>(emeterEnergyChanges);
resp.emeterEnergy = emeterEnergyList;
resp.emeterEnergyChange = sevenEmeterResps;
return Result<EmeterEnergyResp>.Success(resp,"成功");
}
5 months ago
#region 统计分析/电能表累计值信息
/// <summary>
/// 直流电能表累计值
/// </summary>
/// <returns></returns>
[HttpGet("GetAllElectricalData")]
public async Task<Result<List<EmeterEnergy>>> GetAllElectricalData()
{
// 直流表数据
return Result<List<EmeterEnergy>>.Success(await _emeterEnergyService.GetAllElectricalData(),"成功");
}
/// <summary>
/// 交流电能表累计值
/// </summary>
/// <returns></returns>
[HttpGet("GetAllEmeterEnergyChange")]
public async Task<Result<List<EmeterEnergyChange>>> GetAllEmeterEnergyChange()
{
// 交流表数据
return Result<List<EmeterEnergyChange>>.Success(await _emeterEnergyChangeService.GetAllElectricalData(),"成功");
}
/// <summary>
/// 直流电能表小时统计
/// </summary>
/// <returns></returns>
[HttpGet("GetTodayHourlyEnergy")]
public async Task<Result<List<EmeterEnergy>>> GetTodayHourlyElectricalData()
{
// 直流表数据
return Result<List<EmeterEnergy>>.Success(await _emeterEnergyService.GetTodayHourlyElectricalData(),"成功");
}
/// <summary>
/// 交流电能表小时统计
/// </summary>
/// <returns></returns>
[HttpGet("GetTodayHourlyEnergyChange")]
public async Task<Result<List<EmeterEnergyChange>>> GetTodayHourlyElectricalChangeData()
{
// 交流表数据
return Result<List<EmeterEnergyChange>>.Success(await _emeterEnergyChangeService.GetTodayHourlyElectricalData(),"成功");
}
/// <summary>
/// 最近一小时电表数据
/// </summary>
/// <returns></returns>
[HttpGet("GetTodayMinutelyElectricalData")]
public async Task<Result<EmeterEnergyResp>> GetTodayMinutelyElectricalData()
{
// 获取最近一个小时直流和交流表数据
List<EmeterEnergy> sevenDaysElectrical = await _emeterEnergyService.GetTodayMinutelyElectricalData();
List<EmeterEnergyChange> emeterEnergyChanges = await _emeterEnergyChangeService.GetTodayMinutelyElectricalData();
EmeterEnergyResp resp = new EmeterEnergyResp();
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<EmeterResp, EmeterEnergy>().ReverseMap();
cfg.CreateMap<EmeterResp, EmeterEnergyChange>().ReverseMap();
});
IMapper mapper = config.CreateMapper();
List<EmeterResp> emeterEnergyList = mapper.Map<List<EmeterResp>>(sevenDaysElectrical);
List<EmeterResp> sevenEmeterResps = mapper.Map<List<EmeterResp>>(emeterEnergyChanges);
resp.emeterEnergy = emeterEnergyList;
resp.emeterEnergyChange = sevenEmeterResps;
return Result<EmeterEnergyResp>.Success(resp,"成功");
}
5 months ago
/// <summary>
/// 统计分析/电能表累计值信息
/// </summary>
5 months ago
[HttpGet("TEgEmeterTotalEnergyValue/{Code}")]
public async Task<Result<List<EmeterMinutesEnergy>>> GetNewEmeterMinutesEnergy(string Code)
5 months ago
{
var query = @"
SELECT t1.*
FROM
(
SELECT code, MAX(time) AS latest_time
FROM emeter_minutes_energy
WHERE code = @Code
GROUP BY code
) AS latest_records
JOIN emeter_minutes_energy t1
ON latest_records.code = t1.code
AND latest_records.latest_time = t1.time;";
var parameters = new List<SugarParameter>
{
new SugarParameter("@Code", Code)
};
var result = await Task.Run(() => _emeterMinutesEnergyService.SqlQuery(query, parameters));
return Result<List<EmeterMinutesEnergy>>.Success(result);
5 months ago
}
/// <summary>
5 months ago
/// 删除电能表累计值信息
/// </summary>
[HttpGet("delete/TEgEmeterTotalEnergyValue/{id}")]
public Result<bool> DeleteOneEmeterMinutesEnergy(long id)
{
return Result<bool>.Success(_emeterMinutesEnergyService.DeleteById(id));
}
/// <summary>
5 months ago
/// 删除电能表累计值信息
/// </summary>
[HttpPost("TEgEmeterTotalEnergyValue/BatchDelete")]
public Result<bool> DeleteMoreEmeterMinutesEnergy(int[] ids)
{
return Result<bool>.Success(_emeterMinutesEnergyService.DeleteByIds(ids));
}
#endregion
#region 统计分析/电能表变化值信息
/// <summary>
5 months ago
/// 统计分析/电能表变化值信息
/// </summary>
[HttpPost("TEgEmeterRealEnergyValue")]
5 months ago
public async Task<Result<PageResult<EmeterMinutesEnergyChange>>> GetEmeterMinutesEnergyChange([FromBody] PageAmmeterReq queryPageModel)
{
5 months ago
return Result<PageResult<EmeterMinutesEnergyChange>>.Success(await _emeterMinutesEnergyChangeService.Page(queryPageModel));
}
/// <summary>
5 months ago
/// 删除电能表变化值信息
/// </summary>
[HttpGet("TEgEmeterRealEnergyValue/{id}")]
public Result<bool> DeleteEmeterMinutesEnergyChange(long id)
{
return Result<bool>.Success(_emeterMinutesEnergyChangeService.DeleteById(id));
}
/// <summary>
5 months ago
/// 批量删除电能表变化值信息
/// </summary>
[HttpPost("TEgEmeterRealEnergyValue/BatchDelete")]
public Result<bool> DeleteEmeterMinutesEnergyChange(int[] ids)
{
return Result<bool>.Success(_emeterMinutesEnergyChangeService.DeleteByIds(ids));
}
5 months ago
#endregion
#region 统计分析/电能表小时能耗值
/// <summary>
5 months ago
/// 统计分析/电能表小时能耗值
5 months ago
/// </summary>
[HttpPost("TEgEmeterHourEnergyValue")]
5 months ago
public async Task<Result<PageResult<EmeterHourEnergy>>> GetEmeterHourEnergy([FromBody] PageAmmeterReq queryPageModel)
5 months ago
{
return await _emeterHourEnergyService.Page(queryPageModel);
5 months ago
}
/// <summary>
5 months ago
/// 删除电能表小时能耗值
5 months ago
/// </summary>
[HttpGet("TEgEmeterHourEnergyValue/{id}")]
5 months ago
public Result<bool> DeleteEmeterHourEnergy(long id)
{
return Result<bool>.Success(_emeterHourEnergyService.DeleteById(id));
5 months ago
}
/// <summary>
5 months ago
/// 批量删除电能表小时能耗值
5 months ago
/// </summary>
[HttpPost("TEgEmeterHourEnergyValue/BatchDelete")]
5 months ago
public Result<bool> DeleteListEmeterHourEnergy(int[] ids)
{
return Result<bool>.Success(_emeterHourEnergyService.DeleteByIds(ids));
5 months ago
}
#endregion
#region 统计分析/电能表每天能耗值
/// <summary>
5 months ago
/// 统计分析/电能表每天能耗值
5 months ago
/// </summary>
[HttpPost("TEgEmeterDayEnergyValue")]
5 months ago
public async Task<Result<PageResult<EmeterDayEnergy>>> GetEmeterDayEnergy([FromBody] PageAmmeterReq queryPageModel)
5 months ago
{
5 months ago
return Result<PageResult<EmeterDayEnergy>>.Success(await _emeterDayEnergyService.Page(queryPageModel));
5 months ago
}
/// <summary>
5 months ago
/// 删除电能表每天能耗值
5 months ago
/// </summary>
[HttpGet("TEgEmeterDayEnergyValue/{id}")]
5 months ago
public Result<bool> DeleteEmeterDayEnergy(long id)
{
return Result<bool>.Success(_emeterDayEnergyService.DeleteById(id));
5 months ago
}
/// <summary>
5 months ago
/// 批量删除电能表每天能耗值
5 months ago
/// </summary>
[HttpPost("TEgEmeterDayEnergyValue/BatchDelete")]
5 months ago
public Result<bool> DeleteListEmeterDayEnergy(int[] ids)
{
return Result<bool>.Success(_emeterDayEnergyService.DeleteByIds(ids));
5 months ago
}
#endregion
#region 统计分析/换电站分时用电统计信息
//TODO::
5 months ago
//小时计算总能耗值,小时计算充电能耗值,小时计算换电能耗值,小时计算其他能耗值,开始时间,结束时间
#endregion
#region 统计分析/换电站每天用电统计信息
//TODO::
5 months ago
//每天计算总能耗值,每天计算充电能耗值,每天计算换电能耗值,每天计算其他能耗值,开始时间,结束时间
5 months ago
#endregion
#region 电能监控/交流电能监控
/// <summary>
/// 电能监控/交流电能监控
/// </summary>
[HttpGet("ElecMeterParam/GetElecMeterParamValue")]
public Result<List<EmeterMinutesEnergy>> GetElecMeterParamValue()
{
var EquipInfo = _equipInfoService.QueryListByClause(i => i.TypeCode == 0);
List<string> strings = new List<string>();
foreach (var kvp in EquipInfo)
{
strings.Add(kvp.Code);
}
//TODO::过滤,确保编码相同只出现一次
return Result<List<EmeterMinutesEnergy>>.Success(_emeterMinutesEnergyService.QueryListByClause(i => strings.Contains(i.Code)).ToList());
}
#endregion
#region 电能监控/直流电能监控
/// <summary>
/// 电能监控/直流电能监控
/// </summary>
[HttpGet("ManualSwap/GetDcCurrentInfo")]
public Result<List<EmeterMinutesEnergy>> GetDcCurrentInfo()
{
var EquipInfo = _equipInfoService.QueryListByClause(i => i.TypeCode == 1);
List<string> strings = new List<string>();
foreach (var kvp in EquipInfo)
{
strings.Add(kvp.Code);
}
//TODO::过滤,确保编码相同只出现一次
return Result<List<EmeterMinutesEnergy>>.Success(_emeterMinutesEnergyService.QueryListByClause(i => strings.Contains(i.Code)).ToList());
}
#endregion
5 months ago
}
}