Bläddra i källkod

班级报告

tags/正式版本
雍文秀 2 år sedan
förälder
incheckning
2c3f0871dd

+ 118
- 0
sexam/src/main/java/com/xhkjedu/sexam/controller/report/EReportClassController.java Visa fil

@@ -1,6 +1,22 @@
1 1
 package com.xhkjedu.sexam.controller.report;
2 2
 
3
+import com.github.pagehelper.PageHelper;
4
+import com.github.pagehelper.PageInfo;
5
+import com.xhkjedu.sexam.model.reportstu.ERstudent;
6
+import com.xhkjedu.sexam.service.report.EReportClassService;
7
+import com.xhkjedu.sexam.vo.report.ERankParamVo;
8
+import com.xhkjedu.utils.N_Utils;
9
+import com.xhkjedu.utils.PageUtil;
10
+import com.xhkjedu.vo.PageResult;
11
+import com.xhkjedu.vo.ResultVo;
12
+import org.springframework.web.bind.annotation.PostMapping;
13
+import org.springframework.web.bind.annotation.RequestBody;
3 14
 import org.springframework.web.bind.annotation.RequestMapping;
15
+import org.springframework.web.bind.annotation.RestController;
16
+
17
+import javax.annotation.Resource;
18
+import java.util.List;
19
+import java.util.Map;
4 20
 
5 21
 /**
6 22
  * @author ywx
@@ -8,6 +24,108 @@ import org.springframework.web.bind.annotation.RequestMapping;
8 24
  * @description 班级报告
9 25
  * @date 2022/8/8 9:44
10 26
  **/
27
+@RestController
11 28
 @RequestMapping("erc")
12 29
 public class EReportClassController {
30
+    @Resource
31
+    private EReportClassService eReportClassService;
32
+
33
+    /**
34
+     * 考试概况--科目
35
+     *
36
+     * @return com.xhkjedu.vo.ResultVo
37
+     * @Param [rank]
38
+     * @Author ywx
39
+     * @Date 2022/8/30 9:20
40
+     **/
41
+    @PostMapping("/list_xkcj")
42
+    public ResultVo listXkCj(@RequestBody ERankParamVo rank) {
43
+        Integer examid = rank.getExamid();
44
+        Integer classid = rank.getClassid();
45
+        N_Utils.validation(new Object[]{examid, "考试id", 1, classid, "班级id", 1});
46
+        List<Map> list = eReportClassService.listXkCj(examid, classid);
47
+        return new ResultVo(0, "获取成功", list);
48
+    }
49
+
50
+    /**
51
+     * 成绩单
52
+     *
53
+     * @return com.xhkjedu.vo.ResultVo
54
+     * @Param [stu]
55
+     * @Author ywx
56
+     * @Date 2022/8/30 9:36
57
+     **/
58
+    @PostMapping("/list_cjd")
59
+    public ResultVo listCjd(@RequestBody ERstudent stu) {
60
+        Integer examid = stu.getExamid();
61
+        Integer page = stu.getPage();
62
+        Integer pageSize = stu.getPageSize();
63
+        N_Utils.validation(new Object[]{examid, "考试id", 1, stu.getClassid(), "班级id", 1});
64
+        if (N_Utils.isEmptyInteger(page)) {
65
+            List<Map> list = eReportClassService.listCjd(stu);
66
+            return new ResultVo(0, "获取成功", list);
67
+        } else {
68
+            PageHelper.startPage(page, pageSize);
69
+            List<Map> list = eReportClassService.listCjd(stu);
70
+            PageResult pageResult = PageUtil.getPageResult(new PageInfo<>(list));
71
+            return new ResultVo(0, "获取成功", pageResult);
72
+        }
73
+    }
74
+
75
+    /*
76
+     * 成绩分析-搜索
77
+     * @Param [rank]
78
+     * @Author ywx
79
+     * @Date 2022/8/30 9:55
80
+     * @return com.xhkjedu.vo.ResultVo
81
+     **/
82
+    @PostMapping("/cjfx_ss")
83
+    public ResultVo listCjFxForSearch(@RequestBody ERankParamVo rank) {
84
+        N_Utils.validation(new Object[]{rank.getExamid(), "考试id", 1, rank.getClassid(), "班级id", 1});
85
+        List<Map> map = eReportClassService.listCjFxForSearch(rank);
86
+        return new ResultVo(0, "获取成功", map);
87
+    }
88
+
89
+    /*
90
+     * 成绩分析-设置
91
+     * @Param [rank]
92
+     * @Author ywx
93
+     * @Date 2022/8/30 10:07
94
+     * @return com.xhkjedu.vo.ResultVo
95
+     **/
96
+    @PostMapping("/cjfx_sz")
97
+    public ResultVo listCjFxForSet(@RequestBody ERankParamVo rank) {
98
+        N_Utils.validation(new Object[]{rank.getExamid(), "考试id", 1, rank.getCreateid(), "操作人id", 1, rank.getSubjectid(), "科目id", 2});
99
+        List<Map> map = eReportClassService.listCjFxForSet(rank);
100
+        return new ResultVo(0, "获取成功", map);
101
+    }
102
+
103
+    /*
104
+     * 单科概况
105
+     * @Param [rank]
106
+     * @Author ywx
107
+     * @Date 2022/8/31 10:28
108
+     * @return com.xhkjedu.vo.ResultVo
109
+     **/
110
+    @PostMapping("/get_dkgk")
111
+    public ResultVo getDkGk(@RequestBody ERankParamVo rank) {
112
+        N_Utils.validation(new Object[]{rank.getExamid(), "考试id", 1, rank.getClassid(), "班级id", 1, rank.getSubjectid(), "科目id", 2});
113
+        Map map = eReportClassService.getDkGk(rank);
114
+        return new ResultVo(0, "获取成功", map);
115
+    }
116
+
117
+    /*
118
+     * 单科概况-需关注学生
119
+     * @Param [rank]
120
+     * @Author ywx
121
+     * @Date 2022/8/31 18:02
122
+     * @return com.xhkjedu.vo.ResultVo
123
+     **/
124
+    @PostMapping("/list_gzxs")
125
+    public ResultVo listGzXs(@RequestBody ERankParamVo rank) {
126
+        N_Utils.validation(new Object[]{rank.getExamid(), "考试id", 1, rank.getClassid(), "班级id", 1
127
+                , rank.getSubjectid(), "科目id", 2, rank.getRanktype(), "类型", 1});
128
+        List<Map> list = eReportClassService.listGzXs(rank);
129
+        return new ResultVo(0, "获取成功", list);
130
+    }
13 131
 }

+ 18
- 0
sexam/src/main/java/com/xhkjedu/sexam/mapper/reportclass/ERclassMapper.java Visa fil

@@ -11,4 +11,22 @@ import java.util.Map;
11 11
 public interface ERclassMapper extends TkMapper<ERclass> {
12 12
     //校级报告-成绩分析
13 13
     List<Map> listByExamId(@Param("rank") ERankParamVo rank);
14
+
15
+    //班级报告-成绩分析
16
+    List<Map> listByExamAndClassId(@Param("examid") Integer examid,@Param("classid") Integer classid);
17
+
18
+    //班级报告-单科概况-班级概况
19
+    Map findById(@Param("rank") ERankParamVo rank);
20
+
21
+    //班级报告-单科概况-平均分
22
+    List<Map> listPjf(@Param("rank") ERankParamVo rank);
23
+
24
+    //班级报告-单科概况-成绩等级分布
25
+    List<Map> listCjDj(@Param("rank") ERankParamVo rank);
26
+
27
+    //班级报告-单科概况-需关注学生
28
+    List<Map> listGzXs(@Param("rank") ERankParamVo rank);
29
+
30
+    //班级报告-单科概况-高频错题
31
+    List<Map> listGpCt(@Param("rank") ERankParamVo rank);
14 32
 }

+ 3
- 0
sexam/src/main/java/com/xhkjedu/sexam/mapper/reportclass/ERclassRankMapper.java Visa fil

@@ -11,4 +11,7 @@ import java.util.Map;
11 11
 public interface ERclassRankMapper extends TkMapper<ERclassRank> {
12 12
     //校级报告-成绩分析
13 13
     List<Map> listByExamId(@Param("rank") ERankParamVo rank);
14
+
15
+    //班级报告-成绩分析
16
+    List<Map> listByExamAndClassId(@Param("rank") ERankParamVo rank);
14 17
 }

+ 3
- 0
sexam/src/main/java/com/xhkjedu/sexam/model/reportclass/ERclass.java Visa fil

@@ -37,6 +37,9 @@ public class ERclass extends BaseBean {
37 37
     //班级平均分
38 38
     private Double classavgscore;
39 39
 
40
+    //班级平均分排名
41
+    private Integer classavgscorerank;
42
+
40 43
     //校最高分
41 44
     private Double schoolmaxscore;
42 45
 

+ 130
- 0
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportClassService.java Visa fil

@@ -1,6 +1,22 @@
1 1
 package com.xhkjedu.sexam.service.report;
2 2
 
3
+import com.alibaba.fastjson.JSON;
4
+import com.xhkjedu.sexam.mapper.paperstudent.EPaperStudentMapper;
5
+import com.xhkjedu.sexam.mapper.report.EReportSchoolMapper;
6
+import com.xhkjedu.sexam.mapper.reportclass.ERclassMapper;
7
+import com.xhkjedu.sexam.mapper.reportclass.ERclassRankMapper;
8
+import com.xhkjedu.sexam.mapper.reportstu.ERstudentMapper;
9
+import com.xhkjedu.sexam.model.reportstu.ERstudent;
10
+import com.xhkjedu.sexam.vo.report.ERPaperVo;
11
+import com.xhkjedu.sexam.vo.report.ERankParamVo;
12
+import com.xhkjedu.utils.N_Utils;
3 13
 import org.springframework.stereotype.Service;
14
+import org.springframework.transaction.annotation.Transactional;
15
+
16
+import javax.annotation.Resource;
17
+import java.util.ArrayList;
18
+import java.util.List;
19
+import java.util.Map;
4 20
 
5 21
 /**
6 22
  * @author ywx
@@ -10,4 +26,118 @@ import org.springframework.stereotype.Service;
10 26
  **/
11 27
 @Service
12 28
 public class EReportClassService {
29
+    //@Resource
30
+    //private ERbaseMapper eRbaseMapper;
31
+    //@Resource
32
+    //private ERsubjectMapper eRsubjectMapper;
33
+    @Resource
34
+    private ERstudentMapper eRstudentMapper;
35
+    @Resource
36
+    private ERclassMapper eRclassMapper;
37
+    @Resource
38
+    private ERclassRankMapper eRclassRankMapper;
39
+    @Resource
40
+    private EReportGenerateService eReportGenerateService;
41
+    @Resource
42
+    private EReportSchoolMapper eReportSchoolMapper;
43
+    @Resource
44
+    private EPaperStudentMapper ePaperStudentMapper;
45
+
46
+    //考试概况-学科成绩
47
+    public List<Map> listXkCj(Integer examid, Integer classid) {
48
+        return eRclassMapper.listByExamAndClassId(examid, classid);
49
+    }
50
+
51
+    //成绩单
52
+    public List<Map> listCjd(ERstudent stu) {
53
+        return eRstudentMapper.listByExamId(stu);
54
+    }
55
+
56
+    //成绩分析-搜索
57
+    public List<Map> listCjFxForSearch(ERankParamVo rank) {
58
+        return eRclassRankMapper.listByExamAndClassId(rank);
59
+    }
60
+
61
+    //成绩分析-设置
62
+    @Transactional(rollbackFor = Exception.class)
63
+    public List<Map> listCjFxForSet(ERankParamVo rank) {
64
+        Integer examid = rank.getExamid();
65
+        String subjectid = rank.getSubjectid();
66
+        Integer createid = rank.getCreateid();
67
+        Integer ranktype = rank.getRanktype();
68
+        eReportSchoolMapper.delByExamAndSubjectId(examid, subjectid, ranktype);//删除考试等级报告
69
+        List<ERPaperVo> papers = eReportSchoolMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷
70
+        List<ERstudent> students = ePaperStudentMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷学生
71
+        eReportGenerateService.setClassGradeRank(examid, papers, students, rank.getRranks(), createid);//生成考试等级报告
72
+        return eRclassRankMapper.listByExamId(rank);//考试等级报告列表
73
+    }
74
+
75
+    //单科概况
76
+    public Map getDkGk(ERankParamVo rank) {
77
+        Map map = eRclassMapper.findById(rank);//班级概况
78
+        List<Map> pjfList = eRclassMapper.listPjf(rank);//平均分
79
+        map.put("pjfList", pjfList);
80
+        List<Map> cjdjList = eRclassMapper.listCjDj(rank);//成绩等级分布
81
+        map.put("cjdjList", cjdjList);
82
+        rank.setRanktype(1);//大幅进步
83
+        List<Map> gzxsList = eRclassMapper.listGzXs(rank);//需关注学生
84
+        map.put("gzxsList", gzxsList);
85
+        List<Map> gpctList = eRclassMapper.listGpCt(rank);//高频错题
86
+        for (Map ct : gpctList) {
87
+            //高频错误项
88
+            Integer ctype = (Integer) ct.get("ctype");
89
+            String gpcwx = "";
90
+            if (N_Utils.isObjectiveQuestion(ctype)) {
91
+                String answerjson = ct.get("answerjson").toString();//学生作答情况
92
+                String answer = JSON.parseArray(ct.get("answer").toString(), String.class).get(0);//正确答案
93
+                Map amap = JSON.parseObject(answerjson, Map.class);
94
+                List<Map<String, Integer>> list = new ArrayList<>();
95
+                Integer cwnum = 0;//作答错误学生数量
96
+                for (Object o : amap.keySet()) {
97
+                    List<Map> o1 = (List<Map>) amap.get(o);
98
+                    int answernum = o1.size();//作答学生数量
99
+                    String xx = o.toString();//选项
100
+                    if (!answer.equals(xx) && cwnum.compareTo(answernum) == -1) {
101
+                        cwnum = answernum;
102
+                        gpcwx = xx;
103
+                    }
104
+                }
105
+            }
106
+            ct.put("gpcwx", gpcwx);
107
+
108
+            //知识点
109
+            Object pointjson = ct.get("pointjson");
110
+
111
+            ct.remove("answerjson");
112
+            ct.remove("ctype");
113
+            ct.remove("answer");
114
+            ct.remove("pointjson");
115
+
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
+                        }
130
+                    }
131
+                }
132
+            }
133
+            ct.put("pointnames", pointnames);
134
+        }
135
+        map.put("gpctList", gpctList);
136
+        return map;
137
+    }
138
+
139
+    //单科概况-需关注学生
140
+    public List<Map> listGzXs(ERankParamVo rank) {
141
+        return eRclassMapper.listGzXs(rank);
142
+    }
13 143
 }

+ 30
- 6
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportGenerateService.java Visa fil

@@ -265,6 +265,7 @@ public class EReportGenerateService {
265 265
             }
266 266
         }
267 267
 
268
+        setClassAvgRank(classList);//班级科目平均分排名
268 269
         eRclassMapper.insertList(classList);
269 270
         eRsubjectMapper.insertList(subjectList);
270 271
 
@@ -308,6 +309,27 @@ public class EReportGenerateService {
308 309
         setAction(examid, subjectMap);//行为分析
309 310
     }
310 311
 
312
+    //班级科目平均分排名
313
+    private void setClassAvgRank(List<ERclass> classList) {
314
+        Map<String, Integer> classSubRank = new HashMap<>();
315
+        Map<String, List<ERclass>> collect = classList.stream().collect(Collectors.groupingBy(c -> c.getSubjectid()));
316
+        for (Map.Entry<String, List<ERclass>> centry : collect.entrySet()) {
317
+            List<Map.Entry<Double, List<ERclass>>> gslist2 = centry.getValue().stream()
318
+                    .collect(Collectors.groupingBy(ERclass::getClassavgscore)).entrySet()
319
+                    .stream().sorted((s1, s2) -> -Double.compare(s1.getKey(), s2.getKey())).collect(Collectors.toList());
320
+            Integer index = 1;
321
+            for (Map.Entry<Double, List<ERclass>> entry : gslist2) {
322
+                for (ERclass rc : entry.getValue()) {
323
+                    classSubRank.put(rc.getClassid() + "_" + rc.getSubjectid(), index);
324
+                }
325
+                index = index + entry.getValue().size();
326
+            }
327
+        }
328
+        for (ERclass rc : classList) {
329
+            rc.setClassavgscorerank(classSubRank.get(rc.getClassid() + "_" + rc.getSubjectid()));
330
+        }
331
+    }
332
+
311 333
     //行为分析
312 334
     private void setAction(Integer examid, Map<String, String> subjectMap) {
313 335
         List<ERstudentAction> studentActions = new ArrayList<>();
@@ -492,7 +514,7 @@ public class EReportGenerateService {
492 514
                     rrank.setMinscore(minscore);
493 515
                     ERrank rrank1 = new ERrank();
494 516
                     BeanUtils.copyProperties(rrank, rrank1);
495
-                    rrankList.add(rrank1);
517
+
496 518
                     String rankrange = "[" + minscore + "," + maxscore;
497 519
                     if (rrank.getRankname().equals("A")) {
498 520
                         rankrange = rankrange + "]";
@@ -505,7 +527,11 @@ public class EReportGenerateService {
505 527
                         Integer classid = 0;
506 528
                         List<ERstudent> list = entry.getValue();
507 529
                         setDjTj(examid, userMap, rclassRankList, rrank, rankrange, subjectid, classid, list);
530
+                        IntSummaryStatistics statistics = list.stream().mapToInt(s -> s.getSchoolrank()).summaryStatistics();
531
+                        rrank1.setLinescore(statistics.getMax());
532
+                        rrank1.setFloatscore(statistics.getMin());
508 533
                     }
534
+                    rrankList.add(rrank1);
509 535
 
510 536
                     //班级科目统计
511 537
                     Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
@@ -909,7 +935,7 @@ public class EReportGenerateService {
909 935
         cr.setStunum(stunum);
910 936
         cr.setSturate(N_Utils.getIntegerDivideAndMulitiply(stunum, gstunum));
911 937
         setStudentName(list2, userMap);
912
-        String stujson = list2.stream().map(s -> s.getStudentname()).sorted().collect(Collectors.joining("、"));
938
+        String stujson = list2.stream().map(s -> s.getStudentname()+"("+s.getSchoolrank()+"名)").sorted().collect(Collectors.joining("、"));
913 939
         cr.setStujson(stujson);
914 940
         rclassRankList.add(cr);
915 941
     }
@@ -946,11 +972,9 @@ public class EReportGenerateService {
946 972
 
947 973
     //分数排名
948 974
     private void setRank(List<ERstudent> students, Map<String, Integer> rank, Integer code) {
949
-        students =
950
-                students.stream().sorted((s1, s2) -> -Double.compare(s1.getScore(), s2.getScore())).collect(Collectors.toList());
951 975
         List<Map.Entry<Double, List<ERstudent>>> gslist2 = students.stream()
952
-                                                                   .collect(Collectors.groupingBy(ERstudent::getScore)).entrySet()
953
-                                                                   .stream().sorted((s1, s2) -> -Double.compare(s1.getKey(), s2.getKey())).collect(Collectors.toList());
976
+                .collect(Collectors.groupingBy(ERstudent::getScore)).entrySet()
977
+                .stream().sorted((s1, s2) -> -Double.compare(s1.getKey(), s2.getKey())).collect(Collectors.toList());
954 978
         Integer index = 1;
955 979
         String key;
956 980
         for (Map.Entry<Double, List<ERstudent>> entry : gslist2) {

+ 60
- 0
sexam/src/main/resources/mapper/report/ERclassMapper.xml Visa fil

@@ -12,4 +12,64 @@
12 12
             and er.classid=#{rank.classid}
13 13
         </if>
14 14
     </select>
15
+    <!--班级报告-学科成绩-->
16
+    <select id="listByExamAndClassId" resultType="java.util.Map">
17
+        select er.allscore,er.classmaxscore,er.classminscore,er.classavgscore,er.schoolmaxscore,er.schoolavgscore
18
+        ,er.stunum,er.missnum,er.yxrate,er.lhrate,er.jgrate,er.dfrate,er.bzc
19
+        ,er.classid,(case when er.classid=0 then '全部班级' else ec.classname end)classname
20
+        from e_rclass er left join e_class ec on er.examid = ec.examid and er.classid = ec.classid
21
+        where er.examid=#{rank.examid} and er.classid=#{rank.classid}
22
+    </select>
23
+    <!--班级报告-单科概况-班级概况-->
24
+    <select id="findById" resultType="java.util.Map">
25
+        select er.classmaxscore,er.classavgscore,er.classavgscorerank,er.schoolmaxscore,er.schoolavgscore
26
+        ,er.yxrate,er.jgrate
27
+        from e_rclass er
28
+        where er.examid=#{rank.examid} and er.classid=#{rank.classid} and er.subjectid=#{rank.subjectid}
29
+        limit 1
30
+    </select>
31
+    <!--班级报告-单科概况-平均分-->
32
+    <select id="listPjf" resultType="java.util.Map">
33
+        select er.classavgscore,ec.classname
34
+        from e_rclass er left join e_class ec on er.examid = ec.examid and er.classid = ec.classid
35
+        where er.examid=#{rank.examid} and er.classid=#{rank.classid} and er.subjectid=#{rank.subjectid}
36
+    </select>
37
+    <!--班级报告-单科概况-成绩等级分布-->
38
+    <select id="listCjDj" resultType="java.util.Map">
39
+        select er.rankname,concat(er.floatscore,'-',er.linescore)rankrange,err.stunum,err.stujson
40
+        from e_rrank er left join e_rclass_rank err on er.examid = err.examid and er.subjectid = err.subjectid
41
+        where er.examid=#{rank.examid} and err.classid=#{rank.classid}
42
+        and er.subjectid=#{rank.subjectid} and er.ranktype=1
43
+    </select>
44
+    <!--班级报告-单科概况-需关注学生-->
45
+    <select id="listGzXs" resultType="java.util.Map">
46
+        select u.username,er.score,er.classrank,er.classrankpre,er.goal
47
+        from e_rstudent er left join t_user u on er.studentid=u.userid
48
+        <if test="ranktype==3">
49
+            left join e_rsubject es on er.examid = es.examid and es.subjectid=er.subjectid
50
+        </if>
51
+        where er.examid=#{rank.examid} and er.classid=#{rank.classid} and er.subjectid=#{rank.subjectid}
52
+        <if test="ranktype==1">
53
+            and er.classrankpre>=5
54
+        </if>
55
+        <if test="ranktype==2">
56
+            and er.classrankpre&lt;=5
57
+        </if>
58
+        <if test="ranktype==3">
59
+            and es.score*0.6-er.score &lt;5
60
+        </if>
61
+        <if test="ranktype==4">
62
+            and abs(er.classrankpre)>=10
63
+        </if>
64
+    </select>
65
+    <!--班级报告-单科概况-高频错题-->
66
+    <select id="listGpCt" resultType="java.util.Map">
67
+        select erq.eptqid,erq.qn,erq.classsrate,erq.gradesrate,erq.answerjson
68
+        ,epq.eptname,epqq.ctype,epqq.answer,epa.pointjson
69
+        from e_rclass_question erq left join e_paper_qtype_question epqq on erq.eptqid = epqq.eptqid
70
+        left join e_paper_qtype epq on epqq.eptid = epq.eptid
71
+        left join e_paper_analyze epa on epq.epid = epa.epid
72
+        where erq.examid=#{rank.examid} and erq.classid=#{rank.classid}
73
+        and erq.subjectid=#{rank.subjectid} and erq.classsrate&lt;40
74
+    </select>
15 75
 </mapper>

+ 10
- 0
sexam/src/main/resources/mapper/report/ERclassRankMapper.xml Visa fil

@@ -14,4 +14,14 @@
14 14
             and err.ranktype=#{rank.ranktype}
15 15
         </if>
16 16
     </select>
17
+    <!--班级报告-成绩分析-->
18
+    <select id="listByExamAndClassId" resultType="java.util.Map">
19
+        select err.ranktype,err.rankname,err.rankrange,err.stunum,err.stujson,err.sturate
20
+        ,err.classid,(case when err.classid=0 then '全部班级' else ec.classname end)classname
21
+        from e_rclass_rank err left join e_class ec on err.examid = ec.examid and err.classid = ec.classid
22
+        where err.examid=#{rank.examid} and and err.classid=#{rank.classid}
23
+        <if test="rank.ranktype!=null and rank.ranktype!=0">
24
+            and err.ranktype=#{rank.ranktype}
25
+        </if>
26
+    </select>
17 27
 </mapper>

Laddar…
Avbryt
Spara