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.WebApi.Filter; namespace VOL.WebApi.Controllers.Business { /// /// 课程训练 /// [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 项目类型 /// /// 获取年级对应测试项目 /// /// /// [HttpGet(nameof(GetCategoryColumnNameList))] public async Task> GetCategoryColumnNameList(int gradeId) { return await _trainingDataService.GetCategoryColumnNameList(gradeId); } /// /// 训练项目类型 /// /// [HttpGet(nameof(ItemTypeList))] public async Task ItemTypeList() { return await _trainingDataService.ItemTypeList(); } /// /// 体测项目类型 /// /// [HttpGet(nameof(CategoryList))] public async Task CategoryList() { return await _trainingDataService.CategoryList(); } #endregion #region 训练数据 /// /// 训练数据-课堂模式列表 /// /// [HttpGet(nameof(GetTrainingClassRoomModeDataList))] public async Task> GetTrainingClassRoomModeDataList(ClassRoomModeDataParam paramDto) { return await _trainingDataService.GetTrainingClassRoomModeDataList(paramDto); } /// /// 训练数据-课堂模式导出 /// /// [HttpGet(nameof(ClassRoomModeDataExport))] public async Task ClassRoomModeDataExport(ClassRoomModeExportParam paramDto) { var rseList = await _trainingDataService.GetTrainingClassRoomModeDataExport(paramDto); var disList = new Dictionary> { { "课堂模式训练数据", rseList } }; var exportColumns = Tool.GetPropertyNames(); 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")}"); } /// /// 训练数据-课堂模式详情分页 /// /// [HttpGet(nameof(GetClassRoomModeDataDetails))] public async Task> GetClassRoomModeDataDetails(ClassRoomModeDataDetailsParam paramDto) { return await _trainingDataService.GetClassRoomModeDataDetails(paramDto); } /// /// 训练数据-课堂模式详情导出 /// /// [HttpGet(nameof(ClassRoomModeDataDetailsExport))] public async Task ClassRoomModeDataDetailsExport(ClassRoomModeDataExportParam paramDto) { var rseList = await _trainingDataService.ClassRoomModeDataDetailsExport(paramDto); var disList = new Dictionary> { { "课堂模式训练详情数据", rseList } }; var exportColumns = Tool.GetPropertyNames(); 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 自由模式 /// /// 自由模式列表 /// /// [HttpGet(nameof(GetFreeModeDataList))] public async Task> GetFreeModeDataList(FreeModeDataParam paramDto) { return await _trainingDataService.FreeModeDataList(paramDto); } /// /// 自由模式导出 /// /// /// [HttpGet(nameof(GetFreeModeDataExport))] public async Task GetFreeModeDataExport(FreeModeDataExportParam paramDto) { var rseList = await _trainingDataService.FreeModeDataExport(paramDto); var disList = new Dictionary> { { "自由模式列表导出", rseList } }; var exportColumns = Tool.GetPropertyNames(); 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 体测数据 /// /// 体测数据-课堂模式列表 /// /// /// [HttpGet(nameof(GetTestClassRoomModeDataList))] public async Task> GetTestClassRoomModeDataList(ClassRoomModeDataParam paramDto) { return await _trainingDataService.GetTestClassRoomModeDataList(paramDto); } /// /// 体测数据-课堂模式导出 /// /// /// [HttpGet(nameof(SportsTestDataExport))] public async Task SportsTestDataExport(ClassRoomModeExportParam paramDto) { var rseList = await _trainingDataService.SportsTestDataExport(paramDto); var disList = new Dictionary> { { "课堂模式体测成绩数据导出", rseList } }; var exportColumns = Tool.GetPropertyNames(); 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")}"); } /// /// 体测数据-课堂模式详情列表 /// /// [HttpGet(nameof(GetSportsTestDetails))] public async Task> GetSportsTestDetails(SportsTestDetailsParam paramDto) { return await _trainingDataService.GetSportsTestDetails(paramDto); } /// /// 体测数据-课堂模式详情导出 /// /// /// [HttpGet(nameof(SportsTestDetailsExport))] public async Task SportsTestDetailsExport(SportsTestExportParam paramDto) { var rseList = await _trainingDataService.GetSportsTestDetailsExport(paramDto); var disList = new Dictionary> { { "课堂模式体测成绩详情列表导出", rseList } }; var exportColumns = Tool.GetPropertyNames(); 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")}"); } /// /// 体测数据-总体数据列表 /// /// [HttpGet(nameof(GetOverallDataPageList))] public async Task> GetOverallDataPageList(GetOverallDataPageListParam paramDto) { return await _trainingDataService.GetOverallDataPageList(paramDto); } /// /// 体测数据-总体数据导出 /// /// /// [HttpGet(nameof(GetOverallDataExport))] public async Task 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>> { { 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 视力记录 /// /// 获取导入视力记录模板 /// /// [HttpPost(nameof(GetImportVisionDataTemplate))] public ActionResult GetImportVisionDataTemplate() { var disList = new Dictionary> { { "导入视力记录模板", new List() } }; var exportColumns = Tool.GetPropertyNames(); 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", "导入视力记录模板"); } /// /// 导入视力记录 /// /// /// /// [HttpPost(nameof(ImportVisionData))] public async Task ImportVisionData(IFormFile file) { await _trainingDataService.ImportVisionData(file); return Ok("导入成功"); } /// /// 视力记录列表 /// /// [HttpGet(nameof(GetVisionDataList))] public async Task> GetVisionDataList(VisionDataListParam paramDto) { return await _trainingDataService.GetVisionDataList(paramDto); } #endregion #region 课堂报告 /// /// 课堂报告列表 /// /// [HttpGet(nameof(GetClassReportList))] public async Task> GetClassReportList(ClassReportListParam paramDto) { return await _trainingDataService.GetClassReportList(paramDto); } /// /// 课堂报告详情 /// /// [HttpGet(nameof(GetClassReportDetails))] public async Task GetClassReportDetails(int id) { return await _trainingDataService.GetClassReportDetails(id); } #endregion } }