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
{
///
/// 课程训练
///
[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);
}
///
/// 学生课堂报告详情
///
///
[HttpGet(nameof(GetStudentClassReportDetails))]
public async Task GetStudentClassReportDetails(GetStudentClassReportDetailsDto paramDto)
{
return await _trainingDataService.GetStudentClassReportDetails(paramDto);
}
#endregion
#region 用户训练数据
///
/// 获取用户训练数据列表
///
/// 查询参数
/// 用户训练数据列表
[HttpGet(nameof(GetUserTrainingDataList))]
public async Task> GetUserTrainingDataList([FromQuery] UserTrainingDataQueryParam paramDto)
{
return await _trainingDataService.GetUserTrainingDataList(paramDto);
}
#endregion
}
}