|
@@ -41,6 +41,7 @@ import com.qmth.teachcloud.mark.bean.UpdateTimeVo;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentQuery;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentQuery;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentVo;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentVo;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ScanPaperPageVo;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ScanPaperPageVo;
|
|
|
|
+import com.qmth.teachcloud.mark.bean.archivescore.ScoreRangeVo;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ScoreReportVo;
|
|
import com.qmth.teachcloud.mark.bean.archivescore.ScoreReportVo;
|
|
import com.qmth.teachcloud.mark.bean.omredit.OmrEditDomain;
|
|
import com.qmth.teachcloud.mark.bean.omredit.OmrEditDomain;
|
|
import com.qmth.teachcloud.mark.bean.omredit.OmrEditPaper;
|
|
import com.qmth.teachcloud.mark.bean.omredit.OmrEditPaper;
|
|
@@ -89,6 +90,7 @@ import com.qmth.teachcloud.mark.service.ScanPaperService;
|
|
import com.qmth.teachcloud.mark.service.ScanStudentPaperService;
|
|
import com.qmth.teachcloud.mark.service.ScanStudentPaperService;
|
|
import com.qmth.teachcloud.mark.service.TaskService;
|
|
import com.qmth.teachcloud.mark.service.TaskService;
|
|
import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
|
|
import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
|
|
|
|
+import com.qmth.teachcloud.mark.utils.Calculator;
|
|
import com.qmth.teachcloud.mark.utils.ScoreCalculateUtil;
|
|
import com.qmth.teachcloud.mark.utils.ScoreCalculateUtil;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -804,7 +806,53 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public ScoreReportVo scoreReport(Long examId, String paperNumber) {
|
|
public ScoreReportVo scoreReport(Long examId, String paperNumber) {
|
|
- // TODO Auto-generated method stub
|
|
|
|
- return null;
|
|
|
|
|
|
+ ScoreReportVo ret=new ScoreReportVo();
|
|
|
|
+ ret.setOverview(baseMapper.overview(examId,paperNumber));
|
|
|
|
+ if(ret.getOverview()!=null) {
|
|
|
|
+ double total=ret.getOverview().getStudentCount()-ret.getOverview().getAbsentCount();
|
|
|
|
+ ret.getOverview().setPassRate(Calculator.divide2String(Calculator.multiply(ret.getOverview().getPassCount(), 100),total, 2)+"%");
|
|
|
|
+ ret.getOverview().setExcellentRate(Calculator.divide2String(Calculator.multiply(ret.getOverview().getExcellentCount(), 100),total, 2)+"%");
|
|
|
|
+ }
|
|
|
|
+ fillScoreRange(ret, examId, paperNumber);
|
|
|
|
+ ret.setOverview(baseMapper.overview(examId,paperNumber));
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillScoreRange(ScoreReportVo ret,Long examId, String paperNumber) {
|
|
|
|
+ int toltal=getCountByPaperNumber(examId, paperNumber);
|
|
|
|
+ List<ScoreRangeVo> scoreRange=new ArrayList<>();
|
|
|
|
+ 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));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private ScoreRangeVo getScoreRangeVo(int toltal,Long examId, String paperNumber,Double start,Double end) {
|
|
|
|
+ int count=getCount(examId, paperNumber, start, end);
|
|
|
|
+ Double rate=null;
|
|
|
|
+ if(toltal!=0) {
|
|
|
|
+ rate=Calculator.multiply(count, toltal, 2);
|
|
|
|
+ }
|
|
|
|
+ ScoreRangeVo vo=new ScoreRangeVo(count, start, end, rate);
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private int getCountByPaperNumber(Long examId, String paperNumber) {
|
|
|
|
+ QueryWrapper<MarkStudent> wrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<MarkStudent> lw = wrapper.lambda();
|
|
|
|
+ lw.eq(MarkStudent::getExamId, examId);
|
|
|
|
+ lw.eq(MarkStudent::getPaperNumber, paperNumber);
|
|
|
|
+ return this.count(wrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private int getCount(Long examId, String paperNumber,Double start,Double end) {
|
|
|
|
+ return baseMapper.getCountByScoreRange(examId,paperNumber,start,end);
|
|
}
|
|
}
|
|
}
|
|
}
|