|
@@ -898,7 +898,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
"成绩"};
|
|
"成绩"};
|
|
List<MarkQuestion> oQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(query.getExamId(), query.getPaperNumber(), null, true);
|
|
List<MarkQuestion> oQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(query.getExamId(), query.getPaperNumber(), null, true);
|
|
List<MarkQuestion> sQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(query.getExamId(), query.getPaperNumber(), null, false);
|
|
List<MarkQuestion> sQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(query.getExamId(), query.getPaperNumber(), null, false);
|
|
- List<String> columnNameList = Arrays.asList(columnName);
|
|
|
|
|
|
+ List<String> columnNameList = new ArrayList<>(Arrays.asList(columnName));
|
|
for (MarkQuestion question : oQuestionList) {
|
|
for (MarkQuestion question : oQuestionList) {
|
|
columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "得分");
|
|
columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "得分");
|
|
@@ -918,17 +918,17 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
valueList.add(s.getClassName());
|
|
valueList.add(s.getClassName());
|
|
valueList.add(s.getCourseCode());
|
|
valueList.add(s.getCourseCode());
|
|
valueList.add(s.getCourseName());
|
|
valueList.add(s.getCourseName());
|
|
- valueList.add(s.getObjectiveScore().toString());
|
|
|
|
- valueList.add(s.getSubjectiveScore().toString());
|
|
|
|
- valueList.add(s.getTotalScore().toString());
|
|
|
|
- for (ScoreItem item : s.getScoreList(true)) {
|
|
|
|
|
|
+ valueList.add(s.getObjectiveScore()==null?"":s.getObjectiveScore().toString());
|
|
|
|
+ valueList.add(s.getSubjectiveScore()==null?"":s.getSubjectiveScore().toString());
|
|
|
|
+ valueList.add(s.getTotalScore()==null?"":s.getTotalScore().toString());
|
|
|
|
+ for (ScoreItem item : s.getScoreList(true,oQuestionList)) {
|
|
valueList.add(item.getAnswer());
|
|
valueList.add(item.getAnswer());
|
|
- valueList.add(item.getScore().toString());
|
|
|
|
|
|
+ valueList.add(item.getScore()==null?"":item.getScore().toString());
|
|
}
|
|
}
|
|
- for (ScoreItem item : s.getScoreList(false)) {
|
|
|
|
|
|
+ for (ScoreItem item : s.getScoreList(false,sQuestionList)) {
|
|
valueList.add(item.getScore().toString());
|
|
valueList.add(item.getScore().toString());
|
|
}
|
|
}
|
|
- String[] columnValue = valueList.toArray(new String[0]);
|
|
|
|
|
|
+ String[] columnValue = valueList.toArray(new String[valueList.size()]);
|
|
columnValues.add(columnValue);
|
|
columnValues.add(columnValue);
|
|
}
|
|
}
|
|
try {
|
|
try {
|
|
@@ -948,9 +948,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public ScoreReportVo scoreReport(Long examId, String paperNumber) {
|
|
|
|
|
|
+ public ScoreReportVo scoreReport(ArchiveStudentQuery query) {
|
|
ScoreReportVo ret = new ScoreReportVo();
|
|
ScoreReportVo ret = new ScoreReportVo();
|
|
- ret.setOverview(baseMapper.overview(examId, paperNumber));
|
|
|
|
|
|
+ ret.setOverview(baseMapper.overview(query));
|
|
if (ret.getOverview() != null) {
|
|
if (ret.getOverview() != null) {
|
|
double total = ret.getOverview().getStudentCount() - ret.getOverview().getAbsentCount();
|
|
double total = ret.getOverview().getStudentCount() - ret.getOverview().getAbsentCount();
|
|
ret.getOverview().setPassRate(
|
|
ret.getOverview().setPassRate(
|
|
@@ -959,10 +959,10 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
.divide2String(Calculator.multiply(ret.getOverview().getExcellentCount(), 100), total, 2));
|
|
.divide2String(Calculator.multiply(ret.getOverview().getExcellentCount(), 100), total, 2));
|
|
ret.getOverview().setAvgScore(Calculator.round(ret.getOverview().getAvgScore(), 2));
|
|
ret.getOverview().setAvgScore(Calculator.round(ret.getOverview().getAvgScore(), 2));
|
|
}
|
|
}
|
|
|
|
+ List<ArchiveStudentVo> studentList= baseMapper.studentList(query);
|
|
|
|
+ fillScoreRange(ret, studentList);
|
|
|
|
|
|
- fillScoreRange(ret, examId, paperNumber);
|
|
|
|
-
|
|
|
|
- ret.setCollege(baseMapper.college(examId, paperNumber));
|
|
|
|
|
|
+ ret.setCollege(baseMapper.college(query));
|
|
if (CollectionUtils.isNotEmpty(ret.getCollege())) {
|
|
if (CollectionUtils.isNotEmpty(ret.getCollege())) {
|
|
for (CollegeVo vo : ret.getCollege()) {
|
|
for (CollegeVo vo : ret.getCollege()) {
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -975,7 +975,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- ret.setClassData(baseMapper.classData(examId, paperNumber));
|
|
|
|
|
|
+ ret.setClassData(baseMapper.classData(query));
|
|
if (CollectionUtils.isNotEmpty(ret.getClassData())) {
|
|
if (CollectionUtils.isNotEmpty(ret.getClassData())) {
|
|
for (ClassVo vo : ret.getClassData()) {
|
|
for (ClassVo vo : ret.getClassData()) {
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -988,7 +988,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- ret.setTeacher(baseMapper.teacher(examId, paperNumber));
|
|
|
|
|
|
+ ret.setTeacher(baseMapper.teacher(query));
|
|
if (CollectionUtils.isNotEmpty(ret.getTeacher())) {
|
|
if (CollectionUtils.isNotEmpty(ret.getTeacher())) {
|
|
for (TeacherVo vo : ret.getTeacher()) {
|
|
for (TeacherVo vo : ret.getTeacher()) {
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -1001,7 +1001,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- ret.setTeacherClass(baseMapper.teacherClass(examId, paperNumber));
|
|
|
|
|
|
+ ret.setTeacherClass(baseMapper.teacherClass(query));
|
|
if (CollectionUtils.isNotEmpty(ret.getTeacherClass())) {
|
|
if (CollectionUtils.isNotEmpty(ret.getTeacherClass())) {
|
|
for (TeacherClassVo vo : ret.getTeacherClass()) {
|
|
for (TeacherClassVo vo : ret.getTeacherClass()) {
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -1012,9 +1012,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- fillObjective(ret, examId, paperNumber);
|
|
|
|
-
|
|
|
|
- ret.setSubjective(markSubjectiveScoreService.getSubjectiveVo(examId, paperNumber));
|
|
|
|
|
|
+ fillObjective(ret, studentList,query.getExamId(),query.getPaperNumber());
|
|
|
|
+ List<Long> studentIds = studentList.stream().map(ArchiveStudentVo::getStudentId).collect(Collectors.toList());
|
|
|
|
+ ret.setSubjective(markSubjectiveScoreService.getSubjectiveVo(studentIds));
|
|
if (CollectionUtils.isNotEmpty(ret.getSubjective())) {
|
|
if (CollectionUtils.isNotEmpty(ret.getSubjective())) {
|
|
for (QuestionVo vo : ret.getSubjective()) {
|
|
for (QuestionVo vo : ret.getSubjective()) {
|
|
double total = vo.getStudentCount();
|
|
double total = vo.getStudentCount();
|
|
@@ -1168,12 +1168,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
return this.update(updateWrapper);
|
|
return this.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
- private void fillObjective(ScoreReportVo ret, Long examId, String paperNumber) {
|
|
|
|
|
|
+ private void fillObjective(ScoreReportVo ret, List<ArchiveStudentVo> studentList,Long examId, String paperNumber) {
|
|
List<MarkQuestion> qs = markQuestionService.listByExamIdAndPaperNumberAndPaperType(examId, paperNumber, null, true);
|
|
List<MarkQuestion> qs = markQuestionService.listByExamIdAndPaperNumberAndPaperType(examId, paperNumber, null, true);
|
|
- List<MarkStudent> students = listByExamIdAndPaperNumberAndNotAbsent(examId, paperNumber);
|
|
|
|
Map<String, QuestionVo> map = new HashMap<>();
|
|
Map<String, QuestionVo> map = new HashMap<>();
|
|
List<QuestionVo> list = new ArrayList<>();
|
|
List<QuestionVo> list = new ArrayList<>();
|
|
- for (MarkStudent s : students) {
|
|
|
|
|
|
+ for (ArchiveStudentVo s : studentList) {
|
|
List<ScoreItem> sis = s.getScoreList(true, qs);
|
|
List<ScoreItem> sis = s.getScoreList(true, qs);
|
|
if (CollectionUtils.isNotEmpty(sis)) {
|
|
if (CollectionUtils.isNotEmpty(sis)) {
|
|
for (ScoreItem si : sis) {
|
|
for (ScoreItem si : sis) {
|
|
@@ -1247,27 +1246,26 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
return this.list(wrapper);
|
|
return this.list(wrapper);
|
|
}
|
|
}
|
|
|
|
|
|
- private void fillScoreRange(ScoreReportVo ret, Long examId, String paperNumber) {
|
|
|
|
- int toltal = getCountByPaperNumber(examId, paperNumber);
|
|
|
|
|
|
+ private void fillScoreRange(ScoreReportVo ret, List<ArchiveStudentVo> list ) {
|
|
List<ScoreRangeVo> scoreRange = new ArrayList<>();
|
|
List<ScoreRangeVo> scoreRange = new ArrayList<>();
|
|
ret.setScoreRange(scoreRange);
|
|
ret.setScoreRange(scoreRange);
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 1.0, 9.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 10.0, 19.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 20.0, 29.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 30.0, 39.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 40.0, 49.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 50.0, 59.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 60.0, 69.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 70.0, 79.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 80.0, 89.5));
|
|
|
|
- scoreRange.add(getScoreRangeVo(toltal, examId, paperNumber, 90.0, 100.0));
|
|
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 1.0, 9.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 10.0, 19.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 20.0, 29.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 30.0, 39.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 40.0, 49.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 50.0, 59.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 60.0, 69.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 70.0, 79.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 80.0, 89.5));
|
|
|
|
+ scoreRange.add(getScoreRangeVo( list, 90.0, 100.0));
|
|
}
|
|
}
|
|
|
|
|
|
- private ScoreRangeVo getScoreRangeVo(int toltal, Long examId, String paperNumber, Double start, Double end) {
|
|
|
|
- int count = getCount(examId, paperNumber, start, end);
|
|
|
|
|
|
+ private ScoreRangeVo getScoreRangeVo(List<ArchiveStudentVo> list, Double start, Double end) {
|
|
|
|
+ int count = (int) list.stream().filter(s-> s.getTotalScore()>=start && s.getTotalScore()<=end).count();
|
|
Double rate = null;
|
|
Double rate = null;
|
|
- if (toltal != 0) {
|
|
|
|
- rate = Calculator.multiply(count, toltal, 2);
|
|
|
|
|
|
+ if (list.size() != 0) {
|
|
|
|
+ rate = Calculator.multiply(count, list.size(), 2);
|
|
}
|
|
}
|
|
ScoreRangeVo vo = new ScoreRangeVo(count, start, end, rate);
|
|
ScoreRangeVo vo = new ScoreRangeVo(count, start, end, rate);
|
|
return vo;
|
|
return vo;
|
|
@@ -1281,10 +1279,6 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
return this.count(wrapper);
|
|
return this.count(wrapper);
|
|
}
|
|
}
|
|
|
|
|
|
- private int getCount(Long examId, String paperNumber, Double start, Double end) {
|
|
|
|
- return baseMapper.getCountByScoreRange(examId, paperNumber, start, end);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public int getAssignedCount(Long examId, Boolean checked, String courseCode, String coursePaperId,
|
|
public int getAssignedCount(Long examId, Boolean checked, String courseCode, String coursePaperId,
|
|
MarkPaperStatus status, DataPermissionRule dpr) {
|
|
MarkPaperStatus status, DataPermissionRule dpr) {
|