|
@@ -304,8 +304,11 @@ public class EReportGenerateService {
|
304
|
304
|
eRstudentMapper.insertList(classSubjectStudents);
|
305
|
305
|
|
306
|
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,16 +333,16 @@ public class EReportGenerateService {
|
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
|
337
|
List<ERstudentAction> studentActions = new ArrayList<>();
|
335
|
338
|
List<ERclassAction> classActions = new ArrayList<>();
|
336
|
339
|
//违纪行为
|
337
|
340
|
List<Map> bads = eReportGenerateMapper.listBadActionByExamId(examid);
|
338
|
341
|
Integer actiontype = 1;
|
339
|
|
- setActions(examid, subjectMap, studentActions, classActions, bads, actiontype);
|
|
342
|
+ setActions(examid, subjectMap, studentActions, classActions, bads, actiontype, userMap);
|
340
|
343
|
List<Map> goods = eReportGenerateMapper.listGoodActionByExamId(examid);
|
341
|
344
|
actiontype = 2;
|
342
|
|
- setActions(examid, subjectMap, studentActions, classActions, goods, actiontype);
|
|
345
|
+ setActions(examid, subjectMap, studentActions, classActions, goods, actiontype, userMap);
|
343
|
346
|
if (N_Utils.isListEmpty(studentActions)) return;
|
344
|
347
|
eRstudentActionMapper.insertList(studentActions);
|
345
|
348
|
eRclassActionMapper.insertList(classActions);
|
|
@@ -348,7 +351,7 @@ public class EReportGenerateService {
|
348
|
351
|
//处理行为数据
|
349
|
352
|
private void setActions(Integer examid, Map<String, String> subjectMap
|
350
|
353
|
, List<ERstudentAction> studentActions, List<ERclassAction> classActions
|
351
|
|
- , List<Map> actions, Integer actiontype) {
|
|
354
|
+ , List<Map> actions, Integer actiontype, Map<Integer, String> userMap) {
|
352
|
355
|
if (N_Utils.isListNotEmpty(actions)) {
|
353
|
356
|
for (Map action : actions) {
|
354
|
357
|
action.put("subjectname", subjectMap.get(action.get("subjectid")));
|
|
@@ -359,12 +362,25 @@ public class EReportGenerateService {
|
359
|
362
|
for (Map.Entry<Integer, List<Map>> entry : ccollect.entrySet()) {
|
360
|
363
|
List<Map> subjects = new ArrayList<>();
|
361
|
364
|
Map<String, List<Map>> scollect = entry.getValue().stream().collect(Collectors.groupingBy(s -> s.get("subjectid").toString()));
|
|
365
|
+ int znum = entry.getValue().size();//总人数
|
362
|
366
|
for (Map.Entry<String, List<Map>> sentry : scollect.entrySet()) {
|
363
|
367
|
List<Map> list = sentry.getValue();
|
364
|
368
|
Map subject = new HashMap();
|
365
|
369
|
subject.put("subjectid", sentry.getKey());
|
366
|
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
|
384
|
subjects.add(subject);
|
369
|
385
|
}
|
370
|
386
|
ERclassAction ca = new ERclassAction();
|
|
@@ -398,13 +414,14 @@ public class EReportGenerateService {
|
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,11 +495,7 @@ public class EReportGenerateService {
|
478
|
495
|
|
479
|
496
|
//班级等级分布
|
480
|
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
|
499
|
Map<String, Double> scoreMap = papers.stream().collect(Collectors.toMap(p -> p.getSubjectid(), p -> p.getPscore()));//考试总分
|
487
|
500
|
Double pscore;//试卷总分
|
488
|
501
|
|
|
@@ -523,22 +536,20 @@ public class EReportGenerateService {
|
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
|
545
|
rrankList.add(rrank1);
|
535
|
546
|
|
536
|
547
|
//班级科目统计
|
537
|
548
|
Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
|
538
|
549
|
.collect(Collectors.groupingBy(s -> s.getClassid()));
|
539
|
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
|
553
|
setDjTj(examid, userMap, rclassRankList, rrank, rankrange, subjectid, classid, list);
|
543
|
554
|
}
|
544
|
555
|
}
|
|
@@ -553,6 +564,7 @@ public class EReportGenerateService {
|
553
|
564
|
Integer cnum = ExamUtil.divUp(pscore, linescore);
|
554
|
565
|
for (Integer i = 1; i <= cnum; i++) {
|
555
|
566
|
ERrank rrank = new ERrank();
|
|
567
|
+ rrank.setSubjectid(subjectid);
|
556
|
568
|
rrank.setRanktype(ranktype);
|
557
|
569
|
rrank.setSubjectid(subjectid);
|
558
|
570
|
double maxscore = ExamUtil.mul(i, linescore);
|
|
@@ -574,18 +586,16 @@ public class EReportGenerateService {
|
574
|
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
|
594
|
Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
|
585
|
595
|
.collect(Collectors.groupingBy(s -> s.getClassid()));
|
586
|
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
|
599
|
setFdTj(examid, userMap, rclassRankList, cnum, i, rrank, rankrange, classid, list);
|
590
|
600
|
}
|
591
|
601
|
}
|
|
@@ -617,18 +627,16 @@ public class EReportGenerateService {
|
617
|
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
|
635
|
Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
|
628
|
636
|
.collect(Collectors.groupingBy(s -> s.getClassid()));
|
629
|
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
|
640
|
setLjfTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
|
633
|
641
|
}
|
634
|
642
|
}
|
|
@@ -658,18 +666,16 @@ public class EReportGenerateService {
|
658
|
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
|
674
|
Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
|
669
|
675
|
.collect(Collectors.groupingBy(s -> s.getClassid()));
|
670
|
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
|
679
|
setLjmcTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
|
674
|
680
|
}
|
675
|
681
|
}
|
|
@@ -689,18 +695,16 @@ public class EReportGenerateService {
|
689
|
695
|
BeanUtils.copyProperties(rrank, rrank1);
|
690
|
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
|
703
|
Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
|
700
|
704
|
.collect(Collectors.groupingBy(s -> s.getClassid()));
|
701
|
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
|
708
|
setNjqTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
|
705
|
709
|
}
|
706
|
710
|
}
|
|
@@ -718,21 +722,20 @@ public class EReportGenerateService {
|
718
|
722
|
rrank.setSubjectid(subjectid);
|
719
|
723
|
ERrank rrank1 = new ERrank();
|
720
|
724
|
BeanUtils.copyProperties(rrank, rrank1);
|
|
725
|
+ rrank1.setMaxscore(null);
|
721
|
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
|
734
|
Map<Integer, List<ERstudent>> ccollect = students.stream().filter(s -> s.getSubjectid().equals(subjectid))
|
732
|
735
|
.collect(Collectors.groupingBy(s -> s.getClassid()));
|
733
|
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
|
739
|
rrank.setMaxscore(getMaxScore(list, linescore));
|
737
|
740
|
setNjhTj(examid, userMap, rclassRankList, rrank, rankrange, classid, subjectid, list);
|
738
|
741
|
}
|
|
@@ -887,6 +890,7 @@ public class EReportGenerateService {
|
887
|
890
|
ERclassRank gr = new ERclassRank();
|
888
|
891
|
gr.setExamid(examid);
|
889
|
892
|
gr.setClassid(classid);
|
|
893
|
+ gr.setSubjectid(rrank.getSubjectid());
|
890
|
894
|
gr.setRanktype(rrank.getRanktype());
|
891
|
895
|
gr.setRankname(rrank.getRankname());
|
892
|
896
|
List<ERstudent> list2;
|
|
@@ -921,8 +925,8 @@ public class EReportGenerateService {
|
921
|
925
|
cr.setRanktype(rrank.getRanktype());
|
922
|
926
|
cr.setRankname(rankname);
|
923
|
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
|
930
|
if (rankname.equals("A")) {
|
927
|
931
|
list2 = list.stream().filter(s -> s.getScore().compareTo(finalMinscore) != -1).collect(Collectors.toList());
|
928
|
932
|
} else {
|