NceeScoreAppService.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using YBEE.EQM.Core;
  2. namespace YBEE.EQM.Application;
  3. /// <summary>
  4. /// 高中模拟划线成绩管理服务
  5. /// </summary>
  6. [ApiDescriptionSettings(Name = "ncee-score")]
  7. [Route("ncee/score")]
  8. public class NceeScoreAppService(INceeScoreService nceeScoreService) : IDynamicApiController
  9. {
  10. private readonly INceeScoreService _nceeScoreService = nceeScoreService;
  11. /// <summary>
  12. /// 上传成绩(仅原始分,适用于五区联考或本区独立赋分)
  13. /// </summary>
  14. /// <param name="input"></param>
  15. /// <returns></returns>
  16. [RequestSizeLimit(long.MaxValue)]
  17. [RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue)]
  18. public async Task UploadOnlyRawScore([FromForm] UploadNceeScoreInput input)
  19. {
  20. string fileExt = Path.GetExtension(input.File.FileName).ToLower();
  21. if (fileExt != ".xls" && fileExt != ".xlsx")
  22. {
  23. throw Oops.Oh(ErrorCode.E1010);
  24. }
  25. string filePath = Path.Combine(FileUtil.GetTempFileRoot(), $"{Guid.NewGuid()}{fileExt}");
  26. using FileStream fs = File.Create(filePath);
  27. await input.File.CopyToAsync(fs);
  28. await fs.FlushAsync();
  29. fs.Close();
  30. await _nceeScoreService.UploadOnlyRawScore(filePath, input.NceePlanId);
  31. }
  32. /// <summary>
  33. /// 上传成绩(带转换分和等级,适用于六校联考)
  34. /// </summary>
  35. /// <param name="input"></param>
  36. /// <returns></returns>
  37. [RequestSizeLimit(long.MaxValue)]
  38. [RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue)]
  39. public async Task UploadWithConvertScore([FromForm] UploadNceeScoreInput input)
  40. {
  41. string fileExt = Path.GetExtension(input.File.FileName).ToLower();
  42. if (fileExt != ".xls" && fileExt != ".xlsx")
  43. {
  44. throw Oops.Oh(ErrorCode.E1010);
  45. }
  46. string filePath = Path.Combine(FileUtil.GetTempFileRoot(), $"{Guid.NewGuid()}{fileExt}");
  47. using FileStream fs = File.Create(filePath);
  48. await input.File.CopyToAsync(fs);
  49. await fs.FlushAsync();
  50. fs.Close();
  51. await _nceeScoreService.UploadWithConvertScore(filePath, input.NceePlanId);
  52. }
  53. /// <summary>
  54. /// 上传未选科原始成绩(适用于高一未选科)
  55. /// </summary>
  56. /// <param name="input"></param>
  57. /// <returns></returns>
  58. [RequestSizeLimit(long.MaxValue)]
  59. [RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue)]
  60. public async Task UploadNoDirectionCourse([FromForm] UploadNceeScoreInput input)
  61. {
  62. string fileExt = Path.GetExtension(input.File.FileName).ToLower();
  63. if (fileExt != ".xls" && fileExt != ".xlsx")
  64. {
  65. throw Oops.Oh(ErrorCode.E1010);
  66. }
  67. string filePath = Path.Combine(FileUtil.GetTempFileRoot(), $"{Guid.NewGuid()}{fileExt}");
  68. using FileStream fs = File.Create(filePath);
  69. await input.File.CopyToAsync(fs);
  70. await fs.FlushAsync();
  71. fs.Close();
  72. await _nceeScoreService.UploadNoDirectionCourse(filePath, input.NceePlanId);
  73. }
  74. /// <summary>
  75. /// 执行模拟划线
  76. /// </summary>
  77. /// <param name="nceePlanId"></param>
  78. /// <returns></returns>
  79. public async Task Execute([FromQuery][Required] int nceePlanId)
  80. {
  81. await _nceeScoreService.Execute(nceePlanId);
  82. }
  83. }