|
|
@@ -7,6 +7,7 @@ import cn.yunzhixue.ability.center.examsprint.domain.report.ReportType;
|
|
|
import cn.yunzhixue.ability.center.examsprint.domain.report.UnmodeledReportContent;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
import org.springframework.core.io.ClassPathResource;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
@@ -51,7 +52,7 @@ public class ClasspathOutlookExamSprintReportRenderer implements ExamSprintRepor
|
|
|
throw new IllegalArgumentException("Outlook renderer requires unmodeled OUTLOOK JsonNode content");
|
|
|
}
|
|
|
try {
|
|
|
- OutlookExamSprintReportPayload payloadContract = objectMapper.treeToValue(payload, OutlookExamSprintReportPayload.class);
|
|
|
+ OutlookExamSprintReportPayload payloadContract = objectMapper.treeToValue(payloadForDeserialization(payload), OutlookExamSprintReportPayload.class);
|
|
|
OutlookReportViewModel reportPayload = adaptPayload(payloadContract);
|
|
|
return loadTemplate()
|
|
|
.replace("{{syllabusMasterySection}}", renderSyllabusMasteryChart(reportPayload.syllabusMasterySection()))
|
|
|
@@ -67,6 +68,15 @@ public class ClasspathOutlookExamSprintReportRenderer implements ExamSprintRepor
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private JsonNode payloadForDeserialization(JsonNode payload) {
|
|
|
+ if (!payload.has("StudentName") || !payload.has("studentName")) {
|
|
|
+ return payload;
|
|
|
+ }
|
|
|
+ ObjectNode deserializationPayload = ((ObjectNode) payload).deepCopy();
|
|
|
+ deserializationPayload.remove("studentName");
|
|
|
+ return deserializationPayload;
|
|
|
+ }
|
|
|
+
|
|
|
private OutlookReportViewModel adaptPayload(OutlookExamSprintReportPayload payload) {
|
|
|
int stageVocabulary = payload.stageVocabulary();
|
|
|
int masteredWordCount = payload.mastedWordCount();
|