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 { 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); } /// /// /// /// public async Task GetList(DateTime start, DateTime end) { Expression> 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> 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); } } } }