package cn.com.qmth.scancentral.controller.admin; import java.io.File; import java.io.FileInputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.qmth.boot.api.annotation.Aac; import com.qmth.boot.api.constant.ApiConstant; import com.qmth.boot.core.exception.ParameterException; import cn.com.qmth.scancentral.controller.BaseController; import cn.com.qmth.scancentral.service.DataExportTaskService; import cn.com.qmth.scancentral.service.SubjectService; import cn.com.qmth.scancentral.util.Calculator; import cn.com.qmth.scancentral.vo.subject.DataExportProgressVo; import cn.com.qmth.scancentral.vo.subject.DataExportTaskVo; import cn.com.qmth.scancentral.vo.subject.ScanProgressVo; import cn.com.qmth.scancentral.vo.subject.SubjectBreachVo; import cn.com.qmth.scancentral.vo.subject.SubjectCustStatusVo; import cn.com.qmth.scancentral.vo.subject.TaskIdVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @Api(tags = "科目接口") @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/subject") @Aac(strict = false, auth = true) public class SubjectController extends BaseController { @Autowired private SubjectService subjectService; @Autowired private DataExportTaskService dataExportTaskService; @ApiOperation(value = "科目扫描进度查询") @PostMapping("scan/progress") public ScanProgressVo scanProgress(@RequestParam Long examId, @RequestParam(required = false) String subjectCode) { return subjectService.scanProgress(examId, subjectCode); } @ApiOperation(value = "查询科目违纪导入") @PostMapping("breach/list") public List breachList(@RequestParam Long examId) { return subjectService.breachList(examId); } @ApiOperation(value = "查询科目考生状态导入") @PostMapping("cust-status/list") public List custStatusList(@RequestParam Long examId) { return subjectService.custStatusList(examId); } @ApiOperation(value = "导出扫描答案DBF") @PostMapping("answer-data/export") public TaskIdVo answerDataExport(@RequestParam Long examId, @RequestParam String subjectCode) { return subjectService.answerDataExport(examId, subjectCode); } @ApiOperation(value = "导出打包DBF") @PostMapping("slice-data/export") public TaskIdVo sliceDataExport(@RequestParam Long examId, @RequestParam String subjectCode) { return subjectService.sliceDataExport(examId, subjectCode); } @ApiOperation(value = "导出扫描答案DBF、打包DBF下载进度查询") @PostMapping("data/progress") public DataExportProgressVo dataProgress(@RequestParam String taskId) { DataExportTaskVo vo = dataExportTaskService.getTask(taskId); if (vo == null) { throw new ParameterException("未找到导出任务"); } DataExportProgressVo ret = new DataExportProgressVo(); ret.setSuccess(vo.getSuccess()); ret.setErrMsg(vo.getErrMsg()); ret.setProgress(Calculator.percentageDouble(vo.getProgressCount(), vo.getTotalCount())); return ret; } @ApiOperation(value = "扫描答案DBF、打包DBF下载") @PostMapping("data/down") public void dataDown(HttpServletResponse response, @RequestParam String taskId) throws Exception { DataExportTaskVo vo = dataExportTaskService.getTask(taskId); if (vo == null) { throw new ParameterException("未找到导出任务"); } if (vo.getSuccess() == null || !vo.getSuccess()) { throw new ParameterException("导出任务失败"); } if (vo.getTotalCount() != (vo.getProgressCount())) { throw new ParameterException("导出任务未结束"); } exportFile(vo.getFileName(), new FileInputStream(new File(vo.getFilePath()))); } }