64 lines
2.3 KiB
C#
64 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|