|
@@ -895,46 +895,7 @@ public class PaperController extends BaseExamController {
|
|
for (String subjectCode : zipReader.list(false)) {
|
|
for (String subjectCode : zipReader.list(false)) {
|
|
try {
|
|
try {
|
|
if (subjectCode.equalsIgnoreCase("cards")) {
|
|
if (subjectCode.equalsIgnoreCase("cards")) {
|
|
- InputStream ins = zipReader.read(subjectCode, "description.json");
|
|
|
|
- List<AnswerCardSubjectFile> courseList = AnswerCardSubjectFile.parse(ins);
|
|
|
|
- for (AnswerCardSubjectFile answerCardSubjectFile : courseList) {
|
|
|
|
- InputStream cardIns = zipReader
|
|
|
|
- .read(subjectCode, answerCardSubjectFile.getCode() + ".json");
|
|
|
|
- CardFile cardFile = CardFile.parse(cardIns);
|
|
|
|
- if (cardFile.getPages().size() != 1 && cardFile.getPages().size() % 2 != 0) {
|
|
|
|
- error.add("[" + subjectCode + "] 科目代码卡格式解析有误;");
|
|
|
|
- }
|
|
|
|
- byte[] out = cardFile.output();
|
|
|
|
- String md5 = BinaryUtil.encodeMD5(out);
|
|
|
|
- AnswerCard card = answerCardService.findByExamIdAndCode(examId,
|
|
|
|
- answerCardSubjectFile.getCode());
|
|
|
|
- if (card == null) {
|
|
|
|
- card = new AnswerCard();
|
|
|
|
- card.setExamId(examId);
|
|
|
|
- Integer number = answerCardService.findMaxNumberByExamId(examId) + 1;
|
|
|
|
- card.setNumber(number);
|
|
|
|
- }
|
|
|
|
- card.setMd5(md5);
|
|
|
|
- card.setNeedAdapte(true);
|
|
|
|
- card.setSliceConfig(cardFile.getSliceConfig().toString());
|
|
|
|
- card.setSinglePage(cardFile.getPages().size() == 1);
|
|
|
|
- card.setPaperCount(card.getSinglePage() ? 1 : cardFile.getPages().size() / 2);
|
|
|
|
- card.setSource(CardSource.WEB);
|
|
|
|
- card.setUpdateTime(new Date());
|
|
|
|
- List<String> asList = new ArrayList<String>();
|
|
|
|
- for (AnswerCardSubjectItem item : answerCardSubjectFile.getCourses()) {
|
|
|
|
- ExamSubject subject = subjectService.find(examId, item.getCode());
|
|
|
|
- if (subject == null) {
|
|
|
|
- error.add("[" + item.getCode() + "] 科目代码不存在;");
|
|
|
|
- }
|
|
|
|
- if (answerCardService.hasSubject(examId, item.getCode(), item.getCode())) {
|
|
|
|
- error.add("[" + item.getCode() + "] 科目代码已经绑定卡格式;");
|
|
|
|
- } else {
|
|
|
|
- asList.add(item.getCode());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- answerCardService.save(card, asList);
|
|
|
|
- }
|
|
|
|
|
|
+ error = this.parseCard(examId, error, zipReader);
|
|
} else {
|
|
} else {
|
|
error = this.parseSubject(examId, subjectCode, error, zipReader);
|
|
error = this.parseSubject(examId, subjectCode, error, zipReader);
|
|
}
|
|
}
|
|
@@ -954,6 +915,66 @@ public class PaperController extends BaseExamController {
|
|
return "redirect:/admin/exam/paper";
|
|
return "redirect:/admin/exam/paper";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private List<String> parseCard(int examId, List<String> error, ZipReader zipReader) throws IOException {
|
|
|
|
+ InputStream ins = zipReader.read("cards", "description.json");
|
|
|
|
+ List<AnswerCardSubjectFile> courseList = AnswerCardSubjectFile.parse(ins);
|
|
|
|
+ for (AnswerCardSubjectFile answerCardSubjectFile : courseList) {
|
|
|
|
+ try {
|
|
|
|
+ InputStream cardIns = zipReader.read("cards", answerCardSubjectFile.getCode() + ".json");
|
|
|
|
+ CardFile cardFile = CardFile.parse(cardIns);
|
|
|
|
+ if (cardFile.getPages().size() != 1 && cardFile.getPages().size() % 2 != 0) {
|
|
|
|
+ error.add("[" + answerCardSubjectFile.getCode() + "] 科目代码卡格式解析有误;");
|
|
|
|
+ return error;
|
|
|
|
+ }
|
|
|
|
+ byte[] out = cardFile.output();
|
|
|
|
+ String md5 = BinaryUtil.encodeMD5(out);
|
|
|
|
+ AnswerCard card = answerCardService.findByExamIdAndCode(examId, answerCardSubjectFile.getCode());
|
|
|
|
+ if (card == null) {
|
|
|
|
+ card = new AnswerCard();
|
|
|
|
+ card.setExamId(examId);
|
|
|
|
+ Integer number = answerCardService.findMaxNumberByExamId(examId) + 1;
|
|
|
|
+ card.setNumber(number);
|
|
|
|
+ }
|
|
|
|
+ card.setMd5(md5);
|
|
|
|
+ card.setNeedAdapte(true);
|
|
|
|
+ card.setSliceConfig(cardFile.getSliceConfig().toString());
|
|
|
|
+ card.setSinglePage(cardFile.getPages().size() == 1);
|
|
|
|
+ card.setPaperCount(card.getSinglePage() ? 1 : cardFile.getPages().size() / 2);
|
|
|
|
+ card.setSource(CardSource.WEB);
|
|
|
|
+ card.setUpdateTime(new Date());
|
|
|
|
+ List<String> asList = new ArrayList<String>();
|
|
|
|
+ List<ExamSubject> subjects = new ArrayList<ExamSubject>();
|
|
|
|
+ for (AnswerCardSubjectItem item : answerCardSubjectFile.getCourses()) {
|
|
|
|
+ ExamSubject subject = subjectService.find(examId, item.getCode());
|
|
|
|
+ if (subject == null) {
|
|
|
|
+ error.add("[" + item.getCode() + "] 科目代码不存在;");
|
|
|
|
+ return error;
|
|
|
|
+ }
|
|
|
|
+ if (answerCardService.hasSubject(examId, item.getCode(), item.getCode())) {
|
|
|
|
+ error.add("[" + item.getCode() + "] 科目代码已经绑定卡格式;");
|
|
|
|
+ return error;
|
|
|
|
+ } else {
|
|
|
|
+ asList.add(item.getCode());
|
|
|
|
+ subject.setSliceConfig(cardFile.getSliceConfig().toString());
|
|
|
|
+ subject.setCardType(FormatType.JSON);
|
|
|
|
+ subjects.add(subject);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ answerCardService.save(card, asList);
|
|
|
|
+ fileService.uploadAnswerCard(new ByteArrayInputStream(out), md5, examId, card.getNumber());
|
|
|
|
+ for (ExamSubject examSubject : subjects) {
|
|
|
|
+ subjectService.save(examSubject);
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ log.error("parse zip data error", e);
|
|
|
|
+ error.add("[" + answerCardSubjectFile.getCode() + "] 科目代码卡格式解析有误;");
|
|
|
|
+ return error;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return error;
|
|
|
|
+ }
|
|
|
|
+
|
|
private List<String> parseSubject(int examId, String subjectCode, List<String> error, ZipReader zipReader)
|
|
private List<String> parseSubject(int examId, String subjectCode, List<String> error, ZipReader zipReader)
|
|
throws Exception {
|
|
throws Exception {
|
|
ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
@@ -969,6 +990,7 @@ public class PaperController extends BaseExamController {
|
|
CardFile cardFile = CardFile.parse(cardIns);
|
|
CardFile cardFile = CardFile.parse(cardIns);
|
|
if (cardFile.getPages().size() != 1 && cardFile.getPages().size() % 2 != 0) {
|
|
if (cardFile.getPages().size() != 1 && cardFile.getPages().size() % 2 != 0) {
|
|
error.add("[" + subjectCode + "] 科目代码卡格式解析有误;");
|
|
error.add("[" + subjectCode + "] 科目代码卡格式解析有误;");
|
|
|
|
+ return error;
|
|
}
|
|
}
|
|
byte[] out = cardFile.output();
|
|
byte[] out = cardFile.output();
|
|
String md5 = BinaryUtil.encodeMD5(out);
|
|
String md5 = BinaryUtil.encodeMD5(out);
|