大屏打的地

This commit is contained in:
tanglong 2025-07-30 16:51:08 +08:00
parent d6f1972ad9
commit 84213487a0
24 changed files with 869 additions and 33 deletions

9
.gitignore vendored
View File

@ -1 +1,8 @@
.vs/
.vs
.vscode
bin
obj
*.jfm
*.dbmdl
*.user
node_modules

9
Server/.gitignore vendored
View File

@ -1 +1,8 @@
.vs/
.vs
.vscode
bin
obj
*.jfm
*.dbmdl
*.user
node_modules

View File

@ -5,6 +5,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace YD_XinWei.Commons.Dto.LargeScreen
{
@ -21,12 +22,12 @@ namespace YD_XinWei.Commons.Dto.LargeScreen
/// <summary>
/// 各项目数据
/// </summary>
public ItemDataDto ItemData { get; set; } = new ItemDataDto();
public List<ItemDataDto> ItemDatalist { get; set; } = new List<ItemDataDto>();
/// <summary>
/// 班级运动榜
/// </summary>
public ClassSportsRankingDto ClassSportsRankList { get; set; } = new ClassSportsRankingDto();
public List<ClassSportsRankingDto> ClassSportsRankList { get; set; } = new List<ClassSportsRankingDto>();
/// <summary>
/// 各项目实时数据
@ -71,9 +72,9 @@ namespace YD_XinWei.Commons.Dto.LargeScreen
public class ItemDataDto
{
/// <summary>
/// 项目id
/// 项目枚举
/// </summary>
public int ProjectId { get; set; }
public int CategoryValue { get; set; }
/// <summary>
/// 项目优良率
@ -114,7 +115,7 @@ namespace YD_XinWei.Commons.Dto.LargeScreen
/// <summary>
/// 成绩
/// </summary>
public string Score { get; set; }
public float Value { get; set; }
}
/// <summary>
@ -166,7 +167,7 @@ namespace YD_XinWei.Commons.Dto.LargeScreen
/// <summary>
/// 年级班级名称
/// </summary>
public int GradeAndClassName { get; set; }
public string GradeAndClassName { get; set; }
/// <summary>
/// 项目名称
@ -176,12 +177,12 @@ namespace YD_XinWei.Commons.Dto.LargeScreen
/// <summary>
/// 成绩
/// </summary>
public int Result { get; set; }
public float Value { get; set; }
/// <summary>
/// 得分
/// </summary>
public int Score { get; set; }
public float Score { get; set; }
/// <summary>
/// 等级
@ -192,6 +193,6 @@ namespace YD_XinWei.Commons.Dto.LargeScreen
/// 创建时间
/// </summary>
public string CreateTime { get; set; }
public string ScoreTime { get; set; }
}
}

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace YD_XinWei.Commons.Dto.LargeScreen
{
/// <summary>
/// 体育项目列表
/// </summary>
public class SportsProjectListDto
{
/// <summary>
/// ProjectId
/// </summary>
public int ProjectId { get; set; }
/// <summary>
///名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 类别
/// </summary>
public int CategoryValue { get; set; }
}
}

View File

@ -0,0 +1,97 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace YD_XinWei.Commons.Dto.LargeScreen
{
public class SportsTestDataDto
{
/// <summary>
///学校编号
/// </summary>
public string? SchoolCode { get; set; }
/// <summary>
///老师Id
/// </summary>
public int TeacherId { get; set; }
/// <summary>
///年级Id
/// </summary>
public int GradeId { get; set; }
/// <summary>
///年级名称
/// </summary>
///
public string? GradeName { get; set; }
/// <summary>
///班级Id
/// </summary>
///
public int ClassId { get; set; }
/// <summary>
///班级名称
/// </summary>
///
public string? ClassName { get; set; }
/// <summary>
///学生学号
/// </summary>
public string StudentNo { get; set; }
/// <summary>
///学生名称
/// </summary>
public string StudentName { get; set; }
/// <summary>
///性别
/// </summary>
public int Sex { get; set; }
/// <summary>
///类别枚举值
/// </summary>
public int CategoryValue { get; set; }
/// <summary>
///测试结果
/// </summary>
public float Value { get; set; }
/// <summary>
///得分
/// </summary>
public float Score { get; set; }
/// <summary>
/// 等级
/// </summary>
public string? Rank { get; set; }
/// <summary>
///测试时间
/// </summary>
public DateTime ScoreTime { get; set; }
/// <summary>
/// 身高[单位:厘米]
/// </summary>
public float? Height { get; set; }
/// <summary>
/// 体重[单位:千克]
/// </summary>
public float? Weight { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace YD_XinWei.Commons.Dto.LargeScreen
{
/// <summary>
/// 学生列表
/// </summary>
public class StudentListDto
{
public string StudentNo { get; set; }
public string Photo { get; set; }
public int Sex { get; set; }
}
}

View File

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("YD_XinWei.Commons")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9db8634ffd224583a038708ca65e7bbd724860fd")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d6f1972ad9eeb1f7748d627b93cfc055c9be74da")]
[assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Commons")]
[assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Commons")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
242218b26af20e234a480d64e61bc7bcf41a4da0f6701959d0541467151cf2ce
f2cd6ca8ff95a7c4607306742b0f6455f67e97940b68e393657f6ff677fbc6f0

View File

@ -76,3 +76,15 @@ C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\
C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\refint\YD_XinWei.Commons.dll
C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.pdb
C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\ref\YD_XinWei.Commons.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\bin\Debug\net6.0\YD_XinWei.Commons.deps.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\bin\Debug\net6.0\YD_XinWei.Commons.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\bin\Debug\net6.0\YD_XinWei.Commons.pdb
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.csproj.AssemblyReference.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.AssemblyInfoInputs.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.AssemblyInfo.cs
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.csproj.CoreCompileInputs.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\refint\YD_XinWei.Commons.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\YD_XinWei.Commons.pdb
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei.Commons\obj\Debug\net6.0\ref\YD_XinWei.Commons.dll

View File

@ -0,0 +1,48 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using YD_XinWei.Api.Services.Impl;
using YD_XinWei.Api.Services.Interface;
using YD_XinWei.Commons.Dto;
using YD_XinWei.Commons.Dto.LargeScreen;
using YD_XinWei.Commons.Dto.Open;
namespace YD_XinWei.Api.Controllers
{
[ApiVersion("1.0")]
[AllowAnonymous]
public class LargeScreenController : ControllerBase
{
private readonly ILargeScreenService _largeScreenService;
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;
}
}
}

View File

@ -19,7 +19,7 @@ namespace YD_XinWei.Api
{
serverOptions.Limits.MaxRequestBodySize = 10485760;
});
webBuilder.UseKestrel().UseUrls("http://*:9994");
webBuilder.UseKestrel().UseUrls("http://*:9995");
webBuilder.UseIIS();
webBuilder.UseStartup<Startup>();
}).UseServiceProviderFactory(new AutofacServiceProviderFactory());

View File

@ -1,8 +1,11 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore;
using VOL.Entity.DomainModels.XinWei;
using VOL.Entity.Enum;
using YD_XinWei.Api.Context;
using YD_XinWei.Api.Services.Interface;
using YD_XinWei.Api.SmartSportsEntitys;
using YD_XinWei.Commons.Dto.Common;
using YD_XinWei.Commons.Dto.LargeScreen;
using YD_XinWei.Commons.MemoryCaches;
@ -28,6 +31,32 @@ namespace YD_XinWei.Api.Services.Impl
_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
}).ToListAsync();
}
return res;
}
/// <summary>
/// 项目成绩大屏数据
/// </summary>
@ -37,34 +66,163 @@ namespace YD_XinWei.Api.Services.Impl
{
var res = new LargeScreenDto();
var schoolCode = _caching.Get(orgId.ToString());
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(orgId.ToString(), schoolCode);
_caching.Add(schoolKeyKey, schoolCode);
}
var sportsTestDataKey = $"SportsTestData_{schoolCode}";
var studentListKey = $"StudentList_{schoolCode}";
var studentInfo = await _sportsContext.Student.Where(x => x.SchoolCode == schoolCode).Select(x => x.Sex).ToListAsync();
var studentList = _caching.Get<List<StudentListDto>>(studentListKey);
res.BasicInfo.FemaleCount = studentInfo.Count(x => x == 2);
res.BasicInfo.MaleCount = studentInfo.Count(x => x == 1);
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 sportsTestData = _caching.Get<List<XW_SportsTestData>>(sportsTestDataKey);
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.XW_SportsTestData.Where(x => x.OrgId == orgId).ToListAsync();
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, 3600);
}
var bestScoreData = sportsTestData
.GroupBy(x => x.StudentNo)
.Select(g => g.OrderByDescending(x => x.Score).First())
.ToList();
var projectResults = bestScoreData
.GroupBy(x => x.CategoryValue)
.Select(g => new ItemDataDto
{
CategoryValue = g.Key,
// 优良率计算:分数 > 80 的人数 ÷ 总人数
ExcellentRate = g.Count(x => x.Score > 80) * 100.0 / Math.Max(g.Count(), 1),
// 男生前十名
MaleRankList = g.Where(x => x.Sex == 1)
.OrderByDescending(x => x.Value)
.Take(10)
.Select((x, index) => new StudentScoreRankingDto
{
Rank = index + 1,
StudentNo = x.StudentNo,
StudentName = x.StudentName,
Value = x.Value
}).ToList(),
// 女生前十名
FemaleRankList = g.Where(x => x.Sex == 2)
.OrderByDescending(x => x.Value)
.Take(10)
.Select((x, index) => new StudentScoreRankingDto
{
Rank = index + 1,
StudentNo = x.StudentNo,
StudentName = x.StudentName,
Value = x.Value
}).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")
})
.ToList();
res.ItemRealTimeResultList = realTimeResults;
return res;
}

View File

@ -1,4 +1,5 @@
using YD_XinWei.Commons.Dto.LargeScreen;
using YD_XinWei.Commons.Dto.Common;
using YD_XinWei.Commons.Dto.LargeScreen;
using YD_XinWei.Commons.Dto.Open;
namespace YD_XinWei.Api.Services.Interface
@ -8,6 +9,14 @@ namespace YD_XinWei.Api.Services.Interface
/// </summary>
public interface ILargeScreenService
{
/// <summary>
/// 体育项目
/// </summary>
/// <param name="orgId">学校Id</param>
/// <returns></returns>
Task<List<SportsProjectListDto>> SportsProjectList(int orgId);
/// <summary>
/// 项目成绩大屏数据
/// </summary>

View File

@ -39,7 +39,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "老师名称")]
[Comment("老师名称")]
[Column(TypeName = "nvarchar(100)")]
public string TeacherName { get; set; }
public string? TeacherName { get; set; }
/// <summary>
@ -56,7 +56,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "年级名称")]
[Comment("年级名称")]
[Column(TypeName = "nvarchar(100)")]
public string GradeName { get; set; }
public string? GradeName { get; set; }
/// <summary>
///班级Id
@ -72,7 +72,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "班级名称")]
[Comment("班级名称")]
[Column(TypeName = "nvarchar(100)")]
public string ClassName { get; set; }
public string? ClassName { get; set; }
/// <summary>
///学生学号
@ -112,7 +112,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "类别名称")]
[Comment("类别名称")]
[Column(TypeName = "nvarchar(100)")]
public string CategoryEnum { get; set; }
public string? CategoryEnum { get; set; }
/// <summary>
///测试结果
@ -177,7 +177,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "等级")]
[Comment("等级")]
[Column(TypeName = "nvarchar(100)")]
public string Rank { get; set; }
public string? Rank { get; set; }
/// <summary>
/// 班级排名
@ -234,7 +234,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "备注")]
[Comment("备注")]
[Column(TypeName = "text")]
public string Remarks { get; set; }
public string? Remarks { get; set; }
/// <summary>
/// 当前年份

View File

@ -37,7 +37,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "年级名称")]
[Comment("年级名称")]
[Column(TypeName = "nvarchar(100)")]
public string GradeName { get; set; }
public string? GradeName { get; set; }
/// <summary>
///班级名称
@ -45,7 +45,7 @@ namespace YD_XinWei.Api.SmartSportsEntitys
[Display(Name = "班级名称")]
[Comment("班级名称")]
[Column(TypeName = "nvarchar(100)")]
public string ClassName { get; set; }
public string? ClassName { get; set; }
}
}

View File

@ -61,8 +61,9 @@ namespace YD_XinWei.Api
services.AddSingleton<JwtHelper>();
services.AddScoped<IXinWeiService, XinWeiService>();
services.AddScoped<ILargeScreenService, LargeScreenService>();
services.AddScoped<ICaching, MemoryCaching>();
services.AddScoped<ICacheService, RedisCacheService>();
services.AddSession();
services.AddMemoryCache();
services.AddHttpContextAccessor();

View File

@ -21,6 +21,7 @@
ExpMinutes = configuration["ExpMinutes"];
DbConnectionString = configuration["DbConnectionString"];
SmartSportsString = configuration["SmartSportsString"];
RedisConnectionString = configuration["RedisConnectionString"];
CorsUrls = configuration["CorsUrls"].Split(',');
WeChat = configuration.GetSection("WeChat").Get<WeChatConfig>();
}

View File

@ -102,6 +102,68 @@
}
]
},
{
"ContainingType": "YD_XinWei.Api.Controllers.LargeScreenController",
"Method": "ItemResultLargeScreenData",
"RelativePath": "LargeScreen/{apiVersion}/ItemResultLargeScreenData",
"HttpMethod": "GET",
"IsController": true,
"Order": 0,
"Parameters": [
{
"Name": "orgId",
"Type": "System.Int32",
"IsRequired": false
},
{
"Name": "apiVersion",
"Type": "",
"IsRequired": true
}
],
"ReturnTypes": [
{
"Type": "YD_XinWei.Commons.Dto.LargeScreen.LargeScreenDto",
"MediaTypes": [
"text/plain",
"application/json",
"text/json"
],
"StatusCode": 200
}
]
},
{
"ContainingType": "YD_XinWei.Api.Controllers.LargeScreenController",
"Method": "SportsProjectList",
"RelativePath": "LargeScreen/{apiVersion}/SportsProjectList",
"HttpMethod": "GET",
"IsController": true,
"Order": 0,
"Parameters": [
{
"Name": "orgId",
"Type": "System.Int32",
"IsRequired": false
},
{
"Name": "apiVersion",
"Type": "",
"IsRequired": true
}
],
"ReturnTypes": [
{
"Type": "System.Collections.Generic.List\u00601[[YD_XinWei.Commons.Dto.LargeScreen.SportsProjectListDto, YD_XinWei.Commons, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]",
"MediaTypes": [
"text/plain",
"application/json",
"text/json"
],
"StatusCode": 200
}
]
},
{
"ContainingType": "YD_XinWei.Api.Controllers.XinWeiController",
"Method": "GetOrgSportsProjectList",

View File

@ -6,6 +6,111 @@
"version": "v1"
},
"paths": {
"/LargeScreen/{apiVersion}/SportsProjectList": {
"get": {
"tags": [
"LargeScreen"
],
"summary": "获取项目列表",
"parameters": [
{
"name": "orgId",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "apiVersion",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SportsProjectListDto"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SportsProjectListDto"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SportsProjectListDto"
}
}
}
}
}
}
}
},
"/LargeScreen/{apiVersion}/ItemResultLargeScreenData": {
"get": {
"tags": [
"LargeScreen"
],
"summary": "项目成绩大屏数据",
"parameters": [
{
"name": "orgId",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "apiVersion",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/LargeScreenDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/LargeScreenDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/LargeScreenDto"
}
}
}
}
}
}
},
"/basic/{apiVersion}/device/open/getDeviceInfo": {
"get": {
"tags": [
@ -1396,6 +1501,55 @@
},
"additionalProperties": false
},
"BasicInfoDto": {
"type": "object",
"properties": {
"maleCount": {
"type": "integer",
"format": "int32"
},
"femaleCount": {
"type": "integer",
"format": "int32"
},
"studentCount": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"weekTrainingCount": {
"type": "integer",
"format": "int32"
},
"increase": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"ClassSportsRankingDto": {
"type": "object",
"properties": {
"rank": {
"type": "integer",
"format": "int32"
},
"classId": {
"type": "integer",
"format": "int32"
},
"className": {
"type": "string",
"nullable": true
},
"count": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"DeviceInfoDto": {
"type": "object",
"properties": {
@ -1648,6 +1802,106 @@
},
"additionalProperties": false
},
"ItemDataDto": {
"type": "object",
"properties": {
"categoryValue": {
"type": "integer",
"format": "int32"
},
"excellentRate": {
"type": "number",
"format": "double"
},
"maleRankList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StudentScoreRankingDto"
},
"nullable": true
},
"femaleRankList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StudentScoreRankingDto"
},
"nullable": true
}
},
"additionalProperties": false
},
"ItemRealTimeResultDto": {
"type": "object",
"properties": {
"studentNo": {
"type": "string",
"nullable": true
},
"studentName": {
"type": "string",
"nullable": true
},
"photo": {
"type": "string",
"nullable": true
},
"gradeAndClassName": {
"type": "string",
"nullable": true
},
"projectName": {
"type": "string",
"nullable": true
},
"value": {
"type": "number",
"format": "float"
},
"score": {
"type": "number",
"format": "float"
},
"rank": {
"type": "string",
"nullable": true
},
"scoreTime": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"LargeScreenDto": {
"type": "object",
"properties": {
"basicInfo": {
"$ref": "#/components/schemas/BasicInfoDto"
},
"itemDatalist": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ItemDataDto"
},
"nullable": true
},
"classSportsRankList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ClassSportsRankingDto"
},
"nullable": true
},
"itemRealTimeResultList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ItemRealTimeResultDto"
},
"nullable": true
}
},
"additionalProperties": false
},
"PersonAnalysisVo": {
"type": "object",
"properties": {
@ -1923,6 +2177,24 @@
},
"additionalProperties": false
},
"SportsProjectListDto": {
"type": "object",
"properties": {
"projectId": {
"type": "integer",
"format": "int32"
},
"projectName": {
"type": "string",
"nullable": true
},
"categoryValue": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"SportsRosterDto": {
"type": "object",
"properties": {
@ -2134,6 +2406,28 @@
},
"additionalProperties": false
},
"StudentScoreRankingDto": {
"type": "object",
"properties": {
"rank": {
"type": "integer",
"format": "int32"
},
"studentNo": {
"type": "string",
"nullable": true
},
"studentName": {
"type": "string",
"nullable": true
},
"value": {
"type": "number",
"format": "float"
}
},
"additionalProperties": false
},
"TableDataPersonAnalysisVo": {
"type": "object",
"properties": {

View File

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9db8634ffd224583a038708ca65e7bbd724860fd")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d6f1972ad9eeb1f7748d627b93cfc055c9be74da")]
[assembly: System.Reflection.AssemblyProductAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyTitleAttribute("YD_XinWei.Api")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
b4f63fa29e10d0dac6c934094a7c4f3bdebb2add2cd178a611d5c0347f714af8
853f3940ff1e4c76230b7f689ccce5dc2964ced3eb1c5e1437954d479bd6dbeb

View File

@ -625,3 +625,93 @@ C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWe
C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.genruntimeconfig.cache
C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\ref\YD_XinWei.Api.dll
C:\Users\tangl\Desktop\Code\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets.upToDateCheck.txt
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\appsettings.Development.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\appsettings.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.staticwebassets.endpoints.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.exe
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.deps.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.runtimeconfig.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.pdb
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Api.xml
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Aliyun.OSS.Core.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Autofac.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Autofac.Extensions.DependencyInjection.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\AutoMapper.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\AutoMapper.Collection.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\CSRedisCore.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Humanizer.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.AspNetCore.Authentication.JwtBearer.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.AspNetCore.JsonPatch.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.AspNetCore.Mvc.Versioning.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.Bcl.AsyncInterfaces.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.Bcl.TimeProvider.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.Data.SqlClient.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.EntityFrameworkCore.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.EntityFrameworkCore.Abstractions.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.EntityFrameworkCore.Design.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.EntityFrameworkCore.Relational.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.EntityFrameworkCore.SqlServer.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.Identity.Client.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.IdentityModel.Abstractions.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.IdentityModel.JsonWebTokens.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.IdentityModel.Logging.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.IdentityModel.Protocols.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.IdentityModel.Tokens.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.OpenApi.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Microsoft.Win32.SystemEvents.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Newtonsoft.Json.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Newtonsoft.Json.Bson.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Swashbuckle.AspNetCore.Swagger.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Swashbuckle.AspNetCore.SwaggerGen.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\Swashbuckle.AspNetCore.SwaggerUI.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Configuration.ConfigurationManager.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Diagnostics.DiagnosticSource.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Drawing.Common.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.IdentityModel.Tokens.Jwt.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Runtime.Caching.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Security.Cryptography.ProtectedData.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Security.Permissions.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\System.Windows.Extensions.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\unix\lib\netcoreapp3.1\Microsoft.Data.SqlClient.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.1\Microsoft.Data.SqlClient.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win-arm\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win-arm64\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win-x64\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win-x86\native\Microsoft.Data.SqlClient.SNI.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\Microsoft.Win32.SystemEvents.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\unix\lib\netcoreapp3.0\System.Drawing.Common.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\System.Drawing.Common.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win\lib\netstandard2.0\System.Runtime.Caching.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\System.Windows.Extensions.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Commons.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\bin\Debug\net6.0\YD_XinWei.Commons.pdb
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.csproj.AssemblyReference.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.AssemblyInfoInputs.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.AssemblyInfo.cs
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.csproj.CoreCompileInputs.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.MvcApplicationPartsAssemblyInfo.cs
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.MvcApplicationPartsAssemblyInfo.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\scopedcss\bundle\YD_XinWei.Api.styles.css
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets.build.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets.development.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets.build.endpoints.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets\msbuild.YD_XinWei.Api.Microsoft.AspNetCore.StaticWebAssets.props
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets\msbuild.YD_XinWei.Api.Microsoft.AspNetCore.StaticWebAssetEndpoints.props
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets\msbuild.build.YD_XinWei.Api.props
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets\msbuild.buildMultiTargeting.YD_XinWei.Api.props
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets\msbuild.buildTransitive.YD_XinWei.Api.props
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets.pack.json
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\staticwebassets.upToDateCheck.txt
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWe.7845F25F.Up2Date
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\refint\YD_XinWei.Api.dll
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.xml
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.pdb
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\YD_XinWei.Api.genruntimeconfig.cache
C:\Users\tangl\Desktop\Git\YD_XinWei\Server\YD_XinWei\obj\Debug\net6.0\ref\YD_XinWei.Api.dll