ExamAbsentReplaceAppService.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using YBEE.EQM.Core;
  2. namespace YBEE.EQM.Application;
  3. /// <summary>
  4. /// 缺测替补管理服务
  5. /// </summary>
  6. [ApiDescriptionSettings(Name = "exam-absent-replace")]
  7. [Route("exam/absent/replace")]
  8. public class ExamAbsentReplaceAppService(IExamAbsentReplaceService examAbsentReplaceService, IResourceFileService resourceFileService) : IDynamicApiController
  9. {
  10. #region 批量导入
  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<UploadExamDataOutput<UploadExamAbsentReplaceOutput>> Upload([FromForm] UploadExamDataInput 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. var ret = await examAbsentReplaceService.Upload(filePath, input.ExamPlanId);
  31. return ret;
  32. }
  33. /// <summary>
  34. /// 批量导入监测缺测替补
  35. /// </summary>
  36. /// <param name="input"></param>
  37. /// <returns></returns>
  38. public async Task<int> Import(ImportExamAbsentReplaceInput input)
  39. {
  40. return await examAbsentReplaceService.Import(input);
  41. }
  42. #endregion
  43. #region 创建编辑
  44. /// <summary>
  45. /// 添加监测缺测替补
  46. /// </summary>
  47. /// <param name="input"></param>
  48. /// <returns></returns>
  49. public async Task Add(AddExamAbsentReplaceInput input)
  50. {
  51. await examAbsentReplaceService.Add(input);
  52. }
  53. /// <summary>
  54. /// 更新监测缺测替补
  55. /// </summary>
  56. /// <param name="input"></param>
  57. /// <returns></returns>
  58. public async Task Update(UpdateExamAbsentReplaceInput input)
  59. {
  60. await examAbsentReplaceService.Update(input);
  61. }
  62. /// <summary>
  63. /// 上传特殊学生佐证材料
  64. /// </summary>
  65. /// <param name="input"></param>
  66. /// <returns></returns>
  67. [RequestSizeLimit(1024 * 1024 * 20)]
  68. [RequestFormLimits(MultipartBodyLengthLimit = long.MaxValue)]
  69. public async Task UploadAttachment([FromForm] UploadResourceFileInput input)
  70. {
  71. var rfile = await resourceFileService.Upload(input);
  72. var addParams = rfile.Adapt<AddAttachmentInput>();
  73. //addParams.SourceId = (int)input.SourceId;
  74. //addParams.FileId = rfile.Id;
  75. //addParams.ThumbFileId = rfile.ThumbResourceFile?.Id;
  76. await examAbsentReplaceService.AddAttachment(addParams);
  77. }
  78. /// <summary>
  79. /// 删除特殊学生佐证材料
  80. /// </summary>
  81. /// <param name="input"></param>
  82. /// <returns></returns>
  83. public async Task DelAttachment(DeleteAttachmentInput input)
  84. {
  85. await examAbsentReplaceService.DelAttachment(input);
  86. }
  87. /// <summary>
  88. /// 删除监测缺测替补
  89. /// </summary>
  90. /// <param name="input"></param>
  91. /// <returns></returns>
  92. public async Task Del(BaseId input)
  93. {
  94. await examAbsentReplaceService.Del(input);
  95. }
  96. /// <summary>
  97. /// 清空监测缺测替补
  98. /// </summary>
  99. /// <param name="input"></param>
  100. /// <returns></returns>
  101. public async Task Clear(ClearExamAbsentReplaceInput input)
  102. {
  103. await examAbsentReplaceService.Clear(input);
  104. }
  105. /// <summary>
  106. /// 导出监测缺测替补上报打印表格
  107. /// </summary>
  108. /// <param name="examPlanId"></param>
  109. /// <returns></returns>
  110. public async Task<IActionResult> ExportPrintTable(int examPlanId)
  111. {
  112. var bs = await examAbsentReplaceService.ExportPrintTable(examPlanId);
  113. return new FileContentResult(bs, "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
  114. {
  115. FileDownloadName = "缺测替补学生明细表.docx"
  116. };
  117. }
  118. #endregion
  119. #region 查询统计
  120. /// <summary>
  121. /// 分页查询监测缺测替补列表
  122. /// </summary>
  123. /// <param name="input"></param>
  124. /// <returns></returns>
  125. public async Task<PageResult<ExamAbsentReplaceOutput>> QueryPageList(ExamAbsentReplacePageInput input)
  126. {
  127. return await examAbsentReplaceService.QueryPageList(input);
  128. }
  129. /// <summary>
  130. /// 获取机构班级特殊学生上报人数统计列表
  131. /// </summary>
  132. /// <param name="examPlanId"></param>
  133. /// <param name="sysOrgId"></param>
  134. /// <returns></returns>
  135. public async Task<ExamAbsentReplaceCountOutput> GetOrgGradeClassStudentCount(int examPlanId, short? sysOrgId = null)
  136. {
  137. return await examAbsentReplaceService.GetOrgGradeClassStudentCount(examPlanId, sysOrgId);
  138. }
  139. /// <summary>
  140. /// 获取状态数量
  141. /// </summary>
  142. /// <returns></returns>
  143. public async Task<List<StatusCount>> QueryStatusCount(ExamAbsentReplacePageInput input)
  144. {
  145. return await examAbsentReplaceService.QueryStatusCount(input);
  146. }
  147. #endregion
  148. }