package com.qmth.distributed.print.api; import com.qmth.boot.api.constant.ApiConstant; import com.qmth.distributed.print.business.bean.params.DownloadPaperFileParam; import com.qmth.distributed.print.business.service.DownloadService; import com.qmth.distributed.print.business.service.PrintCommonService; import com.qmth.distributed.print.business.templete.execute.AsyncDownloadPaperFileBatchService; import com.qmth.teachcloud.common.bean.result.TaskListResult; import com.qmth.teachcloud.common.contant.SystemConstant; import com.qmth.teachcloud.common.entity.TBTask; import com.qmth.teachcloud.common.enums.TaskTypeEnum; import com.qmth.teachcloud.common.util.ResultUtil; import io.swagger.annotations.*; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import java.util.Map; import java.util.Objects; /** * 下载管理 */ @Api(tags = "系统管理-下载管理Controller") @RestController @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_DATA + "/download") public class DownloadController { @Resource private DownloadService downloadService; @Resource private PrintCommonService printCommonService; @Resource private AsyncDownloadPaperFileBatchService asyncDownloadPaperFileBatchService; /** * 分页查询 */ @ApiOperation(value = "分页查询") @RequestMapping(value = "/page", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = TaskListResult.class)}) public Object page(@ApiParam(value = "考试ID", required = true) @RequestParam() Long examId, @ApiParam(value = "课程开课机构ID") @RequestParam(required = false) Long orgId, @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode, @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber, @ApiParam(value = "命题老师工号/姓名") @RequestParam(required = false) String userParam, @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber, @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) { return ResultUtil.ok(downloadService.page(examId, courseCode, paperNumber, orgId, userParam, pageNumber, pageSize)); } /** * 单个科目下载(只下载未曝光试卷) * * @param id 任务ID */ @ApiOperation(value = "单课程下载") @RequestMapping(value = "/download_one", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "单课程下载", response = TaskListResult.class)}) public void downloadOne(HttpServletResponse response, @ApiParam(value = "任务ID", required = false) @RequestParam(required = false) Long id) throws Exception { downloadService.paperDownload(response, id); } @ApiOperation(value = "批量下载") @RequestMapping(value = "/download_batch", method = RequestMethod.POST) @ApiResponses({@ApiResponse(code = 200, message = "批量下载", response = TaskListResult.class)}) public Object downloadBatch(@Valid @RequestBody DownloadPaperFileParam downloadPaperFileParam, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage()); } Map map = printCommonService.saveTask(TaskTypeEnum.DOWNLOAD_PAPER_FILE_BATCH); map.put("downloadPaperFileParam", downloadPaperFileParam); asyncDownloadPaperFileBatchService.exportTask(map); TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null; return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败"); } }