|
@@ -136,8 +136,12 @@ public class MakrerApi {
|
|
|
MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
|
|
|
List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
|
|
|
Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
|
|
|
-// Long batchNo = paperRepo.findByQuestionId(questionId);
|
|
|
- Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
|
|
|
+ Integer levelShowAllPaper = ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper();
|
|
|
+ Long batchNo = null;
|
|
|
+ if(levelShowAllPaper == 0){
|
|
|
+ batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
|
|
|
+ }
|
|
|
+ Long finalBatchNo = batchNo;
|
|
|
Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
|
|
|
|
|
|
@Override
|
|
@@ -145,10 +149,10 @@ public class MakrerApi {
|
|
|
Map<String, Long> map = new HashMap<>();
|
|
|
//当前老师当前批次试卷总数
|
|
|
long kdtotal;
|
|
|
- if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
|
|
|
+ if (levelShowAllPaper == 1) {
|
|
|
kdtotal = markTaskRepo.countByQuestionIdAll(questionId, marker.getId());
|
|
|
} else {
|
|
|
- kdtotal = markTaskRepo.countByQuestionId(questionId, batchNo, marker.getId());
|
|
|
+ kdtotal = markTaskRepo.countByQuestionIdAndBatchNo(questionId, finalBatchNo, marker.getId());
|
|
|
}
|
|
|
//当前考区内试卷总数
|
|
|
long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
|
|
@@ -158,25 +162,25 @@ public class MakrerApi {
|
|
|
}
|
|
|
});
|
|
|
//当前考区各档位定档数量
|
|
|
- paperRepo.countGroupByLevel(questionId)
|
|
|
- .forEach(o -> {
|
|
|
- LevelStatDTO levelStatDTO = levelStatAssembler.toDTO(o);
|
|
|
- levelStatDTO.setGcount(levelStatDTO.getCount());
|
|
|
- if (Objects.isNull(levelStatDTO.getId())) {
|
|
|
- //求任务数为null的条数
|
|
|
- int count;
|
|
|
- if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
|
|
|
- count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultIsNullAndIsMissingAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false);
|
|
|
- } else {
|
|
|
- count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultIsNullAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false, batchNo);
|
|
|
- }
|
|
|
- //查询当前老师打回个数
|
|
|
- int rejectCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false);
|
|
|
- levelStatDTO.setCount(count);
|
|
|
- levelStatDTO.setRejected(rejectCount);
|
|
|
- }
|
|
|
- levelStatDTOs.add(levelStatDTO);
|
|
|
- });
|
|
|
+ List<Object[]> list = paperRepo.countGroupByLevel(questionId);
|
|
|
+ list.forEach(o -> {
|
|
|
+ LevelStatDTO levelStatDTO = levelStatAssembler.toDTO(o);
|
|
|
+ levelStatDTO.setGcount(levelStatDTO.getCount());
|
|
|
+ if (Objects.isNull(levelStatDTO.getId())) {
|
|
|
+ //求任务数为null的条数
|
|
|
+ int count;
|
|
|
+ if (levelShowAllPaper == 1) {
|
|
|
+ count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultIsNullAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal());
|
|
|
+ } else {
|
|
|
+ count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultNull(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), finalBatchNo);
|
|
|
+ }
|
|
|
+ //查询当前老师打回个数
|
|
|
+ int rejectCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrue(questionId, marker.getId(), MarkStage.LEVEL.ordinal());
|
|
|
+ levelStatDTO.setCount(count);
|
|
|
+ levelStatDTO.setRejected(rejectCount);
|
|
|
+ }
|
|
|
+ levelStatDTOs.add(levelStatDTO);
|
|
|
+ });
|
|
|
for (Level level : levels) {
|
|
|
//所有档位依次比较
|
|
|
long count = levelStatDTOs.stream().filter(l -> String.valueOf(l.getId()).equals(level.getCode())).count();
|
|
@@ -185,15 +189,119 @@ public class MakrerApi {
|
|
|
dto.setId(level.getCode());
|
|
|
dto.setCount(0);
|
|
|
dto.setPercent(0.0);
|
|
|
+ levelStatDTOs.add(dto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long kdtotal = 0L, total = 0L;
|
|
|
+ if (Objects.nonNull(future) && Objects.nonNull(future.get())) {
|
|
|
+ Map<String, Long> map = (Map<String, Long>) future.get();
|
|
|
+ kdtotal = map.get("kdtotal");
|
|
|
+ total = map.get("total");
|
|
|
+ }
|
|
|
|
|
|
- //当前老师当前档位评档次数(所有考试)
|
|
|
-// int countNew;
|
|
|
-// if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
|
|
|
-//// countNew = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissingAll(questionId, MarkStage.LEVEL.ordinal(), level.getCode(), false, marker.getId());
|
|
|
-// } else {
|
|
|
-// countNew = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissing(questionId, MarkStage.LEVEL.ordinal(), level.getCode(), false, batchNo, marker.getId());
|
|
|
-// }
|
|
|
-// dto.setCount(countNew);
|
|
|
+ long finalKdtotal = kdtotal;
|
|
|
+ long finalTotal = total;
|
|
|
+ levelStatDTOs.forEach(o -> {
|
|
|
+ if (o.getId() != null) {
|
|
|
+ //当前老师各档位数量
|
|
|
+ int countNew;
|
|
|
+ if (levelShowAllPaper == 1) {
|
|
|
+ countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()));
|
|
|
+ } else {
|
|
|
+ countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()), finalBatchNo);
|
|
|
+ }
|
|
|
+ o.setCount(countNew);
|
|
|
+ //该档位考区内已定档数量
|
|
|
+ long gcountNew = paperRepo.countByQuestionIdAndLevelAndSubjectAndWorkId(questionId, String.valueOf(o.getId()), markSubject.getSubject(), marker.getWorkId()); o.setGcount((int) gcountNew);
|
|
|
+ o.setGcount((int) gcountNew);
|
|
|
+
|
|
|
+ o.setPt(levelMap.get(o.getId()).getPt());
|
|
|
+ o.setKdpt(levelMap.get(o.getId()).getKdpt());
|
|
|
+ double p = finalKdtotal == 0 ? 0 : (double) o.getCount() / finalKdtotal * 100;
|
|
|
+ BigDecimal bd = new BigDecimal(p).setScale(3, RoundingMode.HALF_EVEN);
|
|
|
+ o.setPercent(bd.doubleValue());
|
|
|
+
|
|
|
+ o.setGcount(Objects.isNull(o.getGcount()) ? 0 : o.getGcount());
|
|
|
+ double gp = finalTotal == 0 ? 0 : (double) o.getGcount() / finalTotal * 100;
|
|
|
+ BigDecimal gbd = new BigDecimal(gp).setScale(3, RoundingMode.HALF_EVEN);
|
|
|
+ o.setGpercent(gbd.doubleValue());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Collections.sort(levelStatDTOs, (o1, o2) -> {
|
|
|
+ if (o1.getId() == null || o2.getId() == null) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ return o1.getId().toString().compareTo(o2.getId().toString());
|
|
|
+ });
|
|
|
+ return levelStatDTOs;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 评卷员分档数量及占比数据
|
|
|
+ *
|
|
|
+ * @param marker 评卷员用户id
|
|
|
+ * @param questionId 试题id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "{marker}/stat/totalLevels", method = RequestMethod.GET)
|
|
|
+ public List<LevelStatDTO> totalLevels(@PathVariable MarkUser marker, @RequestParam Long questionId) throws Exception {
|
|
|
+ List<LevelStatDTO> levelStatDTOs = new ArrayList<>();
|
|
|
+ MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
|
|
|
+ List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
|
|
|
+ Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
|
|
|
+ Integer levelShowAllPaper = ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper();
|
|
|
+ Long batchNo = null;
|
|
|
+ if(levelShowAllPaper == 0){
|
|
|
+ batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
|
|
|
+ }
|
|
|
+ Long finalBatchNo = batchNo;
|
|
|
+ Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
|
|
|
+ @Override
|
|
|
+ public Map<String, Long> call() throws Exception {
|
|
|
+ Map<String, Long> map = new HashMap<>();
|
|
|
+ //当前老师当前批次试卷总数
|
|
|
+ long kdtotal;
|
|
|
+ if (levelShowAllPaper == 1) {
|
|
|
+ kdtotal = markTaskRepo.countByQuestionIdAll(questionId, marker.getId());
|
|
|
+ } else {
|
|
|
+ kdtotal = markTaskRepo.countByQuestionIdAndBatchNo(questionId, finalBatchNo, marker.getId());
|
|
|
+ }
|
|
|
+ //当前考区内试卷总数
|
|
|
+ long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
|
|
|
+ map.put("kdtotal", kdtotal);
|
|
|
+ map.put("total", total);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //当前考区各档位定档数量
|
|
|
+ List<Object[]> list = paperRepo.countGroupByLevel(questionId);
|
|
|
+ list.forEach(o -> {
|
|
|
+ LevelStatDTO levelStatDTO = levelStatAssembler.toDTO(o);
|
|
|
+ levelStatDTO.setGcount(levelStatDTO.getCount());
|
|
|
+ if (Objects.isNull(levelStatDTO.getId())) {
|
|
|
+ //求任务数为null的条数
|
|
|
+ int count;
|
|
|
+ if (levelShowAllPaper == 1) {
|
|
|
+ count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultIsNullAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal());
|
|
|
+ } else {
|
|
|
+ count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultNull(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), finalBatchNo);
|
|
|
+ }
|
|
|
+ //查询当前老师打回个数
|
|
|
+// int rejectCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false);
|
|
|
+ int rejectCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrue(questionId, marker.getId(), MarkStage.LEVEL.ordinal());
|
|
|
+ levelStatDTO.setCount(count);
|
|
|
+ levelStatDTO.setRejected(rejectCount);
|
|
|
+ }
|
|
|
+ levelStatDTOs.add(levelStatDTO);
|
|
|
+ });
|
|
|
+ for (Level level : levels) {
|
|
|
+ //所有档位依次比较
|
|
|
+ long count = levelStatDTOs.stream().filter(l -> String.valueOf(l.getId()).equals(level.getCode())).count();
|
|
|
+ if (count == 0) {
|
|
|
+ LevelStatDTO dto = new LevelStatDTO();
|
|
|
+ dto.setId(level.getCode());
|
|
|
+ dto.setCount(0);
|
|
|
+ dto.setPercent(0.0);
|
|
|
levelStatDTOs.add(dto);
|
|
|
}
|
|
|
}
|
|
@@ -203,10 +311,6 @@ public class MakrerApi {
|
|
|
kdtotal = map.get("kdtotal");
|
|
|
total = map.get("total");
|
|
|
}
|
|
|
-// //当前老师当前试卷的评档次数(不分档位)
|
|
|
-// long kdtotal = markTaskRepo.countByQuestionId(questionId, batchNo, marker.getId());
|
|
|
-// //当前老师所有的评档次数(不分档位)
|
|
|
-// long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
|
|
|
|
|
|
long finalKdtotal = kdtotal;
|
|
|
long finalTotal = total;
|
|
@@ -214,37 +318,28 @@ public class MakrerApi {
|
|
|
if (o.getId() != null) {
|
|
|
//当前老师各档位数量
|
|
|
int countNew;
|
|
|
- if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
|
|
|
-// count = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissingAll(questionId, MarkStage.LEVEL.ordinal(), levelStatDTO.getId().toString(), false, marker.getId());
|
|
|
+ if (levelShowAllPaper == 1) {
|
|
|
countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()));
|
|
|
} else {
|
|
|
-// count = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissing(questionId, MarkStage.LEVEL.ordinal(), levelStatDTO.getId().toString(), false, batchNo, marker.getId());
|
|
|
- countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()), batchNo);
|
|
|
+ countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()), finalBatchNo);
|
|
|
}
|
|
|
o.setCount(countNew);
|
|
|
//该档位考区内已定档数量
|
|
|
- long gcountNew = paperRepo.countByWorkIdAndSubjectAndQuestionIdAndLevel(marker.getWorkId(), markSubject.getSubject(), questionId, String.valueOf(o.getId()));
|
|
|
+ long gcountNew = paperRepo.countByQuestionIdAndLevelAndSubjectAndWorkId(questionId, String.valueOf(o.getId()), markSubject.getSubject(), marker.getWorkId());
|
|
|
o.setGcount((int) gcountNew);
|
|
|
|
|
|
o.setPt(levelMap.get(o.getId()).getPt());
|
|
|
o.setKdpt(levelMap.get(o.getId()).getKdpt());
|
|
|
- o.setCount(Objects.isNull(o.getCount()) ? 0 : o.getCount());
|
|
|
double p = finalKdtotal == 0 ? 0 : (double) o.getCount() / finalKdtotal * 100;
|
|
|
BigDecimal bd = new BigDecimal(p).setScale(3, RoundingMode.HALF_EVEN);
|
|
|
o.setPercent(bd.doubleValue());
|
|
|
+ o.setFinalKdTotal(Math.toIntExact(finalKdtotal));
|
|
|
|
|
|
o.setGcount(Objects.isNull(o.getGcount()) ? 0 : o.getGcount());
|
|
|
double gp = finalTotal == 0 ? 0 : (double) o.getGcount() / finalTotal * 100;
|
|
|
BigDecimal gbd = new BigDecimal(gp).setScale(3, RoundingMode.HALF_EVEN);
|
|
|
o.setGpercent(gbd.doubleValue());
|
|
|
-// int count;
|
|
|
-// if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
|
|
|
-// count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), o.getId().toString());
|
|
|
-// } else {
|
|
|
-// count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), o.getId().toString(), batchNo);
|
|
|
-// }
|
|
|
-// o.setPercent(count == 0 ? 0 : o.getPercent());
|
|
|
-// o.setCount(count);
|
|
|
+ o.setFinalTotal(Math.toIntExact(finalTotal));
|
|
|
}
|
|
|
});
|
|
|
Collections.sort(levelStatDTOs, (o1, o2) -> {
|
|
@@ -354,6 +449,90 @@ public class MakrerApi {
|
|
|
return levelStatDTOs;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 评卷员打分数量
|
|
|
+ *
|
|
|
+ * @param marker 评卷员用户id
|
|
|
+ * @param questionId 试题id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "{marker}/stat/totalScores", method = RequestMethod.GET)
|
|
|
+ public List<LevelStatDTO> totalScores(@PathVariable MarkUser marker, @RequestParam Long questionId) throws Exception {
|
|
|
+ List<LevelStatDTO> levelStatDTOs = new ArrayList<>();
|
|
|
+ MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
|
|
|
+ List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
|
|
|
+ Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
|
|
|
+ Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
|
|
|
+ Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
|
|
|
+ @Override
|
|
|
+ public Map<String, Long> call() {
|
|
|
+ Map<String, Long> map = new HashMap<>();
|
|
|
+ //当前老师所有的评档次数(不分档位)
|
|
|
+// long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
|
|
|
+ long total = paperRepo.countByQuestionId(questionId);
|
|
|
+ map.put("total", total);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ LevelStatDTO levelStatDTO = new LevelStatDTO();
|
|
|
+ //求任务数为null的条数
|
|
|
+ int totalCount = markTaskRepo.countScoreByQuestionIdAndMarkerIdAndStageAndResultIsNull(questionId, marker.getId(), MarkStage.SCORE.ordinal(), batchNo);
|
|
|
+ levelStatDTO.setCount(totalCount);
|
|
|
+ //查询改档
|
|
|
+ int shiftCount = markTaskRepo.countShiftByQuestionIdAndMarkerIdAndStageAndResultIsNullAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false);
|
|
|
+ levelStatDTO.setShift(shiftCount);
|
|
|
+ //查询改档打分
|
|
|
+ int shiftScoreCount = markTaskRepo.countShiftScoreByQuestionIdAndMarkerIdAndStageAndResultIsNull(questionId, marker.getId(), MarkStage.SCORE.ordinal());
|
|
|
+ levelStatDTO.setShiftScore(shiftScoreCount);
|
|
|
+ levelStatDTOs.add(levelStatDTO);
|
|
|
+
|
|
|
+ for (Level level : levels) {
|
|
|
+ //所有档位依次比较
|
|
|
+ long count = levelStatDTOs.stream().filter(l -> String.valueOf(l.getId()).equals(level.getCode())).count();
|
|
|
+ if (count == 0) {
|
|
|
+ LevelStatDTO dto = new LevelStatDTO();
|
|
|
+ dto.setId(level.getCode());
|
|
|
+ dto.setCount(0);
|
|
|
+ dto.setPercent(0.0);
|
|
|
+
|
|
|
+ //当前老师当前档位评档次数(所有考试)
|
|
|
+ dto.setCount(0);
|
|
|
+ levelStatDTOs.add(dto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long total = 0L;
|
|
|
+ if (Objects.nonNull(future) && Objects.nonNull(future.get())) {
|
|
|
+ Map<String, Long> map = (Map<String, Long>) future.get();
|
|
|
+ total = map.get("total");
|
|
|
+ }
|
|
|
+
|
|
|
+ long finalTotal = total;
|
|
|
+ levelStatDTOs.forEach(o -> {
|
|
|
+ if (o.getId() != null) {
|
|
|
+ o.setPt(levelMap.get(o.getId()).getPt());
|
|
|
+ o.setKdpt(levelMap.get(o.getId()).getKdpt());
|
|
|
+ o.setCount(Objects.isNull(o.getCount()) ? 0 : o.getCount());
|
|
|
+ o.setPercent(0D);
|
|
|
+
|
|
|
+ o.setGcount(Objects.isNull(o.getGcount()) ? 0 : o.getGcount());
|
|
|
+ double gp = (double) o.getGcount() / finalTotal;
|
|
|
+ BigDecimal gbd = new BigDecimal(gp).setScale(3, RoundingMode.HALF_EVEN);
|
|
|
+ o.setGpercent(gbd.doubleValue());
|
|
|
+ o.setFinalTotal(Math.toIntExact(finalTotal));
|
|
|
+
|
|
|
+ int count;
|
|
|
+ if (ParamCache.paramMap.get(marker.getWorkId()).getScoreShowAllPaper() == 1) {
|
|
|
+ count = markTaskRepo.countScoreByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.SCORE.ordinal(), o.getId().toString());
|
|
|
+ } else {
|
|
|
+ count = markTaskRepo.countScoreByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.SCORE.ordinal(), o.getId().toString(), batchNo);
|
|
|
+ }
|
|
|
+ o.setPercent(count == 0 ? 0 : o.getPercent());
|
|
|
+ o.setCount(count);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return levelStatDTOs;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 各试题统计数据
|
|
|
*
|