|
@@ -24,6 +24,8 @@ import cn.com.qmth.examcloud.common.util.excel.ExcelWriter;
|
|
|
|
|
|
import com.qmth.cqb.paper.dao.ExportServiceManageRepo;
|
|
|
import com.qmth.cqb.paper.dao.ExtractConfigRepo;
|
|
|
+import com.qmth.cqb.paper.dao.PaperDetailUnitRepo;
|
|
|
+import com.qmth.cqb.paper.dao.PaperRepo;
|
|
|
import com.qmth.cqb.paper.dto.ExportPaperInfoModel;
|
|
|
import com.qmth.cqb.paper.dto.ObjectiveQuestionStructure;
|
|
|
import com.qmth.cqb.paper.dto.PaperDetailExp;
|
|
@@ -34,6 +36,8 @@ import com.qmth.cqb.paper.model.ExamFile;
|
|
|
import com.qmth.cqb.paper.model.ExportServiceManage;
|
|
|
import com.qmth.cqb.paper.model.ExportStructure;
|
|
|
import com.qmth.cqb.paper.model.ExtractConfig;
|
|
|
+import com.qmth.cqb.paper.model.Paper;
|
|
|
+import com.qmth.cqb.paper.model.PaperDetailUnit;
|
|
|
import com.qmth.cqb.paper.model.QuestionTypeNum;
|
|
|
import com.qmth.cqb.paper.rpc.ExamCourseClient;
|
|
|
import com.qmth.cqb.paper.service.ExamFileService;
|
|
@@ -41,6 +45,8 @@ import com.qmth.cqb.paper.service.ExportStructureService;
|
|
|
import com.qmth.cqb.paper.service.ExtractConfigFileService;
|
|
|
import com.qmth.cqb.paper.service.ExtractConfigService;
|
|
|
import com.qmth.cqb.paper.service.export.ExportPaperAbstractService;
|
|
|
+import com.qmth.cqb.question.model.QuestionAudio;
|
|
|
+import com.qmth.cqb.question.service.QuestionAudioService;
|
|
|
import com.qmth.cqb.utils.FileDisposeUtil;
|
|
|
import com.qmth.cqb.utils.SpringContextUtils;
|
|
|
import com.qmth.cqb.utils.enums.ExamFileType;
|
|
@@ -76,6 +82,15 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
|
@Autowired
|
|
|
private ExtractConfigRepo extractConfigRepo;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private QuestionAudioService questionAudioService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PaperRepo paperRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PaperDetailUnitRepo paperDetailUnitRepo;
|
|
|
+
|
|
|
@Value("${upyun.downloadUrl}")
|
|
|
protected String downloadUrl;
|
|
|
|
|
@@ -158,11 +173,17 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
|
makePaperStructure(exportStructure.getExamName(),paperIds,exportStructure);
|
|
|
}
|
|
|
}
|
|
|
+ //如果是普通类型的单个导出
|
|
|
+ if(exportModel.getExportWay()==ExportWay.SINGLE&&exportStructure.getExportType()==ExportType.NORMAL){
|
|
|
+ paperIds = getFinishPaperIds(exportModel);
|
|
|
+ }
|
|
|
//根据条件获取到文件下载路径,下载文件到服务器的downloadDirectory文件夹
|
|
|
List<ExamFile> examFiles = examFileService.findExamFileListByExportPaperInfoModel(exportModel);
|
|
|
if(examFiles!=null&&examFiles.size()>0){
|
|
|
+ List<Paper> papers = paperRepo.findByIdIn(paperIds);
|
|
|
for(ExamFile examFile:examFiles){
|
|
|
FileDisposeUtil.saveUrlAs(downloadUrl+examFile.getFilePath(),downloadDirectory+File.separator+examFile.getFileName());
|
|
|
+ downloadQuestionAudio(papers,examFile);
|
|
|
}
|
|
|
}
|
|
|
//创建压缩文件名称
|
|
@@ -176,6 +197,27 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
|
FileUtils.deleteQuietly(new File(zipDirectory));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 得到调卷规则中已完成的试卷的ID集合
|
|
|
+ * @param exportModel
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<String> getFinishPaperIds(ExportPaperInfoModel exportModel) {
|
|
|
+ List<String> paperIds = new ArrayList<String>();
|
|
|
+ ExtractConfig condition = new ExtractConfig();
|
|
|
+ condition.setExamId(Long.parseLong(exportModel.getExamId()));
|
|
|
+ condition.setCourseCode(exportModel.getCourseId());
|
|
|
+ ExtractConfig extractConfig = extractConfigService.findConfig(condition);
|
|
|
+ Map<String,String> finishedPaperIdMap = extractConfig.getFinishedPaperIdMap();
|
|
|
+ Set<Entry<String,String>> entry = finishedPaperIdMap.entrySet();
|
|
|
+ Iterator<Entry<String,String>> iterator = entry.iterator();
|
|
|
+ while(iterator.hasNext()){
|
|
|
+ String paperId = iterator.next().getValue();
|
|
|
+ paperIds.add(paperId);
|
|
|
+ }
|
|
|
+ return paperIds;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查询该考试下是否所有课程都制定了调卷规则
|
|
|
* @param examId
|
|
@@ -292,4 +334,26 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
|
logger.info("批量生成试卷结构完成");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 下载题目音频文件
|
|
|
+ */
|
|
|
+ private void downloadQuestionAudio(List<Paper> papers,ExamFile examFile){
|
|
|
+ if(examFile.getExamFileType()==ExamFileType.PAPER){
|
|
|
+ for(Paper paper:papers){
|
|
|
+ if(paper.getOrgId().equals(examFile.getOrgId())
|
|
|
+ &&paper.getCourse().getCode().equals(examFile.getCourseId())){
|
|
|
+ List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaper(paper);
|
|
|
+ for(PaperDetailUnit unit:paperDetailUnits){
|
|
|
+ if(unit.getQuestion().getHasAudio()!=null&&unit.getQuestion().getHasAudio()){
|
|
|
+ List<QuestionAudio> questionAudios = questionAudioService.findQuestionAudiosByQuestionId(unit.getQuestion().getId());
|
|
|
+ for(QuestionAudio audio:questionAudios){
|
|
|
+ FileDisposeUtil.saveUrlAs(downloadUrl+audio.getFileUrl(),downloadDirectory+File.separator+examFile.getFileName()+"_"+audio.getFileName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|