去掉辛未代码
This commit is contained in:
parent
b1d6610be4
commit
f545181680
@ -16,16 +16,6 @@ namespace YD_YiLu.Api.AutoMappers
|
||||
//CreateMap<AddHomeWorkDto, S_HomeWork>();
|
||||
|
||||
CreateMap<YL_Device, DeviceInfoDto>();
|
||||
CreateMap<AddTrainDto, XW_SportsTestData>();
|
||||
CreateMap<TrainStudentsDto, XW_TrainStudents>();
|
||||
CreateMap<TrainSettingDto, XW_TrainSetting>();
|
||||
CreateMap<TrainViolationsBODto, XW_TrainViolationsBO>();
|
||||
|
||||
CreateMap<XW_SportsTestData, TrainDto>();
|
||||
CreateMap<XW_TrainStudents, TrainStudentsDto>();
|
||||
|
||||
CreateMap<XW_TrainSetting, TrainSettingDto>();
|
||||
CreateMap<XW_TrainViolationsBO, TrainViolationsBODto>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,12 +24,6 @@ namespace YD_YiLu.Api.Context
|
||||
public DbSet<N_SportsTestCategory> SportsTestCategory { get; set; }
|
||||
public DbSet<N_SportsTestValue> SportsTestValue { get; set; }
|
||||
|
||||
public DbSet<XW_ProjectMode> XW_ProjectMode { get; set; }
|
||||
public DbSet<XW_TestingProject> XW_TestingProject { get; set; }
|
||||
public DbSet<XW_SportsTestData> XW_SportsTestData { get; set; }
|
||||
public DbSet<XW_TrainStudents> XW_TrainStudents { get; set; }
|
||||
public DbSet<XW_TrainSetting> XW_TrainSetting { get; set; }
|
||||
public DbSet<XW_TrainViolationsBO> XW_TrainViolationsBO { get; set; }
|
||||
public DbSet<YL_Device> YL_Device { get; set; }
|
||||
public DbSet<YL_Train> YL_Train { get; set; }
|
||||
public DbSet<YL_DeviceVideo> YL_DeviceVideo { get; set; }
|
||||
|
||||
@ -1,68 +0,0 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using YD_YiLu.Api.Services.Impl;
|
||||
using YD_YiLu.Api.Services.Interface;
|
||||
using YD_YiLu.Commons.Dto;
|
||||
using YD_YiLu.Commons.Dto.LargeScreen;
|
||||
using YD_YiLu.Commons.Dto.Open;
|
||||
|
||||
namespace YD_YiLu.Api.Controllers
|
||||
{
|
||||
///<summary>
|
||||
/// 大屏数据
|
||||
///</summary>
|
||||
[ApiVersion("1.0")]
|
||||
[AllowAnonymous]
|
||||
public class LargeScreenController : ControllerBase
|
||||
{
|
||||
private readonly ILargeScreenService _largeScreenService;
|
||||
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="largeScreenService"></param>
|
||||
public LargeScreenController(ILargeScreenService largeScreenService)
|
||||
{
|
||||
_largeScreenService = largeScreenService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取项目列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/LargeScreen/{apiVersion}/SportsProjectList")]
|
||||
public async Task<List<SportsProjectListDto>> SportsProjectList(int orgId)
|
||||
{
|
||||
var res = await _largeScreenService.SportsProjectList(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 项目成绩大屏数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/LargeScreen/{apiVersion}/ItemResultLargeScreenData")]
|
||||
public async Task<LargeScreenDto> ItemResultLargeScreenData(int orgId)
|
||||
{
|
||||
var res = await _largeScreenService.ItemResultLargeScreenData(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 各项目实时成绩
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <param name="lastTime"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/LargeScreen/{apiVersion}/ItemRealTimeResult")]
|
||||
public async Task<List<ItemRealTimeResultDto>> ItemRealTimeResult(int orgId, DateTime? lastTime = null)
|
||||
{
|
||||
var res = await _largeScreenService.ItemRealTimeResult(orgId, lastTime);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,250 +0,0 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using YD_YiLu.Api.Services.Impl;
|
||||
using YD_YiLu.Api.Services.Interface;
|
||||
using YD_YiLu.Commons.Dto.Common;
|
||||
using YD_YiLu.Commons.Dto.Open;
|
||||
using YD_YiLu.Commons.Dto.School;
|
||||
|
||||
namespace YD_YiLu.Api.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// 芯未
|
||||
/// </summary>
|
||||
[ApiVersion("1.0")]
|
||||
[AllowAnonymous]
|
||||
public class XinWeiController : ControllerBase
|
||||
{
|
||||
private readonly IXinWeiService _xinWeiService;
|
||||
public XinWeiController(IXinWeiService xinWeiService)
|
||||
{
|
||||
_xinWeiService = xinWeiService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取设备信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/basic/{apiVersion}/device/open/getDeviceInfo")]
|
||||
public async Task<DeviceInfoDto> GetDeviceInfo(string deviceSerial)
|
||||
{
|
||||
var res = await _xinWeiService.DeviceInfo(deviceSerial);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取项目模式列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/common/getSportsModelTypeList")]
|
||||
public async Task<List<ProjectModeDto>> GetSportsModelTypeList()
|
||||
{
|
||||
var res = await _xinWeiService.SportsModelTypeList();
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取体育项目列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/common/getOrgSportsProjectList")]
|
||||
public async Task<List<TestingProjectDto>> GetOrgSportsProjectList(int orgId)
|
||||
{
|
||||
var res = await _xinWeiService.OrgSportsProjectList(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取学生信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/roster/getMinimumOfStudentInfoList")]
|
||||
public async Task<List<StudentInfoDto>> GetMinimumOfStudentInfoList(int orgId)
|
||||
{
|
||||
var res = await _xinWeiService.MinimumOfStudentInfoList(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取名单列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/roster/getSportsRosterList")]
|
||||
public async Task<List<SportsRosterDto>> GetSportsRosterList(int orgId, int userId)
|
||||
{
|
||||
var res = await _xinWeiService.SportsRosterList(orgId, userId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取人脸信息
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/basic/{apiVersion}/open/getFaceListOfDevicePage")]
|
||||
public async Task<FaceListOfDevicePageDto> GetFaceListOfDevicePage([FromQuery] FaceListOfDeviceDto dto)
|
||||
{
|
||||
var res = await _xinWeiService.FaceListOfDevicePage(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询训练评分规则
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/project/getScoreRules")]
|
||||
public async Task<List<ScoreRuleDto>> GetScoreRules(int orgId)
|
||||
{
|
||||
var res = await _xinWeiService.ScoreRules(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增训练
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("/sports/{apiVersion}/train/addTrain")]
|
||||
public async Task<TrainDto> AddTrain([FromBody] AddTrainDto dto)
|
||||
{
|
||||
Console.WriteLine("开始上传");
|
||||
var res = await _xinWeiService.AddTrain(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 年级排名
|
||||
/// </summary>
|
||||
/// <param name="studentId"></param>
|
||||
/// <param name="trainId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/trainAnalysis/gradeRankingGet")]
|
||||
public async Task<GradeRankingVo> GradeRankingGet(int studentId, int trainId)
|
||||
{
|
||||
var res = await _xinWeiService.GradeRankingGet(studentId, trainId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 全部历史记录
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/trainAnalysis/history/get")]
|
||||
public async Task<TrainHistoryResponseDto> HistoryGet(HistoryGetDto dto)
|
||||
{
|
||||
var res = await _xinWeiService.HistoryGet(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 历史记录详细
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/trainAnalysis/history/detail")]
|
||||
public async Task<TrainAnalusisVo> TrainAnalysisHistoryDetail(HistoryDetailRequestDto dto)
|
||||
{
|
||||
var res = await _xinWeiService.TrainAnalysisHistoryDetail(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 个人历史记录-历史成绩
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/trainAnalysis/history/person/get")]
|
||||
public async Task<TrainHistoryPersonVo> HistoryPersonGet(HistoryPersonGetDto dto)
|
||||
{
|
||||
var res = await _xinWeiService.HistoryPersonGet(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 个人历史记录-记录列表
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/trainAnalysis/history/person/list")]
|
||||
public async Task<TableDataPersonAnalysisVo> HistoryPersonListGet(HistoryPersonListDto dto)
|
||||
{
|
||||
if (dto.ModelType==7)
|
||||
{
|
||||
dto.IsAsc = "asc";
|
||||
dto.OrderByColumn = "Achievement";
|
||||
}
|
||||
|
||||
var res = await _xinWeiService.HistoryPersonListGet(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 成绩榜-年级列表
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/basic/{apiVersion}/open/getGradeListByOrg")]
|
||||
public async Task<List<GradeVo>> GetGradeListByOrg(int orgId)
|
||||
{
|
||||
var res = await _xinWeiService.GetGradeListByOrg(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 个人历史记录-榜单列表
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/sports/{apiVersion}/trainAnalysis/scoreRanking/list")]
|
||||
public async Task<ScoreRankingVo> ScoreRanking(ScoreRankingDto dto)
|
||||
{
|
||||
var res = await _xinWeiService.ScoreRanking(dto);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取成绩榜中显示的体育项目
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("/screen/sports/getProjectInfo")]
|
||||
public async Task<List<ProjectVo>> GetProjectInfo(int orgId)
|
||||
{
|
||||
var res = await _xinWeiService.GetProjectInfo(orgId);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设备端人脸录入
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
[Route("/basic/{apiVersion}/open/addWeBankUserFace")]
|
||||
public async Task<bool> AddWeBankUserFace([FromForm] IFormFile picUrlA, [FromForm] int userId)
|
||||
{
|
||||
Console.WriteLine($"picUrlA == null? {picUrlA == null}, userId={userId}");
|
||||
var res = await _xinWeiService.AddWeBankUserFace(new AddWeBankUserFaceDto() { PicUrlA = picUrlA, UserId = userId });
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,362 +0,0 @@
|
||||
using AutoMapper;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using VOL.Commons;
|
||||
using YD_YiLu.Api.Context;
|
||||
using YD_YiLu.Api.Services.Interface;
|
||||
using YD_YiLu.Api.SmartSportsEntitys;
|
||||
using YD_YiLu.Api.Utilities;
|
||||
using YD_YiLu.Commons;
|
||||
using YD_YiLu.Commons.Dto.LargeScreen;
|
||||
|
||||
namespace YD_YiLu.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<List<SportsProjectListDto>> SportsProjectList(int orgId)
|
||||
{
|
||||
var testingProjectKey = $"TestingProject_{orgId}";
|
||||
|
||||
var res = _caching.Get<List<SportsProjectListDto>>(testingProjectKey);
|
||||
|
||||
if (res == null || res.Count == 0)
|
||||
{
|
||||
res = await _sportsContext.XW_TestingProject.Where(x => x.OrgId == orgId)
|
||||
.Select(x => new SportsProjectListDto()
|
||||
{
|
||||
ProjectId = x.ProjectId,
|
||||
ProjectName = x.ProjectName,
|
||||
CategoryValue = x.CategoryValue,
|
||||
CategoryEnum = x.CategoryEnum,
|
||||
Unit = ((SportsTestItemType)x.CategoryValue).GetUnit()
|
||||
}).ToListAsync();
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 项目成绩大屏数据
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<LargeScreenDto> ItemResultLargeScreenData(int orgId)
|
||||
{
|
||||
var res = new LargeScreenDto();
|
||||
|
||||
var schoolKeyKey = $"School_{orgId}";
|
||||
|
||||
var schoolCode = _caching.Get(schoolKeyKey);
|
||||
|
||||
if (string.IsNullOrWhiteSpace(schoolCode))
|
||||
{
|
||||
schoolCode = await _sportsContext.School.Where(x => x.Id == orgId).Select(x => x.SchoolCode).FirstAsync();
|
||||
_caching.Add(schoolKeyKey, schoolCode);
|
||||
}
|
||||
|
||||
var sportsTestDataKey = $"SportsTestData_{schoolCode}";
|
||||
var studentListKey = $"StudentList_{schoolCode}";
|
||||
|
||||
var studentList = _caching.Get<List<StudentListDto>>(studentListKey);
|
||||
|
||||
if (studentList == null || studentList.Count == 0)
|
||||
{
|
||||
studentList = await _sportsContext.Student.Where(x => x.SchoolCode == schoolCode).Select(x => new StudentListDto
|
||||
{
|
||||
StudentNo = x.StudentNo,
|
||||
Sex = x.Sex,
|
||||
Photo = x.Photo ?? ""
|
||||
}).ToListAsync();
|
||||
_caching.AddObject(studentListKey, studentList, 3600);
|
||||
}
|
||||
|
||||
//var studentList = await _sportsContext.Student.Where(x => x.SchoolCode == schoolCode).Select(x => new StudentListDto
|
||||
//{
|
||||
// StudentNo = x.StudentNo,
|
||||
// Sex = x.Sex,
|
||||
// Photo = x.Photo ?? ""
|
||||
//}).ToListAsync();
|
||||
|
||||
res.BasicInfo.FemaleCount = studentList.Count(x => x.Sex == 2);
|
||||
res.BasicInfo.MaleCount = studentList.Count(x => x.Sex == 1);
|
||||
|
||||
var sportsTestData = _caching.Get<List<SportsTestDataDto>>(sportsTestDataKey);
|
||||
|
||||
if (sportsTestData == null || sportsTestData.Count == 0)
|
||||
{
|
||||
sportsTestData = await _sportsContext.SportsTestValue.Where(x => x.SchoolCode == schoolCode && x.DataSource == DataSource.XW)
|
||||
.Select(x => new SportsTestDataDto()
|
||||
{
|
||||
SchoolCode = x.SchoolCode,
|
||||
CategoryValue = x.CategoryValue,
|
||||
ClassId = x.ClassId,
|
||||
ClassName = x.ClassName,
|
||||
GradeId = x.GradeId,
|
||||
GradeName = x.GradeName,
|
||||
TeacherId = x.TeacherId,
|
||||
StudentNo = x.StudentNo,
|
||||
StudentName = x.StudentName,
|
||||
Sex = x.Sex,
|
||||
ScoreTime = x.ScoreTime,
|
||||
Height = x.Height,
|
||||
Weight = x.Weight,
|
||||
Value = x.Value,
|
||||
Score = x.Score,
|
||||
Rank = x.Rank
|
||||
}).ToListAsync();
|
||||
_caching.AddObject(sportsTestDataKey, sportsTestData, 60);
|
||||
}
|
||||
|
||||
//var sportsTestData = _caching.Get<List<SportsTestDataDto>>(sportsTestDataKey);
|
||||
|
||||
//if (sportsTestData == null || sportsTestData.Count == 0)
|
||||
//{
|
||||
// sportsTestData = await _sportsContext.SportsTestValue.Where(x => x.SchoolCode == schoolCode && x.DataSource == DataSource.XW)
|
||||
// .Select(x => new SportsTestDataDto()
|
||||
// {
|
||||
// SchoolCode = x.SchoolCode,
|
||||
// CategoryValue = x.CategoryValue,
|
||||
// ClassId = x.ClassId,
|
||||
// ClassName = x.ClassName,
|
||||
// GradeId = x.GradeId,
|
||||
// GradeName = x.GradeName,
|
||||
// TeacherId = x.TeacherId,
|
||||
// StudentNo = x.StudentNo,
|
||||
// StudentName = x.StudentName,
|
||||
// Sex = x.Sex,
|
||||
// ScoreTime = x.ScoreTime,
|
||||
// Height = x.Height,
|
||||
// Weight = x.Weight,
|
||||
// Value = x.Value,
|
||||
// Score = x.Score,
|
||||
// Rank = x.Rank
|
||||
// }).ToListAsync();
|
||||
// //_caching.AddObject(sportsTestDataKey, sportsTestData, 60);
|
||||
//}
|
||||
|
||||
var bestScoreData = sportsTestData
|
||||
.GroupBy(x => x.StudentNo)
|
||||
.Select(g => g.OrderByDescending(x => x.Score).First())
|
||||
.ToList();
|
||||
|
||||
var projectResults = sportsTestData
|
||||
.GroupBy(x => x.CategoryValue)
|
||||
.Select(g => new ItemDataDto
|
||||
{
|
||||
CategoryValue = g.Key,
|
||||
|
||||
// 优良率计算:分数 > 80 的人数 ÷ 总人数
|
||||
ExcellentRate = (int)Math.Round(
|
||||
sportsTestData.Count(x => x.CategoryValue == g.Key && x.Score > 80) * 100.0 /
|
||||
Math.Max(sportsTestData.Count(x => x.CategoryValue == g.Key), 1),
|
||||
MidpointRounding.AwayFromZero
|
||||
),
|
||||
|
||||
// 男生前十名
|
||||
MaleRankList = (g.Where(x => x.Sex == 1)
|
||||
.OrderBy(x => g.Key == 3 ? x.Value : -x.Value) // 条件排序
|
||||
.Take(10)
|
||||
.Select((x, index) => new StudentScoreRankingDto
|
||||
{
|
||||
Rank = index + 1,
|
||||
StudentNo = x.StudentNo,
|
||||
StudentName = x.StudentName,
|
||||
Value = x.CategoryValue == 1 ? $"{x.Height}cm/{x.Weight}kg" : $"{x.Value}{((SportsTestItemType)x.CategoryValue).GetUnit()}"
|
||||
})).ToList(),
|
||||
|
||||
// 女生前十名
|
||||
FemaleRankList = (g.Where(x => x.Sex == 2)
|
||||
.OrderBy(x => g.Key == 3 ? x.Value : -x.Value) // 条件排序
|
||||
.Take(10)
|
||||
.Select((x, index) => new StudentScoreRankingDto
|
||||
{
|
||||
Rank = index + 1,
|
||||
StudentNo = x.StudentNo,
|
||||
StudentName = x.StudentName,
|
||||
Value = x.CategoryValue == 1 ? $"{x.Height}cm/{x.Weight}kg" : $"{x.Value}{((SportsTestItemType)x.CategoryValue).GetUnit()}"
|
||||
})).ToList()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
|
||||
res.ItemDatalist = projectResults;
|
||||
|
||||
var classListKey = $"ClassList_{schoolCode}";
|
||||
|
||||
var classList = _caching.Get<List<S_Class>>(classListKey);
|
||||
|
||||
if (classList == null || classList.Count == 0)
|
||||
{
|
||||
classList = await _sportsContext.Class.Where(x => x.SchoolCode == schoolCode).ToListAsync();
|
||||
_caching.AddObject(classListKey, classList, 3600);
|
||||
}
|
||||
|
||||
var classRankingList = sportsTestData
|
||||
.GroupBy(x => new { x.ClassId })
|
||||
.Select(g => new ClassSportsRankingDto
|
||||
{
|
||||
ClassId = g.Key.ClassId,
|
||||
ClassName = classList.Where(c => c.Id == g.Key.ClassId).Select(x => $"{x.GradeName}-{x.ClassName}").FirstOrDefault() ?? "",
|
||||
Count = g.Count()
|
||||
})
|
||||
.OrderByDescending(x => x.Count)
|
||||
.Take(5)
|
||||
.Select((x, index) =>
|
||||
{
|
||||
x.Rank = index + 1;
|
||||
return x;
|
||||
})
|
||||
.ToList();
|
||||
|
||||
res.ClassSportsRankList = classRankingList;
|
||||
|
||||
//var testingProjectKey = $"TestingProject_{orgId}";
|
||||
|
||||
//var testingProjects = _caching.Get<List<SportsProjectListDto>>(testingProjectKey) ?? new List<SportsProjectListDto>();
|
||||
//var projectNameDict = testingProjects.ToDictionary(t => t.CategoryValue, t => t.ProjectName);
|
||||
|
||||
//var studentPhotoDict = studentList.Where(s => !string.IsNullOrEmpty(s.StudentNo)).ToDictionary(s => s.StudentNo, s => s.Photo ?? string.Empty);
|
||||
|
||||
//var latestPerStudent = sportsTestData
|
||||
// .GroupBy(x => x.StudentNo)
|
||||
// .Select(g => g.OrderByDescending(x => x.ScoreTime).First())
|
||||
// .ToList();
|
||||
|
||||
//var realTimeResults = latestPerStudent
|
||||
// .OrderByDescending(x => x.ScoreTime)
|
||||
// .Take(50)
|
||||
// .Select(x => new ItemRealTimeResultDto
|
||||
// {
|
||||
// StudentNo = x.StudentNo,
|
||||
// StudentName = x.StudentName,
|
||||
// Photo = studentPhotoDict.TryGetValue(x.StudentNo, out var photo) ? photo : string.Empty,
|
||||
// GradeAndClassName = $"{x.GradeName}-{x.ClassName}",
|
||||
// //ProjectName = projectNameDict.TryGetValue(x.CategoryValue, out var projectName) ? projectName : string.Empty,
|
||||
// Value = x.Value,
|
||||
// Score = x.Score,
|
||||
// Rank = x.Rank ?? "不及格",
|
||||
// ScoreTime = x.ScoreTime.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
// }).Reverse().ToList();
|
||||
|
||||
//res.ItemRealTimeResultList = realTimeResults;
|
||||
|
||||
var today = DateTime.Today;
|
||||
|
||||
// 本周一
|
||||
var startOfThisWeek = today.AddDays(-(int)today.DayOfWeek + 1);
|
||||
|
||||
// 下周一(= 本周结束时间)
|
||||
var startOfNextWeek = startOfThisWeek.AddDays(7);
|
||||
|
||||
// 上周一
|
||||
var startOfLastWeek = startOfThisWeek.AddDays(-7);
|
||||
|
||||
// 本周数据
|
||||
var thisWeekCount = sportsTestData
|
||||
.Count(x => x.ScoreTime >= startOfThisWeek && x.ScoreTime < startOfNextWeek);
|
||||
|
||||
// 上周数据
|
||||
var lastWeekCount = sportsTestData
|
||||
.Count(x => x.ScoreTime >= startOfLastWeek && x.ScoreTime < startOfThisWeek);
|
||||
|
||||
res.BasicInfo.WeekTrainingCount = thisWeekCount;
|
||||
res.BasicInfo.Increase = thisWeekCount - lastWeekCount;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 各项目实时成绩
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <param name="lastTime"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<ItemRealTimeResultDto>> ItemRealTimeResult(int orgId, DateTime? lastTime = null)
|
||||
{
|
||||
var schoolKeyKey = $"School_{orgId}";
|
||||
var schoolCode = _caching.Get(schoolKeyKey);
|
||||
var testingProjectKey = $"TestingProject_{orgId}";
|
||||
var studentListKey = $"StudentList_{schoolCode}";
|
||||
//var studentList = _caching.Get<List<StudentListDto>>(studentListKey);
|
||||
|
||||
var studentList = await _sportsContext.Student.Where(x => x.SchoolCode == schoolCode).Select(x => new StudentListDto
|
||||
{
|
||||
StudentNo = x.StudentNo,
|
||||
Sex = x.Sex,
|
||||
Photo = x.Photo ?? ""
|
||||
}).ToListAsync();
|
||||
|
||||
var testingProjects = _caching.Get<List<SportsProjectListDto>>(testingProjectKey) ?? new List<SportsProjectListDto>();
|
||||
var projectNameDict = testingProjects.ToDictionary(t => t.CategoryValue, t => t.ProjectName);
|
||||
var studentPhotoDict = studentList
|
||||
.Where(s => !string.IsNullOrEmpty(s.StudentNo))
|
||||
.ToDictionary(s => s.StudentNo, s => s.Photo ?? string.Empty);
|
||||
|
||||
// 1. 查询时只拉取需要的字段
|
||||
var sourceData = await _sportsContext.SportsTestValue
|
||||
.Where(s => s.SchoolCode == schoolCode && s.DataSource == DataSource.XW
|
||||
&& (!lastTime.HasValue || s.ScoreTime > lastTime.Value))
|
||||
.OrderByDescending(s => s.ScoreTime)
|
||||
.Select(s => new
|
||||
{
|
||||
s.StudentNo,
|
||||
s.StudentName,
|
||||
s.GradeName,
|
||||
s.ClassName,
|
||||
s.CategoryValue,
|
||||
s.Value,
|
||||
s.Weight,
|
||||
s.Height,
|
||||
s.Score,
|
||||
s.Rank,
|
||||
s.ScoreTime
|
||||
})
|
||||
.Take(50)
|
||||
.ToListAsync();
|
||||
|
||||
// 2. 内存分组取每个学生最新一条
|
||||
var latestPerStudent = sourceData.OrderBy(x => x.ScoreTime).ToList();
|
||||
|
||||
// 3. 映射到 DTO
|
||||
var realTimeResults = latestPerStudent
|
||||
.Select(x => new ItemRealTimeResultDto
|
||||
{
|
||||
StudentNo = x.StudentNo,
|
||||
StudentName = x.StudentName,
|
||||
Photo = studentPhotoDict.TryGetValue(x.StudentNo, out var photo) ? photo : string.Empty,
|
||||
GradeAndClassName = $"{x.GradeName}-{x.ClassName}",
|
||||
CategoryValue = x.CategoryValue,
|
||||
Value = x.CategoryValue == 1 ? $"{x.Height}cm/{x.Weight}kg" : $"{x.Value}{((SportsTestItemType)x.CategoryValue).GetUnit()}",
|
||||
Score = x.Score,
|
||||
Rank = string.IsNullOrEmpty(x.Rank) ? "不及格" : x.Rank,
|
||||
ScoreTime = x.ScoreTime.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return realTimeResults;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,35 +0,0 @@
|
||||
using YD_YiLu.Commons.Dto.Common;
|
||||
using YD_YiLu.Commons.Dto.LargeScreen;
|
||||
using YD_YiLu.Commons.Dto.Open;
|
||||
|
||||
namespace YD_YiLu.Api.Services.Interface
|
||||
{
|
||||
/// <summary>
|
||||
/// 大屏服务接口
|
||||
/// </summary>
|
||||
public interface ILargeScreenService
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 体育项目
|
||||
/// </summary>
|
||||
/// <param name="orgId">学校Id</param>
|
||||
/// <returns></returns>
|
||||
Task<List<SportsProjectListDto>> SportsProjectList(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 项目成绩大屏数据
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
Task<LargeScreenDto> ItemResultLargeScreenData(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 各项目实时成绩
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <param name="lastTime"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<ItemRealTimeResultDto>> ItemRealTimeResult(int orgId, DateTime? lastTime = null);
|
||||
}
|
||||
}
|
||||
@ -1,137 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using VOL.Entity.DomainModels.XinWei;
|
||||
using YD_YiLu.Api;
|
||||
using YD_YiLu.Api.Entitys;
|
||||
using YD_YiLu.Commons;
|
||||
using YD_YiLu.Commons.Dto.Common;
|
||||
using YD_YiLu.Commons.Dto.Open;
|
||||
using YD_YiLu.Commons.Dto.School;
|
||||
|
||||
namespace YD_YiLu.Api.Services.Interface
|
||||
{
|
||||
/// <summary>
|
||||
/// 服务接口
|
||||
/// </summary>
|
||||
public interface IXinWeiService
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取设备信息
|
||||
/// </summary>
|
||||
/// <param name="deviceSerial"></param>
|
||||
/// <returns></returns>
|
||||
Task<DeviceInfoDto> DeviceInfo(string deviceSerial);
|
||||
|
||||
/// <summary>
|
||||
/// 项目模式
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<ProjectModeDto>> SportsModelTypeList();
|
||||
|
||||
/// <summary>
|
||||
/// 体育项目
|
||||
/// </summary>
|
||||
/// <param name="orgId">学校Id</param>
|
||||
/// <returns></returns>
|
||||
Task<List<TestingProjectDto>> OrgSportsProjectList(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取学生信息
|
||||
/// </summary>
|
||||
/// <param name="orgId">学校Id</param>
|
||||
/// <returns></returns>
|
||||
Task<List<StudentInfoDto>> MinimumOfStudentInfoList(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取名单列表
|
||||
/// </summary>
|
||||
/// <param name="orgId">学校Id</param>
|
||||
/// <param name="userId">用户Id</param>
|
||||
/// <returns></returns>
|
||||
Task<List<SportsRosterDto>> SportsRosterList(int orgId, int userId = 0);
|
||||
|
||||
/// <summary>
|
||||
/// 获取人脸信息
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<FaceListOfDevicePageDto> FaceListOfDevicePage(FaceListOfDeviceDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 获取训练评分规则
|
||||
/// </summary>
|
||||
/// <param name="orgId">学校Id</param>
|
||||
/// <returns></returns>
|
||||
Task<List<ScoreRuleDto>> ScoreRules(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 新增训练
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<TrainDto> AddTrain(AddTrainDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 年级排名
|
||||
/// </summary>
|
||||
/// <param name="studentId"></param>
|
||||
/// <param name="trainId"></param>
|
||||
/// <returns></returns>
|
||||
Task<GradeRankingVo> GradeRankingGet(int studentId, int trainId);
|
||||
|
||||
/// <summary>
|
||||
/// 全部历史记录
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<TrainHistoryResponseDto> HistoryGet(HistoryGetDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 历史记录详细
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<TrainAnalusisVo> TrainAnalysisHistoryDetail(HistoryDetailRequestDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 个人历史记录-历史成绩
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<TrainHistoryPersonVo> HistoryPersonGet(HistoryPersonGetDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 个人历史记录-记录列表
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<TableDataPersonAnalysisVo> HistoryPersonListGet(HistoryPersonListDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 成绩榜-年级列表
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<GradeVo>> GetGradeListByOrg(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 成绩榜-榜单列表
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<ScoreRankingVo> ScoreRanking(ScoreRankingDto dto);
|
||||
|
||||
/// <summary>
|
||||
/// 获取成绩榜中显示的体育项目
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<ProjectVo>> GetProjectInfo(int orgId);
|
||||
|
||||
/// <summary>
|
||||
/// 设备端人脸录入
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> AddWeBankUserFace(AddWeBankUserFaceDto dto);
|
||||
}
|
||||
}
|
||||
@ -1,48 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using YD_YiLu.Api.Entitys;
|
||||
namespace YD_YiLu.Api.SmartSportsEntitys
|
||||
{
|
||||
/// <summary>
|
||||
/// 芯未项目模式表
|
||||
/// </summary>
|
||||
[Table("XW_ProjectMode")]
|
||||
public class XW_ProjectMode
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Display(Description = "主键Id")]
|
||||
[Comment("Id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ProjectKind
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectKind")]
|
||||
[Comment("ProjectKind")]
|
||||
[Column(TypeName = "int")]
|
||||
public int ProjectKind { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///名称
|
||||
/// </summary>
|
||||
[Display(Name = "名称")]
|
||||
[Comment("名称")]
|
||||
[Column(TypeName = "nvarchar(100)")]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///枚举
|
||||
/// </summary>
|
||||
[Display(Name = "枚举")]
|
||||
[Comment("枚举")]
|
||||
[Column(TypeName = "nvarchar(100)")]
|
||||
public string CategoryEnum { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,604 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using YD_YiLu.Api.Entitys;
|
||||
|
||||
namespace VOL.Entity.DomainModels.XinWei
|
||||
{
|
||||
[Table("XW_SportsTestData")]
|
||||
public class XW_SportsTestData
|
||||
{
|
||||
/// <summary>
|
||||
/// 编号
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Display(Description = "主键Id")]
|
||||
[Comment("Id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 考试id
|
||||
/// </summary>
|
||||
[Display(Name = "ExaminationId")]
|
||||
[Comment("考试id")]
|
||||
public int? ExaminationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 考试名称
|
||||
/// </summary>
|
||||
[Display(Name = "ExaminationName")]
|
||||
[Comment("考试名称")]
|
||||
public string? ExaminationName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目类型(1体检 2体质)
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectType")]
|
||||
[Comment("项目类型(1体检 2体质)")]
|
||||
public int? ProjectType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目ID
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectId")]
|
||||
[Comment("项目ID")]
|
||||
public int? ProjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目名称
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectName")]
|
||||
[Comment("项目名称")]
|
||||
public string ProjectName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模式类型(1随堂模式2名单模式3刷卡或手动录入)
|
||||
/// </summary>
|
||||
[Display(Name = "RosterType")]
|
||||
[Comment("模式类型(1随堂模式2名单模式3刷卡或手动录入)")]
|
||||
public int? RosterType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学校ID
|
||||
/// </summary>
|
||||
[Display(Name = "OrgId")]
|
||||
[Comment("学校ID")]
|
||||
public int? OrgId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 年级ID
|
||||
/// </summary>
|
||||
[Display(Name = "GradeId")]
|
||||
[Comment("年级ID")]
|
||||
public int? GradeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 年级名称
|
||||
/// </summary>
|
||||
[Display(Name = "GradeName")]
|
||||
[Comment("年级名称")]
|
||||
public string GradeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班级或者名单id(根据roster_type来判断)
|
||||
/// </summary>
|
||||
[Display(Name = "ClassId")]
|
||||
[Comment("班级或者名单id(根据roster_type来判断)")]
|
||||
public int? ClassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班级名称
|
||||
/// </summary>
|
||||
[Display(Name = "ClassName")]
|
||||
[Comment("班级名称")]
|
||||
public string ClassName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 组别
|
||||
/// </summary>
|
||||
[Display(Name = "GroupId")]
|
||||
[Comment("组别")]
|
||||
public string GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 老师ID
|
||||
/// </summary>
|
||||
[Display(Name = "TeacherId")]
|
||||
[Comment("老师ID")]
|
||||
public int? TeacherId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 老师名称
|
||||
/// </summary>
|
||||
[Display(Name = "TeacherName")]
|
||||
[Comment("老师名称")]
|
||||
public string? TeacherName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 训练模式
|
||||
/// </summary>
|
||||
[Display(Name = "ModelType")]
|
||||
[Comment("训练模式")]
|
||||
public int? ModelType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评分标准类型(1国家标准2地方标准3自定义标准)
|
||||
/// </summary>
|
||||
[Display(Name = "MarkType")]
|
||||
[Comment("评分标准类型(1国家标准2地方标准3自定义标准)")]
|
||||
public int? MarkType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目类型(1跳绳2跑步)
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectKind")]
|
||||
[Comment("项目类型(1跳绳2跑步)")]
|
||||
public int? ProjectKind { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 训练标准ID
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectRuleId")]
|
||||
[Comment("训练标准ID")]
|
||||
public int? ProjectRuleId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目类型名称
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectKindName")]
|
||||
[Comment("项目类型名称")]
|
||||
public string? ProjectKindName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评分标准类型名称
|
||||
/// </summary>
|
||||
[Display(Name = "MarkTypeName")]
|
||||
[Comment("评分标准类型名称")]
|
||||
public string? MarkTypeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目模式名称
|
||||
/// </summary>
|
||||
[Display(Name = "ModelTypeName")]
|
||||
[Comment("项目模式名称")]
|
||||
public string? ModelTypeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 训练人数
|
||||
/// </summary>
|
||||
[Display(Name = "TrainCount")]
|
||||
[Comment("训练人数")]
|
||||
public int? TrainCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间
|
||||
/// </summary>
|
||||
[Display(Name = "StartTime")]
|
||||
[Comment("开始时间")]
|
||||
public string StartTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 结束时间
|
||||
/// </summary>
|
||||
[Display(Name = "EndTime")]
|
||||
[Comment("结束时间")]
|
||||
public string EndTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生总数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleTotal")]
|
||||
[Comment("男生总数")]
|
||||
public int? MaleTotal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生总数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleTotal")]
|
||||
[Comment("女生总数")]
|
||||
public int? FemaleTotal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生总成绩
|
||||
/// </summary>
|
||||
[Display(Name = "MaleCount")]
|
||||
[Comment("男生总成绩")]
|
||||
public double? MaleCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最大值
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMaxCount")]
|
||||
[Comment("男生最大值")]
|
||||
public int? MaleMaxCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最小值
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMinCount")]
|
||||
[Comment("男生最小值")]
|
||||
public int? MaleMinCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生总成绩
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleCount")]
|
||||
[Comment("女生总成绩")]
|
||||
public double? FemaleCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最大值
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMaxCount")]
|
||||
[Comment("女生最大值")]
|
||||
public int? FemaleMaxCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最小值
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMinCount")]
|
||||
[Comment("女生最小值")]
|
||||
public int? FemaleMinCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生总分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleScore")]
|
||||
[Comment("男生总分数")]
|
||||
public double? MaleScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最大分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMaxScore")]
|
||||
[Comment("男生最大分数")]
|
||||
public double? MaleMaxScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最小分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMinScore")]
|
||||
[Comment("男生最小分数")]
|
||||
public double? MaleMinScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生总分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleScore")]
|
||||
[Comment("女生总分数")]
|
||||
public double? FemaleScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最大分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMaxScore")]
|
||||
[Comment("女生最大分数")]
|
||||
public double? FemaleMaxScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最小分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMinScore")]
|
||||
[Comment("女生最小分数")]
|
||||
public double? FemaleMinScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生优秀人数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleFine")]
|
||||
[Comment("男生优秀人数")]
|
||||
public int? MaleFine { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生良好人数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleGood")]
|
||||
[Comment("男生良好人数")]
|
||||
public int? MaleGood { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生及格人数
|
||||
/// </summary>
|
||||
[Display(Name = "MalePass")]
|
||||
[Comment("男生及格人数")]
|
||||
public int? MalePass { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生不及格人数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleFail")]
|
||||
[Comment("男生不及格人数")]
|
||||
public int? MaleFail { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生优秀人数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleFine")]
|
||||
[Comment("女生优秀人数")]
|
||||
public int? FemaleFine { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生良好人数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleGood")]
|
||||
[Comment("女生良好人数")]
|
||||
public int? FemaleGood { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生及格人数
|
||||
/// </summary>
|
||||
[Display(Name = "FemalePass")]
|
||||
[Comment("女生及格人数")]
|
||||
public int? FemalePass { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生不及格人数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleFail")]
|
||||
[Comment("女生不及格人数")]
|
||||
public int? FemaleFail { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 及格率
|
||||
/// </summary>
|
||||
[Display(Name = "PassingRate")]
|
||||
[Comment("及格率")]
|
||||
public double? PassingRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生平均个数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleAvgCount")]
|
||||
[Comment("男生平均个数")]
|
||||
public double? MaleAvgCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生平均个数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleAvgCount")]
|
||||
[Comment("女生平均个数")]
|
||||
public double? FemaleAvgCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生平均分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleAvgScore")]
|
||||
[Comment("男生平均分数")]
|
||||
public double? MaleAvgScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生平均分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleAvgScore")]
|
||||
[Comment("女生平均分数")]
|
||||
public double? FemaleAvgScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生中位数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMedianCount")]
|
||||
[Comment("男生中位数")]
|
||||
public double? MaleMedianCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生中位数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMedianCount")]
|
||||
[Comment("女生中位数")]
|
||||
public double? FemaleMedianCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生平均值
|
||||
/// </summary>
|
||||
[Display(Name = "MaleAvgImproveCount")]
|
||||
[Comment("男生平均值")]
|
||||
public int? MaleAvgImproveCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最大值
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMaxImproveCount")]
|
||||
[Comment("男生最大值")]
|
||||
public int? MaleMaxImproveCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最小值
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMinImproveCount")]
|
||||
[Comment("男生最小值")]
|
||||
public int? MaleMinImproveCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生平均值
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleAvgImproveCount")]
|
||||
[Comment("女生平均值")]
|
||||
public int? FemaleAvgImproveCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最大值
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMaxImproveCount")]
|
||||
[Comment("女生最大值")]
|
||||
public int? FemaleMaxImproveCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最小值
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMinImproveCount")]
|
||||
[Comment("女生最小值")]
|
||||
public int? FemaleMinImproveCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生平均分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleAvgImproveScore")]
|
||||
[Comment("男生平均分数")]
|
||||
public double? MaleAvgImproveScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最大分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMaxImproveScore")]
|
||||
[Comment("男生最大分数")]
|
||||
public double? MaleMaxImproveScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生最小分数
|
||||
/// </summary>
|
||||
[Display(Name = "MaleMinImproveScore")]
|
||||
[Comment("男生最小分数")]
|
||||
public double? MaleMinImproveScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生平均分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleAvgImproveScore")]
|
||||
[Comment("女生平均分数")]
|
||||
public double? FemaleAvgImproveScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最大分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMaxImproveScore")]
|
||||
[Comment("女生最大分数")]
|
||||
public double? FemaleMaxImproveScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生最小分数
|
||||
/// </summary>
|
||||
[Display(Name = "FemaleMinImproveScore")]
|
||||
[Comment("女生最小分数")]
|
||||
public double? FemaleMinImproveScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 失误最少的同学次数
|
||||
/// </summary>
|
||||
[Display(Name = "MinErrorCount")]
|
||||
[Comment("失误最少的同学次数")]
|
||||
public int? MinErrorCount { get; set; } = 99999; // 默认值
|
||||
|
||||
/// <summary>
|
||||
/// 进入状态最快的同学耗时(心率借用这个字段。班级运动时间)
|
||||
/// </summary>
|
||||
[Display(Name = "MinIntoStateTime")]
|
||||
[Comment("进入状态最快的同学耗时(心率借用这个字段。班级运动时间)")]
|
||||
public int? MinIntoStateTime { get; set; } = 999999;
|
||||
|
||||
/// <summary>
|
||||
/// 第一名平均耗时
|
||||
/// </summary>
|
||||
[Display(Name = "MinAvgTime")]
|
||||
[Comment("第一名平均耗时")]
|
||||
public int? MinAvgTime { get; set; } = 999999;
|
||||
|
||||
/// <summary>
|
||||
/// 失误总次数
|
||||
/// </summary>
|
||||
[Display(Name = "TotalErrorCount")]
|
||||
[Comment("失误总次数")]
|
||||
public int? TotalErrorCount { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 失误损失次数
|
||||
/// </summary>
|
||||
[Display(Name = "LossesCount1")]
|
||||
[Comment("失误损失次数")]
|
||||
public int? LossesCount1 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 甩绳速度偏慢损失次数
|
||||
/// </summary>
|
||||
[Display(Name = "LossesCount2")]
|
||||
[Comment("甩绳速度偏慢损失次数")]
|
||||
public int? LossesCount2 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 进入状态过慢损失次数
|
||||
/// </summary>
|
||||
[Display(Name = "LossesCount3")]
|
||||
[Comment("进入状态过慢损失次数")]
|
||||
public int? LossesCount3 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 提交标识
|
||||
/// </summary>
|
||||
[Display(Name = "CheckCode")]
|
||||
[Comment("提交标识")]
|
||||
public string CheckCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班级明细
|
||||
/// </summary>
|
||||
//[Display(Name = "DetailInfo")]
|
||||
//[Comment("班级明细")]
|
||||
//public object DetailInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Display(Name = "CreateTime")]
|
||||
[Comment("创建时间")]
|
||||
public string? CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
[Display(Name = "CreateBy")]
|
||||
[Comment("创建人")]
|
||||
public string? CreateBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
[Display(Name = "UpdateTime")]
|
||||
[Comment("修改时间")]
|
||||
public string? UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改人
|
||||
/// </summary>
|
||||
[Display(Name = "UpdateBy")]
|
||||
[Comment("修改人")]
|
||||
public string? UpdateBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否双人模式
|
||||
/// </summary>
|
||||
[Display(Name = "DoubleFlag")]
|
||||
[Comment("是否双人模式")]
|
||||
public bool? DoubleFlag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据来源(1:pad, 2:微信小程序)
|
||||
/// </summary>
|
||||
[Display(Name = "Source")]
|
||||
[Comment("数据来源(1:pad, 2:微信小程序)")]
|
||||
public int? Source { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学生姓名
|
||||
/// </summary>
|
||||
[Display(Name = "StudentName")]
|
||||
[Comment("学生姓名")]
|
||||
public string? StudentName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学生列表
|
||||
/// </summary>
|
||||
[Display(Name = "StudentList")]
|
||||
[Comment("学生列表")]
|
||||
public List<XW_TrainStudents> StudentList { get; set; } = new List<XW_TrainStudents>();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 训练设置
|
||||
/// </summary>
|
||||
[Display(Name = "TrainSetting")]
|
||||
[Comment("训练设置")]
|
||||
public XW_TrainSetting TrainSetting { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,80 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using YD_YiLu.Api.Entitys;
|
||||
namespace YD_YiLu.Api.SmartSportsEntitys
|
||||
{
|
||||
/// <summary>
|
||||
/// 芯未体测项目表
|
||||
/// </summary>
|
||||
[Table("XW_TestingProject")]
|
||||
public class XW_TestingProject
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Display(Description = "主键Id")]
|
||||
[Comment("Id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学校Id
|
||||
/// </summary>
|
||||
[Display(Name = "OrgId")]
|
||||
[Comment("OrgId")]
|
||||
[Column(TypeName = "int")]
|
||||
public int OrgId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ProjectId
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectId")]
|
||||
[Comment("ProjectId")]
|
||||
[Column(TypeName = "int")]
|
||||
public int ProjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///名称
|
||||
/// </summary>
|
||||
[Display(Name = "名称")]
|
||||
[Comment("名称")]
|
||||
[Column(TypeName = "nvarchar(100)")]
|
||||
public string ProjectName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///枚举
|
||||
/// </summary>
|
||||
[Display(Name = "枚举")]
|
||||
[Comment("枚举")]
|
||||
[Column(TypeName = "nvarchar(100)")]
|
||||
public string CategoryEnum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///枚举
|
||||
/// </summary>
|
||||
[Display(Name = "枚举")]
|
||||
[Comment("枚举")]
|
||||
[Column(TypeName = "int")]
|
||||
public int CategoryValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///IsOpen
|
||||
/// </summary>
|
||||
[Display(Name = "IsOpen")]
|
||||
[Comment("IsOpen")]
|
||||
[Column(TypeName = "bit")]
|
||||
public bool IsOpen { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///IsShow
|
||||
/// </summary>
|
||||
[Display(Name = "IsShow")]
|
||||
[Comment("IsShow")]
|
||||
[Column(TypeName = "bit")]
|
||||
public bool IsShow { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,108 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using YD_YiLu.Api.Entitys;
|
||||
|
||||
namespace VOL.Entity.DomainModels.XinWei
|
||||
{
|
||||
[Table("XW_TrainSetting")]
|
||||
public class XW_TrainSetting
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Display(Description = "主键Id")]
|
||||
[Comment("Id")]
|
||||
public int? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 训练ID
|
||||
/// </summary>
|
||||
[Display(Name = "TrainId")]
|
||||
[Comment("训练ID")]
|
||||
public int? TrainId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 圈数
|
||||
/// </summary>
|
||||
[Display(Name = "CircleCount")]
|
||||
[Comment("圈数")]
|
||||
public int? CircleCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 每圈时间间隔
|
||||
/// </summary>
|
||||
[Display(Name = "CircleInterval")]
|
||||
[Comment("每圈时间间隔")]
|
||||
public int? CircleInterval { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 首圈是否整圈(1-不完整,2-完整)
|
||||
/// </summary>
|
||||
[Display(Name = "FirstCircleWhole")]
|
||||
[Comment("首圈是否整圈(1-不完整,2-完整)")]
|
||||
public decimal? FirstCircleWhole { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 首圈时间间隔
|
||||
/// </summary>
|
||||
[Display(Name = "FirstCircleInterval")]
|
||||
[Comment("首圈时间间隔")]
|
||||
public int? FirstCircleInterval { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 保留秒以下的小数位数(1:保留百分之一秒,0:保留十分之一秒)
|
||||
/// </summary>
|
||||
[Display(Name = "DecimalPlace")]
|
||||
[Comment("保留秒以下的小数位数")]
|
||||
public decimal? DecimalPlace { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生圈数
|
||||
/// </summary>
|
||||
[Display(Name = "CircleCountGirl")]
|
||||
[Comment("女生圈数")]
|
||||
public int? CircleCountGirl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生每圈时间间隔
|
||||
/// </summary>
|
||||
[Display(Name = "CircleIntervalGirl")]
|
||||
[Comment("女生每圈时间间隔")]
|
||||
public int? CircleIntervalGirl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生首圈是否整圈(1-不完整,2-完整)
|
||||
/// </summary>
|
||||
[Display(Name = "FirstCircleWholeGirl")]
|
||||
[Comment("女生首圈是否整圈(1-不完整,2-完整)")]
|
||||
public decimal? FirstCircleWholeGirl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 女生首圈时间间隔
|
||||
/// </summary>
|
||||
[Display(Name = "FirstCircleIntervalGirl")]
|
||||
[Comment("女生首圈时间间隔")]
|
||||
public int? FirstCircleIntervalGirl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Display(Name = "CreateTime")]
|
||||
[Comment("创建时间")]
|
||||
public string CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
[Display(Name = "CreateBy")]
|
||||
[Comment("创建人")]
|
||||
public string CreateBy { get; set; }
|
||||
|
||||
public int XW_SportsTestDataId { get; set; }
|
||||
|
||||
|
||||
public XW_SportsTestData XW_SportsTestData { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,361 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using YD_YiLu.Api.Entitys;
|
||||
|
||||
namespace VOL.Entity.DomainModels.XinWei
|
||||
{
|
||||
[Table("XW_TrainStudents")]
|
||||
public class XW_TrainStudents
|
||||
{
|
||||
/// <summary>
|
||||
/// 编号
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Display(Description = "主键Id")]
|
||||
[Comment("Id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 训练ID
|
||||
/// </summary>
|
||||
[Display(Name = "TrainId")]
|
||||
[Comment("训练ID")]
|
||||
public int? TrainId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目ID
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectId")]
|
||||
[Comment("项目ID")]
|
||||
public int? ProjectId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 项目类型(1跳绳2跑步)
|
||||
/// </summary>
|
||||
[Display(Name = "ProjectKind")]
|
||||
[Comment("项目类型(1跳绳2跑步)")]
|
||||
public int? ProjectKind { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学校ID
|
||||
/// </summary>
|
||||
[Display(Name = "OrgId")]
|
||||
[Comment("学校ID")]
|
||||
public int? OrgId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 年级ID
|
||||
/// </summary>
|
||||
[Display(Name = "GradeId")]
|
||||
[Comment("年级ID")]
|
||||
public int GradeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 年级名称
|
||||
/// </summary>
|
||||
[Display(Name = "GradeName")]
|
||||
[Comment("年级名称")]
|
||||
public string GradeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班级ID
|
||||
/// </summary>
|
||||
[Display(Name = "ClassId")]
|
||||
[Comment("班级ID")]
|
||||
public int ClassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班级名称
|
||||
/// </summary>
|
||||
[Display(Name = "ClassName")]
|
||||
[Comment("班级名称")]
|
||||
public string ClassName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 组别
|
||||
/// </summary>
|
||||
[Display(Name = "GroupName")]
|
||||
[Comment("组别")]
|
||||
public string GroupName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 组号
|
||||
/// </summary>
|
||||
[Display(Name = "GroupOrder")]
|
||||
[Comment("组号")]
|
||||
public int? GroupOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 老师ID
|
||||
/// </summary>
|
||||
[Display(Name = "TeacherId")]
|
||||
[Comment("老师ID")]
|
||||
public int? TeacherId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 设备ID
|
||||
/// </summary>
|
||||
[Display(Name = "DeviceId")]
|
||||
[Comment("设备ID")]
|
||||
public string? DeviceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学生ID
|
||||
/// </summary>
|
||||
[Display(Name = "StudentId")]
|
||||
[Comment("学生ID")]
|
||||
public int StudentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学生名称
|
||||
/// </summary>
|
||||
[Display(Name = "StudentName")]
|
||||
[Comment("学生名称")]
|
||||
public string StudentName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别(1男2女)
|
||||
/// </summary>
|
||||
[Display(Name = "Sex")]
|
||||
[Comment("性别(1男2女)")]
|
||||
public int Sex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学号
|
||||
/// </summary>
|
||||
[Display(Name = "StudentNo")]
|
||||
[Comment("学号")]
|
||||
public string StudentNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 标准成绩
|
||||
/// </summary>
|
||||
[Display(Name = "Achievement")]
|
||||
[Comment("标准成绩")]
|
||||
public double? Achievement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 原始标准成绩(被格式化小数点之前的)
|
||||
/// </summary>
|
||||
[Display(Name = "OriginalAchievement")]
|
||||
[Comment("原始标准成绩(被格式化小数点之前的)")]
|
||||
public int? OriginalAchievement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 标准成绩2
|
||||
/// </summary>
|
||||
[Display(Name = "Achievement2")]
|
||||
[Comment("标准成绩2")]
|
||||
public double? Achievement2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 原始标准成绩2(被格式化小数点之前的)
|
||||
/// </summary>
|
||||
[Display(Name = "OriginalAchievement2")]
|
||||
[Comment("原始标准成绩2(被格式化小数点之前的)")]
|
||||
public int? OriginalAchievement2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 得分
|
||||
/// </summary>
|
||||
[Display(Name = "Score")]
|
||||
[Comment("得分")]
|
||||
public double Score { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 加分项得分
|
||||
/// </summary>
|
||||
[Display(Name = "PlusesScore")]
|
||||
[Comment("加分项得分")]
|
||||
public double? PlusesScore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评分等级
|
||||
/// </summary>
|
||||
[Display(Name = "Rating")]
|
||||
[Comment("评分等级")]
|
||||
public int? Rating { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 男生或女生排名
|
||||
/// </summary>
|
||||
[Display(Name = "RankingInGender")]
|
||||
[Comment("男生或女生排名")]
|
||||
public int? RankingInGender { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 全体排名
|
||||
/// </summary>
|
||||
[Display(Name = "Ranking")]
|
||||
[Comment("全体排名")]
|
||||
public int? Ranking { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 失误总次数
|
||||
/// </summary>
|
||||
[Display(Name = "ErrorCount")]
|
||||
[Comment("失误总次数")]
|
||||
public int? ErrorCount { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 失误总耗时
|
||||
/// </summary>
|
||||
[Display(Name = "ErrorTime")]
|
||||
[Comment("失误总耗时")]
|
||||
public int? ErrorTime { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 平均耗时
|
||||
/// </summary>
|
||||
[Display(Name = "AvgTime")]
|
||||
[Comment("平均耗时")]
|
||||
public int? AvgTime { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 有效平均值(中位数)
|
||||
/// </summary>
|
||||
[Display(Name = "MedianTime")]
|
||||
[Comment("有效平均值(中位数)")]
|
||||
public int? MedianTime { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 失误损失次数
|
||||
/// </summary>
|
||||
[Display(Name = "LossesCount1")]
|
||||
[Comment("失误损失次数")]
|
||||
public int? LossesCount1 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 甩绳速度偏慢损失次数
|
||||
/// </summary>
|
||||
[Display(Name = "LossesCount2")]
|
||||
[Comment("甩绳速度偏慢损失次数")]
|
||||
public int? LossesCount2 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 进入状态过慢损失次数
|
||||
/// </summary>
|
||||
[Display(Name = "LossesCount3")]
|
||||
[Comment("进入状态过慢损失次数")]
|
||||
public int? LossesCount3 { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 高一档分数段
|
||||
/// </summary>
|
||||
[Display(Name = "HigherScore")]
|
||||
[Comment("高一档分数段")]
|
||||
public int? HigherScore { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 进入状态耗时
|
||||
/// </summary>
|
||||
[Display(Name = "进入状态耗时")]
|
||||
[Comment("进入状态耗时")]
|
||||
public int? IntoStateTime { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 次数提升空间
|
||||
/// </summary>
|
||||
[Display(Name = "次数提升空间")]
|
||||
[Comment("次数提升空间")]
|
||||
public int? ImproveCount { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 分数提升空间
|
||||
/// </summary>
|
||||
[Display(Name = "分数提升空间")]
|
||||
[Comment("分数提升空间")]
|
||||
public double? ImproveScore { get; set; } = 0.0;
|
||||
|
||||
/// <summary>
|
||||
/// 家长消息发送标识
|
||||
/// </summary>
|
||||
[Display(Name = "家长消息发送标识")]
|
||||
[Comment("家长消息发送标识")]
|
||||
public int? FamilySendFlag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否已经完成
|
||||
/// </summary>
|
||||
[Display(Name = "是否已经完成")]
|
||||
[Comment("是否已经完成")]
|
||||
public bool? Completed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实际完成的数量(圈数
|
||||
/// </summary>
|
||||
[Display(Name = "实际完成的数量(圈数")]
|
||||
[Comment("实际完成的数量(圈数)")]
|
||||
public int? QuantityCompleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 报表显示
|
||||
/// </summary>
|
||||
[Display(Name = "报表显示")]
|
||||
[Comment("报表显示")]
|
||||
public int? ModelType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间
|
||||
/// </summary>
|
||||
[Display(Name = "开始时间")]
|
||||
[Comment("开始时间")]
|
||||
public string? StartTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 教师
|
||||
/// </summary>
|
||||
[Display(Name = "教师")]
|
||||
[Comment("教师")]
|
||||
public string? Teacher { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用时
|
||||
/// </summary>
|
||||
public int Times { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 视频路径
|
||||
/// </summary>
|
||||
public string VideoRecord { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Display(Name = "创建时间")]
|
||||
[Comment("创建时间")]
|
||||
public string? CreateTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
[Display(Name = "创建人")]
|
||||
[Comment("创建人")]
|
||||
public string? CreateBy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
[Display(Name = "修改时间")]
|
||||
[Comment("修改时间")]
|
||||
public string? UpdateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改人
|
||||
/// </summary>
|
||||
[Display(Name = "修改人")]
|
||||
[Comment("修改人")]
|
||||
public string? UpdateBy { get; set; }
|
||||
|
||||
public int XW_SportsTestDataId { get; set; }
|
||||
|
||||
public XW_SportsTestData XW_SportsTestData { get; set; }
|
||||
|
||||
public List<XW_TrainViolationsBO> TrainViolationsBO { get; set; } = new List<XW_TrainViolationsBO>();
|
||||
}
|
||||
}
|
||||
@ -1,53 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VOL.Entity.DomainModels.XinWei
|
||||
{
|
||||
[Table("XW_TrainViolationsBO")]
|
||||
public class XW_TrainViolationsBO
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Display(Description = "主键Id")]
|
||||
[Comment("Id")]
|
||||
public int? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 违规动作编号
|
||||
/// </summary>
|
||||
[Display(Name = "ViolationId")]
|
||||
[Comment("违规动作编号")]
|
||||
public int? ViolationId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 违规动图地址
|
||||
/// </summary>
|
||||
[Display(Name = "违规动图地址")]
|
||||
[Comment("违规动图地址")]
|
||||
public string PicUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 跳绳绊脚次数
|
||||
/// </summary>
|
||||
[Display(Name = "SkipStumblingNumber")]
|
||||
[Comment("跳绳绊脚次数")]
|
||||
public int? SkipStumblingNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 违规动作训练时间
|
||||
/// </summary>
|
||||
[Display(Name = "违规动作训练时间")]
|
||||
[Comment("违规动作训练时间")]
|
||||
public string TrainTime { get; set; }
|
||||
|
||||
|
||||
public XW_TrainStudents XW_TrainStudents { get; set; }
|
||||
}
|
||||
}
|
||||
@ -63,8 +63,6 @@ namespace YD_YiLu.Api
|
||||
|
||||
services.AddSingleton<JwtHelper>();
|
||||
|
||||
services.AddScoped<IXinWeiService, XinWeiService>();
|
||||
services.AddScoped<ILargeScreenService, LargeScreenService>();
|
||||
services.AddScoped<IDeviceSyncService, DeviceSyncService>();
|
||||
|
||||
services.AddSingleton<ICameraDeviceSocketRegistry, CameraDeviceSocketRegistry>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user