去掉辛未代码

This commit is contained in:
tanglong 2026-06-30 15:12:29 +08:00
parent b1d6610be4
commit f545181680
15 changed files with 0 additions and 3191 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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>();