遍历出题库表的题库名称和题库id,根据题目id即questionBankId获取

分组,即该题库题目总数,该题库题目正确数,该题库已回答题目数。

<sqltemplate id="countAnswerdQuestion">
<![CDATA[
SELECT
question_bank_id ,
(SELECT COUNT(1) FROM edu_question WHERE question_bank_id = t.question_bank_id) totalCount ,
(select count(id) from edu_question_exercise where question_bank_id = t.question_bank_id and answer_status ='1' AND labour_id=:labourId) correctCount,
COUNT(1) answerdCount
FROM
edu_question_exercise t
WHERE 1=1
<#if labourId?? && labourId != '' >
AND labour_id = :labourId
</#if> GROUP BY question_bank_id
]]>
</sqltemplate>

利用三个Map分别接收题目总数、题目正确数、已回答题目数

public Map getDetails(EduQuestionExercise eduQuestionExercise){
Map map = new HashMap(); // 岗位对应的总题库
List<EduQuestionBank> eduQuestionBanks = eduQuestionExerciseDao.queryEduQuestionBankTitle(eduQuestionExercise); // 题库已答统计
Map param = new HashMap();
param.put("labourId",eduQuestionExercise.getLabourId());
List<Map<String,Object>> answerdQuestions = eduQuestionExerciseDao.countAnswerdQuestion(param); Map<Integer, Integer> answeredMap = new HashMap<>(); // 题库id 为key , 题库已答数量为value
for(Map<String,Object> answerdQuestion : answerdQuestions){
Integer questionBankId = MapUtils.getInteger(answerdQuestion, "question_bank_id");
Integer answerdCount = MapUtils.getInteger(answerdQuestion, "answerdCount");
answeredMap.put(questionBankId, answerdCount);
}
// 题库id 为key , 题库总题目量为value
Map<Integer, Integer> totalMap = new HashMap<>(); for(Map<String,Object> answerdQuestion : answerdQuestions){
Integer questionBankId = MapUtils.getInteger(answerdQuestion, "question_bank_id");
Integer totalCount = MapUtils.getInteger(answerdQuestion, "totalCount");
totalMap.put(questionBankId, totalCount);
}
// 题库id 为key , 题库正确题目量为value
Map<Integer, Integer> correctMap = new HashMap<>(); for(Map<String,Object> answerdQuestion : answerdQuestions){
Integer questionBankId = MapUtils.getInteger(answerdQuestion, "question_bank_id");
Integer correctCount = MapUtils.getInteger(answerdQuestion, "correctCount");
correctMap.put(questionBankId, correctCount);
} // 设置题库已答数量
for(EduQuestionBank eduQuestionBank : eduQuestionBanks) {
eduQuestionBank.setAnsweredCount(MapUtils.getInteger(answeredMap, eduQuestionBank.getId())!=null?MapUtils.getInteger(answeredMap, eduQuestionBank.getId()):0);
eduQuestionBank.setTotalCount(MapUtils.getInteger(totalMap,eduQuestionBank.getId())!=null?MapUtils.getInteger(totalMap,eduQuestionBank.getId()):0);
eduQuestionBank.setCorrectCount(MapUtils.getInteger(correctMap,eduQuestionBank.getId())!=null?MapUtils.getInteger(correctMap,eduQuestionBank.getId()):0);
if(eduQuestionBank.getTotalCount()!=0&&eduQuestionBank.getTotalCount()!=null&&
eduQuestionBank.getCorrectCount()!=0&&eduQuestionBank.getCorrectCount()!=null ) {
Integer correctCount = eduQuestionBank.getCorrectCount();
Integer totalCount = eduQuestionBank.getTotalCount();
Long correctCount1 = Long.valueOf(correctCount);
Long totalCount1 = Long.valueOf(totalCount);
BigDecimal correctCount2 = BigDecimal.valueOf(correctCount1);
BigDecimal totalCount2 = BigDecimal.valueOf(totalCount1);
BigDecimal accuracy = correctCount2.divide(totalCount2,2,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100));
eduQuestionBank.setAccuracy(accuracy.intValue());
}else{
eduQuestionBank.setAccuracy(0);
}
} map.put("list",eduQuestionBanks);
return map;
}

最新文章

  1. 40多个纯CSS绘制的图形
  2. SVN服务器的配置(简单易懂,带配置文件,有注释)
  3. SimpleDateFormate的使用
  4. Jenkins 2.26 发布,可扩展的持续集成引擎
  5. CollectionsAPI
  6. c# label的内容显示不全
  7. 应用引擎BAE3.0介绍及百度BAE3.0支持并发多少
  8. 自己做jQuery插件:将audio5js封装成jQuery语音播放插件
  9. codeforces 401D. Roman and Numbers 数位dp
  10. B - 畅通工程(并查集)
  11. catalan 数——卡特兰数(转)
  12. [LeetCode328]Odd Even Linked List
  13. perl多线程使用
  14. Jquery_基础(二) 包装集
  15. 主成分分析算法(PCA)
  16. JAVA基础复习与总结&lt;一&gt;(2) 父类引用指向子类对象(向上转型、动态链接)
  17. Nodejs在Ubuntu的部署和配置 samba
  18. Python档案袋( 命令行操作 及 Os与Shutil文件操作补充 )
  19. Atitit 烈火计划进展报告 r61
  20. ARC下野指针 EXC_BAD_ACCESS错误

热门文章

  1. Verilog MIPS32 CPU(四)-- RAM
  2. occal [问题解决]ORA-01427: 单行子查询返回多个行
  3. BOI2007 Mokia | cdq分治求二维点数模板
  4. [ZJOI2008] 树的统计Count
  5. 忘记Oracle用户名和密码
  6. 201621123012《Java程序设计》第10次学习总结
  7. leetcode 39 组合总和 JAVA
  8. Linux 开启路由转发功能
  9. AOP之 Filter实用
  10. linux用到的命令