173 lines
5.6 KiB
C#
173 lines
5.6 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using VOL.Business.IServices;
|
|
using VOL.Business.IServices.School;
|
|
using VOL.Business.Services.School;
|
|
using VOL.Core.Filters;
|
|
using VOL.Core.ManageUser;
|
|
using VOL.Core.Utilities;
|
|
using VOL.Model;
|
|
using VOL.Model.School.Request;
|
|
|
|
namespace VOL.WebApi.Controllers.Business
|
|
{
|
|
/// <summary>
|
|
/// 班级管理
|
|
/// </summary>
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
[ApiExplorerSettings(GroupName = "v3")]
|
|
[TypeFilter(typeof(CustomApiResponseFilter))]
|
|
public class ClassController : ControllerBase
|
|
{
|
|
#region 初始化
|
|
|
|
private readonly IS_ClassService _classService;
|
|
public ClassController(
|
|
IS_ClassService classService)
|
|
{
|
|
_classService = classService;
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 获取年级Id获取所有的班级
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetClassNames))]
|
|
public async Task<List<ClassNameModel>> GetClassNames(int gradeId)
|
|
{
|
|
return await _classService.GetClassNames(gradeId);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 分页获取班级列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetClassPageList))]
|
|
public async Task<PageDataDto<ClassPageListModel>> GetClassPageList(ClassPageListParam paramDto)
|
|
{
|
|
return await _classService.GetClassPageList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 详情
|
|
/// </summary>
|
|
/// <param name="classId"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetClassDetails))]
|
|
public async Task<ClassDetailsModel> GetClassDetails(int classId)
|
|
{
|
|
return await _classService.GetClassDetails(classId);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 新增
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(AddClass))]
|
|
public async Task<ActionResult> AddClass([FromBody] AddClassParam paramDto)
|
|
{
|
|
await _classService.AddClass(paramDto);
|
|
return Ok("新增成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量新增
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(BatchAddClass))]
|
|
public async Task<ActionResult> BatchAddClass([FromBody] BatchAddClassParam paramDto)
|
|
{
|
|
await _classService.BatchAddClass(paramDto);
|
|
return Ok("新增成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(ModifyClass))]
|
|
public async Task<ActionResult> ModifyClass([FromBody] ModifyClassParam paramDto)
|
|
{
|
|
await _classService.ModifyClass(paramDto);
|
|
return Ok("更新成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 班级列表导出
|
|
/// </summary>
|
|
/// <param name="year"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(ClassListExport))]
|
|
public async Task<ActionResult> ClassListExport(ClassPageListExportParam paramDto)
|
|
{
|
|
var rseList = await _classService.GetClassList(paramDto);
|
|
|
|
var disList = new Dictionary<string, List<ClassPageListModel>>
|
|
{
|
|
{ "班级数据", rseList }
|
|
};
|
|
|
|
var exportColumns = Tool.GetPropertyNames<ClassPageListModel>();
|
|
|
|
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>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(ClassWholeDataStats))]
|
|
public async Task<ClassDataStatsModel> ClassWholeDataStats(ClassDataStatsParam paramDto)
|
|
{
|
|
return await _classService.ClassWholeDataStats(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 班级体侧等级占比人数
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(TestResultRankRate))]
|
|
public async Task<ExcellentRateChart> TestResultRankRate(ClassResultRankRate paramDto)
|
|
{
|
|
return await _classService.TestResultRankRate(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 各体测项目等级占比
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(CategoryRankRatio))]
|
|
public async Task<Dictionary<string, float>> CategoryRankRatio(CategoryParam paramDto)
|
|
{
|
|
return await _classService.CategoryRankRatio(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 成绩趋势
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(ResultTrends))]
|
|
public async Task<VariousSportsProportion> ResultTrends(ClassResultTrendsParam paramDto)
|
|
{
|
|
return await _classService.ResultTrends(paramDto);
|
|
}
|
|
}
|
|
}
|