Browse Source

优化阅卷进度接口

教师、学生课堂回顾
tags/正式3.14.0
王宁 7 months ago
parent
commit
008795384b

+ 15
- 0
sclass/src/main/java/com/xhkjedu/sclass/controller/classroom/ClassroomController.java View File

@@ -551,4 +551,19 @@ public class ClassroomController {
551 551
         PageResult pageResult = PageUtil.getPageResult(new PageInfo<>(list));
552 552
         return new ResultVo(0, "获取考试按人统计列表成功", pageResult);
553 553
     }
554
+
555
+    /*
556
+     * @Description 投票详情
557
+     * @Date 2024/6/11 14:33:12
558
+     * @Author WN
559
+     * @Param [vote]
560
+     * @Return com.xhkjedu.vo.ResultVo
561
+     **/
562
+    @PostMapping("/detail_vote")
563
+    public ResultVo detailVote(@RequestBody TClassroomVote vote) {
564
+        Integer voteid = vote.getVoteid();
565
+        N_Utils.validation(new Object[]{voteid, "投票id", 1});
566
+        List<Map<String,Object>> votes = classroomService.getVoteDetail(voteid);
567
+        return new ResultVo(0, "获取投票详情成功", votes);
568
+    }
554 569
 }

+ 7
- 0
sclass/src/main/java/com/xhkjedu/sclass/mapper/classroom/ClassroomVoteMapper.java View File

@@ -2,6 +2,7 @@ package com.xhkjedu.sclass.mapper.classroom;
2 2
 
3 3
 import com.xhkjedu.base.TkMapper;
4 4
 import com.xhkjedu.sclass.model.classroom.TClassroomVote;
5
+import com.xhkjedu.sclass.model.classroom.TClassroomVoteStudent;
5 6
 import org.apache.ibatis.annotations.Param;
6 7
 
7 8
 import java.util.List;
@@ -11,4 +12,10 @@ public interface ClassroomVoteMapper extends TkMapper<TClassroomVote> {
11 12
 
12 13
     //获取课堂投票
13 14
     List<Map<String,Object>> listVoteByRoomid(@Param("roomid")Long roomid);
15
+
16
+    //投票参与学生
17
+    List<TClassroomVoteStudent> listVoteStus(@Param("voteid")Integer voteid);
18
+
19
+    //课堂信息投票
20
+    List<Map> listVoteStuByRoomAndStuid(@Param("roomid")Long roomid,@Param("studentid")Integer studentid);
14 21
 }

+ 5
- 1
sclass/src/main/java/com/xhkjedu/sclass/model/classroom/TClassroomVoteStudent.java View File

@@ -4,6 +4,7 @@ import lombok.Data;
4 4
 
5 5
 import javax.persistence.Id;
6 6
 import javax.persistence.Table;
7
+import javax.persistence.Transient;
7 8
 
8 9
 @Table(name = "t_classroom_vote_student")
9 10
 @Data
@@ -32,11 +33,14 @@ public class TClassroomVoteStudent {
32 33
     /**
33 34
      * 学生投票结果
34 35
      */
35
-    private Integer stuvote;
36
+    private String stuvote;
36 37
 
37 38
     /**
38 39
      * 创建时间
39 40
      */
40 41
     private Integer createtime;
41 42
 
43
+    @Transient
44
+    private String username;
45
+
42 46
 }

+ 34
- 1
sclass/src/main/java/com/xhkjedu/sclass/service/classroom/ClassroomService.java View File

@@ -390,6 +390,7 @@ public class ClassroomService {
390 390
     }
391 391
 
392 392
 
393
+    //学生课堂回顾
393 394
     public ResultVo getReportStu(Long roomid, Integer studentid) {
394 395
         Map room = classroomMapper.getReportStu(roomid, studentid);
395 396
         Integer signnum = classroomMapper.getRoomStudentSigin(roomid, studentid);
@@ -400,12 +401,12 @@ public class ClassroomService {
400 401
         if (room == null) room = new HashMap();
401 402
         room.put("signstate", signstate);
402 403
         room.put("videos", classroomVideoMapper.listByRoomId(roomid));
404
+        room.put("votes",classroomVoteMapper.listVoteStuByRoomAndStuid(roomid,studentid));
403 405
         return new ResultVo(0, "获取学生课堂回顾详情成功", room);
404 406
     }
405 407
 
406 408
     /**
407 409
      * 获取教师指定章节下上过的课堂历史
408
-     *
409 410
      * @return java.util.List<com.xhkjedu.sclass.vo.classroom.RoomVo>
410 411
      * @Param [room]
411 412
      * @Author ywx
@@ -891,4 +892,36 @@ public class ClassroomService {
891 892
     public void deleteById(Long roomid) {
892 893
         classroomMapper.deleteByPrimaryKey(roomid);
893 894
     }
895
+
896
+    /*
897
+     * @Description 投票详情
898
+     * @Date 2024/6/11 14:31:33
899
+     * @Author WN
900
+     * @Param [voteid]
901
+     * @Return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
902
+     **/
903
+    public List<Map<String,Object>> getVoteDetail(Integer voteid){
904
+        List<Map<String,Object>> list = new ArrayList<>();
905
+
906
+        List<TClassroomVoteStudent> stuList = classroomVoteMapper.listVoteStus(voteid);
907
+
908
+        //获取所有内容
909
+        List<String> voteContList = stuList.stream().map(v -> v.getStuvote().trim()).collect(Collectors.toList());
910
+        voteContList = voteContList.stream().distinct().collect(Collectors.toList());
911
+        int total = stuList.size();
912
+        for(String str : voteContList){
913
+            Map<String,Object> map = new HashMap<>();
914
+            map.put("stuvote",str);
915
+
916
+            List<TClassroomVoteStudent> voteList = stuList.stream().filter(v -> str.equals(v.getStuvote().trim())).collect(Collectors.toList());
917
+            int votenum = voteList.size();
918
+            Double rate = N_Utils.getIntegerDivideAndMulitiply(votenum, total);
919
+            map.put("votenum",votenum);
920
+            map.put("rate",rate);
921
+            List<String> stuNames = voteList.stream().map(TClassroomVoteStudent::getUsername).collect(Collectors.toList());
922
+            map.put("stus",stuNames);
923
+            list.add(map);
924
+        }
925
+        return list;
926
+    }
894 927
 }

+ 15
- 12
sclass/src/main/resources/mapper/classroom/ClassroomVoteMapper.xml View File

@@ -1,21 +1,24 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
 <mapper namespace="com.xhkjedu.sclass.mapper.classroom.ClassroomVoteMapper">
4
-  <resultMap id="BaseResultMap" type="com.xhkjedu.sclass.model.classroom.TClassroomVote">
5
-    <id column="voteid" jdbcType="INTEGER" property="voteid" />
6
-    <result column="roomid" jdbcType="BIGINT" property="roomid" />
7
-    <result column="votetitle" jdbcType="VARCHAR" property="votetitle" />
8
-    <result column="duration" jdbcType="INTEGER" property="duration" />
9
-    <result column="selectnum" jdbcType="INTEGER" property="selectnum" />
10
-    <result column="voatetype" jdbcType="VARCHAR" property="voatetype" />
11
-    <result column="createid" jdbcType="INTEGER" property="createid" />
12
-    <result column="createtime" jdbcType="INTEGER" property="createtime" />
13
-    <result column="schoolid" jdbcType="INTEGER" property="schoolid" />
14
-    <result column="options" jdbcType="LONGVARCHAR" property="options" />
15
-  </resultMap>
16 4
 
17 5
   <!--获取课堂投票-->
18 6
   <select id="listVoteByRoomid" resultType="java.util.Map">
19 7
     select voteid,votetitle,duration,votetype from t_classroom_vote where roomid=#{roomid} order by createtime desc
20 8
   </select>
9
+
10
+  <!--投票参与学生-->
11
+  <select id="listVoteStus" resultMap="com.xhkjedu.sclass.model.classroom.TClassroomVoteStudent">
12
+    select s.stuvote,s.createtime,s.studentid,u.username from t_classroom_vote_student s
13
+    left join t_user u on s.studentid=u.userid
14
+    where s.voteid=#{voteid} order by s.createtime
15
+  </select>
16
+
17
+  <!--课堂信息投票-->
18
+  <select id="listVoteStuByRoomAndStuid" resultMap="java.util.Map">
19
+    select v.voteid,v.votetitle,v.duration,v.options,
20
+    v.selectnum,v.votetype,vs.stuvote,vs.createtime from t_classroom_vote v
21
+    left join t_classroom_vote_student vs on vs.voteid=v.voteid
22
+    where v.roomid=#{roomid} and vs.studentid=#{studentid}
23
+  </select>
21 24
 </mapper>

+ 2
- 2
sexam/src/main/java/com/xhkjedu/sexam/mapper/paperstudent/EScanbatchMapper.java View File

@@ -36,8 +36,8 @@ public interface EScanbatchMapper extends TkMapper<EScanbatch> {
36 36
     //扫描答题卡列表-科目
37 37
     List<ScanSubjectVo> listScanExamSubject(@Param("examid") Integer examid);
38 38
 
39
-    //扫描答题卡列表-科目扫描信息
40
-    List<ScanSubjectVo> listScanExamSubjectRate(@Param("list")List<ScanSubjectVo> subjectList,@Param("examid") Integer examid);
39
+    //扫描答题卡列表-扫描未处理数量
40
+    List<ScanSubjectVo> listScanExamSubjectWcl(@Param("examid") Integer examid);
41 41
 
42 42
     //试卷扫描批次信息
43 43
     List<Map> listScanBatchPapers(@Param("epid") Integer epid);

+ 6
- 12
sexam/src/main/java/com/xhkjedu/sexam/service/paperstudent/EScanbatchService.java View File

@@ -90,19 +90,13 @@ public class EScanbatchService {
90 90
         Map map = eBaseMapper.findById(examid);
91 91
         List<ScanSubjectVo> subjectList = eScanbatchMapper.listScanExamSubject(examid);
92 92
 
93
-        List<ScanSubjectVo> scanList = eScanbatchMapper.listScanExamSubjectRate(subjectList,examid);
94
-        for(ScanSubjectVo subjectVo : subjectList){
95
-            ScanSubjectVo scanRate = scanList.stream().filter(s -> s.getEpid().equals(subjectVo.getEpid())).findFirst().orElse(null);
96
-            if(scanRate!=null){
97
-                Double smrate = N_Utils.getIntegerDivideAndMulitiply(scanRate.getSmnum(),subjectVo.getExamnum());
98
-                subjectVo.setSmrate(smrate);
99
-                subjectVo.setWclnum(scanRate.getWclnum());
100
-
101
-                Integer yjnum = scanRate.getYjnum();
102
-                Integer allnum = scanRate.getAllnum();
93
+        //扫描答题卡为处理数量
94
+        List<ScanSubjectVo> wclList = eScanbatchMapper.listScanExamSubjectWcl(examid);
103 95
 
104
-                Double yjrate = N_Utils.getIntegerDivideAndMulitiply(yjnum,allnum);
105
-                subjectVo.setYjrate(yjrate);
96
+        for(ScanSubjectVo subjectVo : subjectList){
97
+            ScanSubjectVo wclScan = wclList.stream().filter(s -> s.getEpid().equals(subjectVo.getEpid())).findFirst().orElse(null);
98
+            if(wclScan!=null){
99
+                subjectVo.setWclnum(wclScan.getWclnum());
106 100
             }
107 101
         }
108 102
         map.put("subjects", subjectList);

+ 6
- 6
sexam/src/main/java/com/xhkjedu/sexam/vo/paperscan/ScanSubjectVo.java View File

@@ -18,21 +18,21 @@ public class ScanSubjectVo {
18 18
 
19 19
     private Integer epid;//试卷id
20 20
 
21
-    private Integer examnum;//计划人数
21
+    private Integer examnum = 0;//计划人数
22 22
 
23
-    private Integer smnum;//扫描人数
23
+    private Integer smnum = 0;//扫描人数
24 24
 
25
-    private Integer qknum;//缺考人数
25
+    private Integer qknum = 0;//缺考人数
26 26
 
27 27
 
28 28
     private Double smrate;//扫描人数
29 29
 
30
-    private Integer wclnum;//未处理异常记录数量
30
+    private Integer wclnum = 0;//未处理异常记录数量
31 31
 
32 32
     private Double yjrate;//阅卷进度
33 33
 
34
-    private Integer yjnum;//已批阅数量
34
+    private Integer yjnum = 0;//已批阅数量
35 35
 
36
-    private Integer allnum;//总数量
36
+    private Integer allnum = 0;//总数量
37 37
 
38 38
 }

+ 15
- 18
sexam/src/main/resources/mapper/paperstudent/EScanbatchMapper.xml View File

@@ -52,32 +52,27 @@
52 52
 
53 53
     <!--扫描答题卡列表-科目-->
54 54
     <select id="listScanExamSubject" resultType="com.xhkjedu.sexam.vo.paperscan.ScanSubjectVo">
55
-        select es.esid,es.esstate,es.subjectname,count(eps.epid)examnum,ep.epid
55
+        select a.*,ifnull(truncate(a.smnum*100/a.examnum,2),0)smrate
56
+        ,ifnull(truncate(count(distinct case when epsq.checked=2 then epsq.epsqid else null end)*100/count(distinct epsq.epsqid),2),0)yjrate
57
+        from(select es.esid,es.esstate,es.subjectname
58
+        ,count(eps.epid)examnum,ep.epid
56 59
         ,count(case when eps.sstate!=0 then eps.epsid else null end)smnum
57 60
         ,count(case when eps.sstate=3 then eps.epsid else null end)qknum
58 61
         from e_subject es left join e_paper ep on es.esid = ep.esid
59 62
         left join e_paper_student eps on ep.epid = eps.epid
60
-        where es.examid=#{examid} group by es.esid
63
+        where es.examid=#{examid}
64
+        group by es.esid)a
65
+                left join e_paper_student_question epsq on a.epid = epsq.epid and epsq.answered=1
66
+        group by a.epid
61 67
     </select>
62 68
 
63
-    <!--扫描答题卡列表-科目扫描信息-->
64
-    <select id="listScanExamSubjectRate" resultType="com.xhkjedu.sexam.vo.paperscan.ScanSubjectVo">
65
-        select epqq.epid, count(distinct er.serrorid)wclnum,
66
-        count(distinct case when epsq.checked=2 then epsq.epsqid else null end) yjnum,
67
-        count(distinct epsq.epsqid) allnum
68
-        from e_paper_qtype_question epqq
69
-        left join e_paper_student_question epsq on epsq.eptqid = epqq.eptqid and epsq.answered=1
70
-        left join e_scanbatch b on b.epid=epqq.epid
71
-        left join e_scanerror er on b.batchid=er.batchid and er.errorstate=0
72
-        where epsq.examid=#{examid} and
73
-        epqq.epid in
74
-        <foreach collection="list" item="obj" open="(" close=")" separator=",">
75
-            #{obj.epid}
76
-        </foreach>
77
-        group by epqq.epid
78
-    </select>
69
+    <!--扫描答题卡列表-扫描未处理数量-->
70
+    <select id="listScanExamSubjectWcl" resultType="com.xhkjedu.sexam.vo.paperscan.ScanSubjectVo">
71
+        select b.epid,count(distinct case when er.errorstate=0 then er.serrorid else null end)wclnum from e_scanerror er
72
+        left join e_scanbatch b on b.batchid=er.batchid
73
+        where b.examid= #{examid}
74
+        group by b.epid
75
+</select>
79 76
 
80 77
     <!--试卷扫描批次信息-->
81 78
     <select id="listScanBatchPapers" resultType="java.util.Map">

Loading…
Cancel
Save