Przeglądaj źródła

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

tags/正式版本
雍文秀 2 lat temu
rodzic
commit
c729f341cc

+ 11
- 1
scommons/src/main/java/com/xhkjedu/utils/N_Utils.java Wyświetl plik

@@ -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 Wyświetl plik

@@ -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 Wyświetl plik

@@ -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 Wyświetl plik

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

+ 1
- 1
sexam/src/main/resources/mapper/paperstudent/EPaperStudentQuestionMapper.xml Wyświetl plik

@@ -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>

Ładowanie…
Anuluj
Zapisz