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