73 lines
2.3 KiB
C#
73 lines
2.3 KiB
C#
|
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
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 大屏服务
|
|||
|
/// </summary>
|
|||
|
public class LargeScreenService : ILargeScreenService
|
|||
|
{
|
|||
|
public SmartSportsContext _sportsContext;
|
|||
|
private readonly IMapper _mapper;
|
|||
|
private readonly ICacheService _caching;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 构造
|
|||
|
/// </summary>
|
|||
|
/// <param name="sportsContext"></param>
|
|||
|
/// <param name="mapper"></param>
|
|||
|
public LargeScreenService(SmartSportsContext sportsContext, IMapper mapper, ICacheService caching)
|
|||
|
{
|
|||
|
_sportsContext = sportsContext;
|
|||
|
_mapper = mapper;
|
|||
|
_caching = caching;
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 项目成绩大屏数据
|
|||
|
/// </summary>
|
|||
|
/// <param name="orgId"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public async Task<LargeScreenDto> 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<List<XW_SportsTestData>>(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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|