| | |
| | | import com.qxueyou.scc.school.model.SchEvaluate; |
| | | |
| | | /** |
| | | * 练习工具类 |
| | | * 练习工具类 |
| | | * |
| | | * @author zhiyong |
| | | * |
| | |
| | | public class ExerciseUtils { |
| | | |
| | | /** |
| | | * 重新组装练习item |
| | | * 重新组装练习item |
| | | * |
| | | * @param lstItems |
| | | * @return |
| | |
| | | public static void packageExerciseItem(List<ExerciseItem> lstItems, List<ExerciseItemAnswerU> lstUserAnswer, |
| | | List<ExerciseObjectImg> lstOptionImgs) { |
| | | for (ExerciseItem objExerciseItem : lstItems) { |
| | | // 选项 |
| | | // 选项 |
| | | List<ExerciseItemOption> options = objExerciseItem.getOptions(); |
| | | // 选项分数 |
| | | // 选项分数 |
| | | List<ExerciseItemScore> scores = objExerciseItem.getScores(); |
| | | ExerciseUtils.packOption(options, scores, lstOptionImgs); |
| | | if (lstUserAnswer == null || lstUserAnswer.isEmpty()) { |
| | | continue; |
| | | } |
| | | for (ExerciseItemAnswerU answerU : lstUserAnswer) { |
| | | // 获用户答案 |
| | | // 获用户答案 |
| | | if (answerU.getExerciseItemId().equals(objExerciseItem.getExerciseId())) { |
| | | objExerciseItem.setAnswer(answerU.getAnswer()); |
| | | break; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 为选项组装分数和图片 |
| | | * 为选项组装分数和图片 |
| | | * |
| | | * @return |
| | | */ |
| | |
| | | break; |
| | | } |
| | | } |
| | | // ͼƬ |
| | | // 图片 |
| | | if (lstOptionImgs == null || lstOptionImgs.isEmpty()) { |
| | | continue; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装问卷详细统计情况 |
| | | * 组装问卷详细统计情况 |
| | | * |
| | | * @param lstItems |
| | | * @param objSchEvaluate |
| | |
| | | double iTotalAverageScore = 0; |
| | | double iTotalScore = 0; |
| | | for (ExerciseItem objExerciseItem : lstItems) { |
| | | // 选项 |
| | | // 选项 |
| | | List<ExerciseItemOption> options = objExerciseItem.getOptions(); |
| | | // 选项分数 |
| | | // 选项分数 |
| | | List<ExerciseItemScore> scores = objExerciseItem.getScores(); |
| | | |
| | | ExerciseUtils.packOption(options, scores, null); |
| | | List<ExerciseItemAnswerU> exerciseItemAnswerU = objExerciseItem.getExerciseItemAnswerU(); |
| | | // 平均分数 |
| | | // 平均分数 |
| | | double dAverageScore = 0; |
| | | double dUserScore = 0; |
| | | // 是否存在答题学员 |
| | | // 是否存在答题学员 |
| | | boolean hasAnswerU = exerciseItemAnswerU != null && !exerciseItemAnswerU.isEmpty(); |
| | | if (options == null || options.isEmpty()) { |
| | | continue; |
| | | } |
| | | // 统计每个选项的情况 |
| | | // 统计每个选项的情况 |
| | | LinkedHashMap<String, Integer> mOptionsDetail = new LinkedHashMap<String, Integer>(); |
| | | LinkedHashMap<String, Integer> mOptionOrderDetail = new LinkedHashMap<String, Integer>(); |
| | | if (!hasAnswerU) { |
| | |
| | | } |
| | | for (ExerciseItemAnswerU objExerciseItemAnswerU : exerciseItemAnswerU) { |
| | | String strAnswer = objExerciseItemAnswerU.getAnswer(); |
| | | if (StringUtils.isEmpty(strAnswer)) {// 为空自动跳出循环 |
| | | if (StringUtils.isEmpty(strAnswer)) {// 为空自动跳出循环 |
| | | break; |
| | | } |
| | | Map<String, Object> mResult2 = packageItemOption(objExerciseItem, strAnswer, mOptionsDetail, mOptionOrderDetail); |
| | |
| | | objExerciseItem.setMaxScore((Double) mResult2.get("dMaxScore")); |
| | | dUserScore += (Double) mResult2.get("dUserScore"); |
| | | } |
| | | // 计算平均值 |
| | | // 计算平均值 |
| | | if (hasAnswerU) { |
| | | dAverageScore = dUserScore / exerciseItemAnswerU.size(); |
| | | } |
| | | // 最大值 |
| | | // 最大值 |
| | | iTotalScore += objExerciseItem.getMaxScore(); |
| | | objExerciseItem.setOptionsDetail(mOptionsDetail); |
| | | if(!mOptionOrderDetail.isEmpty()) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装问卷详细统计情况 |
| | | * 组装问卷详细统计情况 |
| | | * |
| | | * @param lstItems |
| | | * @param objSchEvaluate |
| | |
| | | for (ExerciseItem objExerciseItem : result) { |
| | | lstItems.add(objExerciseItem); |
| | | List<ExerciseItemAnswerU> lstExerciseItemAnswerU = objExerciseItem.getExerciseItemAnswerU(); |
| | | // 选项 |
| | | // 选项 |
| | | List<ExerciseItemOption> options = objExerciseItem.getOptions(); |
| | | // 选项分数 |
| | | // 选项分数 |
| | | List<ExerciseItemScore> scores = objExerciseItem.getScores(); |
| | | // 组装选项和分数 |
| | | // 组装选项和分数 |
| | | ExerciseUtils.packOption(options, scores, lstExerciseObjectImg); |
| | | if (lstExerciseItemAnswerU == null || lstExerciseItemAnswerU.isEmpty()) { |
| | | continue; |
| | | } |
| | | // 用户答案 |
| | | // 用户答案 |
| | | String strAnswer = lstExerciseItemAnswerU.get(0).getAnswer(); |
| | | if (StringUtils.isEmpty(strAnswer)) {// 为空自动跳出循环 |
| | | if (StringUtils.isEmpty(strAnswer)) {// 为空自动跳出循环 |
| | | break; |
| | | } |
| | | strCreator = lstExerciseItemAnswerU.get(0).getCreator(); |
| | | if (objExerciseItem.getType() == ExerciseItem.TYPE_ESSAY_QUESTION) {// 问答题 |
| | | if (objExerciseItem.getType() == ExerciseItem.TYPE_ESSAY_QUESTION) {// 问答题 |
| | | objExerciseItem.setAnswer(strAnswer); |
| | | } else { |
| | | if (options == null || options.isEmpty()) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 判断题目类型 |
| | | * 判断题目类型 |
| | | * |
| | | * @param objExerciseItem |
| | | * 题目 |
| | | * 题目 |
| | | * @param strAnswer |
| | | * 用户选择答案 |
| | | * 用户选择答案 |
| | | * @param mOptionsDetail |
| | | * 统计值 |
| | | * 统计值 |
| | | * @return |
| | | */ |
| | | public static Map<String, Object> packageItemOption(ExerciseItem objExerciseItem, String strAnswer, |
| | | LinkedHashMap<String, Integer> mOptionsDetail, LinkedHashMap<String, Integer> mOptionOrderDetail) { |
| | | Map<String, Object> mResult = new HashMap<String, Object>(); |
| | | // 选项 |
| | | // 选项 |
| | | List<ExerciseItemOption> options = objExerciseItem.getOptions(); |
| | | double dMaxScore = 0; |
| | | double dUserScore = 0; |
| | | String[] c = "A B C D E F G H I J K L M N".split(" "); |
| | | // 题目类型 |
| | | // 题目类型 |
| | | int iType = objExerciseItem.getType(); |
| | | int index = 0; |
| | | StringBuffer userAnswerContent = new StringBuffer(256); |
| | | for (ExerciseItemOption objExerciseItemOption : options) { |
| | | double dScore = Double.valueOf(objExerciseItemOption.getScore()); |
| | | // 获取最大值 |
| | | // 获取最大值 |
| | | dMaxScore = iType == 2 ? dMaxScore + dScore : dScore > dMaxScore ? dScore : dMaxScore; |
| | | if (iType == ExerciseItem.TYPE_SINGLE_SELECT |
| | | && strAnswer.substring(0, 1).equals(objExerciseItemOption.getOptionOrder())) {// 单选A或B或C或D_补充xxxxxx |
| | | && strAnswer.substring(0, 1).equals(objExerciseItemOption.getOptionOrder())) {// 单选A或B或C或D_补充xxxxxx |
| | | dUserScore += dScore; |
| | | userAnswerContent.append(strAnswer.length() > 2 |
| | | ? objExerciseItemOption.getContent() + strAnswer.substring(1, strAnswer.length()) : // 拼接补充内容 |
| | | ? objExerciseItemOption.getContent() + strAnswer.substring(1, strAnswer.length()) : // 拼接补充内容 |
| | | objExerciseItemOption.getContent()); |
| | | mOptionsDetail.put(ExerciseUtils.getOptionsContent(objExerciseItemOption), |
| | | ExerciseUtils.getValue(ExerciseUtils.getOptionsContent(objExerciseItemOption), mOptionsDetail)); |
| | | mOptionOrderDetail.put(objExerciseItemOption.getOptionOrder(),mOptionsDetail.get(ExerciseUtils.getOptionsContent(objExerciseItemOption))); |
| | | } else if (iType == ExerciseItem.TYPE_MULTI_SELECT) {// 多选A,B,C,D_补充xxxxxx |
| | | } else if (iType == ExerciseItem.TYPE_MULTI_SELECT) {// 多选A,B,C,D_补充xxxxxx |
| | | String[] arrAnswer = strAnswer.split("_"); |
| | | String[] strAnswerOrder = arrAnswer[0].split(","); |
| | | for (int i = 0; i < strAnswerOrder.length; i++) { |
| | | if (strAnswerOrder[i].equals(objExerciseItemOption.getOptionOrder())) { |
| | | dUserScore += dScore; |
| | | // 拼接补充的内容 |
| | | // 拼接补充的内容 |
| | | if (index == options.size() - 1) { |
| | | userAnswerContent.append(objExerciseItemOption.getContent()); |
| | | userAnswerContent.append(arrAnswer.length > 1 && arrAnswer[1].length() > 2 |
| | |
| | | } |
| | | } |
| | | } else if (iType == ExerciseItem.TYPE_SCORE |
| | | && c[Integer.valueOf(strAnswer) - 1].equals(objExerciseItemOption.getOptionOrder())) {// 分值,1,2,3,4,5颗星 |
| | | && c[Integer.valueOf(strAnswer) - 1].equals(objExerciseItemOption.getOptionOrder())) {// 分值,1,2,3,4,5颗星 |
| | | dUserScore += dScore; |
| | | userAnswerContent.append(ExerciseUtils.getOptionsContent(objExerciseItemOption));// 给答案文字赋值 |
| | | userAnswerContent.append(ExerciseUtils.getOptionsContent(objExerciseItemOption));// 给答案文字赋值 |
| | | mOptionsDetail.put(ExerciseUtils.getOptionsContent(objExerciseItemOption), |
| | | ExerciseUtils.getValue(ExerciseUtils.getOptionsContent(objExerciseItemOption), mOptionsDetail)); |
| | | mOptionOrderDetail.put(objExerciseItemOption.getOptionOrder(),mOptionsDetail.get(ExerciseUtils.getOptionsContent(objExerciseItemOption))); |
| | | } else if (iType == ExerciseItem.TYPE_MEASUREMENT && index == 0) {// 量值,直接存分数 |
| | | } else if (iType == ExerciseItem.TYPE_MEASUREMENT && index == 0) {// 量值,直接存分数 |
| | | dUserScore += Integer.valueOf(strAnswer); |
| | | userAnswerContent.append(strAnswer).append("分"); |
| | | mOptionsDetail.put(strAnswer + "分", |
| | | mOptionsDetail.get(strAnswer + "分") == null ? 1 : mOptionsDetail.get(strAnswer + "分") + 1); |
| | | mOptionOrderDetail.put(strAnswer,mOptionsDetail.get(strAnswer + "分")); |
| | | userAnswerContent.append(strAnswer).append("分"); |
| | | mOptionsDetail.put(strAnswer + "分", |
| | | mOptionsDetail.get(strAnswer + "分") == null ? 1 : mOptionsDetail.get(strAnswer + "分") + 1); |
| | | mOptionOrderDetail.put(strAnswer,mOptionsDetail.get(strAnswer + "分")); |
| | | } |
| | | index++; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取值 |
| | | * 获取值 |
| | | * |
| | | * @param content |
| | | * @param mOptionsDetail |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取选项的值和分数 |
| | | * 获取选项的值和分数 |
| | | * |
| | | * @param objExerciseItemOption |
| | | * @return |
| | | */ |
| | | public static String getOptionsContent(ExerciseItemOption objExerciseItemOption) { |
| | | return objExerciseItemOption.getContent().concat("(").concat(String.valueOf(objExerciseItemOption.getScore())) |
| | | .concat("分)"); |
| | | .concat("分)"); |
| | | } |
| | | |
| | | /** |
| | | * 重新组装练习item |
| | | * 重新组装练习item |
| | | * |
| | | * @param lstAllOptions |
| | | * @return |
| | |
| | | public static void packageExerciseItem(Map<String, List<ExerciseItemOption>> optionsMap, |
| | | Map<String, String> answerMap, List<ExerciseItemOption> lstAllOptions, |
| | | Map<String, List<ExerciseObjectImg>> imgOptionMap) { |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | String lastExerciseId = ""; |
| | | ExerciseItemOption option = null; |
| | | List<ExerciseItemOption> lstOptions = null; |
| | | StringBuffer correctAnswers = new StringBuffer(128); // 正确答案 |
| | | // 4.3 题目选项 |
| | | StringBuffer correctAnswers = new StringBuffer(128); // 正确答案 |
| | | // 4.3 题目选项 |
| | | for (int i = 0; i < lstAllOptions.size(); i++) { |
| | | option = lstAllOptions.get(i); |
| | | |
| | |
| | | option.setImgs(imgOptionMap.get(option.getOptionId())); |
| | | } |
| | | |
| | | if (i == 0) {// 第一次 |
| | | if (i == 0) {// 第一次 |
| | | lstOptions = new ArrayList<ExerciseItemOption>(); |
| | | lstOptions.add(option); |
| | | |
| | | if (option.getChecked()) {// 正确答案 |
| | | if (option.getChecked()) {// 正确答案 |
| | | correctAnswers.append(option.getOptionOrder()).append(','); |
| | | } |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(option.getExerciseItemId())) {// 相同 |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(option.getExerciseItemId())) {// 相同 |
| | | lstOptions.add(option); |
| | | |
| | | if (option.getChecked()) {// 正确答案 |
| | | if (option.getChecked()) {// 正确答案 |
| | | correctAnswers.append(option.getOptionOrder()).append(','); |
| | | } |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | optionsMap.put(lastExerciseId, lstOptions); |
| | | answerMap.put(lastExerciseId, correctAnswers.toString()); |
| | | |
| | | correctAnswers = new StringBuffer(128); |
| | | if (option.getChecked()) {// 正确答案 |
| | | if (option.getChecked()) {// 正确答案 |
| | | correctAnswers.append(option.getOptionOrder()).append(','); |
| | | } |
| | | lstOptions = new ArrayList<ExerciseItemOption>(); |
| | |
| | | } |
| | | } |
| | | |
| | | if (i == lstAllOptions.size() - 1) {// 最后一次 |
| | | if (i == lstAllOptions.size() - 1) {// 最后一次 |
| | | answerMap.put(option.getExerciseItemId(), correctAnswers.toString()); |
| | | optionsMap.put(option.getExerciseItemId(), lstOptions); |
| | | } |
| | | |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | lastExerciseId = option.getExerciseItemId(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重新组装练习item 题目图片 |
| | | * 重新组装练习item 题目图片 |
| | | * |
| | | * @param lstAllOptions |
| | | * @return |
| | | */ |
| | | public static Map<String, List<ExerciseObjectImg>> packageExerciseItemImg(List<ExerciseObjectImg> lstImgs) { |
| | | Map<String, List<ExerciseObjectImg>> imgMap = new HashMap<String, List<ExerciseObjectImg>>(); |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | String lastExerciseId = ""; |
| | | ExerciseObjectImg objImg = null; |
| | | List<ExerciseObjectImg> lstImg = null; |
| | | // 4.3 题目选项 |
| | | // 4.3 题目选项 |
| | | for (int i = 0; i < lstImgs.size(); i++) { |
| | | objImg = lstImgs.get(i); |
| | | |
| | | if (i == 0) {// 第一次 |
| | | if (i == 0) {// 第一次 |
| | | lstImg = new ArrayList<ExerciseObjectImg>(); |
| | | lstImg.add(objImg); |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(objImg.getExerciseObjectId())) {// 相同 |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(objImg.getExerciseObjectId())) {// 相同 |
| | | lstImg.add(objImg); |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | imgMap.put(lastExerciseId, lstImg); |
| | | |
| | | lstImg = new ArrayList<ExerciseObjectImg>(); |
| | |
| | | } |
| | | } |
| | | |
| | | if (i == lstImgs.size() - 1) {// 最后一次 |
| | | if (i == lstImgs.size() - 1) {// 最后一次 |
| | | imgMap.put(objImg.getExerciseObjectId(), lstImg); |
| | | } |
| | | |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | lastExerciseId = objImg.getExerciseObjectId(); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新组装练习item |
| | | * 重新组装练习item |
| | | * |
| | | * @param lstAllOptions |
| | | * @return |
| | | */ |
| | | public static void packageExerciseItemScore(Map<String, List<ExerciseItemScore>> scoreMap, |
| | | List<ExerciseItemScore> lstAllscores) { |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | String lastExerciseId = ""; |
| | | ExerciseItemScore score = null; |
| | | List<ExerciseItemScore> lstscore = null; |
| | | // 4.3 题目选项 |
| | | // 4.3 题目选项 |
| | | for (int i = 0; i < lstAllscores.size(); i++) { |
| | | score = lstAllscores.get(i); |
| | | |
| | | if (i == 0) {// 第一次 |
| | | if (i == 0) {// 第一次 |
| | | lstscore = new ArrayList<ExerciseItemScore>(); |
| | | lstscore.add(score); |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(score.getExerciseItemId())) {// 相同 |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(score.getExerciseItemId())) {// 相同 |
| | | lstscore.add(score); |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | scoreMap.put(lastExerciseId, lstscore); |
| | | |
| | | lstscore = new ArrayList<ExerciseItemScore>(); |
| | |
| | | } |
| | | } |
| | | |
| | | if (i == lstAllscores.size() - 1) {// 最后一次 |
| | | if (i == lstAllscores.size() - 1) {// 最后一次 |
| | | scoreMap.put(score.getExerciseItemId(), lstscore); |
| | | } |
| | | |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | lastExerciseId = score.getExerciseItemId(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重新组装做题记录 ExerciseItemAnswer —— 成绩统计 |
| | | * 重新组装做题记录 ExerciseItemAnswer —— 成绩统计 |
| | | * |
| | | * @param lstAllOptions |
| | | * @return |
| | | */ |
| | | public static void packageExerciseItemAnswerStatis(List<ExerciseItemAnswerU> answers, |
| | | Map<String, Object> answerUMap) { |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | String lastExerciseId = ""; |
| | | ExerciseItemAnswerU answer = null; |
| | | List<ExerciseItemAnswerU> lstAnswers = null; |
| | | // 做题记录 |
| | | // 做题记录 |
| | | for (int i = 0; i < answers.size(); i++) { |
| | | answer = answers.get(i); |
| | | |
| | | if (i == 0) {// 第一次 |
| | | if (i == 0) {// 第一次 |
| | | lstAnswers = new ArrayList<ExerciseItemAnswerU>(); |
| | | lstAnswers.add(answer); |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(answer.getExerciseItemId())) {// 相同 |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(answer.getExerciseItemId())) {// 相同 |
| | | lstAnswers.add(answer); |
| | | |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | answerUMap.put(lastExerciseId, lstAnswers); |
| | | |
| | | lstAnswers = new ArrayList<ExerciseItemAnswerU>(); |
| | |
| | | } |
| | | } |
| | | |
| | | if (i == answers.size() - 1) {// 最后一次 |
| | | if (i == answers.size() - 1) {// 最后一次 |
| | | answerUMap.put(answer.getExerciseItemId(), lstAnswers); |
| | | } |
| | | |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | lastExerciseId = answer.getExerciseItemId(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重新组装题目选项ExerciseItemOption —— 成绩统计 |
| | | * 重新组装题目选项ExerciseItemOption —— 成绩统计 |
| | | * |
| | | * @param lstAllOptions |
| | | * @return |
| | | */ |
| | | public static void packageExerciseItemOption(List<ExerciseItemOption> itemOptionLst, |
| | | Map<String, Object> itemOptionMap) { |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | String lastExerciseId = ""; |
| | | ExerciseItemOption option = null; |
| | | List<ExerciseItemOption> lstOptions = null; |
| | | // 题目选项 |
| | | // 题目选项 |
| | | for (int i = 0; i < itemOptionLst.size(); i++) { |
| | | option = itemOptionLst.get(i); |
| | | |
| | | if (i == 0) {// 第一次 |
| | | if (i == 0) {// 第一次 |
| | | lstOptions = new ArrayList<ExerciseItemOption>(); |
| | | lstOptions.add(option); |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(option.getExerciseItemId())) {// 相同 |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(option.getExerciseItemId())) {// 相同 |
| | | lstOptions.add(option); |
| | | |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | itemOptionMap.put(lastExerciseId, lstOptions); |
| | | |
| | | lstOptions = new ArrayList<ExerciseItemOption>(); |
| | |
| | | } |
| | | } |
| | | |
| | | if (i == itemOptionLst.size() - 1) {// 最后一次 |
| | | if (i == itemOptionLst.size() - 1) {// 最后一次 |
| | | itemOptionMap.put(option.getExerciseItemId(), lstOptions); |
| | | } |
| | | |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | lastExerciseId = option.getExerciseItemId(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重新组装题目选项统计ExerciseOptionStatistics —— 成绩统计 |
| | | * 重新组装题目选项统计ExerciseOptionStatistics —— 成绩统计 |
| | | * |
| | | * @param lstAllOptions |
| | | * @return |
| | | */ |
| | | public static void packageExerciseOptionStatis(List<ExerciseOptionStatistics> claOptionStatisLst, |
| | | Map<String, Object> optionStatisMap) { |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | String lastExerciseId = ""; |
| | | ExerciseOptionStatistics optionSta = null; |
| | | List<ExerciseOptionStatistics> lstOptionStas = null; |
| | | // 题目选项 |
| | | // 题目选项 |
| | | for (int i = 0; i < claOptionStatisLst.size(); i++) { |
| | | optionSta = claOptionStatisLst.get(i); |
| | | |
| | | if (i == 0) {// 第一次 |
| | | if (i == 0) {// 第一次 |
| | | lstOptionStas = new ArrayList<ExerciseOptionStatistics>(); |
| | | lstOptionStas.add(optionSta); |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(optionSta.getExerciseItemId())) {// 相同 |
| | | } else {// 第二次开始 |
| | | if (lastExerciseId.equals(optionSta.getExerciseItemId())) {// 相同 |
| | | lstOptionStas.add(optionSta); |
| | | |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | } else {// 不相同 |
| | | // 添加到map |
| | | optionStatisMap.put(lastExerciseId, lstOptionStas); |
| | | |
| | | lstOptionStas = new ArrayList<ExerciseOptionStatistics>(); |
| | |
| | | } |
| | | } |
| | | |
| | | if (i == claOptionStatisLst.size() - 1) {// 最后一次 |
| | | if (i == claOptionStatisLst.size() - 1) {// 最后一次 |
| | | optionStatisMap.put(optionSta.getExerciseItemId(), lstOptionStas); |
| | | } |
| | | |
| | | // 上一次练习id |
| | | // 上一次练习id |
| | | lastExerciseId = optionSta.getExerciseItemId(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取转换结果 |
| | | * 获取转换结果 |
| | | * |
| | | * @param count |
| | | * @param allCount |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取转换结果 |
| | | * 获取转换结果 |
| | | * |
| | | * @param count |
| | | * @param allCount |
| | |
| | | } |
| | | |
| | | /** |
| | | * 设置新增轨迹信息 |
| | | * 设置新增轨迹信息 |
| | | * |
| | | * @param trace |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 设置更新轨迹信息 |
| | | * 设置更新轨迹信息 |
| | | * |
| | | * @param trace |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 转换为BigDecimal |
| | | * 转换为BigDecimal |
| | | * |
| | | * @param str1 |
| | | * @param str2 |