public CharDienNangTieuThuDto CharTieuThuDienNangNam(int nam, long idtram) { List <string> labels = new List <string>(); List <double> values = new List <double>(); for (var i = 0; i < 12; i++) { var startDate = new DateTime(nam, i + 1, 1); var endDate = startDate.AddMonths(1).AddDays(-1); labels.Add((i + 1).ToString()); var dien = BaoCaoThieuThuDienNang(0, idtram, startDate, endDate); if (dien.Count > 0) { values.Add(dien[0].DIENTHIEUTHU); } else { values.Add(0); } } CharDienNangTieuThuDto kq = new CharDienNangTieuThuDto(); kq.LABELS = labels; kq.VALUES = values; return(kq); }
public CharDienNangTieuThuDto CharTieuThuDienNang(long idDonvi, long idTram, DateTime fromDate, DateTime toDate) { var trams = Task.Run(() => _dmTramAppService.GetTramByIdDonVi(idDonvi)).Result; var idTrams = trams.Select(x => x.Id).ToList(); fromDate = fromDate.Date; toDate = toDate.AddDays(1).Date; var thang = fromDate.Month; var strThang = thang < 10 ? "0" + thang.ToString() : thang.ToString(); var nam = fromDate.Year.ToString(); var lsDienNang = _repository.GetAll() .WhereIf(idDonvi > 0, x => idTrams.Contains(x.thietbi.IDTRAM)) .WhereIf(idTram > 0, x => x.thietbi.IDTRAM == idTram) .Where(x => x.THONGTINQUANLY.CODE.Contains("DONGDIEN")) .Where(x => x.STARTDATE > fromDate && x.STARTDATE < toDate) .ToList().MapTo <List <LichSuHoatDongThietBiDto> >(); var lsChiSo = lsDienNang.GroupBy(g => new { g.thietbi.IDTRAM, g.IDTHONGTINQUANLY }) .Select(p => new { IDTRAM = p.Key.IDTRAM, THONGTINQUANLY = p.Key.IDTHONGTINQUANLY, START = p.Min(x => x.DIENNANG), END = p.Max(x => x.DIENNANG) }).ToList(); var result = lsChiSo.GroupBy(g => g.IDTRAM) .Select(p => new BaoCaoTieuThuDienNangDto { TRAM = _dmTramAppService.GetById(p.Key), START = p.Sum(x => x.START), END = p.Sum(x => x.END), DIENTHIEUTHU_QLNT = _chiPhiService.GetSoLuongDienTieuThu(p.Key, strThang, nam) }) .OrderBy(x => x.DIENTHIEUTHU) .ToList(); var labels = result.Select(x => x.TRAM.NAME).ToList(); var values = result.Select(x => x.DIENTHIEUTHU).ToList(); CharDienNangTieuThuDto kq = new CharDienNangTieuThuDto(); kq.LABELS = labels; kq.VALUES = values; return(kq); }