package com.qmth.distributed.print.api; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qmth.boot.api.annotation.Aac; import com.qmth.boot.api.annotation.BOOL; import com.qmth.boot.api.constant.ApiConstant; import com.qmth.boot.api.exception.ApiException; import com.qmth.distributed.print.business.bean.dto.*; import com.qmth.distributed.print.business.bean.params.ArraysParams; import com.qmth.distributed.print.business.bean.params.PrintPlanParams; import com.qmth.distributed.print.business.bean.result.EditResult; import com.qmth.distributed.print.business.entity.*; import com.qmth.distributed.print.business.enums.TaskTypeEnum; import com.qmth.distributed.print.business.enums.UploadFileEnum; import com.qmth.distributed.print.business.service.*; import com.qmth.distributed.print.business.templete.execute.AsyncTaskReviewSampleExportService; import com.qmth.distributed.print.business.util.ServletUtil; import com.qmth.distributed.print.common.contant.SystemConstant; import com.qmth.distributed.print.common.enums.ExceptionResultEnum; import com.qmth.distributed.print.common.util.Result; import com.qmth.distributed.print.common.util.ResultUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; /** *

* 命题任务 前端控制器 *

* * @author xf * @since 2021-03-23 */ @Api(tags = "命题任务Controller") @RestController @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/task") @Aac(auth = BOOL.FALSE) public class ExamTaskController { @Autowired private ExamTaskService examTaskService; @Autowired private ExamTaskDetailService examTaskDetailService; @Autowired private ExamTaskReviewLogService examTaskReviewLogService; @Autowired private BasicAttachmentService basicAttachmentService; @Resource private TBTaskService tbTaskService; @Resource private AsyncTaskReviewSampleExportService asyncTaskReviewSampleExportService; /** * 查询 * * @param enable * @param status * @param cardRuleId * @param courseCode * @param paperNumber * @param startTime * @param endTime * @param pageNumber * @param pageSize * @return */ @ApiOperation(value = "查询") @RequestMapping(value = "/list", method = RequestMethod.POST) public Result list(@RequestParam(required = false) Boolean enable, @RequestParam(required = false) String status, @RequestParam(required = false) Long cardRuleId, @RequestParam(required = false) String courseCode, @RequestParam(required = false) String paperNumber, @RequestParam(required = false) Long startTime, @RequestParam(required = false) Long endTime, @RequestParam Integer pageNumber, @RequestParam Integer pageSize) { IPage examTasks = examTaskService.list(enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, pageNumber, pageSize); return ResultUtil.ok(examTasks); } /** * 试卷编号模糊查询 * * @param param * @return */ @ApiOperation(value = "试卷编号模糊查询") @RequestMapping(value = "/paper_number_query", method = RequestMethod.POST) public Result paperNumberQuery(@RequestParam(value = "param", required = false) String param) { List list = examTaskService.listPaperNumber(param); return ResultUtil.ok(list); } /** * 命题老师模糊查询 * * @param param * @return */ @ApiOperation(value = "命题老师模糊查询") @RequestMapping(value = "/user_query", method = RequestMethod.POST) public Result userQuery(@RequestParam(value = "param", required = false) String param) { List list = examTaskService.listUser(param); return ResultUtil.ok(list); } /** * 更改/指派命题老师 * * @param examTask * @return */ @ApiOperation(value = "更改/指派命题老师") @RequestMapping(value = "/assign_user", method = RequestMethod.POST) public Result assignUser(@RequestBody ExamTask examTask) { boolean isSuccess = examTaskService.assignUser(examTask); return ResultUtil.ok(isSuccess); } /** * 启用/禁用 * * @param examTask * @return */ @ApiOperation(value = "启用/禁用") @RequestMapping(value = "/enable", method = RequestMethod.POST) public Result enable(@RequestBody ExamTask examTask) { boolean isSuccess = examTaskService.enable(examTask); return ResultUtil.ok(isSuccess); } /** * 新建 * * @param examTask * @return */ @ApiOperation(value = "新建") @RequestMapping(value = "/save", method = RequestMethod.POST) public Result save(@RequestBody ExamTask examTask) { boolean isSuccess = examTaskService.saveExamTask(examTask); return ResultUtil.ok(isSuccess); } /** * 文件导入 * * @param file * @return */ @ApiOperation(value = "文件导入") @RequestMapping(value = "/import", method = RequestMethod.POST) public Result importFile(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) { BasicAttachment basicAttachment = null; try { basicAttachment = basicAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE); if (Objects.isNull(basicAttachment)) { throw ExceptionResultEnum.ATTACHMENT_ERROR.exception(); } else { ExamTaskImportDto examTaskImportDto = examTaskService.importFile(file); return ResultUtil.ok(examTaskImportDto); } } catch (Exception e) { if (Objects.nonNull(basicAttachment)) { basicAttachmentService.deleteAttachment(basicAttachment); } if (e instanceof ApiException) { ResultUtil.error((ApiException) e, e.getMessage()); } else { ResultUtil.error(e.getMessage()); } } return null; } /** * 批量保存 * * @param task * @return */ @ApiOperation(value = "批量保存") @RequestMapping(value = "/save_batch", method = RequestMethod.POST) public Result saveBatch(@RequestBody ExamTask task) { boolean isSuccess = examTaskService.saveBatch(task); return ResultUtil.ok(isSuccess); } /** * 审核历史 * * @param request * @param examTaskId * @return */ @ApiOperation(value = "审核历史") @RequestMapping(value = "/review_list", method = RequestMethod.POST) public Result reviewList(HttpServletRequest request, @RequestParam("examTaskId") Long examTaskId) { List list = examTaskReviewLogService.list(examTaskId); return ResultUtil.ok(list); } /** * 入库申请查询 * * @param auditStatus * @param reviewStatus * @param cardRuleId * @param courseCode * @param paperNumber * @param startTime * @param endTime * @param pageNumber * @param pageSize * @return */ @ApiOperation(value = "入库申请查询") @RequestMapping(value = "/apply_list", method = RequestMethod.POST) public Result taskApplyList(@RequestParam(value = "auditStatus", required = false) String auditStatus, @RequestParam(value = "reviewStatus", required = false) String reviewStatus, @RequestParam(value = "cardRuleId", required = false) Long cardRuleId, @RequestParam(value = "courseCode", required = false) String courseCode, @RequestParam(value = "paperNumber", required = false) String paperNumber, @RequestParam(value = "startTime", required = false) Long startTime, @RequestParam(value = "endTime", required = false) Long endTime, @RequestParam("pageNumber") Integer pageNumber, @RequestParam("pageSize") Integer pageSize) { IPage list = examTaskService.listTaskApply(auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, pageNumber, pageSize); return ResultUtil.ok(list); } /** * 根据命题任务ID查询单个数据 * * @param request * @param examTaskId * @return */ @ApiOperation(value = "根据命题任务ID查询单个数据") @RequestMapping(value = "/apply_get_one", method = RequestMethod.POST) public Result applyGetOne(HttpServletRequest request, @RequestParam(value = "examTaskId", required = true) Long examTaskId) { ExamTaskDetailCardDto detail = examTaskService.applyGetOne(examTaskId); return ResultUtil.ok(detail); } /** * 暂存/提交 * * @param examTaskDetail * @return */ @ApiOperation(value = "暂存/提交") @RequestMapping(value = "/apply_save", method = RequestMethod.POST) public Result taskApplySave(@RequestBody ExamTaskDetail examTaskDetail) throws IOException { boolean isSuccess = examTaskService.saveExamTaskDetail(examTaskDetail); return ResultUtil.ok(isSuccess); } /** * 撤回/重新申请 * * @param examTask * @return */ @ApiOperation(value = "撤回") @RequestMapping(value = "/apply_status", method = RequestMethod.POST) public Result taskApplyStatus(@RequestBody ExamTask examTask) { boolean isSuccess = examTaskService.status(examTask); return ResultUtil.ok(isSuccess); } /** * 入库审核查询-未审核 * * @param courseCode * @param paperNumber * @param userId * @param cardRuleId * @param startTime * @param endTime * @param pageNumber * @param pageSize * @return */ @ApiOperation(value = "入库审核查询-未审核") @RequestMapping(value = "/review_list_unaudited", method = RequestMethod.POST) public Result taskReviewListUnaudited(@RequestParam(value = "courseCode", required = false) String courseCode, @RequestParam(value = "paperNumber", required = false) String paperNumber, @RequestParam(value = "userId", required = false) Long userId, @RequestParam(value = "cardRuleId", required = false) Long cardRuleId, @RequestParam(value = "startTime", required = false) Long startTime, @RequestParam(value = "endTime", required = false) Long endTime, @RequestParam("pageNumber") Integer pageNumber, @RequestParam("pageSize") Integer pageSize) { IPage examTaskDtoIPage = examTaskService.listTaskReviewUnaudited(courseCode, paperNumber, userId, cardRuleId, startTime, endTime, pageNumber, pageSize); return ResultUtil.ok(examTaskDtoIPage); } /** * 入库审核查询-未审核 * * @param courseCode * @param paperNumber * @param userId * @param cardRuleId * @param startTime * @param endTime * @param pageNumber * @param pageSize * @return */ @ApiOperation(value = "入库审核查询-已审核") @RequestMapping(value = "/review_list_audited", method = RequestMethod.POST) public Result taskReviewListAudited(@RequestParam(value = "reviewStatus", required = false) String reviewStatus, @RequestParam(value = "courseCode", required = false) String courseCode, @RequestParam(value = "paperNumber", required = false) String paperNumber, @RequestParam(value = "userId", required = false) Long userId, @RequestParam(value = "cardRuleId", required = false) Long cardRuleId, @RequestParam(value = "startTime", required = false) Long startTime, @RequestParam(value = "endTime", required = false) Long endTime, @RequestParam("pageNumber") Integer pageNumber, @RequestParam("pageSize") Integer pageSize) { IPage examTaskDtoIPage = examTaskService.listTaskReviewAudited(reviewStatus, courseCode, paperNumber, userId, cardRuleId, startTime, endTime, pageNumber, pageSize); return ResultUtil.ok(examTaskDtoIPage); } /** * 审核 * * @param taskReviewLog * @return */ @ApiOperation(value = "审核") @RequestMapping(value = "/review_save", method = RequestMethod.POST) public Result taskReviewSave(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException { boolean isSuccess = examTaskService.taskReviewSave(taskReviewLog); return ResultUtil.ok(isSuccess); } /** * 批量审核 * * @param taskReviewLog * @return */ @ApiOperation(value = "批量审核") @RequestMapping(value = "/review_save_batch", method = RequestMethod.POST) public Result taskReviewSaveBatch(@RequestBody ExamTaskReviewLog taskReviewLog) { boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog); return ResultUtil.ok(isSuccess); } @ApiOperation(value = "导出审核样本") @RequestMapping(value = "/review_export", method = RequestMethod.POST) public Result taskReviewExport(@Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage()); } Long[] ids = arraysParams.getIds(); Map map = tbTaskService.saveTask(TaskTypeEnum.SAMPLE_EXPORT); map.put("ids",ids); asyncTaskReviewSampleExportService.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("创建任务失败"); } /** * 卷库查询 * * @param courseCode * @param paperNumber * @param startTime * @param endTime * @param pageNumber * @param pageSize * @return */ @ApiOperation(value = "卷库查询") @RequestMapping(value = "/paper_list", method = RequestMethod.POST) public Result taskPaperList(@RequestParam(value = "courseCode", required = false) String courseCode, @RequestParam(value = "paperNumber", required = false) String paperNumber, @RequestParam(value = "startTime", required = false) Long startTime, @RequestParam(value = "endTime", required = false) Long endTime, @RequestParam("pageNumber") Integer pageNumber, @RequestParam("pageSize") Integer pageSize) { IPage examTaskDtoIPage = examTaskService.listTaskPaper(courseCode, paperNumber, startTime, endTime, pageNumber, pageSize); return ResultUtil.ok(examTaskDtoIPage); } /** * 下载 * @param response * @param examTaskId */ @ApiOperation(value = "下载") @RequestMapping(value = "/paper_download", method = RequestMethod.POST) public void taskPaperDownload(HttpServletResponse response, @RequestParam Long examTaskId) { examTaskService.paperDownload(response, examTaskId); } /** * 启用/禁用 * * @param request * @param examTaskDetail * @return */ @ApiOperation(value = "启用/禁用") @RequestMapping(value = "/paper_enable", method = RequestMethod.POST) public Result taskPaperEnable(HttpServletRequest request, @RequestBody ExamTaskDetail examTaskDetail) { boolean isSuccess = examTaskDetailService.enable(examTaskDetail); return ResultUtil.ok(isSuccess); } }