Browse Source

班级报告

tags/正式版本
雍文秀 2 years ago
parent
commit
93ce6c6792

+ 9
- 1
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportClassService.java View File

7
 import com.xhkjedu.sexam.mapper.reportclass.ERclassRankMapper;
7
 import com.xhkjedu.sexam.mapper.reportclass.ERclassRankMapper;
8
 import com.xhkjedu.sexam.mapper.reportclass.EReportClassMapper;
8
 import com.xhkjedu.sexam.mapper.reportclass.EReportClassMapper;
9
 import com.xhkjedu.sexam.mapper.reportstu.ERstudentMapper;
9
 import com.xhkjedu.sexam.mapper.reportstu.ERstudentMapper;
10
+import com.xhkjedu.sexam.mapper.system.UserMapper;
10
 import com.xhkjedu.sexam.model.reportstu.ERstudent;
11
 import com.xhkjedu.sexam.model.reportstu.ERstudent;
11
 import com.xhkjedu.sexam.vo.report.ERPaperVo;
12
 import com.xhkjedu.sexam.vo.report.ERPaperVo;
12
 import com.xhkjedu.sexam.vo.report.ERankParamVo;
13
 import com.xhkjedu.sexam.vo.report.ERankParamVo;
14
+import com.xhkjedu.sexam.vo.system.UserVo;
13
 import com.xhkjedu.utils.N_Utils;
15
 import com.xhkjedu.utils.N_Utils;
14
 import org.springframework.stereotype.Service;
16
 import org.springframework.stereotype.Service;
15
 import org.springframework.transaction.annotation.Transactional;
17
 import org.springframework.transaction.annotation.Transactional;
19
 import java.util.HashMap;
21
 import java.util.HashMap;
20
 import java.util.List;
22
 import java.util.List;
21
 import java.util.Map;
23
 import java.util.Map;
24
+import java.util.stream.Collectors;
22
 
25
 
23
 /**
26
 /**
24
  * @author ywx
27
  * @author ywx
42
     private EReportSchoolMapper eReportSchoolMapper;
45
     private EReportSchoolMapper eReportSchoolMapper;
43
     @Resource
46
     @Resource
44
     private EPaperStudentMapper ePaperStudentMapper;
47
     private EPaperStudentMapper ePaperStudentMapper;
48
+    @Resource
49
+    private UserMapper userMapper;
45
 
50
 
46
     //考试概况-学科成绩
51
     //考试概况-学科成绩
47
     public List<Map> listXkCj(Integer examid, Integer classid) {
52
     public List<Map> listXkCj(Integer examid, Integer classid) {
68
         eReportSchoolMapper.delByExamAndSubjectId(examid, subjectid, ranktype);//删除考试等级报告
73
         eReportSchoolMapper.delByExamAndSubjectId(examid, subjectid, ranktype);//删除考试等级报告
69
         List<ERPaperVo> papers = eReportSchoolMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷
74
         List<ERPaperVo> papers = eReportSchoolMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷
70
         List<ERstudent> students = ePaperStudentMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷学生
75
         List<ERstudent> students = ePaperStudentMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷学生
71
-        eReportGenerateService.setClassGradeRank(examid, papers, students, rank.getRranks(), createid);//生成考试等级报告
76
+        List<Integer> userids = students.stream().map(ERstudent::getStudentid).distinct().collect(Collectors.toList());
77
+        List<UserVo> users = userMapper.listNameByUserIds(userids);
78
+        Map<Integer, String> userMap = users.stream().collect(Collectors.toMap(UserVo::getUserid, UserVo::getUsername));
79
+        eReportGenerateService.setClassGradeRank(examid, papers, students, rank.getRranks(), createid, userMap);//生成考试等级报告
72
         return eRclassRankMapper.listByExamId(rank);//考试等级报告列表
80
         return eRclassRankMapper.listByExamId(rank);//考试等级报告列表
73
     }
81
     }
74
 
82
 

+ 71
- 67
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportGenerateService.java View File

304
         eRstudentMapper.insertList(classSubjectStudents);
304
         eRstudentMapper.insertList(classSubjectStudents);
305
 
305
 
306
 //        setClassQuestion(examid, subjects, classes);//题型试题
306
 //        setClassQuestion(examid, subjects, classes);//题型试题
307
-        setClassGradeRankAll(examid, papers, classSubjectStudents, createid);//班级等级分布
308
-        setAction(examid, subjectMap);//行为分析
307
+        List<Integer> userids = students.stream().map(ERstudent::getStudentid).distinct().collect(Collectors.toList());
308
+        List<UserVo> users = userMapper.listNameByUserIds(userids);
309
+        Map<Integer, String> userMap = users.stream().collect(Collectors.toMap(UserVo::getUserid, UserVo::getUsername));
310
+        setClassGradeRankAll(examid, papers, classSubjectStudents, createid, userMap);//班级等级分布
311
+        setAction(examid, subjectMap, userMap);//行为分析
309
     }
312
     }
310
 
313
 
311
     //班级科目平均分排名
314
     //班级科目平均分排名
330
     }
333
     }
331
 
334
 
332
     //行为分析
335
     //行为分析
333
-    private void setAction(Integer examid, Map<String, String> subjectMap) {
336
+    private void setAction(Integer examid, Map<String, String> subjectMap, Map<Integer, String> userMap) {
334
         List<ERstudentAction> studentActions = new ArrayList<>();
337
         List<ERstudentAction> studentActions = new ArrayList<>();
335
         List<ERclassAction> classActions = new ArrayList<>();
338
         List<ERclassAction> classActions = new ArrayList<>();
336
         //违纪行为
339
         //违纪行为
337
         List<Map> bads = eReportGenerateMapper.listBadActionByExamId(examid);
340
         List<Map> bads = eReportGenerateMapper.listBadActionByExamId(examid);
338
         Integer actiontype = 1;
341
         Integer actiontype = 1;
339
-        setActions(examid, subjectMap, studentActions, classActions, bads, actiontype);
342
+        setActions(examid, subjectMap, studentActions, classActions, bads, actiontype, userMap);
340
         List<Map> goods = eReportGenerateMapper.listGoodActionByExamId(examid);
343
         List<Map> goods = eReportGenerateMapper.listGoodActionByExamId(examid);
341
         actiontype = 2;
344
         actiontype = 2;
342
-        setActions(examid, subjectMap, studentActions, classActions, goods, actiontype);
345
+        setActions(examid, subjectMap, studentActions, classActions, goods, actiontype, userMap);
343
         if (N_Utils.isListEmpty(studentActions)) return;
346
         if (N_Utils.isListEmpty(studentActions)) return;
344
         eRstudentActionMapper.insertList(studentActions);
347
         eRstudentActionMapper.insertList(studentActions);
345
         eRclassActionMapper.insertList(classActions);
348
         eRclassActionMapper.insertList(classActions);
348
     //处理行为数据
351
     //处理行为数据
349
     private void setActions(Integer examid, Map<String, String> subjectMap
352
     private void setActions(Integer examid, Map<String, String> subjectMap
350
             , List<ERstudentAction> studentActions, List<ERclassAction> classActions
353
             , List<ERstudentAction> studentActions, List<ERclassAction> classActions
351
-            , List<Map> actions, Integer actiontype) {
354
+            , List<Map> actions, Integer actiontype, Map<Integer, String> userMap) {
352
         if (N_Utils.isListNotEmpty(actions)) {
355
         if (N_Utils.isListNotEmpty(actions)) {
353
             for (Map action : actions) {
356
             for (Map action : actions) {
354
                 action.put("subjectname", subjectMap.get(action.get("subjectid")));
357
                 action.put("subjectname", subjectMap.get(action.get("subjectid")));
359
             for (Map.Entry<Integer, List<Map>> entry : ccollect.entrySet()) {
362
             for (Map.Entry<Integer, List<Map>> entry : ccollect.entrySet()) {
360
                 List<Map> subjects = new ArrayList<>();
363
                 List<Map> subjects = new ArrayList<>();
361
                 Map<String, List<Map>> scollect = entry.getValue().stream().collect(Collectors.groupingBy(s -> s.get("subjectid").toString()));
364
                 Map<String, List<Map>> scollect = entry.getValue().stream().collect(Collectors.groupingBy(s -> s.get("subjectid").toString()));
365
+                int znum = entry.getValue().size();//总人数
362
                 for (Map.Entry<String, List<Map>> sentry : scollect.entrySet()) {
366
                 for (Map.Entry<String, List<Map>> sentry : scollect.entrySet()) {
363
                     List<Map> list = sentry.getValue();
367
                     List<Map> list = sentry.getValue();
364
                     Map subject = new HashMap();
368
                     Map subject = new HashMap();
365
                     subject.put("subjectid", sentry.getKey());
369
                     subject.put("subjectid", sentry.getKey());
366
                     subject.put("subjectname", list.get(0).get("subjectname"));
370
                     subject.put("subjectname", list.get(0).get("subjectname"));
367
-                    subject.put("num", list.size());
371
+                    int num = list.size();
372
+                    subject.put("num", num);
373
+                    subject.put("nrate", N_Utils.getIntegerDivideAndMulitiply(num, znum));
374
+                    List<Map> students=new ArrayList<>();
375
+                    for (Map s : list) {
376
+                        Map stu=new HashMap();
377
+                        Integer studentid = (Integer) s.get("studentid");
378
+                        stu.put("studentid", studentid);
379
+                        stu.put("num", s.get("num"));
380
+                        stu.put("studentname", userMap.get(studentid));
381
+                        students.add(stu);
382
+                    }
383
+                    subject.put("students", students);
368
                     subjects.add(subject);
384
                     subjects.add(subject);
369
                 }
385
                 }
370
                 ERclassAction ca = new ERclassAction();
386
                 ERclassAction ca = new ERclassAction();
398
     }
414
     }
399
 
415
 
400
     //班级等级分布
416
     //班级等级分布
401
-    private void setClassGradeRankAll(Integer examid, List<ERPaperVo> papers, List<ERstudent> students, Integer createid) {
402
-        setClassGradeRank(examid, papers, students, setRrank(1), createid);//班级等级分布--等级
403
-        setClassGradeRank(examid, papers, students, setRrank(2), createid);//班级等级分布--分数段
404
-        setClassGradeRank(examid, papers, students, setRrank(3), createid);//班级等级分布--临界分
405
-        setClassGradeRank(examid, papers, students, setRrank(4), createid);//班级等级分布--临界名次
406
-        setClassGradeRank(examid, papers, students, setRrank(5), createid);//班级等级分布--优秀年级前
407
-        setClassGradeRank(examid, papers, students, setRrank(6), createid);//班级等级分布--学困年级后
417
+    private void setClassGradeRankAll(Integer examid, List<ERPaperVo> papers, List<ERstudent> students
418
+            , Integer createid, Map<Integer, String> userMap) {
419
+        setClassGradeRank(examid, papers, students, setRrank(1), createid, userMap);//班级等级分布--等级
420
+        setClassGradeRank(examid, papers, students, setRrank(2), createid, userMap);//班级等级分布--分数段
421
+        setClassGradeRank(examid, papers, students, setRrank(3), createid, userMap);//班级等级分布--临界分
422
+        setClassGradeRank(examid, papers, students, setRrank(4), createid, userMap);//班级等级分布--临界名次
423
+        setClassGradeRank(examid, papers, students, setRrank(5), createid, userMap);//班级等级分布--优秀年级前
424
+        setClassGradeRank(examid, papers, students, setRrank(6), createid, userMap);//班级等级分布--学困年级后
408
     }
425
     }
409
 
426
 
410
     //等级初始值设置
427
     //等级初始值设置
478
 
495
 
479
     //班级等级分布
496
     //班级等级分布
480
     public void setClassGradeRank(Integer examid, List<ERPaperVo> papers, List<ERstudent> students
497
     public void setClassGradeRank(Integer examid, List<ERPaperVo> papers, List<ERstudent> students
481
-            , List<ERrank> rranks, Integer createid) {
482
-        List<Integer> userids = students.stream().map(ERstudent::getStudentid).distinct().collect(Collectors.toList());
483
-        List<UserVo> users = userMapper.listNameByUserIds(userids);
484
-        Map<Integer, String> userMap = users.stream().collect(Collectors.toMap(UserVo::getUserid, UserVo::getUsername));
485
-
498
+            , List<ERrank> rranks, Integer createid, Map<Integer, String> userMap) {
486
         Map<String, Double> scoreMap = papers.stream().collect(Collectors.toMap(p -> p.getSubjectid(), p -> p.getPscore()));//考试总分
499
         Map<String, Double> scoreMap = papers.stream().collect(Collectors.toMap(p -> p.getSubjectid(), p -> p.getPscore()));//考试总分
487
         Double pscore;//试卷总分
500
         Double pscore;//试卷总分
488
 
501
 
523
                     }
536
                     }
524
 
537
 
525
                     //全部班级统计
538
                     //全部班级统计
526
-                    for (Map.Entry<String, List<ERstudent>> entry : qbbjcollect.entrySet()) {
527
-                        Integer classid = 0;
528
-                        List<ERstudent> list = entry.getValue();
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());
533
-                    }
539
+                    Integer classid = 0;
540
+                    List<ERstudent> list = qbbjcollect.get(subjectid);
541
+                    setDjTj(examid, userMap, rclassRankList, rrank, rankrange, subjectid, classid, list);
542
+                    IntSummaryStatistics statistics = list.stream().mapToInt(s -> s.getSchoolrank()).summaryStatistics();
543
+                    rrank1.setLinescore(statistics.getMax());
544
+                    rrank1.setFloatscore(statistics.getMin());
534
                     rrankList.add(rrank1);
545
                     rrankList.add(rrank1);
535
 
546
 
536
                     //班级科目统计
547
                     //班级科目统计
537
                     Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
548
                     Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
538
                             .collect(Collectors.groupingBy(s -> s.getClassid()));
549
                             .collect(Collectors.groupingBy(s -> s.getClassid()));
539
                     for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
550
                     for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
540
-                        Integer classid = entry.getKey();
541
-                        List<ERstudent> list = entry.getValue();
551
+                        classid = entry.getKey();
552
+                        list = entry.getValue();
542
                         setDjTj(examid, userMap, rclassRankList, rrank, rankrange, subjectid, classid, list);
553
                         setDjTj(examid, userMap, rclassRankList, rrank, rankrange, subjectid, classid, list);
543
                     }
554
                     }
544
                 }
555
                 }
553
                 Integer cnum = ExamUtil.divUp(pscore, linescore);
564
                 Integer cnum = ExamUtil.divUp(pscore, linescore);
554
                 for (Integer i = 1; i <= cnum; i++) {
565
                 for (Integer i = 1; i <= cnum; i++) {
555
                     ERrank rrank = new ERrank();
566
                     ERrank rrank = new ERrank();
567
+                    rrank.setSubjectid(subjectid);
556
                     rrank.setRanktype(ranktype);
568
                     rrank.setRanktype(ranktype);
557
                     rrank.setSubjectid(subjectid);
569
                     rrank.setSubjectid(subjectid);
558
                     double maxscore = ExamUtil.mul(i, linescore);
570
                     double maxscore = ExamUtil.mul(i, linescore);
574
                     rrankList.add(rrank1);
586
                     rrankList.add(rrank1);
575
 
587
 
576
                     //全部班级统计
588
                     //全部班级统计
577
-                    for (Map.Entry<String, List<ERstudent>> entry : qbbjcollect.entrySet()) {
578
-                        Integer classid = 0;
579
-                        List<ERstudent> list = entry.getValue();
580
-                        setFdTj(examid, userMap, rclassRankList, cnum, i, rrank, rankrange, classid, list);
581
-                    }
589
+                    Integer classid = 0;
590
+                    List<ERstudent> list = qbbjcollect.get(subjectid);
591
+                    setFdTj(examid, userMap, rclassRankList, cnum, i, rrank, rankrange, classid, list);
582
 
592
 
583
                     //班级科目统计
593
                     //班级科目统计
584
                     Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
594
                     Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
585
                             .collect(Collectors.groupingBy(s -> s.getClassid()));
595
                             .collect(Collectors.groupingBy(s -> s.getClassid()));
586
                     for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
596
                     for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
587
-                        Integer classid = entry.getKey();
588
-                        List<ERstudent> list = entry.getValue();
597
+                        classid = entry.getKey();
598
+                        list = entry.getValue();
589
                         setFdTj(examid, userMap, rclassRankList, cnum, i, rrank, rankrange, classid, list);
599
                         setFdTj(examid, userMap, rclassRankList, cnum, i, rrank, rankrange, classid, list);
590
                     }
600
                     }
591
                 }
601
                 }
617
                 rrankList.add(rrank1);
627
                 rrankList.add(rrank1);
618
 
628
 
619
                 //全部班级统计
629
                 //全部班级统计
620
-                for (Map.Entry<String, List<ERstudent>> entry : qbbjcollect.entrySet()) {
621
-                    Integer classid = 0;
622
-                    List<ERstudent> list = entry.getValue();
623
-                    setLjfTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
624
-                }
630
+                Integer classid = 0;
631
+                List<ERstudent> list = qbbjcollect.get(subjectid);
632
+                setLjfTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
625
 
633
 
626
                 //班级科目统计
634
                 //班级科目统计
627
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
635
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
628
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
636
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
629
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
637
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
630
-                    Integer classid = entry.getKey();
631
-                    List<ERstudent> list = entry.getValue();
638
+                    classid = entry.getKey();
639
+                    list = entry.getValue();
632
                     setLjfTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
640
                     setLjfTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
633
                 }
641
                 }
634
             }
642
             }
658
                 rrankList.add(rrank1);
666
                 rrankList.add(rrank1);
659
 
667
 
660
                 //全部班级统计
668
                 //全部班级统计
661
-                for (Map.Entry<String, List<ERstudent>> entry : qbbjcollect.entrySet()) {
662
-                    Integer classid = 0;
663
-                    List<ERstudent> list = entry.getValue();
664
-                    setLjmcTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
665
-                }
669
+                Integer classid = 0;
670
+                List<ERstudent> list = qbbjcollect.get(subjectid);
671
+                setLjmcTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
666
 
672
 
667
                 //班级科目统计
673
                 //班级科目统计
668
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
674
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
669
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
675
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
670
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
676
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
671
-                    Integer classid = entry.getKey();
672
-                    List<ERstudent> list = entry.getValue();
677
+                    classid = entry.getKey();
678
+                    list = entry.getValue();
673
                     setLjmcTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
679
                     setLjmcTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
674
                 }
680
                 }
675
             }
681
             }
689
                 BeanUtils.copyProperties(rrank, rrank1);
695
                 BeanUtils.copyProperties(rrank, rrank1);
690
                 rrankList.add(rrank1);
696
                 rrankList.add(rrank1);
691
                 //全部班级统计
697
                 //全部班级统计
692
-                for (Map.Entry<String, List<ERstudent>> entry : qbbjcollect.entrySet()) {
693
-                    Integer classid = 0;
694
-                    List<ERstudent> list = entry.getValue();
695
-                    setNjqTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
696
-                }
698
+                Integer classid = 0;
699
+                List<ERstudent> list = qbbjcollect.get(subjectid);
700
+                setNjqTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
697
 
701
 
698
                 //班级科目统计
702
                 //班级科目统计
699
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
703
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
700
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
704
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
701
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
705
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
702
-                    Integer classid = entry.getKey();
703
-                    List<ERstudent> list = entry.getValue();
706
+                    classid = entry.getKey();
707
+                    list = entry.getValue();
704
                     setNjqTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
708
                     setNjqTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
705
                 }
709
                 }
706
             }
710
             }
718
                 rrank.setSubjectid(subjectid);
722
                 rrank.setSubjectid(subjectid);
719
                 ERrank rrank1 = new ERrank();
723
                 ERrank rrank1 = new ERrank();
720
                 BeanUtils.copyProperties(rrank, rrank1);
724
                 BeanUtils.copyProperties(rrank, rrank1);
725
+                rrank1.setMaxscore(null);
721
                 rrankList.add(rrank1);
726
                 rrankList.add(rrank1);
722
                 //全部班级统计
727
                 //全部班级统计
723
-                for (Map.Entry<String, List<ERstudent>> entry : qbbjcollect.entrySet()) {
724
-                    Integer classid = 0;
725
-                    List<ERstudent> list = entry.getValue();
726
-                    rrank.setMaxscore(getMaxScore(list, linescore));
727
-                    setNjhTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
728
-                }
728
+                Integer classid = 0;
729
+                List<ERstudent> list = qbbjcollect.get(subjectid);
730
+                rrank.setMaxscore(getMaxScore(list, linescore));
731
+                setNjhTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
729
 
732
 
730
                 //班级科目统计
733
                 //班级科目统计
731
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
734
                 Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
732
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
735
                         .collect(Collectors.groupingBy(s -> s.getClassid()));
733
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
736
                 for (Map.Entry<Integer, List<ERstudent>> entry : ccollect.entrySet()) {
734
-                    Integer classid = entry.getKey();
735
-                    List<ERstudent> list = entry.getValue();
737
+                    classid = entry.getKey();
738
+                    list = entry.getValue();
736
                     rrank.setMaxscore(getMaxScore(list, linescore));
739
                     rrank.setMaxscore(getMaxScore(list, linescore));
737
                     setNjhTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
740
                     setNjhTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
738
                 }
741
                 }
887
         ERclassRank gr = new ERclassRank();
890
         ERclassRank gr = new ERclassRank();
888
         gr.setExamid(examid);
891
         gr.setExamid(examid);
889
         gr.setClassid(classid);
892
         gr.setClassid(classid);
893
+        gr.setSubjectid(rrank.getSubjectid());
890
         gr.setRanktype(rrank.getRanktype());
894
         gr.setRanktype(rrank.getRanktype());
891
         gr.setRankname(rrank.getRankname());
895
         gr.setRankname(rrank.getRankname());
892
         List<ERstudent> list2;
896
         List<ERstudent> list2;
921
         cr.setRanktype(rrank.getRanktype());
925
         cr.setRanktype(rrank.getRanktype());
922
         cr.setRankname(rankname);
926
         cr.setRankname(rankname);
923
         List<ERstudent> list2;
927
         List<ERstudent> list2;
924
-        double finalMinscore = rrank.getMaxscore();
925
-        double finalMaxscore = rrank.getMinscore();
928
+        double finalMinscore = rrank.getMinscore();
929
+        double finalMaxscore = rrank.getMaxscore();
926
         if (rankname.equals("A")) {
930
         if (rankname.equals("A")) {
927
             list2 = list.stream().filter(s -> s.getScore().compareTo(finalMinscore) != -1).collect(Collectors.toList());
931
             list2 = list.stream().filter(s -> s.getScore().compareTo(finalMinscore) != -1).collect(Collectors.toList());
928
         } else {
932
         } else {

+ 8
- 1
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportSchoolService.java View File

7
 import com.xhkjedu.sexam.mapper.reportclass.ERclassMapper;
7
 import com.xhkjedu.sexam.mapper.reportclass.ERclassMapper;
8
 import com.xhkjedu.sexam.mapper.reportclass.ERclassRankMapper;
8
 import com.xhkjedu.sexam.mapper.reportclass.ERclassRankMapper;
9
 import com.xhkjedu.sexam.mapper.reportstu.ERstudentMapper;
9
 import com.xhkjedu.sexam.mapper.reportstu.ERstudentMapper;
10
+import com.xhkjedu.sexam.mapper.system.UserMapper;
10
 import com.xhkjedu.sexam.model.reportstu.ERstudent;
11
 import com.xhkjedu.sexam.model.reportstu.ERstudent;
11
 import com.xhkjedu.sexam.model.reportstu.ERstudentAction;
12
 import com.xhkjedu.sexam.model.reportstu.ERstudentAction;
12
 import com.xhkjedu.sexam.vo.report.ERPaperVo;
13
 import com.xhkjedu.sexam.vo.report.ERPaperVo;
13
 import com.xhkjedu.sexam.vo.report.ERankParamVo;
14
 import com.xhkjedu.sexam.vo.report.ERankParamVo;
15
+import com.xhkjedu.sexam.vo.system.UserVo;
14
 import org.springframework.stereotype.Service;
16
 import org.springframework.stereotype.Service;
15
 import org.springframework.transaction.annotation.Transactional;
17
 import org.springframework.transaction.annotation.Transactional;
16
 
18
 
44
     private EReportSchoolMapper eReportSchoolMapper;
46
     private EReportSchoolMapper eReportSchoolMapper;
45
     @Resource
47
     @Resource
46
     private EPaperStudentMapper ePaperStudentMapper;
48
     private EPaperStudentMapper ePaperStudentMapper;
49
+    @Resource
50
+    private UserMapper userMapper;
47
 
51
 
48
     //考试概况
52
     //考试概况
49
     public Map getKsGk(Integer examid) {
53
     public Map getKsGk(Integer examid) {
95
         eReportSchoolMapper.delByExamAndSubjectId(examid, subjectid, ranktype);//删除考试等级报告
99
         eReportSchoolMapper.delByExamAndSubjectId(examid, subjectid, ranktype);//删除考试等级报告
96
         List<ERPaperVo> papers = eReportSchoolMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷
100
         List<ERPaperVo> papers = eReportSchoolMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷
97
         List<ERstudent> students = ePaperStudentMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷学生
101
         List<ERstudent> students = ePaperStudentMapper.listByExamAndSubjectId(examid, subjectid);//考试试卷学生
98
-        eReportGenerateService.setClassGradeRank(examid, papers, students, rank.getRranks(), createid);//生成考试等级报告
102
+        List<Integer> userids = students.stream().map(ERstudent::getStudentid).distinct().collect(Collectors.toList());
103
+        List<UserVo> users = userMapper.listNameByUserIds(userids);
104
+        Map<Integer, String> userMap = users.stream().collect(Collectors.toMap(UserVo::getUserid, UserVo::getUsername));
105
+        eReportGenerateService.setClassGradeRank(examid, papers, students, rank.getRranks(), createid, userMap);//生成考试等级报告
99
         return eRclassRankMapper.listByExamId(rank);//考试等级报告列表
106
         return eRclassRankMapper.listByExamId(rank);//考试等级报告列表
100
     }
107
     }
101
 
108
 

Loading…
Cancel
Save