Browse Source

分析报告

tags/正式版本
王宁 2 years ago
parent
commit
74c85dc3c4

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

@@ -577,6 +577,17 @@ public class N_Utils {
577 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 591
     //两个double 类型相加
581 592
     public static Double getDoubleSum(Double value1,Double value2){
582 593
         BigDecimal b1 = new BigDecimal(Double.toString(value1));
@@ -1038,5 +1049,4 @@ public class N_Utils {
1038 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,6 +22,9 @@ public class ERclassQuestion extends BaseBean {
22 22
     //科目id
23 23
     private String subjectid;
24 24
 
25
+    //试卷id
26
+    private Integer epid;
27
+
25 28
     //试题主键id
26 29
     private Integer eptqid;
27 30
 
@@ -31,12 +34,6 @@ public class ERclassQuestion extends BaseBean {
31 34
     //试题排序
32 35
     private Integer qorder;
33 36
 
34
-    //班级试题得分
35
-    private Double qscore;
36
-
37
-    //试题难易度
38
-    private Integer complexity;
39
-
40 37
     //班级得分
41 38
     private Double classscore;
42 39
 

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

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

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

@@ -303,7 +303,7 @@ public class EReportGenerateService {
303 303
         }
304 304
         eRstudentMapper.insertList(classSubjectStudents);
305 305
 
306
-        setClassQuestion(examid, subjects, classes);//题型试题
306
+//        setClassQuestion(examid, subjects, classes);//题型试题
307 307
         setClassGradeRankAll(examid, papers, classSubjectStudents, createid);//班级等级分布
308 308
         setAction(examid, subjectMap);//行为分析
309 309
     }
@@ -973,6 +973,15 @@ public class EReportGenerateService {
973 973
         }
974 974
     }
975 975
 
976
+
977
+    @Transactional(rollbackFor = Exception.class)
978
+    public void saveClassQuestions(Integer examid){
979
+        List<Map> classes = eClassMapper.listByExamId(examid);
980
+        List<Map> subjects = eReportGenerateMapper.listSubject(examid);
981
+        setClassQuestion(examid,subjects,classes);
982
+
983
+    }
984
+
976 985
     //题型、试题、知识点
977 986
     private void setClassQuestion(Integer examid, List<Map> subjects, List<Map> classes) {
978 987
         //考试所有学生提交试卷作答情况
@@ -1003,17 +1012,17 @@ public class EReportGenerateService {
1003 1012
 
1004 1013
             if (ptype == 1) {
1005 1014
                 //处理题型下试题:题库显示题号时为母题的题号即order(qn是英语为顺延题号其他学科为母题号和子题排序拼接)
1006
-                String qtypejson = panalyze.get("qnumjson").toString();//原试卷题型分析
1015
+               /* String qtypejson = panalyze.get("qnumjson").toString();//原试卷题型分析
1007 1016
                 List<Map> qtypelist = JSON.parseArray(qtypejson, Map.class);
1008
-                setPaperQuestionTkQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);
1017
+                setPaperQuestionTkQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);*/
1009 1018
 
1010 1019
                 //处理知识点
1011 1020
                 setEPaperQuestionPoints(panalyze, paperstulist, rpointlist, stupointlist, examPaperClassVo);
1012 1021
 
1013 1022
                 //处理难易度
1014
-                String complexityjson = panalyze.get("complexityjson").toString();
1023
+               /* String complexityjson = panalyze.get("complexityjson").toString();
1015 1024
                 List<Map> complexitylist = JSON.parseArray(complexityjson, Map.class);
1016
-                setEPaperQuestionComplexitys(complexitylist, paperstulist, complist, stucomplist, examPaperClassVo);
1025
+                setEPaperQuestionComplexitys(complexitylist, paperstulist, complist, stucomplist, examPaperClassVo);*/
1017 1026
 
1018 1027
             } else {
1019 1028
                 //处理题型及题型下试题:附件显示题号为qn(order)作为排序使用
@@ -1022,11 +1031,11 @@ public class EReportGenerateService {
1022 1031
                 setPaperQuestionFjQtypes(qtypelist, paperstulist, rtypelist, rqueslist, stutypelist, examPaperClassVo);
1023 1032
             }
1024 1033
         }
1025
-        eRclassQtypeMapper.insertList(rtypelist);
1034
+        /*eRclassQtypeMapper.insertList(rtypelist);
1026 1035
         eRstudentQtypeMapper.insertList(stutypelist);
1027 1036
         eRclassQuestionMapper.insertList(rqueslist);
1028 1037
         eRclassComplexityMapper.insertList(complist);
1029
-        erStudentComplexityMapper.insertList(stucomplist);
1038
+        erStudentComplexityMapper.insertList(stucomplist);*/
1030 1039
         eRclassPointMapper.insertList(rpointlist);
1031 1040
         eRstudentPointMapper.insertList(stupointlist);
1032 1041
     }
@@ -1049,10 +1058,12 @@ public class EReportGenerateService {
1049 1058
             EPaperStudentQuestion sq = classStu.get(i);
1050 1059
             String stuanswer = sq.getStuanswer();
1051 1060
             if (q.getCtype() == 1 || q.getCtype() == 2 || q.getCtype() == 4 || q.getCtype() == 5 || q.getCtype() == 6) {
1052
-                String answeroption = "未选择";
1061
+                String answeroption = "未作答";
1053 1062
                 if (N_Utils.isNotEmpty(stuanswer)) {
1054 1063
                     List<String> stuanswers = JSON.parseArray(stuanswer, String.class);
1055
-                    answeroption = stuanswers.get(0);
1064
+                    if(N_Utils.isListNotEmpty(stuanswers)){
1065
+                        answeroption = stuanswers.get(0);
1066
+                    }
1056 1067
                 }
1057 1068
 
1058 1069
                 Map stumap = new HashMap();
@@ -1122,7 +1133,7 @@ public class EReportGenerateService {
1122 1133
         List<Map> classes = examPaperClassVo.getClasses();
1123 1134
         for (int k = 0; k < qtypelist.size(); k++) {
1124 1135
             Map qtypemap = qtypelist.get(k);
1125
-            String qtypename = qtypemap.get("qtypename").toString();
1136
+            String qtypename = qtypemap.get("qtname").toString();
1126 1137
             String qtypeid = qtypemap.get("qtid").toString();
1127 1138
             Double score = Double.parseDouble(qtypemap.get("score").toString());//题型下试题总分值
1128 1139
             Double srate = Double.parseDouble(qtypemap.get("srate").toString());//题型下试题分值占比
@@ -1159,7 +1170,7 @@ public class EReportGenerateService {
1159 1170
                     EPaperStudentQuestion qcmaxstu = qcstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1160 1171
                     Double qcscore = qcstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1161 1172
                     Double qcstuscore = qcstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1162
-                    Double qcavgscore = N_Utils.getDoubleDivideAndMulitiply(qcstuscore, cstunum);
1173
+                    Double qcavgscore = N_Utils.getDoubleDivideForAvg(qcstuscore, cstunum);
1163 1174
                     Double qcsrate = N_Utils.getDoubleDivideAndMulitiply(qcstuscore, qcscore);
1164 1175
 
1165 1176
                     //班级单题情况
@@ -1167,6 +1178,7 @@ public class EReportGenerateService {
1167 1178
                     ercq.setExamid(examPaperClassVo.getExamid());
1168 1179
                     ercq.setClassid(classid);
1169 1180
                     ercq.setSubjectid(examPaperClassVo.getSubjectid());
1181
+                    ercq.setEpid(examPaperClassVo.getEpid());
1170 1182
                     ercq.setEptqid(eptqid);
1171 1183
                     ercq.setQn(qns.get(q));
1172 1184
                     ercq.setQorder(orders.get(q));
@@ -1188,7 +1200,7 @@ public class EReportGenerateService {
1188 1200
                     if (tclassmap.containsKey(classid)) {
1189 1201
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1190 1202
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1191
-                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcscore));
1203
+                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getCscore(), qcscore));
1192 1204
                     } else {
1193 1205
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1194 1206
                         erClassScoreVo.setStunum(cstunum);
@@ -1206,12 +1218,13 @@ public class EReportGenerateService {
1206 1218
                             sq.setClassid(psq.getClassid());
1207 1219
                             sq.setStudentid(psq.getStudentid());
1208 1220
                             sq.setStuscore(psq.getStuscore());
1221
+                            tstumap.put(psq.getStudentid(),sq);
1209 1222
                         }
1210 1223
                     }
1211 1224
                 }
1212 1225
             }
1213 1226
 
1214
-            Double tgavgscore = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, gstunum);//题型下年级平均分
1227
+            Double tgavgscore = N_Utils.getDoubleDivideForAvg(tgstuscore, gstunum);//题型下年级平均分
1215 1228
             Double tgsrate = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, tgscore);//年级得分率
1216 1229
 
1217 1230
             //题型--班级得分
@@ -1230,8 +1243,8 @@ public class EReportGenerateService {
1230 1243
                 eRclassQtype.setGradescore(tgstuscore);
1231 1244
                 eRclassQtype.setGradeavgscore(tgavgscore);
1232 1245
                 eRclassQtype.setGradesrate(tgsrate);
1233
-                eRclassQtype.setClasssrate(erClassScoreVo.getStuscore());
1234
-                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1246
+                eRclassQtype.setClassscore(erClassScoreVo.getStuscore());
1247
+                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideForAvg(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1235 1248
                 eRclassQtype.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1236 1249
                 eRclassQtype.setQns(qns.stream().map(String::valueOf).collect(Collectors.joining(",")));
1237 1250
                 rtypelist.add(eRclassQtype);
@@ -1257,7 +1270,7 @@ public class EReportGenerateService {
1257 1270
         List<Map> classes = examPaperClassVo.getClasses();
1258 1271
         for (int k = 0; k < qtypelist.size(); k++) {
1259 1272
             Map qtypemap = qtypelist.get(k);
1260
-            String qtypename = qtypemap.get("qtypename").toString();
1273
+            String qtypename = qtypemap.get("qtname").toString();
1261 1274
             String qtypeid = qtypemap.get("qtid").toString();
1262 1275
             Double score = Double.parseDouble(qtypemap.get("score").toString());//题型下试题总分值
1263 1276
             Double srate = Double.parseDouble(qtypemap.get("srate").toString());//题型下试题分值占比
@@ -1277,7 +1290,7 @@ public class EReportGenerateService {
1277 1290
                 Integer qlevel = Integer.parseInt(quesmap.get("qlevel").toString());
1278 1291
                 String order = quesmap.get("order").toString();//试题母题题号
1279 1292
                 List<String> qnslist = (List<String>) quesmap.get("qns");
1280
-                qns = order + ",";
1293
+                qns = qns + order + ",";
1281 1294
 
1282 1295
                 //单题小题统计
1283 1296
                 for (int l = 0; l < eptqids.size(); l++) {
@@ -1286,7 +1299,7 @@ public class EReportGenerateService {
1286 1299
                     EPaperStudentQuestion sqgmaxstu = sqstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1287 1300
                     Double sqgstuscore = sqstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1288 1301
                     Double sqgscore = sqstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1289
-                    Double sqgavgscore = N_Utils.getDoubleDivideAndMulitiply(sqgstuscore, sqstulist.size());
1302
+                    Double sqgavgscore = N_Utils.getDoubleDivideForAvg(sqgstuscore, sqstulist.size());
1290 1303
                     Double sqgsrate = N_Utils.getDoubleDivideAndMulitiply(sqgstuscore, sqgscore);
1291 1304
 
1292 1305
                     for (Map classm : classes) {
@@ -1296,13 +1309,14 @@ public class EReportGenerateService {
1296 1309
                         EPaperStudentQuestion sqcmaxstu = sqcstulist.stream().max(Comparator.comparing(EPaperStudentQuestion::getStuscore)).get();
1297 1310
                         Double sqcscore = sqcstulist.stream().mapToDouble(EPaperStudentQuestion::getQscore).sum();
1298 1311
                         Double sqcstuscore = sqcstulist.stream().mapToDouble(EPaperStudentQuestion::getStuscore).sum();
1299
-                        Double qcavgscore = N_Utils.getDoubleDivideAndMulitiply(sqcstuscore, cstunum);
1312
+                        Double qcavgscore = N_Utils.getDoubleDivideForAvg(sqcstuscore, cstunum);
1300 1313
                         Double qcsrate = N_Utils.getDoubleDivideAndMulitiply(sqcstuscore, sqcscore);
1301 1314
                         //班级单题情况
1302 1315
                         ERclassQuestion ercq = new ERclassQuestion();
1303 1316
                         ercq.setExamid(examPaperClassVo.getExamid());
1304 1317
                         ercq.setClassid(classid);
1305 1318
                         ercq.setSubjectid(examPaperClassVo.getSubjectid());
1319
+                        ercq.setEpid(examPaperClassVo.getEpid());
1306 1320
                         ercq.setEptqid(eptqid);
1307 1321
                         ercq.setQn(qnslist.get(l));
1308 1322
                         ercq.setQorder(Integer.parseInt(order));
@@ -1376,7 +1390,7 @@ public class EReportGenerateService {
1376 1390
                     if (tclassmap.containsKey(classid)) {
1377 1391
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1378 1392
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1379
-                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcscore));
1393
+                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getCscore(), qcscore));
1380 1394
                     } else {
1381 1395
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1382 1396
                         erClassScoreVo.setStunum(cstunum);
@@ -1393,12 +1407,13 @@ public class EReportGenerateService {
1393 1407
                             sq.setClassid(psq.getClassid());
1394 1408
                             sq.setStudentid(psq.getStudentid());
1395 1409
                             sq.setStuscore(psq.getStuscore());
1410
+                            tstumap.put(psq.getStudentid(),sq);
1396 1411
                         }
1397 1412
                     }
1398 1413
                 }
1399 1414
             }
1400 1415
 
1401
-            Double tgavgscore = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, gstunum);//题型下年级平均分
1416
+            Double tgavgscore = N_Utils.getDoubleDivideForAvg(tgstuscore, gstunum);//题型下年级平均分
1402 1417
             Double tgsrate = N_Utils.getDoubleDivideAndMulitiply(tgstuscore, tgscore);//年级得分率
1403 1418
 
1404 1419
             //题型--班级得分
@@ -1415,10 +1430,11 @@ public class EReportGenerateService {
1415 1430
                 eRclassQtype.setNum(num);
1416 1431
                 eRclassQtype.setSrate(srate);
1417 1432
                 eRclassQtype.setScore(tgstuscore);
1433
+                eRclassQtype.setGradescore(tgstuscore);
1418 1434
                 eRclassQtype.setGradeavgscore(tgavgscore);
1419 1435
                 eRclassQtype.setGradesrate(tgsrate);
1420 1436
                 eRclassQtype.setClassscore(erClassScoreVo.getStuscore());
1421
-                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1437
+                eRclassQtype.setClassavgscore(N_Utils.getDoubleDivideForAvg(erClassScoreVo.getStuscore(), erClassScoreVo.getStunum()));
1422 1438
                 eRclassQtype.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));
1423 1439
                 eRclassQtype.setQns(qns.substring(0, qns.lastIndexOf(",")));
1424 1440
                 rtypelist.add(eRclassQtype);
@@ -1464,7 +1480,7 @@ public class EReportGenerateService {
1464 1480
                     //说明改题为复合体,获取所有子题
1465 1481
                     List<Integer> eptqids = qpoint.getEptqids();
1466 1482
                     List<EPaperStudentQuestion> stuqueslist = paperstulist.stream().filter(s ->eptqids.contains(s.getEptqid())).collect(Collectors.toList());
1467
-                    //根据每个学生分组获取每个学生题分值
1483
+                    //根据每个学生分组获取每个学生题分值
1468 1484
                     Map<Integer,List<EPaperStudentQuestion>> stuquesmap = stuqueslist.stream().collect(Collectors.groupingBy(EPaperStudentQuestion::getStudentid));
1469 1485
                     for(Map.Entry<Integer,List<EPaperStudentQuestion>> entry : stuquesmap.entrySet()){
1470 1486
                         List<EPaperStudentQuestion> stuques = entry.getValue();
@@ -1483,8 +1499,8 @@ public class EReportGenerateService {
1483 1499
             String pointname = map.get("pointname").toString();
1484 1500
             Double pointscore = Double.parseDouble(map.get("score").toString());
1485 1501
             Double pointrate = Double.parseDouble(map.get("srate").toString());
1486
-            List<QuestionOrderVo> qorders = (List<QuestionOrderVo>) map.get("ques");
1487
-            List<Integer> orders = qorders.stream().map(QuestionOrderVo::getOrder).collect(Collectors.toList());
1502
+            List<Map> qorders = (List<Map>) map.get("ques");
1503
+            List<Integer> orders = qorders.stream().map(s -> Integer.parseInt(s.get("order").toString())).collect(Collectors.toList());
1488 1504
             String orderstr = orders.stream().map(String::valueOf).collect(Collectors.joining(","));//试题
1489 1505
             //单个知识点学生得分情况:一个知识对应一个或多个试题,
1490 1506
             List<ERPointStuScoreVo> gradepointstulist = gradestulist.stream().filter(s -> s.getPointid().equals(pointid)).collect(Collectors.toList());
@@ -1494,25 +1510,24 @@ public class EReportGenerateService {
1494 1510
             for(Map.Entry<Integer,List<ERPointStuScoreVo>> entry : pointstuscoremap.entrySet()){
1495 1511
                 List<ERPointStuScoreVo> stuscorelist = entry.getValue();
1496 1512
                 Double stuscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1497
-                Double qscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1513
+//                Double qscore = stuscorelist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1498 1514
                 ERPointStuScoreVo sscorevo = stuscorelist.get(0);
1499 1515
                 sscorevo.setStuscore(stuscore);
1500
-                sscorevo.setScore(qscore);
1516
+//                sscorevo.setScore(qscore);
1501 1517
                 pointstuscorelist.add(sscorevo);
1502 1518
             }
1503 1519
 
1504 1520
             Double gstuscore = pointstuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1505
-            Double gscore = pointstuscorelist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1506
-            Double gavgscore = N_Utils.getDoubleDivideAndMulitiply(gstuscore,pointstuscorelist.size());
1507
-            Double gsrate = N_Utils.getDoubleDivideAndMulitiply(gstuscore,gscore);
1521
+            Double gavgscore = N_Utils.getDoubleDivideForAvg(gstuscore,pointstuscorelist.size());
1522
+            Double gsrate = N_Utils.getDoubleDivideAndMulitiply(gstuscore,pointscore * pointstuscorelist.size());
1508 1523
 
1509 1524
             for(Map classm : classes){
1510 1525
                 Integer classid = Integer.parseInt(classm.get("classid").toString());
1511 1526
                 List<ERPointStuScoreVo> classpointstulist = pointstuscorelist.stream().filter(s->s.getClassid().equals(classid)).collect(Collectors.toList());
1512 1527
                 Double cstuscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getStuscore).sum();
1513
-                Double cscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1514
-                Double cavgscore = N_Utils.getDoubleDivideAndMulitiply(cstuscore,classpointstulist.size());
1515
-                Double csrate = N_Utils.getDoubleDivideAndMulitiply(cstuscore,cscore);
1528
+//                Double cscore = classpointstulist.stream().mapToDouble(ERPointStuScoreVo::getScore).sum();
1529
+                Double cavgscore = N_Utils.getDoubleDivideForAvg(cstuscore,classpointstulist.size());
1530
+                Double csrate = N_Utils.getDoubleDivideAndMulitiply(cstuscore,pointscore * classpointstulist.size());
1516 1531
 
1517 1532
                 ERclassPoint eRclassPoint = new ERclassPoint();
1518 1533
                 eRclassPoint.setExamid(examPaperClassVo.getExamid());
@@ -1543,7 +1558,7 @@ public class EReportGenerateService {
1543 1558
                     erstupoint.setPointid(pointid);
1544 1559
                     erstupoint.setPointname(pointname);
1545 1560
                     erstupoint.setStuscore(stu.getStuscore());
1546
-                    erstupoint.setStusrate(N_Utils.getDoubleDivideAndMulitiply(stu.getStuscore(),stu.getScore()));
1561
+                    erstupoint.setStusrate(N_Utils.getDoubleDivideAndMulitiply(stu.getStuscore(),pointscore));
1547 1562
                     stupointlist.add(erstupoint);
1548 1563
                 }
1549 1564
             }
@@ -1561,8 +1576,8 @@ public class EReportGenerateService {
1561 1576
             pscvo.setClassid(sq.getClassid());
1562 1577
             pscvo.setStudentid(sq.getStudentid());
1563 1578
             pscvo.setStuscore(sq.getStuscore());
1564
-            pscvo.setScore(Double.parseDouble(pointmap.get("score").toString()));
1565
-            pscvo.setPointid(pointmap.get("pointid").toString());
1579
+            String pointid = pointmap.get("pointid").toString();
1580
+            pscvo.setPointid(pointid);
1566 1581
             gradestulist.add(pscvo);
1567 1582
         }else{
1568 1583
             //计算每个知识点所占分值(平均分配)
@@ -1572,8 +1587,8 @@ public class EReportGenerateService {
1572 1587
                 ERPointStuScoreVo pscvo = new ERPointStuScoreVo();
1573 1588
                 pscvo.setClassid(sq.getClassid());
1574 1589
                 pscvo.setStudentid(sq.getStudentid());
1575
-                pscvo.setScore(Double.parseDouble(pointmap.get("score").toString()));
1576
-                pscvo.setPointid(pointmap.get("pointid").toString());
1590
+                String pointid = pointmap.get("pointid").toString();
1591
+                pscvo.setPointid(pointid);
1577 1592
                 if(avgps.length == 2 && (j+1) == points.size()){
1578 1593
                     pscvo.setStuscore(avgps[1]);
1579 1594
                 }else{
@@ -1590,7 +1605,7 @@ public class EReportGenerateService {
1590 1605
                                               List<ERStudentComplexity> stucomplist, ExamPaperClassVo examPaperClassVo) {
1591 1606
         List<Map> classes = examPaperClassVo.getClasses();
1592 1607
         for (Map compmap : complexitylist) {
1593
-            Integer complexity = Integer.parseInt(compmap.get("complexity").toString());
1608
+            Integer complexity = Integer.parseInt(compmap.get("level").toString());
1594 1609
             Double score = Double.parseDouble(compmap.get("score").toString());//难易度下试题总分值
1595 1610
             Double srate = Double.parseDouble(compmap.get("srate").toString());//难易度下试题分值占比
1596 1611
             List<Map> queslist = (List<Map>) compmap.get("ques");//试题相关对象(数量为几个代表几个母题)
@@ -1605,7 +1620,7 @@ public class EReportGenerateService {
1605 1620
                 List<Integer> eptqids = (List<Integer>) quesmap.get("eptqids");
1606 1621
                 Integer qlevel = Integer.parseInt(quesmap.get("qlevel").toString());
1607 1622
                 String order = quesmap.get("order").toString();//试题母题题号
1608
-                qns = order + ",";
1623
+                qns = qns + order + ",";
1609 1624
 
1610 1625
                 //获取集合中对应子题集合的数据
1611 1626
                 List<EPaperStudentQuestion> qgstulist = null;
@@ -1642,7 +1657,7 @@ public class EReportGenerateService {
1642 1657
                     if (tclassmap.containsKey(classid)) {
1643 1658
                         ERClassScoreVo erClassScoreVo = tclassmap.get(classid);
1644 1659
                         erClassScoreVo.setStuscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcstuscore));
1645
-                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getStuscore(), qcscore));
1660
+                        erClassScoreVo.setCscore(ExamUtil.add(erClassScoreVo.getCscore(), qcscore));
1646 1661
                     } else {
1647 1662
                         ERClassScoreVo erClassScoreVo = new ERClassScoreVo();
1648 1663
                         erClassScoreVo.setStunum(cstunum);
@@ -1656,10 +1671,11 @@ public class EReportGenerateService {
1656 1671
                             ERStudentComplexity sq = tstumap.get(q.getStudentid());
1657 1672
                             sq.setStuscore(ExamUtil.add(sq.getStuscore(), q.getStuscore()));
1658 1673
                         } else {
1659
-                            ERStudentQtype sq = new ERStudentQtype();
1674
+                            ERStudentComplexity sq = new ERStudentComplexity();
1660 1675
                             sq.setClassid(q.getClassid());
1661 1676
                             sq.setStudentid(q.getStudentid());
1662 1677
                             sq.setStuscore(q.getStuscore());
1678
+                            tstumap.put(q.getStudentid(),sq);
1663 1679
                         }
1664 1680
                     }
1665 1681
                 }
@@ -1678,7 +1694,7 @@ public class EReportGenerateService {
1678 1694
                 erc.setComplexity(complexity);
1679 1695
                 erc.setScore(score);
1680 1696
                 erc.setSrate(srate);
1681
-                erc.setScore(tgstuscore);
1697
+                erc.setGradescore(tgstuscore);
1682 1698
                 erc.setGradesrate(tgsrate);
1683 1699
                 erc.setClassscore(erClassScoreVo.getStuscore());
1684 1700
                 erc.setClasssrate(N_Utils.getDoubleDivideAndMulitiply(erClassScoreVo.getStuscore(), erClassScoreVo.getCscore()));

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

@@ -132,7 +132,7 @@
132 132
 
133 133
     <!--报告生成-学生试卷-->
134 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 136
         from e_paper_student_question q left join e_paper_student s on s.epsid=q.epsid
137 137
         left join t_user u on q.studentid=u.userid where s.examid=#{examid} and s.sstate=2 group by q.epsqid
138 138
     </select>

Loading…
Cancel
Save