|
@@ -11,7 +11,6 @@ import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.user.Role;
|
|
|
import cn.com.qmth.stmms.ms.core.repository.*;
|
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
|
-import cn.com.qmth.stmms.ms.marking.api.MarkTaskApi;
|
|
|
import cn.com.qmth.stmms.ms.marking.config.MarkingConfig;
|
|
|
import cn.com.qmth.stmms.ms.marking.service.arbitration.ArbitrationService;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -132,7 +131,7 @@ public class MarkingService {
|
|
|
MarkUser maker = markUserRepo.findOne(markTask.getMarkerId());
|
|
|
|
|
|
List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());
|
|
|
- Level level = levels.stream().filter(m->levelCode.equals(m.getCode())).findFirst().get();
|
|
|
+ Level level = levels.stream().filter(m -> levelCode.equals(m.getCode())).findFirst().get();
|
|
|
|
|
|
markTask.setResult(levelCode);
|
|
|
markTask.setLevelValue(level.getLevelValue());
|
|
@@ -155,8 +154,8 @@ public class MarkingService {
|
|
|
Integer majority = Optional.ofNullable(ParamCache.paramMap.get(markTask.getWorkId()).getMajority()).orElse(1);
|
|
|
// 是否取优(过半定档和权重,取最优值)
|
|
|
Integer takeBest = Optional.ofNullable(ParamCache.paramMap.get(markTask.getWorkId()).getTakeBest()).orElse(1);
|
|
|
- DeterResult determine = determineLevelService.determine(majority == 1,takeBest == 1, levels, markTasks.toArray(sources));
|
|
|
- if(Objects.nonNull(determine) && Objects.nonNull(determine.getResult())){
|
|
|
+ DeterResult determine = determineLevelService.determine(majority == 1, takeBest == 1, levels, markTasks.toArray(sources));
|
|
|
+ if (Objects.nonNull(determine) && Objects.nonNull(determine.getResult())) {
|
|
|
markTask.setDateMineResult(determine.getResult());
|
|
|
}
|
|
|
//1.过半定档
|
|
@@ -348,7 +347,7 @@ public class MarkingService {
|
|
|
String operResult = "-";
|
|
|
Date date = new Date();
|
|
|
for (String r : range) {
|
|
|
- if (Objects.equals(String.valueOf(markTask.getMarkerId()), r)) {
|
|
|
+ if (Objects.equals(String.valueOf(markTask.getMarkerId()), r) && !redoLevel.equals(markTask.getResult())) {
|
|
|
markTask.setRejected(true);
|
|
|
markTask.setOriginLevel(markTask.getResult());
|
|
|
markTask.setResult(null);
|
|
@@ -386,12 +385,20 @@ public class MarkingService {
|
|
|
markTask.setUpdatedOn(new Date());
|
|
|
MarkUser maker = markUserRepo.findOne(markTask.getMarkerId());
|
|
|
markTask.setMarkerName(maker.getName());
|
|
|
+ // 如果手动输入的分数在档位范围内,属于正常试卷
|
|
|
+ if (markTask.getManualScore() == 1) {
|
|
|
+ Level level = levelRepo.findByWorkIdAndCode(markTask.getWorkId(), markTask.getLevel());
|
|
|
+ if (level != null) {
|
|
|
+ boolean isMatch = level.getMinScore() <= score && level.getMaxScore() >= score;
|
|
|
+ markTask.setManualScore(isMatch ? 0 : 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
markTaskRepo.save(markTask);
|
|
|
Paper paper = markTask.getPaper();
|
|
|
List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), markTask.getStage());
|
|
|
long leftCount = markTasks.stream().filter(i -> i.getResult() == null).count();
|
|
|
if (leftCount == 0) {
|
|
|
- OptionalDouble finalScore = markTasks.stream().map(m -> m.getResult())
|
|
|
+ OptionalDouble finalScore = markTasks.stream().map(MarkTask::getResult)
|
|
|
.mapToInt(Integer::valueOf).average();
|
|
|
//湖北省,平均分非零进一
|
|
|
Integer roundUp = Optional.ofNullable(ParamCache.paramMap.get(markTask.getWorkId()).getRoundUp()).orElse(1);
|
|
@@ -461,8 +468,8 @@ public class MarkingService {
|
|
|
|
|
|
// 所有用户强制退出
|
|
|
List<MarkUser> userList = markUserRepo.findByWorkIdAndSubject(workId, subject);
|
|
|
- userList = userList.stream().filter(m-> Role.MARKER.equals(m.getRole()) || Role.MARK_LEADER.equals(m.getRole())).collect(Collectors.toList());
|
|
|
- if(!CollectionUtils.isEmpty(userList)){
|
|
|
+ userList = userList.stream().filter(m -> Role.MARKER.equals(m.getRole()) || Role.MARK_LEADER.equals(m.getRole())).collect(Collectors.toList());
|
|
|
+ if (!CollectionUtils.isEmpty(userList)) {
|
|
|
for (MarkUser user : userList) {
|
|
|
cacheService.deleteTokenCache(user.getId().toString());
|
|
|
}
|
|
@@ -489,12 +496,12 @@ public class MarkingService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- public static Integer calcSortNum(Paper paper, List<MarkTask> markTaskList, List<Level> levels){
|
|
|
+ public static Integer calcSortNum(Paper paper, List<MarkTask> markTaskList, List<Level> levels) {
|
|
|
//计算levelValue和(试评阶段不用)
|
|
|
- if(paper.getTest() == 0 && Objects.nonNull(paper.getLevel())) {
|
|
|
- if(!levels.isEmpty() && levels.size() > 0){
|
|
|
+ if (paper.getTest() == 0 && Objects.nonNull(paper.getLevel())) {
|
|
|
+ if (!levels.isEmpty() && levels.size() > 0) {
|
|
|
Map<String, Integer> map = levels.stream().collect(Collectors.toMap(Level::getCode, Level::getWeight));
|
|
|
- int sum = markTaskList.stream().mapToInt(m-> map.get(m.getResult()) == null ? 0 : map.get(m.getResult())).sum();
|
|
|
+ int sum = markTaskList.stream().mapToInt(m -> map.get(m.getResult()) == null ? 0 : map.get(m.getResult())).sum();
|
|
|
return sum;
|
|
|
}
|
|
|
}
|