Bladeren bron

班级报告

tags/正式版本
雍文秀 2 jaren geleden
bovenliggende
commit
718ae48804

+ 30
- 0
sexam/src/main/java/com/xhkjedu/sexam/controller/report/EReportClassController.java Bestand weergeven

@@ -128,4 +128,34 @@ public class EReportClassController {
128 128
         List<Map> list = eReportClassService.listGzXs(rank);
129 129
         return new ResultVo(0, "获取成功", list);
130 130
     }
131
+
132
+    /*
133
+     * 试卷概况
134
+     * @Param [rank]
135
+     * @Author ywx
136
+     * @Date 2022/9/1 8:36
137
+     * @return com.xhkjedu.vo.ResultVo
138
+     **/
139
+    @PostMapping("/list_sjgk")
140
+    public ResultVo listSjGk(@RequestBody ERankParamVo rank) {
141
+        N_Utils.validation(new Object[]{rank.getExamid(), "考试id", 1, rank.getClassid(), "班级id", 1
142
+                , rank.getSubjectid(), "科目id", 2});
143
+        List<Map> list = eReportClassService.listSjGk(rank);
144
+        return new ResultVo(0, "获取成功", list);
145
+    }
146
+
147
+    /*
148
+     * 试卷分析
149
+     * @Param [rank]
150
+     * @Author ywx
151
+     * @Date 2022/9/1 10:59
152
+     * @return com.xhkjedu.vo.ResultVo
153
+     **/
154
+    @PostMapping("/get_sjfx")
155
+    public ResultVo getSjFx(@RequestBody ERankParamVo rank) {
156
+        N_Utils.validation(new Object[]{rank.getExamid(), "考试id", 1, rank.getClassid(), "班级id", 1
157
+                , rank.getSubjectid(), "科目id", 2});
158
+        Map map = eReportClassService.getSjFx(rank);
159
+        return new ResultVo(0, "获取成功", map);
160
+    }
131 161
 }

+ 27
- 0
sexam/src/main/java/com/xhkjedu/sexam/mapper/reportclass/EReportClassMapper.java Bestand weergeven

@@ -0,0 +1,27 @@
1
+package com.xhkjedu.sexam.mapper.reportclass;
2
+
3
+import com.xhkjedu.sexam.vo.report.ERankParamVo;
4
+import org.apache.ibatis.annotations.Param;
5
+
6
+import java.util.List;
7
+import java.util.Map;
8
+
9
+public interface EReportClassMapper {
10
+    //试卷基本信息
11
+    Map getPaperByExamSubjectId(@Param("rank") ERankParamVo rank);
12
+
13
+    //试卷概况-题库
14
+    List<Map> listTkSjGk(@Param("rank") ERankParamVo rank);
15
+
16
+    //试卷概况-附件
17
+    List<Map> listFjSjGk(@Param("rank") ERankParamVo rank);
18
+
19
+    //试卷分析-大题分析
20
+    List<Map> listType(@Param("rank") ERankParamVo rank);
21
+
22
+    //试卷分析-小题分析
23
+    List<Map> listQuestion(@Param("rank") ERankParamVo rank);
24
+
25
+    //试卷分析-知识点分析
26
+    List<Map> listPoint(@Param("rank") ERankParamVo rank);
27
+}

+ 58
- 22
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportClassService.java Bestand weergeven

@@ -5,6 +5,7 @@ import com.xhkjedu.sexam.mapper.paperstudent.EPaperStudentMapper;
5 5
 import com.xhkjedu.sexam.mapper.report.EReportSchoolMapper;
6 6
 import com.xhkjedu.sexam.mapper.reportclass.ERclassMapper;
7 7
 import com.xhkjedu.sexam.mapper.reportclass.ERclassRankMapper;
8
+import com.xhkjedu.sexam.mapper.reportclass.EReportClassMapper;
8 9
 import com.xhkjedu.sexam.mapper.reportstu.ERstudentMapper;
9 10
 import com.xhkjedu.sexam.model.reportstu.ERstudent;
10 11
 import com.xhkjedu.sexam.vo.report.ERPaperVo;
@@ -15,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
15 16
 
16 17
 import javax.annotation.Resource;
17 18
 import java.util.ArrayList;
19
+import java.util.HashMap;
18 20
 import java.util.List;
19 21
 import java.util.Map;
20 22
 
@@ -26,10 +28,8 @@ import java.util.Map;
26 28
  **/
27 29
 @Service
28 30
 public class EReportClassService {
29
-    //@Resource
30
-    //private ERbaseMapper eRbaseMapper;
31
-    //@Resource
32
-    //private ERsubjectMapper eRsubjectMapper;
31
+    @Resource
32
+    private EReportClassMapper eReportClassMapper;
33 33
     @Resource
34 34
     private ERstudentMapper eRstudentMapper;
35 35
     @Resource
@@ -106,38 +106,74 @@ public class EReportClassService {
106 106
             ct.put("gpcwx", gpcwx);
107 107
 
108 108
             //知识点
109
-            Object pointjson = ct.get("pointjson");
109
+            setQuestionPoint(ct);
110 110
 
111 111
             ct.remove("answerjson");
112 112
             ct.remove("ctype");
113 113
             ct.remove("answer");
114 114
             ct.remove("pointjson");
115
+        }
116
+        map.put("gpctList", gpctList);
117
+        return map;
118
+    }
115 119
 
116
-            List<String> pointnames = new ArrayList<>();
117
-            if (N_Utils.isNotEmpty(pointjson)) {
118
-                List<Map> list = JSON.parseArray(pointjson.toString(), Map.class);
119
-                Integer eptqid = (Integer) ct.get("eptqid");
120
-                for (Map p : list) {
121
-                    String ques = p.get("ques").toString();
122
-                    String pointname = p.get("pointname").toString();
123
-                    List<Map> qlist = JSON.parseArray(ques, Map.class);
124
-                    for (Map q : qlist) {
125
-                        List<Integer> eptqids = JSON.parseArray(q.get("eptqids").toString(), Integer.class);
126
-                        if (N_Utils.numInList(eptqid, eptqids)) {
127
-                            pointnames.add(pointname);
128
-                            break;
129
-                        }
120
+    //试题知识点
121
+    private void setQuestionPoint(Map ct) {
122
+        Object pointjson = ct.get("pointjson");
123
+        List<String> pointnames = new ArrayList<>();
124
+        if (N_Utils.isNotEmpty(pointjson)) {
125
+            List<Map> list = JSON.parseArray(pointjson.toString(), Map.class);
126
+            Integer eptqid = (Integer) ct.get("eptqid");
127
+            for (Map p : list) {
128
+                String ques = p.get("ques").toString();
129
+                String pointname = p.get("pointname").toString();
130
+                List<Map> qlist = JSON.parseArray(ques, Map.class);
131
+                for (Map q : qlist) {
132
+                    List<Integer> eptqids = JSON.parseArray(q.get("eptqids").toString(), Integer.class);
133
+                    if (N_Utils.numInList(eptqid, eptqids)) {
134
+                        pointnames.add(pointname);
135
+                        break;
130 136
                     }
131 137
                 }
132 138
             }
133
-            ct.put("pointnames", pointnames);
134 139
         }
135
-        map.put("gpctList", gpctList);
136
-        return map;
140
+        ct.put("pointnames", pointnames);
137 141
     }
138 142
 
139 143
     //单科概况-需关注学生
140 144
     public List<Map> listGzXs(ERankParamVo rank) {
141 145
         return eRclassMapper.listGzXs(rank);
142 146
     }
147
+
148
+    //试卷概况
149
+    public List<Map> listSjGk(ERankParamVo rank) {
150
+        Map paper = eReportClassMapper.getPaperByExamSubjectId(rank);
151
+        Integer ptype = (Integer) paper.get("ptype");
152
+        if (ptype == 1) {
153
+            List<Map> list = eReportClassMapper.listTkSjGk(rank);
154
+            for (Map q : list) {
155
+                setQuestionPoint(q);//试题知识点
156
+            }
157
+            return list;
158
+        } else {
159
+            String examname = paper.get("examname").toString();
160
+            List<Map> list = eReportClassMapper.listFjSjGk(rank);
161
+            for (Map q : list) {
162
+                q.put("qstem", examname + "-第" + q.get("qorder") + "题");
163
+            }
164
+            return list;
165
+        }
166
+    }
167
+
168
+    //试卷分析
169
+    public Map getSjFx(ERankParamVo rank) {
170
+        Map map = new HashMap();
171
+        List<Map> types = eReportClassMapper.listType(rank);//大题分析
172
+        List<Map> questions = eReportClassMapper.listQuestion(rank);//小题分析
173
+        List<Map> points = eReportClassMapper.listPoint(rank);//知识点分析
174
+        map.put("types", types);
175
+        map.put("questions", questions);
176
+        map.put("points", points);
177
+        return map;
178
+    }
143 179
 }

+ 19
- 19
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportGenerateService.java Bestand weergeven

@@ -20,7 +20,6 @@ import com.xhkjedu.sexam.model.report.ERsubject;
20 20
 import com.xhkjedu.sexam.model.reportclass.*;
21 21
 import com.xhkjedu.sexam.model.reportstu.*;
22 22
 import com.xhkjedu.sexam.utils.ExamUtil;
23
-import com.xhkjedu.sexam.vo.paper.QuestionOrderVo;
24 23
 import com.xhkjedu.sexam.vo.paper.QuestionPointVo;
25 24
 import com.xhkjedu.sexam.vo.report.ERClassScoreVo;
26 25
 import com.xhkjedu.sexam.vo.report.ERPaperVo;
@@ -354,24 +353,6 @@ public class EReportGenerateService {
354 353
             for (Map action : actions) {
355 354
                 action.put("subjectname", subjectMap.get(action.get("subjectid")));
356 355
             }
357
-            //学生行为分析
358
-            Map<Integer, List<Map>> collect = actions.stream().collect(Collectors.groupingBy(s -> (Integer) s.get("studentid")));
359
-            for (Map.Entry<Integer, List<Map>> entry : collect.entrySet()) {
360
-                List<Map> list = entry.getValue();
361
-                Map sq = list.get(0);
362
-                ERstudentAction sa = new ERstudentAction();
363
-                sa.setClassid((Integer) sq.get("classid"));
364
-                sa.setStudentid(entry.getKey());
365
-                sa.setExamid(examid);
366
-                sa.setActiontype(actiontype);
367
-                for (Map s : list) {
368
-                    s.remove("classid");
369
-                    s.remove("studentid");
370
-                }
371
-                String subjectjson = JSON.toJSONString(list);
372
-                sa.setSubjectjson(subjectjson);
373
-                studentActions.add(sa);
374
-            }
375 356
 
376 357
             //班级行为分析
377 358
             Map<Integer, List<Map>> ccollect = actions.stream().collect(Collectors.groupingBy(s -> (Integer) s.get("classid")));
@@ -394,6 +375,25 @@ public class EReportGenerateService {
394 375
                 ca.setSubjectjson(subjectjson);
395 376
                 classActions.add(ca);
396 377
             }
378
+
379
+            //学生行为分析
380
+            Map<Integer, List<Map>> collect = actions.stream().collect(Collectors.groupingBy(s -> (Integer) s.get("studentid")));
381
+            for (Map.Entry<Integer, List<Map>> entry : collect.entrySet()) {
382
+                List<Map> list = entry.getValue();
383
+                Map sq = list.get(0);
384
+                ERstudentAction sa = new ERstudentAction();
385
+                sa.setClassid((Integer) sq.get("classid"));
386
+                sa.setStudentid(entry.getKey());
387
+                sa.setExamid(examid);
388
+                sa.setActiontype(actiontype);
389
+                for (Map s : list) {
390
+                    s.remove("classid");
391
+                    s.remove("studentid");
392
+                }
393
+                String subjectjson = JSON.toJSONString(list);
394
+                sa.setSubjectjson(subjectjson);
395
+                studentActions.add(sa);
396
+            }
397 397
         }
398 398
     }
399 399
 

+ 58
- 0
sexam/src/main/resources/mapper/report/EReportClassMapper.xml Bestand weergeven

@@ -0,0 +1,58 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.xhkjedu.sexam.mapper.reportclass.EReportClassMapper">
4
+    <!--试卷基本信息-->
5
+    <select id="getPaperByExamSubjectId" resultType="java.util.Map">
6
+        select epid,ptype,eb.examname,epa.pointjson
7
+        from e_paper ep left join e_base eb on ep.examid = eb.examid
8
+        left join e_paper_analyze epa on ep.epid = epa.epid
9
+        where examid=#{rank.examid} and subjectid=#{rank.subjectid} limit 1
10
+    </select>
11
+    <!--试卷概况-题库-->
12
+    <select id="listTkSjGk" resultType="java.util.Map">
13
+        select erq.qn,erq.qorder,erq.classavgscore,erq.classsrate,erq.gradeavgscore,erq.gradesrate
14
+        ,erq.answerjson,erq.goodstujson,erq.badstujson
15
+        ,epqq.ctype,epqq.score,epqq.answer,epqq.qtypename,q.qstem,q.qoption,q.qanalyze
16
+        from e_rclass_question erq left join e_paper_qtype_question epqq on erq.eptqid = epqq.eptqid
17
+        left join t_question q on epqq.questionid = q.questionid
18
+        where erq.examid=#{rank.examid} and erq.classid=#{rank.classid}
19
+        and erq.subjectid=#{rank.subjectid}
20
+        <if test="ranktype==1">order by erq.qorder</if>
21
+        <if test="ranktype==2">order by erq.classscore</if>
22
+    </select>
23
+    <!--试卷概况-附件-->
24
+    <select id="listFjSjGk" resultType="java.util.Map">
25
+        select erq.qn,erq.qorder,erq.classavgscore,erq.classsrate,erq.gradeavgscore,erq.gradesrate
26
+        ,erq.answerjson,erq.goodstujson,erq.badstujson
27
+        ,epqq.ctype,epqq.score,epqq.answer,epqq.qtypename
28
+        from e_rclass_question erq left join e_paper_qtype_question epqq on erq.eptqid = epqq.eptqid
29
+        where erq.examid=#{rank.examid} and erq.classid=#{rank.classid}
30
+        and erq.subjectid=#{rank.subjectid}
31
+        <if test="ranktype==1">order by erq.qorder</if>
32
+        <if test="ranktype==2">order by erq.classscore</if>
33
+    </select>
34
+    <!--试卷分析-大题分析-->
35
+    <select id="listType" resultType="java.util.Map">
36
+        select erq.qtypename,erq.qns,erq.score,erq.srate,erq.classavgscore,erq.classsrate,erq.gradeavgscore,erq.gradesrate
37
+        from e_rclass_qtype erq
38
+        where erq.examid=#{rank.examid} and erq.classid=#{rank.classid}
39
+        and erq.subjectid=#{rank.subjectid}
40
+    </select>
41
+    <!--试卷分析-小题分析-->
42
+    <select id="listQuestion" resultType="java.util.Map">
43
+        select erq.eptqid,erq.qn,erq.qorder,epqq.score,epqq.qtypename
44
+        ,erq.classavgscore,erq.classsrate,erq.gradeavgscore,erq.gradesrate
45
+        ,(case when epqq.questionid is not null then
46
+        (select q.complexity from t_question q where q.questionid=epqq.questionid) else 0 end)complexity
47
+        from e_rclass_question erq left join e_paper_qtype_question epqq on erq.eptqid = epqq.eptqid
48
+        where erq.examid=#{rank.examid} and erq.classid=#{rank.classid}
49
+        and erq.subjectid=#{rank.subjectid}
50
+    </select>
51
+    <!--试卷分析-知识点分析-->
52
+    <select id="listPoint" resultType="java.util.Map">
53
+        select erp.pointname,erp.qns,erp.score,erp.srate,erp.classavgscore,erp.classsrate,erp.gradeavgscore,erp.gradesrate
54
+        from e_rclass_point erp
55
+        where erp.examid=#{rank.examid} and erp.classid=#{rank.classid}
56
+        and erp.subjectid=#{rank.subjectid}
57
+    </select>
58
+</mapper>

Laden…
Annuleren
Opslaan