考试统计

main
sunhonglei 4 months ago
parent 14026544d1
commit 671ef755e2
  1. 4
      ccic-exam/src/main/java/com/ccic/safeliab/dao/ExamStatisticsMapper.java
  2. 3
      ccic-exam/src/main/java/com/ccic/safeliab/service/ExamStatisticsService.java
  3. 8
      ccic-exam/src/main/java/com/ccic/safeliab/service/ExamStatisticsServiceImpl.java
  4. 13
      ccic-exam/src/main/java/com/ccic/safeliab/web/ExamStatisticsController.java
  5. 48
      ccic-exam/src/main/resources/mappers/ExamStatisticsMapper.xml

@ -3,6 +3,7 @@ package com.ccic.safeliab.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ccic.safeliab.entity.ExamStatistics; import com.ccic.safeliab.entity.ExamStatistics;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -13,8 +14,9 @@ public interface ExamStatisticsMapper extends BaseMapper<ExamStatistics>{
int getPaperCount(); int getPaperCount();
int getExamCount(); int getExamCount();
List<Map<String,Object>> getIndustryDimensionData(); List<Map<String,Object>> getIndustryDimensionData();
List<Map<String,Object>> getAqServiceDimensionData(); List<Map<String,Object>> getAqServiceDimensionData(@Param("id") String id);
List<Map<String,Object>> getExamTableData(); List<Map<String,Object>> getExamTableData();
List<Map<String,Object>> getScoreDistributionData(); List<Map<String,Object>> getScoreDistributionData();
List<Map<String,Object>> getPaperDistributionData(); List<Map<String,Object>> getPaperDistributionData();
List<Map<String,Object>> getQuestionTypeDistributionData(@Param("id") String id);
} }

@ -12,8 +12,9 @@ public interface ExamStatisticsService extends BaseService<ExamStatistics> {
int getPaperCount(); int getPaperCount();
int getExamCount(); int getExamCount();
List<Map<String,Object>> getIndustryDimensionData(); List<Map<String,Object>> getIndustryDimensionData();
List<Map<String,Object>> getAqServiceDimensionData(); List<Map<String,Object>> getAqServiceDimensionData(String id);
List<Map<String,Object>> getExamTableData(); List<Map<String,Object>> getExamTableData();
List<Map<String,Object>> getScoreDistributionData(); List<Map<String,Object>> getScoreDistributionData();
List<Map<String,Object>> getPaperDistributionData(); List<Map<String,Object>> getPaperDistributionData();
List<Map<String,Object>> getQuestionTypeDistributionData(String id);
} }

@ -3,6 +3,7 @@ package com.ccic.safeliab.service;
import com.ccic.safeliab.dao.ExamStatisticsMapper; import com.ccic.safeliab.dao.ExamStatisticsMapper;
import com.ccic.safeliab.entity.ExamStatistics; import com.ccic.safeliab.entity.ExamStatistics;
import com.ccic.safeliab.support.BaseServiceImpl; import com.ccic.safeliab.support.BaseServiceImpl;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -22,8 +23,8 @@ public class ExamStatisticsServiceImpl extends BaseServiceImpl<ExamStatisticsMap
public List<Map<String,Object>> getIndustryDimensionData(){ public List<Map<String,Object>> getIndustryDimensionData(){
return baseMapper.getIndustryDimensionData(); return baseMapper.getIndustryDimensionData();
} }
public List<Map<String,Object>> getAqServiceDimensionData(){ public List<Map<String,Object>> getAqServiceDimensionData(@Param("id") String id){
return baseMapper.getAqServiceDimensionData(); return baseMapper.getAqServiceDimensionData(id);
} }
public List<Map<String,Object>> getExamTableData(){ public List<Map<String,Object>> getExamTableData(){
return baseMapper.getExamTableData(); return baseMapper.getExamTableData();
@ -34,4 +35,7 @@ public class ExamStatisticsServiceImpl extends BaseServiceImpl<ExamStatisticsMap
public List<Map<String,Object>> getPaperDistributionData(){ public List<Map<String,Object>> getPaperDistributionData(){
return baseMapper.getPaperDistributionData(); return baseMapper.getPaperDistributionData();
} }
public List<Map<String,Object>> getQuestionTypeDistributionData(@Param("id") String id){
return baseMapper.getQuestionTypeDistributionData(id);
}
} }

@ -31,14 +31,23 @@ public class ExamStatisticsController {
// 监管行业环状图 // 监管行业环状图
result.put("industryDimensionData", service.getIndustryDimensionData()); result.put("industryDimensionData", service.getIndustryDimensionData());
// 安全服务环状图 // 安全服务环状图
result.put("aqServiceDimensionData",service.getAqServiceDimensionData()); result.put("aqServiceDimensionData",service.getAqServiceDimensionData(null));
// 考试状况表格 // 考试状况表格
result.put("examTableData",service.getExamTableData()); result.put("examTableData",service.getExamTableData());
// 成绩分布 // 成绩分布
result.put("scoreDistributionData",service.getScoreDistributionData()); result.put("scoreDistributionData",service.getScoreDistributionData());
// 试卷情况 // 试卷情况
result.put("paperDistributionData",service.getPaperDistributionData()); result.put("paperDistributionData",service.getPaperDistributionData());
return R.ok().data(result);
}
@GetMapping("/change")
public R onChange(@RequestParam String id) {
// 这里可以添加实际的数据库查询逻辑
Map<Object,Object> result = new HashMap<>();
// 安全服务环状图
result.put("aqServiceDimensionData",service.getAqServiceDimensionData(id));
// 安全服务环状图
result.put("questionTypeDistributionData",service.getQuestionTypeDistributionData(id));
return R.ok().data(result); return R.ok().data(result);
} }
} }

@ -37,7 +37,7 @@
]]> ]]>
</select> </select>
<select id="getAqServiceDimensionData" resultType="java.util.Map"> <select id="getAqServiceDimensionData" resultType="java.util.Map">
<![CDATA[
SELECT SELECT
COUNT ( q.ID ) AS "value", COUNT ( q.ID ) AS "value",
( dict.dict_value || ': ' || COUNT ( q.ID ) || ' 条' ) AS "name" ( dict.dict_value || ': ' || COUNT ( q.ID ) || ' 条' ) AS "name"
@ -46,16 +46,21 @@
LEFT JOIN ex_question_categories q ON q.service_type_id = dict.dict_key LEFT JOIN ex_question_categories q ON q.service_type_id = dict.dict_key
AND q.is_deleted = 0 AND q.is_deleted = 0
AND q.status = 1 AND q.status = 1
<if test="id != null and id != ''">
AND q.industry_id = #{id}
</if>
WHERE WHERE
dict.code = 'serviceTypeDict' dict.code = 'serviceTypeDict'
AND dict.is_deleted = 0 AND dict.is_deleted = 0
AND dict.parent_id <> 0 <![CDATA[ AND dict.parent_id <> 0 ]]>
GROUP BY GROUP BY
dict.dict_key, dict.dict_key,
dict.dict_value dict.dict_value
ORDER BY ORDER BY
dict.dict_key dict.dict_key
]]>
</select> </select>
<select id="getExamTableData" resultType="java.util.Map"> <select id="getExamTableData" resultType="java.util.Map">
<![CDATA[ <![CDATA[
@ -168,7 +173,40 @@
ORDER BY ORDER BY
ind.industry_id ind.industry_id
</select> </select>
<select id="getExamAnswerDetails" resultType="java.util.Map"> <select id="getQuestionTypeDistributionData" resultType="java.util.Map">
with total as (
SELECT
case when count(1) = 0 then null else count(1) end as "count"
FROM
ex_question_categories q
WHERE
q.is_deleted = 0
<if test="id != null and id != ''">
AND q.industry_id = #{id}
</if>
),types as (
SELECT
1 AS TYPE_ID,
'单选' AS "NAME"
UNION ALL
SELECT
2 AS TYPE_ID,
'多选' AS "NAME"
)
SELECT
t.NAME || ': '|| round(COALESCE (count(q.id)/(select count from total),0) * 100,2) || '%' as "name",
round(COALESCE (count(q.id)/(select count from total),0) * 100,2) as "value"
FROM
types t
left join ex_question_categories q
on q.question_types = t.TYPE_ID
and q.is_deleted = 0
<if test="id != null and id != ''">
AND q.industry_id = #{id}
</if>
GROUP BY
t.TYPE_ID ,
t.NAME ,
q.question_types
</select> </select>
</mapper> </mapper>
Loading…
Cancel
Save