Browse Source

Merge remote-tracking branch 'origin/master' into ywx

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

+ 11
- 1
scommons/src/main/java/com/xhkjedu/utils/N_Utils.java View File

577
         return count.doubleValue();
577
         return count.doubleValue();
578
     }
578
     }
579
 
579
 
580
+    public static double getDoubleDivideForAvg(Double linecount, Integer studentnum){
581
+        if (isEmptyInteger(studentnum) || linecount == null) {
582
+            return 0;
583
+        }
584
+        BigDecimal b1 = new BigDecimal(linecount.toString());
585
+        BigDecimal b2 = new BigDecimal(studentnum.toString());
586
+
587
+        BigDecimal count = b1.divide(b2,2,BigDecimal.ROUND_DOWN);
588
+        return count.doubleValue();
589
+    }
590
+
580
     //两个double 类型相加
591
     //两个double 类型相加
581
     public static Double getDoubleSum(Double value1,Double value2){
592
     public static Double getDoubleSum(Double value1,Double value2){
582
         BigDecimal b1 = new BigDecimal(Double.toString(value1));
593
         BigDecimal b1 = new BigDecimal(Double.toString(value1));
1038
             return false;
1049
             return false;
1039
         }
1050
         }
1040
     }
1051
     }
1041
-
1042
 }
1052
 }

+ 3
- 6
sexam/src/main/java/com/xhkjedu/sexam/model/reportclass/ERclassQuestion.java View File

22
     //科目id
22
     //科目id
23
     private String subjectid;
23
     private String subjectid;
24
 
24
 
25
+    //试卷id
26
+    private Integer epid;
27
+
25
     //试题主键id
28
     //试题主键id
26
     private Integer eptqid;
29
     private Integer eptqid;
27
 
30
 
31
     //试题排序
34
     //试题排序
32
     private Integer qorder;
35
     private Integer qorder;
33
 
36
 
34
-    //班级试题得分
35
-    private Double qscore;
36
-
37
-    //试题难易度
38
-    private Integer complexity;
39
-
40
     //班级得分
37
     //班级得分
41
     private Double classscore;
38
     private Double classscore;
42
 
39
 

+ 6
- 5
sexam/src/main/java/com/xhkjedu/sexam/service/paper/EPaperQtypeService.java View File

152
         ePaperQtypeMapper.insertList(qtypelist);//保存题型
152
         ePaperQtypeMapper.insertList(qtypelist);//保存题型
153
         for(EPaperQtype qtype : qtypelist){
153
         for(EPaperQtype qtype : qtypelist){
154
             List<EPaperQtypeQuestion> questions = qtype.getQuestions();
154
             List<EPaperQtypeQuestion> questions = qtype.getQuestions();
155
+            qtype.setEptid(qtype.getId());
155
 
156
 
156
             for (int i = 0; i < questions.size(); i++) {
157
             for (int i = 0; i < questions.size(); i++) {
157
                 EPaperQtypeQuestion q=questions.get(i);
158
                 EPaperQtypeQuestion q=questions.get(i);
418
                     List<Integer> saveids = new ArrayList<>();
419
                     List<Integer> saveids = new ArrayList<>();
419
                     saveids.add(dq.getEptqid());
420
                     saveids.add(dq.getEptqid());
420
                     questionPointVo.setEptqids(saveids);
421
                     questionPointVo.setEptqids(saveids);
421
-                    questionPointVo.setEptqid(dq.getEptid());
422
+                    questionPointVo.setEptqid(dq.getEptqid());
422
                 }else{
423
                 }else{
423
                     questionPointVo.setEptqids(eptqids);
424
                     questionPointVo.setEptqids(eptqids);
424
                     questionPointVo.setEptqid(0);
425
                     questionPointVo.setEptqid(0);
473
                 questionPointVo.setScore(dq.getScore());
474
                 questionPointVo.setScore(dq.getScore());
474
                 questionPointVo.setQlevel(dq.getQlevel());
475
                 questionPointVo.setQlevel(dq.getQlevel());
475
                 questionPointVo.setQuestionid(dq.getQuestionid());
476
                 questionPointVo.setQuestionid(dq.getQuestionid());
476
-
477
                 questionPointVo.setPointids(pointids);
477
                 questionPointVo.setPointids(pointids);
478
-
479
                 if(N_Utils.isListEmpty(eptqids)){
478
                 if(N_Utils.isListEmpty(eptqids)){
480
                     List<Integer> saveids = new ArrayList<>();
479
                     List<Integer> saveids = new ArrayList<>();
481
                     saveids.add(dq.getEptqid());
480
                     saveids.add(dq.getEptqid());
482
                     questionPointVo.setEptqids(saveids);
481
                     questionPointVo.setEptqids(saveids);
483
-                    questionPointVo.setEptqid(dq.getEptid());
482
+                    questionPointVo.setEptqid(dq.getEptqid());
483
+
484
                 }else{
484
                 }else{
485
                     questionPointVo.setEptqids(eptqids);
485
                     questionPointVo.setEptqids(eptqids);
486
                     questionPointVo.setEptqid(0);
486
                     questionPointVo.setEptqid(0);
499
                 List<Integer> saveids = new ArrayList<>();
499
                 List<Integer> saveids = new ArrayList<>();
500
                 saveids.add(dq.getEptqid());
500
                 saveids.add(dq.getEptqid());
501
                 questionPointVo.setEptqids(saveids);
501
                 questionPointVo.setEptqids(saveids);
502
-                questionPointVo.setEptqid(dq.getEptid());
502
+                questionPointVo.setEptqid(dq.getEptqid());
503
             }else{
503
             }else{
504
                 questionPointVo.setEptqids(eptqids);
504
                 questionPointVo.setEptqids(eptqids);
505
                 questionPointVo.setEptqid(0);
505
                 questionPointVo.setEptqid(0);
506
             }
506
             }
507
+
507
             quesplist.add(questionPointVo);
508
             quesplist.add(questionPointVo);
508
         }
509
         }
509
     }
510
     }

+ 59
- 43
sexam/src/main/java/com/xhkjedu/sexam/service/report/EReportGenerateService.java View File

304
         }
304
         }
305
         eRstudentMapper.insertList(classSubjectStudents);
305
         eRstudentMapper.insertList(classSubjectStudents);
306
 
306
 
307
-        setClassQuestion(examid, subjects, classes);//题型试题
307
+//        setClassQuestion(examid, subjects, classes);//题型试题
308
         setClassGradeRankAll(examid, papers, classSubjectStudents, createid);//班级等级分布
308
         setClassGradeRankAll(examid, papers, classSubjectStudents, createid);//班级等级分布
309
         setAction(examid, subjectMap);//行为分析
309
         setAction(examid, subjectMap);//行为分析
310
     }
310
     }
997
         }
997
         }
998
     }
998
     }
999
 
999
 
1000
+
1001
+    @Transactional(rollbackFor = Exception.class)
1002
+    public void saveClassQuestions(Integer examid){
1003
+        List<Map> classes = eClassMapper.listByExamId(examid);
1004
+        List<Map> subjects = eReportGenerateMapper.listSubject(examid);
1005
+        setClassQuestion(examid,subjects,classes);
1006
+
1007
+    }
1008
+
1000
     //题型、试题、知识点
1009
     //题型、试题、知识点
1001
     private void setClassQuestion(Integer examid, List<Map> subjects, List<Map> classes) {
1010
     private void setClassQuestion(Integer examid, List<Map> subjects, List<Map> classes) {
1002
         //考试所有学生提交试卷作答情况
1011
         //考试所有学生提交试卷作答情况
1027
 
1036
 
1028
             if (ptype == 1) {
1037
             if (ptype == 1) {
1029
                 //处理题型下试题:题库显示题号时为母题的题号即order(qn是英语为顺延题号其他学科为母题号和子题排序拼接)
1038
                 //处理题型下试题:题库显示题号时为母题的题号即order(qn是英语为顺延题号其他学科为母题号和子题排序拼接)
1030
-                String qtypejson = panalyze.get("qnumjson").toString();//原试卷题型分析
1039
+               /* String qtypejson = panalyze.get("qnumjson").toString();//原试卷题型分析
1031
                 List<Map> qtypelist = JSON.parseArray(qtypejson, Map.class);
1040
                 List<Map> qtypelist = JSON.parseArray(qtypejson, Map.class);
1032
-                setPaperQuestionTkQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);
1041
+                setPaperQuestionTkQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);*/
1033
 
1042
 
1034
                 //处理知识点
1043
                 //处理知识点
1035
                 setEPaperQuestionPoints(panalyze, paperstulist, rpointlist, stupointlist, examPaperClassVo);
1044
                 setEPaperQuestionPoints(panalyze, paperstulist, rpointlist, stupointlist, examPaperClassVo);
1036
 
1045
 
1037
                 //处理难易度
1046
                 //处理难易度
1038
-                String complexityjson = panalyze.get("complexityjson").toString();
1047
+               /* String complexityjson = panalyze.get("complexityjson").toString();
1039
                 List<Map> complexitylist = JSON.parseArray(complexityjson, Map.class);
1048
                 List<Map> complexitylist = JSON.parseArray(complexityjson, Map.class);
1040
-                setEPaperQuestionComplexitys(complexitylist, paperstulist, complist, stucomplist, examPaperClassVo);
1049
+                setEPaperQuestionComplexitys(complexitylist, paperstulist, complist, stucomplist, examPaperClassVo);*/
1041
 
1050
 
1042
             } else {
1051
             } else {
1043
                 //处理题型及题型下试题:附件显示题号为qn(order)作为排序使用
1052
                 //处理题型及题型下试题:附件显示题号为qn(order)作为排序使用
1046
                 setPaperQuestionFjQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);
1055
                 setPaperQuestionFjQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);
1047
             }
1056
             }
1048
         }
1057
         }
1049
-        eRclassQtypeMapper.insertList(rtypelist);
1058
+        /*eRclassQtypeMapper.insertList(rtypelist);
1050
         eRstudentQtypeMapper.insertList(stutypelist);
1059
         eRstudentQtypeMapper.insertList(stutypelist);
1051
         eRclassQuestionMapper.insertList(rqueslist);
1060
         eRclassQuestionMapper.insertList(rqueslist);
1052
         eRclassComplexityMapper.insertList(complist);
1061
         eRclassComplexityMapper.insertList(complist);
1053
-        erStudentComplexityMapper.insertList(stucomplist);
1062
+        erStudentComplexityMapper.insertList(stucomplist);*/
1054
         eRclassPointMapper.insertList(rpointlist);
1063
         eRclassPointMapper.insertList(rpointlist);
1055
         eRstudentPointMapper.insertList(stupointlist);
1064
         eRstudentPointMapper.insertList(stupointlist);
1056
     }
1065
     }
1073
             EPaperStudentQuestion sq = classStu.get(i);
1082
             EPaperStudentQuestion sq = classStu.get(i);
1074
             String stuanswer = sq.getStuanswer();
1083
             String stuanswer = sq.getStuanswer();
1075
             if (q.getCtype() == 1 || q.getCtype() == 2 || q.getCtype() == 4 || q.getCtype() == 5 || q.getCtype() == 6) {
1084
             if (q.getCtype() == 1 || q.getCtype() == 2 || q.getCtype() == 4 || q.getCtype() == 5 || q.getCtype() == 6) {
1076
-                String answeroption = "未选择";
1085
+                String answeroption = "未作答";
1077
                 if (N_Utils.isNotEmpty(stuanswer)) {
1086
                 if (N_Utils.isNotEmpty(stuanswer)) {
1078
                     List<String> stuanswers = JSON.parseArray(stuanswer, String.class);
1087
                     List<String> stuanswers = JSON.parseArray(stuanswer, String.class);
1079
-                    answeroption = stuanswers.get(0);
1088
+                    if(N_Utils.isListNotEmpty(stuanswers)){
1089
+                        answeroption = stuanswers.get(0);
1090
+                    }
1080
                 }
1091
                 }
1081
 
1092
 
1082
                 Map stumap = new HashMap();
1093
                 Map stumap = new HashMap();
1146
         List<Map> classes = examPaperClassVo.getClasses();
1157
         List<Map> classes = examPaperClassVo.getClasses();
1147
         for (int k = 0; k < qtypelist.size(); k++) {
1158
         for (int k = 0; k < qtypelist.size(); k++) {
1148
             Map qtypemap = qtypelist.get(k);
1159
             Map qtypemap = qtypelist.get(k);
1149
-            String qtypename = qtypemap.get("qtypename").toString();
1160
+            String qtypename = qtypemap.get("qtname").toString();
1150
             String qtypeid = qtypemap.get("qtid").toString();
1161
             String qtypeid = qtypemap.get("qtid").toString();
1151
             Double score = Double.parseDouble(qtypemap.get("score").toString());//题型下试题总分值
1162
             Double score = Double.parseDouble(qtypemap.get("score").toString());//题型下试题总分值
1152
             Double srate = Double.parseDouble(qtypemap.get("srate").toString());//题型下试题分值占比
1163
             Double srate = Double.parseDouble(qtypemap.get("srate").toString());//题型下试题分值占比
1183
                     EPaperStudentQuestion qcmaxstu = qcstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1194
                     EPaperStudentQuestion qcmaxstu = qcstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1184
                     Double qcscore = qcstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1195
                     Double qcscore = qcstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1185
                     Double qcstuscore = qcstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1196
                     Double qcstuscore = qcstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1186
-                    Double qcavgscore = N_Utils.getDoubleDivideAndMulitiply(qcstuscore, cstunum);
1197
+                    Double qcavgscore = N_Utils.getDoubleDivideForAvg(qcstuscore, cstunum);
1187
                     Double qcsrate = N_Utils.getDoubleDivideAndMulitiply(qcstuscore, qcscore);
1198
                     Double qcsrate = N_Utils.getDoubleDivideAndMulitiply(qcstuscore, qcscore);
1188
 
1199
 
1189
                     //班级单题情况
1200
                     //班级单题情况
1191
                     ercq.setExamid(examPaperClassVo.getExamid());
1202
                     ercq.setExamid(examPaperClassVo.getExamid());
1192
                     ercq.setClassid(classid);
1203
                     ercq.setClassid(classid);
1193
                     ercq.setSubjectid(examPaperClassVo.getSubjectid());
1204
                     ercq.setSubjectid(examPaperClassVo.getSubjectid());
1205
+                    ercq.setEpid(examPaperClassVo.getEpid());
1194
                     ercq.setEptqid(eptqid);
1206
                     ercq.setEptqid(eptqid);
1195
                     ercq.setQn(qns.get(q));
1207
                     ercq.setQn(qns.get(q));
1196
                     ercq.setQorder(orders.get(q));
1208
                     ercq.setQorder(orders.get(q));
1212
                     if (tclassmap.containsKey(classid)) {
1224
                     if (tclassmap.containsKey(classid)) {
1213
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1225
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1214
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1226
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1215
-                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcscore));
1227
+                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getCscore(), qcscore));
1216
                     } else {
1228
                     } else {
1217
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1229
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1218
                         erClassScoreVo.setStunum(cstunum);
1230
                         erClassScoreVo.setStunum(cstunum);
1230
                             sq.setClassid(psq.getClassid());
1242
                             sq.setClassid(psq.getClassid());
1231
                             sq.setStudentid(psq.getStudentid());
1243
                             sq.setStudentid(psq.getStudentid());
1232
                             sq.setStuscore(psq.getStuscore());
1244
                             sq.setStuscore(psq.getStuscore());
1245
+                            tstumap.put(psq.getStudentid(),sq);
1233
                         }
1246
                         }
1234
                     }
1247
                     }
1235
                 }
1248
                 }
1236
             }
1249
             }
1237
 
1250
 
1238
-            Double tgavgscore = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, gstunum);//题型下年级平均分
1251
+            Double tgavgscore = N_Utils.getDoubleDivideForAvg(tgstuscore, gstunum);//题型下年级平均分
1239
             Double tgsrate = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, tgscore);//年级得分率
1252
             Double tgsrate = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, tgscore);//年级得分率
1240
 
1253
 
1241
             //题型--班级得分
1254
             //题型--班级得分
1254
                 eRclassQtype.setGradescore(tgstuscore);
1267
                 eRclassQtype.setGradescore(tgstuscore);
1255
                 eRclassQtype.setGradeavgscore(tgavgscore);
1268
                 eRclassQtype.setGradeavgscore(tgavgscore);
1256
                 eRclassQtype.setGradesrate(tgsrate);
1269
                 eRclassQtype.setGradesrate(tgsrate);
1257
-                eRclassQtype.setClasssrate(erClassScoreVo.getStuscore());
1258
-                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1270
+                eRclassQtype.setClassscore(erClassScoreVo.getStuscore());
1271
+                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideForAvg(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1259
                 eRclassQtype.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1272
                 eRclassQtype.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1260
                 eRclassQtype.setQns(qns.stream().map(String::valueOf).collect(Collectors.joining(",")));
1273
                 eRclassQtype.setQns(qns.stream().map(String::valueOf).collect(Collectors.joining(",")));
1261
                 rtypelist.add(eRclassQtype);
1274
                 rtypelist.add(eRclassQtype);
1281
         List<Map> classes = examPaperClassVo.getClasses();
1294
         List<Map> classes = examPaperClassVo.getClasses();
1282
         for (int k = 0; k < qtypelist.size(); k++) {
1295
         for (int k = 0; k < qtypelist.size(); k++) {
1283
             Map qtypemap = qtypelist.get(k);
1296
             Map qtypemap = qtypelist.get(k);
1284
-            String qtypename = qtypemap.get("qtypename").toString();
1297
+            String qtypename = qtypemap.get("qtname").toString();
1285
             String qtypeid = qtypemap.get("qtid").toString();
1298
             String qtypeid = qtypemap.get("qtid").toString();
1286
             Double score = Double.parseDouble(qtypemap.get("score").toString());//题型下试题总分值
1299
             Double score = Double.parseDouble(qtypemap.get("score").toString());//题型下试题总分值
1287
             Double srate = Double.parseDouble(qtypemap.get("srate").toString());//题型下试题分值占比
1300
             Double srate = Double.parseDouble(qtypemap.get("srate").toString());//题型下试题分值占比
1301
                 Integer qlevel = Integer.parseInt(quesmap.get("qlevel").toString());
1314
                 Integer qlevel = Integer.parseInt(quesmap.get("qlevel").toString());
1302
                 String order = quesmap.get("order").toString();//试题母题题号
1315
                 String order = quesmap.get("order").toString();//试题母题题号
1303
                 List<String> qnslist = (List<String>) quesmap.get("qns");
1316
                 List<String> qnslist = (List<String>) quesmap.get("qns");
1304
-                qns = order + ",";
1317
+                qns = qns + order + ",";
1305
 
1318
 
1306
                 //单题小题统计
1319
                 //单题小题统计
1307
                 for (int l = 0; l < eptqids.size(); l++) {
1320
                 for (int l = 0; l < eptqids.size(); l++) {
1310
                     EPaperStudentQuestion sqgmaxstu = sqstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1323
                     EPaperStudentQuestion sqgmaxstu = sqstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1311
                     Double sqgstuscore = sqstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1324
                     Double sqgstuscore = sqstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1312
                     Double sqgscore = sqstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1325
                     Double sqgscore = sqstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1313
-                    Double sqgavgscore = N_Utils.getDoubleDivideAndMulitiply(sqgstuscore, sqstulist.size());
1326
+                    Double sqgavgscore = N_Utils.getDoubleDivideForAvg(sqgstuscore, sqstulist.size());
1314
                     Double sqgsrate = N_Utils.getDoubleDivideAndMulitiply(sqgstuscore, sqgscore);
1327
                     Double sqgsrate = N_Utils.getDoubleDivideAndMulitiply(sqgstuscore, sqgscore);
1315
 
1328
 
1316
                     for (Map classm : classes) {
1329
                     for (Map classm : classes) {
1320
                         EPaperStudentQuestion sqcmaxstu = sqcstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1333
                         EPaperStudentQuestion sqcmaxstu = sqcstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1321
                         Double sqcscore = sqcstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1334
                         Double sqcscore = sqcstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1322
                         Double sqcstuscore = sqcstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1335
                         Double sqcstuscore = sqcstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1323
-                        Double qcavgscore = N_Utils.getDoubleDivideAndMulitiply(sqcstuscore, cstunum);
1336
+                        Double qcavgscore = N_Utils.getDoubleDivideForAvg(sqcstuscore, cstunum);
1324
                         Double qcsrate = N_Utils.getDoubleDivideAndMulitiply(sqcstuscore, sqcscore);
1337
                         Double qcsrate = N_Utils.getDoubleDivideAndMulitiply(sqcstuscore, sqcscore);
1325
                         //班级单题情况
1338
                         //班级单题情况
1326
                         ERclassQuestion ercq = new ERclassQuestion();
1339
                         ERclassQuestion ercq = new ERclassQuestion();
1327
                         ercq.setExamid(examPaperClassVo.getExamid());
1340
                         ercq.setExamid(examPaperClassVo.getExamid());
1328
                         ercq.setClassid(classid);
1341
                         ercq.setClassid(classid);
1329
                         ercq.setSubjectid(examPaperClassVo.getSubjectid());
1342
                         ercq.setSubjectid(examPaperClassVo.getSubjectid());
1343
+                        ercq.setEpid(examPaperClassVo.getEpid());
1330
                         ercq.setEptqid(eptqid);
1344
                         ercq.setEptqid(eptqid);
1331
                         ercq.setQn(qnslist.get(l));
1345
                         ercq.setQn(qnslist.get(l));
1332
                         ercq.setQorder(Integer.parseInt(order));
1346
                         ercq.setQorder(Integer.parseInt(order));
1400
                     if (tclassmap.containsKey(classid)) {
1414
                     if (tclassmap.containsKey(classid)) {
1401
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1415
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1402
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1416
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1403
-                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcscore));
1417
+                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getCscore(), qcscore));
1404
                     } else {
1418
                     } else {
1405
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1419
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1406
                         erClassScoreVo.setStunum(cstunum);
1420
                         erClassScoreVo.setStunum(cstunum);
1417
                             sq.setClassid(psq.getClassid());
1431
                             sq.setClassid(psq.getClassid());
1418
                             sq.setStudentid(psq.getStudentid());
1432
                             sq.setStudentid(psq.getStudentid());
1419
                             sq.setStuscore(psq.getStuscore());
1433
                             sq.setStuscore(psq.getStuscore());
1434
+                            tstumap.put(psq.getStudentid(),sq);
1420
                         }
1435
                         }
1421
                     }
1436
                     }
1422
                 }
1437
                 }
1423
             }
1438
             }
1424
 
1439
 
1425
-            Double tgavgscore = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, gstunum);//题型下年级平均分
1440
+            Double tgavgscore = N_Utils.getDoubleDivideForAvg(tgstuscore, gstunum);//题型下年级平均分
1426
             Double tgsrate = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, tgscore);//年级得分率
1441
             Double tgsrate = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, tgscore);//年级得分率
1427
 
1442
 
1428
             //题型--班级得分
1443
             //题型--班级得分
1439
                 eRclassQtype.setNum(num);
1454
                 eRclassQtype.setNum(num);
1440
                 eRclassQtype.setSrate(srate);
1455
                 eRclassQtype.setSrate(srate);
1441
                 eRclassQtype.setScore(tgstuscore);
1456
                 eRclassQtype.setScore(tgstuscore);
1457
+                eRclassQtype.setGradescore(tgstuscore);
1442
                 eRclassQtype.setGradeavgscore(tgavgscore);
1458
                 eRclassQtype.setGradeavgscore(tgavgscore);
1443
                 eRclassQtype.setGradesrate(tgsrate);
1459
                 eRclassQtype.setGradesrate(tgsrate);
1444
                 eRclassQtype.setClassscore(erClassScoreVo.getStuscore());
1460
                 eRclassQtype.setClassscore(erClassScoreVo.getStuscore());
1445
-                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1461
+                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideForAvg(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1446
                 eRclassQtype.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1462
                 eRclassQtype.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1447
                 eRclassQtype.setQns(qns.substring(0, qns.lastIndexOf(",")));
1463
                 eRclassQtype.setQns(qns.substring(0, qns.lastIndexOf(",")));
1448
                 rtypelist.add(eRclassQtype);
1464
                 rtypelist.add(eRclassQtype);
1488
                     //说明改题为复合体,获取所有子题
1504
                     //说明改题为复合体,获取所有子题
1489
                     List<Integer> eptqids = qpoint.getEptqids();
1505
                     List<Integer> eptqids = qpoint.getEptqids();
1490
                     List<EPaperStudentQuestion> stuqueslist = paperstulist.stream().filter(s ->eptqids.contains(s.getEptqid())).collect(Collectors.toList());
1506
                     List<EPaperStudentQuestion> stuqueslist = paperstulist.stream().filter(s ->eptqids.contains(s.getEptqid())).collect(Collectors.toList());
1491
-                    //根据每个学生分组获取每个学生题分值
1507
+                    //根据每个学生分组获取每个学生题分值
1492
                     Map<Integer,List<EPaperStudentQuestion>> stuquesmap = stuqueslist.stream().collect(Collectors.groupingBy(EPaperStudentQuestion::getStudentid));
1508
                     Map<Integer,List<EPaperStudentQuestion>> stuquesmap = stuqueslist.stream().collect(Collectors.groupingBy(EPaperStudentQuestion::getStudentid));
1493
                     for(Map.Entry<Integer,List<EPaperStudentQuestion>> entry : stuquesmap.entrySet()){
1509
                     for(Map.Entry<Integer,List<EPaperStudentQuestion>> entry : stuquesmap.entrySet()){
1494
                         List<EPaperStudentQuestion> stuques = entry.getValue();
1510
                         List<EPaperStudentQuestion> stuques = entry.getValue();
1507
             String pointname = map.get("pointname").toString();
1523
             String pointname = map.get("pointname").toString();
1508
             Double pointscore = Double.parseDouble(map.get("score").toString());
1524
             Double pointscore = Double.parseDouble(map.get("score").toString());
1509
             Double pointrate = Double.parseDouble(map.get("srate").toString());
1525
             Double pointrate = Double.parseDouble(map.get("srate").toString());
1510
-            List<QuestionOrderVo> qorders = (List<QuestionOrderVo>) map.get("ques");
1511
-            List<Integer> orders = qorders.stream().map(QuestionOrderVo::getOrder).collect(Collectors.toList());
1526
+            List<Map> qorders = (List<Map>) map.get("ques");
1527
+            List<Integer> orders = qorders.stream().map(s -> Integer.parseInt(s.get("order").toString())).collect(Collectors.toList());
1512
             String orderstr = orders.stream().map(String::valueOf).collect(Collectors.joining(","));//试题
1528
             String orderstr = orders.stream().map(String::valueOf).collect(Collectors.joining(","));//试题
1513
             //单个知识点学生得分情况:一个知识对应一个或多个试题,
1529
             //单个知识点学生得分情况:一个知识对应一个或多个试题,
1514
             List<ERPointStuScoreVo> gradepointstulist = gradestulist.stream().filter(s -> s.getPointid().equals(pointid)).collect(Collectors.toList());
1530
             List<ERPointStuScoreVo> gradepointstulist = gradestulist.stream().filter(s -> s.getPointid().equals(pointid)).collect(Collectors.toList());
1518
             for(Map.Entry<Integer,List<ERPointStuScoreVo>> entry : pointstuscoremap.entrySet()){
1534
             for(Map.Entry<Integer,List<ERPointStuScoreVo>> entry : pointstuscoremap.entrySet()){
1519
                 List<ERPointStuScoreVo> stuscorelist = entry.getValue();
1535
                 List<ERPointStuScoreVo> stuscorelist = entry.getValue();
1520
                 Double stuscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1536
                 Double stuscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1521
-                Double qscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1537
+//                Double qscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1522
                 ERPointStuScoreVo sscorevo = stuscorelist.get(0);
1538
                 ERPointStuScoreVo sscorevo = stuscorelist.get(0);
1523
                 sscorevo.setStuscore(stuscore);
1539
                 sscorevo.setStuscore(stuscore);
1524
-                sscorevo.setScore(qscore);
1540
+//                sscorevo.setScore(qscore);
1525
                 pointstuscorelist.add(sscorevo);
1541
                 pointstuscorelist.add(sscorevo);
1526
             }
1542
             }
1527
 
1543
 
1528
             Double gstuscore = pointstuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1544
             Double gstuscore = pointstuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1529
-            Double gscore = pointstuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1530
-            Double gavgscore = N_Utils.getDoubleDivideAndMulitiply(gstuscore,pointstuscorelist.size());
1531
-            Double gsrate = N_Utils.getDoubleDivideAndMulitiply(gstuscore,gscore);
1545
+            Double gavgscore = N_Utils.getDoubleDivideForAvg(gstuscore,pointstuscorelist.size());
1546
+            Double gsrate = N_Utils.getDoubleDivideAndMulitiply(gstuscore,pointscore * pointstuscorelist.size());
1532
 
1547
 
1533
             for(Map classm : classes){
1548
             for(Map classm : classes){
1534
                 Integer classid = Integer.parseInt(classm.get("classid").toString());
1549
                 Integer classid = Integer.parseInt(classm.get("classid").toString());
1535
                 List<ERPointStuScoreVo> classpointstulist = pointstuscorelist.stream().filter(s->s.getClassid().equals(classid)).collect(Collectors.toList());
1550
                 List<ERPointStuScoreVo> classpointstulist = pointstuscorelist.stream().filter(s->s.getClassid().equals(classid)).collect(Collectors.toList());
1536
                 Double cstuscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1551
                 Double cstuscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1537
-                Double cscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1538
-                Double cavgscore = N_Utils.getDoubleDivideAndMulitiply(cstuscore,classpointstulist.size());
1539
-                Double csrate = N_Utils.getDoubleDivideAndMulitiply(cstuscore,cscore);
1552
+//                Double cscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1553
+                Double cavgscore = N_Utils.getDoubleDivideForAvg(cstuscore,classpointstulist.size());
1554
+                Double csrate = N_Utils.getDoubleDivideAndMulitiply(cstuscore,pointscore * classpointstulist.size());
1540
 
1555
 
1541
                 ERclassPoint eRclassPoint = new ERclassPoint();
1556
                 ERclassPoint eRclassPoint = new ERclassPoint();
1542
                 eRclassPoint.setExamid(examPaperClassVo.getExamid());
1557
                 eRclassPoint.setExamid(examPaperClassVo.getExamid());
1567
                     erstupoint.setPointid(pointid);
1582
                     erstupoint.setPointid(pointid);
1568
                     erstupoint.setPointname(pointname);
1583
                     erstupoint.setPointname(pointname);
1569
                     erstupoint.setStuscore(stu.getStuscore());
1584
                     erstupoint.setStuscore(stu.getStuscore());
1570
-                    erstupoint.setStusrate(N_Utils.getDoubleDivideAndMulitiply(stu.getStuscore(),stu.getScore()));
1585
+                    erstupoint.setStusrate(N_Utils.getDoubleDivideAndMulitiply(stu.getStuscore(),pointscore));
1571
                     stupointlist.add(erstupoint);
1586
                     stupointlist.add(erstupoint);
1572
                 }
1587
                 }
1573
             }
1588
             }
1585
             pscvo.setClassid(sq.getClassid());
1600
             pscvo.setClassid(sq.getClassid());
1586
             pscvo.setStudentid(sq.getStudentid());
1601
             pscvo.setStudentid(sq.getStudentid());
1587
             pscvo.setStuscore(sq.getStuscore());
1602
             pscvo.setStuscore(sq.getStuscore());
1588
-            pscvo.setScore(Double.parseDouble(pointmap.get("score").toString()));
1589
-            pscvo.setPointid(pointmap.get("pointid").toString());
1603
+            String pointid = pointmap.get("pointid").toString();
1604
+            pscvo.setPointid(pointid);
1590
             gradestulist.add(pscvo);
1605
             gradestulist.add(pscvo);
1591
         }else{
1606
         }else{
1592
             //计算每个知识点所占分值(平均分配)
1607
             //计算每个知识点所占分值(平均分配)
1596
                 ERPointStuScoreVo pscvo = new ERPointStuScoreVo();
1611
                 ERPointStuScoreVo pscvo = new ERPointStuScoreVo();
1597
                 pscvo.setClassid(sq.getClassid());
1612
                 pscvo.setClassid(sq.getClassid());
1598
                 pscvo.setStudentid(sq.getStudentid());
1613
                 pscvo.setStudentid(sq.getStudentid());
1599
-                pscvo.setScore(Double.parseDouble(pointmap.get("score").toString()));
1600
-                pscvo.setPointid(pointmap.get("pointid").toString());
1614
+                String pointid = pointmap.get("pointid").toString();
1615
+                pscvo.setPointid(pointid);
1601
                 if(avgps.length == 2 && (j+1) == points.size()){
1616
                 if(avgps.length == 2 && (j+1) == points.size()){
1602
                     pscvo.setStuscore(avgps[1]);
1617
                     pscvo.setStuscore(avgps[1]);
1603
                 }else{
1618
                 }else{
1614
                                               List<ERStudentComplexity> stucomplist, ExamPaperClassVo examPaperClassVo) {
1629
                                               List<ERStudentComplexity> stucomplist, ExamPaperClassVo examPaperClassVo) {
1615
         List<Map> classes = examPaperClassVo.getClasses();
1630
         List<Map> classes = examPaperClassVo.getClasses();
1616
         for (Map compmap : complexitylist) {
1631
         for (Map compmap : complexitylist) {
1617
-            Integer complexity = Integer.parseInt(compmap.get("complexity").toString());
1632
+            Integer complexity = Integer.parseInt(compmap.get("level").toString());
1618
             Double score = Double.parseDouble(compmap.get("score").toString());//难易度下试题总分值
1633
             Double score = Double.parseDouble(compmap.get("score").toString());//难易度下试题总分值
1619
             Double srate = Double.parseDouble(compmap.get("srate").toString());//难易度下试题分值占比
1634
             Double srate = Double.parseDouble(compmap.get("srate").toString());//难易度下试题分值占比
1620
             List<Map> queslist = (List<Map>) compmap.get("ques");//试题相关对象(数量为几个代表几个母题)
1635
             List<Map> queslist = (List<Map>) compmap.get("ques");//试题相关对象(数量为几个代表几个母题)
1629
                 List<Integer> eptqids = (List<Integer>) quesmap.get("eptqids");
1644
                 List<Integer> eptqids = (List<Integer>) quesmap.get("eptqids");
1630
                 Integer qlevel = Integer.parseInt(quesmap.get("qlevel").toString());
1645
                 Integer qlevel = Integer.parseInt(quesmap.get("qlevel").toString());
1631
                 String order = quesmap.get("order").toString();//试题母题题号
1646
                 String order = quesmap.get("order").toString();//试题母题题号
1632
-                qns = order + ",";
1647
+                qns = qns + order + ",";
1633
 
1648
 
1634
                 //获取集合中对应子题集合的数据
1649
                 //获取集合中对应子题集合的数据
1635
                 List<EPaperStudentQuestion> qgstulist = null;
1650
                 List<EPaperStudentQuestion> qgstulist = null;
1666
                     if (tclassmap.containsKey(classid)) {
1681
                     if (tclassmap.containsKey(classid)) {
1667
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1682
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1668
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1683
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1669
-                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcscore));
1684
+                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getCscore(), qcscore));
1670
                     } else {
1685
                     } else {
1671
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1686
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1672
                         erClassScoreVo.setStunum(cstunum);
1687
                         erClassScoreVo.setStunum(cstunum);
1680
                             ERStudentComplexity sq = tstumap.get(q.getStudentid());
1695
                             ERStudentComplexity sq = tstumap.get(q.getStudentid());
1681
                             sq.setStuscore(ExamUtil.add(sq.getStuscore(), q.getStuscore()));
1696
                             sq.setStuscore(ExamUtil.add(sq.getStuscore(), q.getStuscore()));
1682
                         } else {
1697
                         } else {
1683
-                            ERStudentQtype sq = new ERStudentQtype();
1698
+                            ERStudentComplexity sq = new ERStudentComplexity();
1684
                             sq.setClassid(q.getClassid());
1699
                             sq.setClassid(q.getClassid());
1685
                             sq.setStudentid(q.getStudentid());
1700
                             sq.setStudentid(q.getStudentid());
1686
                             sq.setStuscore(q.getStuscore());
1701
                             sq.setStuscore(q.getStuscore());
1702
+                            tstumap.put(q.getStudentid(),sq);
1687
                         }
1703
                         }
1688
                     }
1704
                     }
1689
                 }
1705
                 }
1702
                 erc.setComplexity(complexity);
1718
                 erc.setComplexity(complexity);
1703
                 erc.setScore(score);
1719
                 erc.setScore(score);
1704
                 erc.setSrate(srate);
1720
                 erc.setSrate(srate);
1705
-                erc.setScore(tgstuscore);
1721
+                erc.setGradescore(tgstuscore);
1706
                 erc.setGradesrate(tgsrate);
1722
                 erc.setGradesrate(tgsrate);
1707
                 erc.setClassscore(erClassScoreVo.getStuscore());
1723
                 erc.setClassscore(erClassScoreVo.getStuscore());
1708
                 erc.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1724
                 erc.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));

+ 1
- 1
sexam/src/main/resources/mapper/paperstudent/EPaperStudentQuestionMapper.xml View File

132
 
132
 
133
     <!--报告生成-学生试卷-->
133
     <!--报告生成-学生试卷-->
134
     <select id="listExamStudentsAnswer" resultType="com.xhkjedu.sexam.model.paperstudent.EPaperStudentQuestion">
134
     <select id="listExamStudentsAnswer" resultType="com.xhkjedu.sexam.model.paperstudent.EPaperStudentQuestion">
135
-        select q.epsqid,q.classid,q.studentid,q.epid,q.eptqid,q.qn,q.answertype,q.stuanswer,q.qscore,q.stuscore,q.good,q.bad,u.username stuname
135
+        select q.epsqid,q.classid,q.studentid,q.epid,q.eptqid,q.ctype,q.qn,q.answertype,q.stuanswer,q.qscore,q.stuscore,q.good,q.bad,u.username stuname
136
         from e_paper_student_question q left join e_paper_student s on s.epsid=q.epsid
136
         from e_paper_student_question q left join e_paper_student s on s.epsid=q.epsid
137
         left join t_user u on q.studentid=u.userid where s.examid=#{examid} and s.sstate=2 group by q.epsqid
137
         left join t_user u on q.studentid=u.userid where s.examid=#{examid} and s.sstate=2 group by q.epsqid
138
     </select>
138
     </select>

Loading…
Cancel
Save