396 lines
15 KiB
C#
396 lines
15 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using VOL.Business.IServices.School;
|
|
using VOL.Business.IServices.Training;
|
|
using VOL.Business.Services.School;
|
|
using VOL.Business.Services.Training;
|
|
using VOL.Core.Filters;
|
|
using VOL.Core.Utilities;
|
|
using VOL.Entity.Enum;
|
|
using VOL.Model;
|
|
using VOL.Model.Ai;
|
|
using VOL.Model.IOT.Response;
|
|
using VOL.Model.School.Request;
|
|
using VOL.Model.Training.Response;
|
|
using VOL.WebApi.Filter;
|
|
|
|
namespace VOL.WebApi.Controllers.Business
|
|
{
|
|
/// <summary>
|
|
/// 课程训练
|
|
/// </summary>
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
[ApiExplorerSettings(GroupName = "v3")]
|
|
[TypeFilter(typeof(CustomApiResponseFilter))]
|
|
public class TrainingDataController : ControllerBase
|
|
{
|
|
#region 初始化
|
|
|
|
private readonly II_TrainingDataService _trainingDataService;
|
|
public TrainingDataController(
|
|
II_TrainingDataService trainingDataService)
|
|
{
|
|
_trainingDataService = trainingDataService;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 项目类型
|
|
|
|
|
|
/// <summary>
|
|
/// 获取年级对应测试项目
|
|
/// </summary>
|
|
/// <param name="gradeId"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetCategoryColumnNameList))]
|
|
public async Task<List<CategoryColumnNameModel>> GetCategoryColumnNameList(int gradeId)
|
|
{
|
|
return await _trainingDataService.GetCategoryColumnNameList(gradeId);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 训练项目类型
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(ItemTypeList))]
|
|
public async Task<DataTypeAndCategory> ItemTypeList()
|
|
{
|
|
return await _trainingDataService.ItemTypeList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测项目类型
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(CategoryList))]
|
|
public async Task<DataTypeAndCategory> CategoryList()
|
|
{
|
|
return await _trainingDataService.CategoryList();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 训练数据
|
|
|
|
/// <summary>
|
|
/// 训练数据-课堂模式列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetTrainingClassRoomModeDataList))]
|
|
public async Task<PageDataDto<ClassRoomModeDataModel>> GetTrainingClassRoomModeDataList(ClassRoomModeDataParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetTrainingClassRoomModeDataList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 训练数据-课堂模式导出
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(ClassRoomModeDataExport))]
|
|
public async Task<ActionResult> ClassRoomModeDataExport(ClassRoomModeExportParam paramDto)
|
|
{
|
|
var rseList = await _trainingDataService.GetTrainingClassRoomModeDataExport(paramDto);
|
|
|
|
var disList = new Dictionary<string, List<ClassRoomModeDataModel>>
|
|
{
|
|
{ "课堂模式训练数据", rseList }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<ClassRoomModeDataModel>();
|
|
|
|
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
|
|
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"课堂模式训练数据{DateTime.Now.ToString("yyyyMMddHHmmss")}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 训练数据-课堂模式详情分页
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetClassRoomModeDataDetails))]
|
|
public async Task<PageDataDto<ClassRoomModeDataDetails>> GetClassRoomModeDataDetails(ClassRoomModeDataDetailsParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetClassRoomModeDataDetails(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 训练数据-课堂模式详情导出
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(ClassRoomModeDataDetailsExport))]
|
|
public async Task<ActionResult> ClassRoomModeDataDetailsExport(ClassRoomModeDataExportParam paramDto)
|
|
{
|
|
var rseList = await _trainingDataService.ClassRoomModeDataDetailsExport(paramDto);
|
|
|
|
var disList = new Dictionary<string, List<ClassRoomModeDataDetails>>
|
|
{
|
|
{ "课堂模式训练详情数据", rseList }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<ClassRoomModeDataDetails>();
|
|
|
|
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
|
|
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"课堂模式训练详情数据{DateTime.Now.ToString("yyyyMMddHHmmss")}");
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 自由模式
|
|
|
|
/// <summary>
|
|
/// 自由模式列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetFreeModeDataList))]
|
|
public async Task<PageDataDto<FreeModeDataModel>> GetFreeModeDataList(FreeModeDataParam paramDto)
|
|
{
|
|
return await _trainingDataService.FreeModeDataList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 自由模式导出
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetFreeModeDataExport))]
|
|
public async Task<ActionResult> GetFreeModeDataExport(FreeModeDataExportParam paramDto)
|
|
{
|
|
var rseList = await _trainingDataService.FreeModeDataExport(paramDto);
|
|
|
|
var disList = new Dictionary<string, List<FreeModeDataModel>>
|
|
{
|
|
{ "自由模式列表导出", rseList }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<FreeModeDataModel>();
|
|
|
|
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
|
|
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"自由模式列表导出{DateTime.Now.ToString("yyyyMMddHHmmss")}");
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 体测数据
|
|
/// <summary>
|
|
/// 体测数据-课堂模式列表
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetTestClassRoomModeDataList))]
|
|
public async Task<PageDataDto<ClassRoomModeDataModel>> GetTestClassRoomModeDataList(ClassRoomModeDataParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetTestClassRoomModeDataList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测数据-课堂模式导出
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(SportsTestDataExport))]
|
|
public async Task<ActionResult> SportsTestDataExport(ClassRoomModeExportParam paramDto)
|
|
{
|
|
var rseList = await _trainingDataService.SportsTestDataExport(paramDto);
|
|
|
|
var disList = new Dictionary<string, List<ClassRoomModeDataModel>>
|
|
{
|
|
{ "课堂模式体测成绩数据导出", rseList }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<ClassRoomModeDataModel>();
|
|
|
|
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
|
|
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"体测成绩数据导出{DateTime.Now.ToString("yyyyMMddHHmmss")}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测数据-课堂模式详情列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetSportsTestDetails))]
|
|
public async Task<PageDataDto<SportsTestDetailsModel>> GetSportsTestDetails(SportsTestDetailsParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetSportsTestDetails(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测数据-课堂模式详情导出
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(SportsTestDetailsExport))]
|
|
public async Task<ActionResult> SportsTestDetailsExport(SportsTestExportParam paramDto)
|
|
{
|
|
var rseList = await _trainingDataService.GetSportsTestDetailsExport(paramDto);
|
|
|
|
var disList = new Dictionary<string, List<SportsTestDetailsModel>>
|
|
{
|
|
{ "课堂模式体测成绩详情列表导出", rseList }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<SportsTestDetailsModel>();
|
|
|
|
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
|
|
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"体测成绩详情列表导出{DateTime.Now.ToString("yyyyMMddHHmmss")}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测数据-总体数据列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetOverallDataPageList))]
|
|
public async Task<PageDataDto<dynamic>> GetOverallDataPageList(GetOverallDataPageListParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetOverallDataPageList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测数据-总体数据导出
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetOverallDataExport))]
|
|
public async Task<ActionResult> GetOverallDataExport(GetOverallDataExportParam paramDto)
|
|
{
|
|
var rseList = await _trainingDataService.GetOverallDataExport(paramDto);
|
|
|
|
var excelName = paramDto.ExportType switch
|
|
{
|
|
OverallDataExportType.Result => "总体数据导出(体测成绩)",
|
|
OverallDataExportType.ScoreAndRank => "总体数据导出(得分和等级)",
|
|
OverallDataExportType.AdditionalScore => "总体数据导出(附加分)",
|
|
_ => string.Empty
|
|
};
|
|
|
|
var disList = new Dictionary<string, List<Dictionary<string, string>>>
|
|
{
|
|
{ excelName, rseList }
|
|
};
|
|
|
|
var excelBytes = Tool.DicExportToExcel(disList);
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"{excelName}{DateTime.Now.ToString("yyyyMMddHHmmss")}");
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 视力记录
|
|
|
|
/// <summary>
|
|
/// 获取导入视力记录模板
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(GetImportVisionDataTemplate))]
|
|
public ActionResult GetImportVisionDataTemplate()
|
|
{
|
|
var disList = new Dictionary<string, List<ImportVisionDataParam>>
|
|
{
|
|
{ "导入视力记录模板", new List<ImportVisionDataParam>() }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<ImportVisionDataParam>();
|
|
|
|
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
|
|
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
|
|
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "导入视力记录模板");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入视力记录
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
[HttpPost(nameof(ImportVisionData))]
|
|
public async Task<ActionResult> ImportVisionData(IFormFile file)
|
|
{
|
|
await _trainingDataService.ImportVisionData(file);
|
|
return Ok("导入成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 视力记录列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetVisionDataList))]
|
|
public async Task<PageDataDto<VisionDataModel>> GetVisionDataList(VisionDataListParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetVisionDataList(paramDto);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 课堂报告
|
|
|
|
/// <summary>
|
|
/// 课堂报告列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetClassReportList))]
|
|
public async Task<PageDataDto<ClassReportModel>> GetClassReportList(ClassReportListParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetClassReportList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 课堂报告详情
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetClassReportDetails))]
|
|
public async Task<GetClassReportDetailsModel> GetClassReportDetails(int id)
|
|
{
|
|
return await _trainingDataService.GetClassReportDetails(id);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 学生课堂报告详情
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetStudentClassReportDetails))]
|
|
public async Task<GetStudentClassReportDetailsModel> GetStudentClassReportDetails(GetStudentClassReportDetailsDto paramDto)
|
|
{
|
|
return await _trainingDataService.GetStudentClassReportDetails(paramDto);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 用户训练数据
|
|
|
|
/// <summary>
|
|
/// 获取用户训练数据列表
|
|
/// </summary>
|
|
/// <param name="paramDto">查询参数</param>
|
|
/// <returns>用户训练数据列表</returns>
|
|
[HttpGet(nameof(GetUserTrainingDataList))]
|
|
public async Task<PageDataDto<UserTrainingDataModel>> GetUserTrainingDataList([FromQuery] UserTrainingDataQueryParam paramDto)
|
|
{
|
|
return await _trainingDataService.GetUserTrainingDataList(paramDto);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|