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);
        }