Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r7ea403e625bda7ecfcc7dac2fecaba059852bb95 -r06b79ec91753e0d1195e70ea75b516e8c11a936f --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 7ea403e625bda7ecfcc7dac2fecaba059852bb95) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 06b79ec91753e0d1195e70ea75b516e8c11a936f) @@ -44,6 +44,7 @@ import java.util.TreeMap; import java.util.TreeSet; import java.util.UUID; +import java.util.function.Function; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -2243,16 +2244,21 @@ } Set questionResults = assessmentResult.getQuestionResults(); - if (questionResults == null) { + if (questionResults == null || questionResults.isEmpty()) { continue; } + Map questionResultsMap = questionResults.stream().collect(Collectors + .toMap(questionResult -> questionResult.getQbToolQuestion().getUid(), Function.identity())); // get information when a learner started interaction with given questions Map learnerInteractions = learnerInteractionService .getFirstLearnerInteractions(assessment.getContentId(), assessmentUser.getUserId().intValue()); - for (AssessmentQuestionResult questionResult : questionResults) { + // follow question reference ordering, to QbToolQuestion's + for (QuestionReference questionReference : questionReferences) { + AssessmentQuestionResult questionResult = questionResultsMap + .get(questionReference.getQuestion().getUid()); // mark userResultRow.addCell(questionResult.getMark(), ExcelCell.BORDER_STYLE_LEFT_THIN);