using AutoMapper; using Microsoft.EntityFrameworkCore; using VOL.Entity.DomainModels.XinWei; using YD_XinWei.Api.Context; using YD_XinWei.Api.Services.Interface; using YD_XinWei.Commons.Dto.LargeScreen; using YD_XinWei.Commons.MemoryCaches; namespace YD_XinWei.Api.Services.Impl { /// /// 大屏服务 /// public class LargeScreenService : ILargeScreenService { public SmartSportsContext _sportsContext; private readonly IMapper _mapper; private readonly ICacheService _caching; /// /// 构造 /// /// /// public LargeScreenService(SmartSportsContext sportsContext, IMapper mapper, ICacheService caching) { _sportsContext = sportsContext; _mapper = mapper; _caching = caching; } /// /// 项目成绩大屏数据 /// /// /// public async Task ItemResultLargeScreenData(int orgId) { var res = new LargeScreenDto(); var schoolCode = _caching.Get(orgId.ToString()); if (string.IsNullOrWhiteSpace(schoolCode)) { schoolCode = await _sportsContext.School.Where(x => x.Id == orgId).Select(x => x.SchoolCode).FirstAsync(); _caching.Add(orgId.ToString(), schoolCode); } var sportsTestDataKey = $"SportsTestData_{schoolCode}"; var studentInfo = await _sportsContext.Student.Where(x => x.SchoolCode == schoolCode).Select(x => x.Sex).ToListAsync(); res.BasicInfo.FemaleCount = studentInfo.Count(x => x == 2); res.BasicInfo.MaleCount = studentInfo.Count(x => x == 1); var sportsTestData = _caching.Get>(sportsTestDataKey); if (sportsTestData == null || sportsTestData.Count == 0) { sportsTestData = await _sportsContext.XW_SportsTestData.Where(x => x.OrgId == orgId).ToListAsync(); _caching.AddObject(sportsTestDataKey, sportsTestData, 3600); } return res; } } }