|
@@ -11,9 +11,6 @@ import java.util.Set;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
import main.java.com.UpYun;
|
|
import main.java.com.UpYun;
|
|
|
|
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.apache.commons.io.FileUtils;
|
|
@@ -50,8 +47,11 @@ import com.qmth.cqb.paper.service.ExportStructureService;
|
|
import com.qmth.cqb.paper.service.ExtractConfigFileService;
|
|
import com.qmth.cqb.paper.service.ExtractConfigFileService;
|
|
import com.qmth.cqb.paper.service.ExtractConfigService;
|
|
import com.qmth.cqb.paper.service.ExtractConfigService;
|
|
import com.qmth.cqb.paper.service.export.ExportPaperAbstractService;
|
|
import com.qmth.cqb.paper.service.export.ExportPaperAbstractService;
|
|
|
|
+import com.qmth.cqb.question.model.QuesOption;
|
|
|
|
+import com.qmth.cqb.question.model.Question;
|
|
import com.qmth.cqb.question.model.QuestionAudio;
|
|
import com.qmth.cqb.question.model.QuestionAudio;
|
|
import com.qmth.cqb.question.service.QuestionAudioService;
|
|
import com.qmth.cqb.question.service.QuestionAudioService;
|
|
|
|
+import com.qmth.cqb.utils.CommonUtils;
|
|
import com.qmth.cqb.utils.FileDisposeUtil;
|
|
import com.qmth.cqb.utils.FileDisposeUtil;
|
|
import com.qmth.cqb.utils.SpringContextUtils;
|
|
import com.qmth.cqb.utils.SpringContextUtils;
|
|
import com.qmth.cqb.utils.enums.ExamFileType;
|
|
import com.qmth.cqb.utils.enums.ExamFileType;
|
|
@@ -171,26 +171,8 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
FileDisposeUtil.createDirectory(downloadDirectory);
|
|
FileDisposeUtil.createDirectory(downloadDirectory);
|
|
//创建压缩文件的文件夹
|
|
//创建压缩文件的文件夹
|
|
FileDisposeUtil.createDirectory(zipDirectory);
|
|
FileDisposeUtil.createDirectory(zipDirectory);
|
|
- //如果是批量导出,首先检查该考试下的所有课程是否都制定了调卷规则
|
|
|
|
- List<String> paperIds = new ArrayList<String>();
|
|
|
|
- ExportStructure exportStructure = exportStructureService.findStructureByExamId(exportModel.getExamId()+"");
|
|
|
|
- //如果是普通类型的批量导出,并且选择了导出试卷结构
|
|
|
|
- if(exportModel.getExportContentList().contains(ExamFileType.PAPER_STRUCTURE_OBJECTIVE.name())
|
|
|
|
- &&exportModel.getExportWay()==ExportWay.BATCH){
|
|
|
|
- if(exportStructure!=null&&exportStructure.getExportType()==ExportType.NORMAL){
|
|
|
|
- paperIds = checkAllCourseByExamId(exportModel.getExamId(),exportStructure.getExportType());
|
|
|
|
- if(paperIds.size()>0){
|
|
|
|
- //创建试卷结构Excel文件到downloadDirectory目录
|
|
|
|
- makePaperStructure(exportStructure.getExamName(),paperIds,exportStructure);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //如果是普通类型的单个导出
|
|
|
|
- if(exportModel.getExportWay()==ExportWay.SINGLE){
|
|
|
|
- if(exportStructure==null||exportStructure.getExportType()==ExportType.NORMAL){
|
|
|
|
- paperIds = getFinishPaperIds(exportModel);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //得到所有锁定的试卷ID
|
|
|
|
+ List<String> paperIds = getFinishPaperIds(exportModel);
|
|
//根据条件获取到文件下载路径,下载文件到服务器的downloadDirectory文件夹
|
|
//根据条件获取到文件下载路径,下载文件到服务器的downloadDirectory文件夹
|
|
List<ExamFile> examFiles = examFileService.findExamFileListByExportPaperInfoModel(exportModel);
|
|
List<ExamFile> examFiles = examFileService.findExamFileListByExportPaperInfoModel(exportModel);
|
|
if(examFiles!=null&&examFiles.size()>0){
|
|
if(examFiles!=null&&examFiles.size()>0){
|
|
@@ -224,12 +206,9 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
|
|
for(PaperDetailUnit unit:paperDetailUnits){
|
|
for(PaperDetailUnit unit:paperDetailUnits){
|
|
if(unit.getQuestion().getHasAudio()!=null&&unit.getQuestion().getHasAudio()){
|
|
if(unit.getQuestion().getHasAudio()!=null&&unit.getQuestion().getHasAudio()){
|
|
- String questionNumber = unit.getNumber()+"";
|
|
|
|
List<QuestionAudio> questionAudios = questionAudioService.findQuestionAudiosByQuestionId(unit.getQuestion().getId());
|
|
List<QuestionAudio> questionAudios = questionAudioService.findQuestionAudiosByQuestionId(unit.getQuestion().getId());
|
|
for(QuestionAudio audio:questionAudios){
|
|
for(QuestionAudio audio:questionAudios){
|
|
- //名称与题号保持一致
|
|
|
|
- int index = audio.getFileName().indexOf("_");
|
|
|
|
- String fileName = questionNumber+audio.getFileName().substring(index, audio.getFileName().length());
|
|
|
|
|
|
+ String fileName = getAudioFileName(audio,unit);
|
|
String audioFileName = examFile.getFileName().split("\\.")[0]+"_"+fileName;
|
|
String audioFileName = examFile.getFileName().split("\\.")[0]+"_"+fileName;
|
|
UpYun upyun = new UpYun(bucketName,userName,password);
|
|
UpYun upyun = new UpYun(bucketName,userName,password);
|
|
File file = new File(downloadDirectory+File.separator+audioFileName);
|
|
File file = new File(downloadDirectory+File.separator+audioFileName);
|
|
@@ -243,12 +222,76 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 计算取得音频文件名称
|
|
|
|
+ * @param audio
|
|
|
|
+ * @param unit
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private String getAudioFileName(QuestionAudio audio,PaperDetailUnit unit){
|
|
|
|
+ String questionAudioId = audio.getId();
|
|
|
|
+ StringBuffer audioFileName = new StringBuffer(unit.getNumber()+"_");
|
|
|
|
+ Question question = unit.getQuestion();
|
|
|
|
+ List<String> idvaluesBody = CommonUtils.getAttrValueFromString(question.getQuesBody(),"a","id");
|
|
|
|
+ if(idvaluesBody.contains(questionAudioId)){
|
|
|
|
+ audioFileName.append("1");//题干
|
|
|
|
+ audioFileName.append("_");
|
|
|
|
+ int index = idvaluesBody.indexOf(questionAudioId);
|
|
|
|
+ audioFileName.append(index+1);
|
|
|
|
+ }else{
|
|
|
|
+ List<QuesOption> options = question.getQuesOptions();
|
|
|
|
+ if(options!=null&&options.size()>0){
|
|
|
|
+ for(QuesOption option:options){
|
|
|
|
+ List<String> idvaluesOption = CommonUtils.getAttrValueFromString(option.getOptionBody(),"a","id");
|
|
|
|
+ if(idvaluesOption.contains(questionAudioId)){
|
|
|
|
+ audioFileName.append("2");//选项
|
|
|
|
+ audioFileName.append("_");
|
|
|
|
+ audioFileName.append(CommonUtils.getOptionNum(Integer.parseInt(option.getNumber())-1));
|
|
|
|
+ audioFileName.append("_");
|
|
|
|
+ int index = idvaluesOption.indexOf(questionAudioId);
|
|
|
|
+ audioFileName.append(index+1);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ audioFileName.append(".");
|
|
|
|
+ audioFileName.append(audio.getFileSuffixes());
|
|
|
|
+ return audioFileName.toString();
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 得到调卷规则中已完成的试卷的ID集合
|
|
* 得到调卷规则中已完成的试卷的ID集合
|
|
* @param exportModel
|
|
* @param exportModel
|
|
* @return
|
|
* @return
|
|
|
|
+ * @throws Exception
|
|
*/
|
|
*/
|
|
- private List<String> getFinishPaperIds(ExportPaperInfoModel exportModel) {
|
|
|
|
|
|
+ private List<String> getFinishPaperIds(ExportPaperInfoModel exportModel) throws Exception {
|
|
|
|
+ List<String> paperIds = new ArrayList<String>();
|
|
|
|
+ ExportStructure exportStructure = exportStructureService.findStructureByExamId(exportModel.getExamId()+"");
|
|
|
|
+ if(exportStructure==null){
|
|
|
|
+ exportStructure = new ExportStructure();
|
|
|
|
+ exportStructure.setExportType(ExportType.NORMAL);
|
|
|
|
+ }
|
|
|
|
+ //如果是普通类型的批量导出
|
|
|
|
+ if(exportModel.getExportWay()==ExportWay.BATCH){
|
|
|
|
+ paperIds = checkAllCourseByExamId(exportModel.getExamId(),exportStructure.getExportType());
|
|
|
|
+ if(exportStructure.getExportType()==ExportType.NORMAL){
|
|
|
|
+ if(paperIds.size()>0&&exportModel.getExportContentList().contains(ExamFileType.PAPER_STRUCTURE_OBJECTIVE.name())){
|
|
|
|
+ makePaperStructure(exportStructure.getExamName(),paperIds,exportStructure);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //如果是普通类型的单个导出
|
|
|
|
+ if(exportModel.getExportWay()==ExportWay.SINGLE){
|
|
|
|
+ if(exportStructure.getExportType()==ExportType.NORMAL){
|
|
|
|
+ paperIds = getSinglePaperFinishPaperIds(exportModel);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return paperIds;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<String> getSinglePaperFinishPaperIds(ExportPaperInfoModel exportModel){
|
|
List<String> paperIds = new ArrayList<String>();
|
|
List<String> paperIds = new ArrayList<String>();
|
|
ExtractConfig condition = new ExtractConfig();
|
|
ExtractConfig condition = new ExtractConfig();
|
|
condition.setExamId(Long.parseLong(exportModel.getExamId()));
|
|
condition.setExamId(Long.parseLong(exportModel.getExamId()));
|
|
@@ -380,5 +423,4 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
|
|
logger.info("批量生成试卷结构完成");
|
|
logger.info("批量生成试卷结构完成");
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|