jy-plc/Services/DeviceUsedService.cs

64 lines
2.3 KiB
C#
Raw Permalink Normal View History

2024-07-24 13:30:21 +00:00
using LangGuan.Command.Model;
using LangGuan.Command.Model.EntityModel;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace LangGuan.Services
{
public class DeviceUsedService : BaseService<DeviceUsed>
{
public IConfiguration _configuration;
public DeviceUsedService(IConfiguration config) : base(config, nameof(DeviceUsed))
{
_configuration = config;
}
public async Task AddDeviceUsed(DeviceUsed input)
{
//开启时,每小时,用水,用电
var water = _configuration.GetSection("water").Value;
var power = _configuration.GetSection("power").Value;
var timespan = (input.End - input.Start).TotalSeconds;
input.Water = Math.Round(float.Parse(water) / 3600 * timespan,2);
input.Power = Math.Round((float.Parse(power) / 3600 * timespan),2);
await base.CreateAsync(input);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public async Task<object> GetList(DateTime start, DateTime end)
{
Expression<Func<DeviceUsed, bool>> exp = filter => start < filter.CreateDateTime || filter.CreateDateTime <= end.AddDays(1);
var query = (await base.GetListWithExp(exp)).ToList();
var items = query.OrderByDescending(s => s.CreateDateTime)
.Select(s => new { day = s.CreateDateTime.AddHours(8).ToString("yyyy-MM-dd"), s.Power, s.Water }).ToList();
var result = items.GroupBy(s => s.day).Select(m => new
{
day = m.Key,
water = Math.Round(m.Sum(o => o.Water), 2),
power = Math.Round(m.Sum(o => o.Power), 2)
});
return new
{
items = result
};
}
public async Task UpdateDouble()
{
Expression<Func<DeviceUsed, bool>> exp = filter => true;
var query = (await base.GetListWithExp(exp)).ToList();
foreach (var item in query)
{
item.Water = (float)item.Water;
item.Power = (float)item.Power;
await base.UpdateAsync(item.Id, item);
}
}
}
}