|
@@ -1,31 +1,5 @@
|
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
-import java.awt.*;
|
|
|
-import java.awt.color.ColorSpace;
|
|
|
-import java.awt.image.BufferedImage;
|
|
|
-import java.awt.image.ColorConvertOp;
|
|
|
-import java.io.*;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.net.URLEncoder;
|
|
|
-import java.nio.charset.StandardCharsets;
|
|
|
-import java.util.*;
|
|
|
-import java.util.List;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-import javax.annotation.Resource;
|
|
|
-import javax.imageio.ImageIO;
|
|
|
-import javax.servlet.ServletOutputStream;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-import javax.validation.constraints.NotNull;
|
|
|
-
|
|
|
-import org.apache.commons.collections4.CollectionUtils;
|
|
|
-import org.apache.commons.io.FilenameUtils;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.FileCopyUtils;
|
|
|
-
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -83,6 +57,31 @@ import com.qmth.teachcloud.mark.service.*;
|
|
|
import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
|
|
|
import com.qmth.teachcloud.mark.utils.Calculator;
|
|
|
import com.qmth.teachcloud.mark.utils.ScoreCalculateUtil;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.io.FilenameUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.FileCopyUtils;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.imageio.ImageIO;
|
|
|
+import javax.print.attribute.standard.Severity;
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.validation.constraints.NotNull;
|
|
|
+import java.awt.*;
|
|
|
+import java.awt.color.ColorSpace;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.awt.image.ColorConvertOp;
|
|
|
+import java.io.*;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -928,7 +927,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
String postUrl = "/api/admin/mark/archive/score/list";
|
|
|
DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), postUrl);
|
|
|
Page<ArchiveStudentVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
|
|
|
- IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, query, dpr);
|
|
|
+ IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, sysUser.getSchoolId(), query, dpr);
|
|
|
for (ArchiveStudentVo record : ret.getRecords()) {
|
|
|
List<String> list = new ArrayList<>();
|
|
|
List<FilePathVo> vos = JSON.parseArray(StringUtils.trimToNull(record.getSheetPath()), FilePathVo.class);
|
|
@@ -945,6 +944,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
|
|
|
@Override
|
|
|
public void scoreExport(ArchiveStudentQuery query, HttpServletResponse response) {
|
|
|
+ Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
//生成表头
|
|
|
String[] columnName = new String[]{"学生姓名", "学号", "学院", "班级", "课程代码", "课程名称", "客观分", "主观分",
|
|
|
"成绩"};
|
|
@@ -961,7 +961,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
String[] columnNames = columnNameList.toArray(new String[0]);
|
|
|
//生成动态内容
|
|
|
List<String[]> columnValues = new ArrayList<>();
|
|
|
- List<ArchiveStudentVo> ret = baseMapper.studentList(query, null);
|
|
|
+ List<ArchiveStudentVo> ret = baseMapper.studentList(schoolId, query, null);
|
|
|
for (ArchiveStudentVo s : ret) {
|
|
|
List<String> valueList = new ArrayList<>();
|
|
|
valueList.add(s.getStudentName());
|
|
@@ -1001,9 +1001,12 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
|
|
|
@Override
|
|
|
public ScoreReportVo scoreReport(ArchiveStudentQuery query) {
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
+ String postUrl = "/api/admin/mark/archive/score/list";
|
|
|
+ DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), postUrl);
|
|
|
ScoreReportVo ret = new ScoreReportVo();
|
|
|
- ret.setOverview(baseMapper.overview(query));
|
|
|
- if (ret.getOverview() != null) {
|
|
|
+ ret.setOverview(baseMapper.overview(sysUser.getSchoolId(), query, dpr));
|
|
|
+ if (ret.getOverview() != null && ret.getOverview().getStudentCount() > 0) {
|
|
|
double total = ret.getOverview().getStudentCount() - ret.getOverview().getAbsentCount();
|
|
|
ret.getOverview().setPassRate(
|
|
|
Calculator.divide2String(Calculator.multiply(ret.getOverview().getPassCount(), 100), total, 2));
|
|
@@ -1011,10 +1014,10 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
.divide2String(Calculator.multiply(ret.getOverview().getExcellentCount(), 100), total, 2));
|
|
|
ret.getOverview().setAvgScore(Calculator.round(ret.getOverview().getAvgScore(), 2));
|
|
|
}
|
|
|
- List<ArchiveStudentVo> studentList = baseMapper.studentList(query, null);
|
|
|
+ List<ArchiveStudentVo> studentList = baseMapper.studentList(sysUser.getSchoolId(), query, dpr);
|
|
|
fillScoreRange(ret, studentList);
|
|
|
|
|
|
- ret.setCollege(baseMapper.college(query));
|
|
|
+ ret.setCollege(baseMapper.college(sysUser.getSchoolId(), query, dpr));
|
|
|
if (CollectionUtils.isNotEmpty(ret.getCollege())) {
|
|
|
for (CollegeVo vo : ret.getCollege()) {
|
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -1027,7 +1030,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ret.setClassData(baseMapper.classData(query));
|
|
|
+ ret.setClassData(baseMapper.classData(sysUser.getSchoolId(), query, dpr));
|
|
|
if (CollectionUtils.isNotEmpty(ret.getClassData())) {
|
|
|
for (ClassVo vo : ret.getClassData()) {
|
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -1040,7 +1043,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ret.setTeacher(baseMapper.teacher(query));
|
|
|
+ ret.setTeacher(baseMapper.teacher(sysUser.getSchoolId(), query, dpr));
|
|
|
if (CollectionUtils.isNotEmpty(ret.getTeacher())) {
|
|
|
for (TeacherVo vo : ret.getTeacher()) {
|
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -1053,7 +1056,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ret.setTeacherClass(baseMapper.teacherClass(query));
|
|
|
+ ret.setTeacherClass(baseMapper.teacherClass(sysUser.getSchoolId(), query, dpr));
|
|
|
if (CollectionUtils.isNotEmpty(ret.getTeacherClass())) {
|
|
|
for (TeacherClassVo vo : ret.getTeacherClass()) {
|
|
|
double total = vo.getStudentCount() - vo.getAbsentCount();
|
|
@@ -1299,28 +1302,31 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
}
|
|
|
|
|
|
private void fillScoreRange(ScoreReportVo ret, List<ArchiveStudentVo> list) {
|
|
|
+ if(CollectionUtils.isEmpty(list)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
List<ScoreRangeVo> scoreRange = new ArrayList<>();
|
|
|
ret.setScoreRange(scoreRange);
|
|
|
int total = ret.getOverview().getStudentCount() - ret.getOverview().getAbsentCount();
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 1.0, 9.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 10.0, 19.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 20.0, 29.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 30.0, 39.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 40.0, 49.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 50.0, 59.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 60.0, 69.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 70.0, 79.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 80.0, 89.5));
|
|
|
- scoreRange.add(getScoreRangeVo(total,list, 90.0, 100.0));
|
|
|
- }
|
|
|
-
|
|
|
- private ScoreRangeVo getScoreRangeVo(int totalCount,List<ArchiveStudentVo> list, Double start, Double end) {
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 1.0, 9.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 10.0, 19.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 20.0, 29.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 30.0, 39.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 40.0, 49.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 50.0, 59.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 60.0, 69.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 70.0, 79.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 80.0, 89.5));
|
|
|
+ scoreRange.add(getScoreRangeVo(total, list, 90.0, 100.0));
|
|
|
+ }
|
|
|
+
|
|
|
+ private ScoreRangeVo getScoreRangeVo(int totalCount, List<ArchiveStudentVo> list, Double start, Double end) {
|
|
|
int count = (int) list.stream().filter(s -> s.getTotalScore() >= start && s.getTotalScore() <= end).count();
|
|
|
Double rate = null;
|
|
|
if (list.size() != 0) {
|
|
|
rate = Calculator.divide(count, totalCount, 2);
|
|
|
}
|
|
|
- ScoreRangeVo vo = new ScoreRangeVo(count, start, end, rate*100);
|
|
|
+ ScoreRangeVo vo = new ScoreRangeVo(count, start, end, rate * 100);
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
@@ -1554,7 +1560,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
BasicTeachClazz basicTeachClazz = this.baseMapper.getBasicTeachClazzById(basicExamStudent.getClazzId());
|
|
|
SysUser sysUser = sysUserService.getById(basicExamStudent.getTeacherId());
|
|
|
if (markStudent == null) {
|
|
|
- markStudent = new MarkStudent(basicExamStudent.getId(), basicExamStudent.getExamId(), basicExamStudent.getCourseCode(), basicCourse == null ? null : basicCourse.getName(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), "A", basicExamStudent.getStudentCode(), basicExamStudent.getStudentName(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getCollege(), basicExamStudent.getMajor(), basicTeachClazz == null ? null : basicTeachClazz.getClazzName(),basicExamStudent.getTeacherId(), sysUser == null ? null : sysUser.getRealName(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
|
|
|
+ markStudent = new MarkStudent(basicExamStudent.getId(), basicExamStudent.getExamId(), basicExamStudent.getCourseCode(), basicCourse == null ? null : basicCourse.getName(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), "A", basicExamStudent.getStudentCode(), basicExamStudent.getStudentName(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getCollege(), basicExamStudent.getMajor(), basicTeachClazz == null ? null : basicTeachClazz.getClazzName(), basicExamStudent.getTeacherId(), sysUser == null ? null : sysUser.getRealName(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
|
|
|
if (markStudent.getSecretNumber() == null) {
|
|
|
markStudent.randomSecretNumber();
|
|
|
while (secretNumberSet.contains(markStudent.getSecretNumber())
|