考试统计

main
sunhonglei 4 months ago
parent be33d48ba1
commit b9a36ce057
  1. 4
      ccic-exam/src/main/java/com/ccic/safeliab/dao/ExamStatisticsMapper.java
  2. 5
      ccic-exam/src/main/java/com/ccic/safeliab/service/ExamStatisticsService.java
  3. 12
      ccic-exam/src/main/java/com/ccic/safeliab/service/ExamStatisticsServiceImpl.java
  4. 24
      ccic-exam/src/main/java/com/ccic/safeliab/web/ExamStatisticsController.java
  5. 98
      ccic-exam/src/main/resources/mappers/ExamStatisticsMapper.xml

@ -25,4 +25,8 @@ public interface ExamStatisticsMapper extends BaseMapper<ExamStatistics>{
@Param("examArea")String examArea,
@Param("industry")String industry);
int getPaperAnalysisData(@Param("status") String status);
List<Map<String,Object>> getExamPaperAnalysisPageList(@Param("paperName")String paperName,@Param("industry")String industry);
String getPaperName(@Param("paperId")String paperId);
List<Map<String,Object>> getQuestionAccuracyData(@Param("paperId")String paperId);
List<Map<String,Object>> getQuestions(@Param("paperId")String paperId);
}

@ -3,6 +3,7 @@ package com.ccic.safeliab.service;
import com.ccic.safeliab.entity.ExamSchedule;
import com.ccic.safeliab.entity.ExamStatistics;
import com.ccic.safeliab.support.BaseService;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -23,4 +24,8 @@ public interface ExamStatisticsService extends BaseService<ExamStatistics> {
String examArea,
String industry);
int getPaperAnalysisData(String status);
List<Map<String,Object>> getExamPaperAnalysisPageList(String paperName,String industry);
String getPaperName(String paperId);
List<Map<String,Object>> getQuestionAccuracyData(String paperId);
List<Map<String,Object>> getQuestions(String paperId);
}

@ -50,4 +50,16 @@ public class ExamStatisticsServiceImpl extends BaseServiceImpl<ExamStatisticsMap
public int getPaperAnalysisData(String status){
return baseMapper.getPaperAnalysisData(status);
}
public List<Map<String,Object>> getExamPaperAnalysisPageList(String paperName,String industry) {
return baseMapper.getExamPaperAnalysisPageList(paperName,industry);
}
public String getPaperName(String paperId){
return baseMapper.getPaperName(paperId);
}
public List<Map<String,Object>> getQuestionAccuracyData(String paperId){
return baseMapper.getQuestionAccuracyData(paperId);
}
public List<Map<String,Object>> getQuestions(String paperId){
return baseMapper.getQuestions(paperId);
}
}

@ -75,4 +75,28 @@ public class ExamStatisticsController {
result.put("disabledCount", service.getPaperAnalysisData("0"));
return R.ok().data(result);
}
@GetMapping("/getExamPaperAnalysisPageList")
public R getExamPaperAnalysisPageList(
@RequestParam String paperName,
@RequestParam String industry) {
return R.ok().data(service.getExamPaperAnalysisPageList(paperName,industry));
}
@GetMapping("/getPaperName")
public R getPaperName(
@RequestParam String id) {
return R.ok().data(service.getPaperName(id));
}
@GetMapping("/getQuestionAccuracyData")
public R getQuestionAccuracyData(
@RequestParam String id) {
List<Map<String,Object>> result =service.getQuestionAccuracyData(id);
return R.ok().data(result);
}
@GetMapping("/getQuestions")
public R getQuestions(
@RequestParam String id) {
List<Map<String,Object>> result = service.getQuestions(id);
return R.ok().data(result);
}
}

@ -346,4 +346,102 @@
AND paper_status = #{status}
</if>
</select>
<select id="getExamPaperAnalysisPageList" resultType="java.util.Map">
SELECT
paper.id as paperId,
paper.paper_name as paperName,
ind.industry_name as industry,
count(info.id) as useCount,
count(score."id") as participantCount,
round(sum(score.total_score)/sum(paper.total_score)*100,2) as accuracyRate
FROM
ex_exam_papers paper
left join tbl_industry ind
on ind.industry_id = paper.industry_id
and ind.status = 1
left join ex_exam_info info
on info.paper_id = paper."id"
and info.is_deleted = 0
left join ex_exam_scores score
on score.paper_id = info.paper_id
and score.exam_id = info."id"
and score.is_deleted = 0
WHERE
paper.is_deleted = 0
<if test="paperName != null and paperName != ''">
AND paper.paper_name LIKE '%' + #{paperName} + '%'
</if>
<if test="industry != null and industry != ''">
AND ind.industry_id = #{industry}
</if>
group by
paper.id ,
paper.paper_name ,
ind.industry_name
order by paper.id
</select>
<select id="getPaperName" resultType="java.lang.String">
SELECT
paper.paper_name
from
ex_exam_papers paper
where
paper.is_deleted=0
AND paper.id = #{paperId}
</select>
<select id="getQuestionAccuracyData" resultType="java.util.Map">
SELECT
1 as "count",
COALESCE(sum(ans.is_correct)/count(ans.id),0) as accuracy
FROM
ex_exam_papers paper
left join ex_paper_questions question
on question.paper_id = paper."id"
and question.is_deleted = 0
left join ex_question_categories cate
on cate.id = question.question_id
and cate.is_deleted = 0
left join ex_answers ans
on ans.paper_id = paper."id"
and ans.question_id = question.question_id
and ans.is_deleted = 0
WHERE
paper.is_deleted=0
AND paper.id = #{paperId}
group by
paper.id,
cate.id
</select>
<select id="getQuestions" resultType="java.util.Map">
SELECT
cate.question_types as question_types,
cate.question_content as question_content,
cate.answer as answer,
cate.options as options,
question.question_number as question_number,
sum(ans.is_correct)/count(ans.id) as accuracyRate
FROM
ex_exam_papers paper
left join ex_paper_questions question
on question.paper_id = paper."id"
and question.is_deleted = 0
left join ex_question_categories cate
on cate.id = question.question_id
and cate.is_deleted = 0
left join ex_answers ans
on ans.paper_id = paper."id"
and ans.question_id = question.question_id
and ans.is_deleted = 0
WHERE
paper.is_deleted=0
AND paper.id = #{paperId}
group by
paper.id,
cate.id,
cate.question_types,
cate.question_content,
cate.answer,
cate.options,
question.question_number
</select>
</mapper>
Loading…
Cancel
Save