ting.yin hace 5 años
padre
commit
002017aed2

+ 49 - 46
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -414,8 +414,7 @@ public class MarkServiceImpl implements MarkService {
             if (library != null && library.getExamId().equals(group.getExamId())
                     && library.getSubjectCode().equals(group.getSubjectCode())
                     && library.getGroupNumber().equals(group.getNumber())
-                    && result.getTotalScore() <= group.getTotalScore()
-                    && StringUtils.isNotBlank(result.getScoreList())) {
+                    && result.getTotalScore() <= group.getTotalScore() && StringUtils.isNotBlank(result.getScoreList())) {
                 if (submitLibrary(library, marker, group, result)) {
                     updateMarkedCount(group);
                     releaseLibrary(library, marker);
@@ -427,8 +426,7 @@ public class MarkServiceImpl implements MarkService {
             if (library != null && library.getExamId().equals(group.getExamId())
                     && library.getSubjectCode().equals(group.getSubjectCode())
                     && library.getGroupNumber().equals(group.getNumber())
-                    && result.getTotalScore() <= group.getTotalScore()
-                    && StringUtils.isNotBlank(result.getScoreList())) {
+                    && result.getTotalScore() <= group.getTotalScore() && StringUtils.isNotBlank(result.getScoreList())) {
                 TrialHistory history = new TrialHistory();
                 history.setExamId(library.getExamId());
                 history.setSubjectCode(library.getSubjectCode());
@@ -472,7 +470,8 @@ public class MarkServiceImpl implements MarkService {
             return false;
         }
         // 非本人的回评任务
-        if ((library.getStatus() == LibraryStatus.MARKED ||library.getStatus() == LibraryStatus.INSPECTED) && !library.getMarkerId().equals(marker.getId())) {
+        if ((library.getStatus() == LibraryStatus.MARKED || library.getStatus() == LibraryStatus.INSPECTED)
+                && !library.getMarkerId().equals(marker.getId())) {
             return false;
         }
         // 是否多评情况下已处理过该考生评卷任务
@@ -482,16 +481,16 @@ public class MarkServiceImpl implements MarkService {
         }
         // 尝试提交评卷结果
         Date now = new Date();
-        if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(), result.getTotalScore(),
-                result.getScoreList(), now, result.getSpent(), null, LibraryStatus.WAITING,
-                LibraryStatus.MARKED,LibraryStatus.INSPECTED) == 0) {
+        if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(),
+                result.getTotalScore(), result.getScoreList(), now, result.getSpent(), null, LibraryStatus.WAITING,
+                LibraryStatus.MARKED, LibraryStatus.INSPECTED) == 0) {
             // 条件不符更新失败,直接返回
             return false;
         }
         // 保存阅卷轨迹
         if (result.getTrackList() != null) {
             trackDao.deleteByLibraryId(library.getId());
-            for(MarkTrack t :result.getTrackList(library, marker)){
+            for (MarkTrack t : result.getTrackList(library, marker)) {
                 trackDao.saveAndFlush(t);
             }
         }
@@ -511,19 +510,18 @@ public class MarkServiceImpl implements MarkService {
                     // 本评卷任务或组长已打分,则跳过该任务
                     continue;
                 }
-                //分差超过阀值,
+                // 分差超过阀值,
                 if (Math.abs(other.getMarkerScore() - result.getTotalScore()) > group.getArbitrateThreshold()) {
-                    //开启三评
-                    if(group.getThirdPolicy().equals(ThirdPolicy.LOW_DIFF_HIGH_AVG)){
-                        if(libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(),
-                                library.getGroupNumber())==2){
-                            buildThirdLibrary(library,group);
-                        }else{
-                            //两两比较,触发仲裁
-                            history = getArbitrate(list,group.getArbitrateThreshold(), now);
+                    // 开启三评
+                    if (group.getThirdPolicy().equals(ThirdPolicy.LOW_DIFF_HIGH_AVG)) {
+                        if (libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber()) == 2) {
+                            buildThirdLibrary(library, group);
+                        } else {
+                            // 两两比较,触发仲裁
+                            history = getArbitrate(list, group.getArbitrateThreshold(), now);
                         }
-                    }else{
-                        //未开启三评,触发仲裁
+                    } else {
+                        // 未开启三评,触发仲裁
                         history = getArbitrate(library, now);
                         break;
                     }
@@ -540,26 +538,25 @@ public class MarkServiceImpl implements MarkService {
         return true;
     }
 
-    private ArbitrateHistory getArbitrate(List<MarkLibrary> list,Double arbitrateThreshold, Date now) {
+    private ArbitrateHistory getArbitrate(List<MarkLibrary> list, Double arbitrateThreshold, Date now) {
         int count = 0;
         for (int i = 0; i < list.size(); i++) {
-            int next = i +1;
-            if(next == list.size()){
+            int next = i + 1;
+            if (next == list.size()) {
                 next = 0;
             }
             if (Math.abs(list.get(i).getMarkerScore() - list.get(next).getMarkerScore()) > arbitrateThreshold) {
-                count ++;
+                count++;
             }
         }
-        if(count == list.size()){
-            return getArbitrate(list.get(0),now);
+        if (count == list.size()) {
+            return getArbitrate(list.get(0), now);
         }
         return null;
     }
 
     private ArbitrateHistory getArbitrate(MarkLibrary library, Date now) {
-        ArbitrateHistory history;
-        history = new ArbitrateHistory();
+        ArbitrateHistory history = new ArbitrateHistory();
         history.setExamId(library.getExamId());
         history.setSubjectCode(library.getSubjectCode());
         history.setGroupNumber(library.getGroupNumber());
@@ -593,7 +590,7 @@ public class MarkServiceImpl implements MarkService {
     @Override
     @Transactional
     public boolean backLibrary(MarkLibrary library) {
-        if (libraryDao.resetById(library.getId(), LibraryStatus.WAITING, LibraryStatus.MARKED,LibraryStatus.INSPECTED) > 0) {
+        if (libraryDao.resetById(library.getId(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED) > 0) {
             trackDao.deleteByLibraryId(library.getId());
             specialTagDao.deleteByLibraryId(library.getId());
             updateMarkedCount(library.getExamId(), library.getSubjectCode(), library.getGroupNumber());
@@ -685,29 +682,35 @@ public class MarkServiceImpl implements MarkService {
             return false;
         }
         for (MarkLibrary library : list) {
-            if (library.getStatus() != LibraryStatus.MARKED && library.getStatus() != LibraryStatus.INSPECTED && library.getStatus() != LibraryStatus.ARBITRATED) {
+            if (library.getStatus() != LibraryStatus.MARKED && library.getStatus() != LibraryStatus.INSPECTED
+                    && library.getStatus() != LibraryStatus.ARBITRATED) {
                 // 有非完成状态的评卷任务,直接返回
                 return false;
             }
         }
         // 开启三评
-        if(ThirdPolicy.LOW_DIFF_HIGH_AVG.equals(group.getThirdPolicy()) && list.size()==3){
-//          Collections.sort(list, Comparator.comparing(MarkLibrary::getMarkerScore));
+        if (ThirdPolicy.LOW_DIFF_HIGH_AVG.equals(group.getThirdPolicy()) && list.size() == 3) {
+            // Collections.sort(list,
+            // Comparator.comparing(MarkLibrary::getMarkerScore));
             Collections.sort(list, new Comparator<MarkLibrary>() {
+
                 @Override
                 public int compare(MarkLibrary o1, MarkLibrary o2) {
-                    if (o1.getMarkerScore()-o2.getMarkerScore() > 0) {
+                    if (o1.getMarkerScore() - o2.getMarkerScore() > 0) {
                         return -1;
                     }
                     return 1;
                 }
             });
-            Double score1 = list.get(0).getHeaderScore() != null ? list.get(0).getHeaderScore() : list.get(0).getMarkerScore();
-            Double score2 = list.get(1).getHeaderScore() != null ? list.get(1).getHeaderScore() : list.get(1).getMarkerScore();
-            Double score3 = list.get(2).getHeaderScore() != null ? list.get(2).getHeaderScore() : list.get(2).getMarkerScore();
-            if((score3-score2)>=(score2-score1)){
+            Double score1 = list.get(0).getHeaderScore() != null ? list.get(0).getHeaderScore() : list.get(0)
+                    .getMarkerScore();
+            Double score2 = list.get(1).getHeaderScore() != null ? list.get(1).getHeaderScore() : list.get(1)
+                    .getMarkerScore();
+            Double score3 = list.get(2).getHeaderScore() != null ? list.get(2).getHeaderScore() : list.get(2)
+                    .getMarkerScore();
+            if ((score3 - score2) >= (score2 - score1)) {
                 list.remove(0);
-            }else{
+            } else {
                 list.remove(2);
             }
             policy = ScorePolicy.AVG;
@@ -783,9 +786,9 @@ public class MarkServiceImpl implements MarkService {
     @Transactional
     public void updateMarkedCount(MarkGroup group) {
         if (group.getStatus() == MarkStatus.FORMAL || group.getStatus() == MarkStatus.FINISH) {
-            groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
-                    (int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumberAndStatus(group.getExamId(),
-                            group.getSubjectCode(), group.getNumber(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED,LibraryStatus.INSPECTED));
+            groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(), (int) libraryDao
+                    .countByExamIdAndSubjectCodeAndGroupNumberAndStatus(group.getExamId(), group.getSubjectCode(),
+                            group.getNumber(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED, LibraryStatus.INSPECTED));
         } else if (group.getStatus() == MarkStatus.TRIAL) {
             groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
                     (int) trialLibraryDao.countMarked(group.getExamId(), group.getSubjectCode(), group.getNumber()));
@@ -866,8 +869,8 @@ public class MarkServiceImpl implements MarkService {
                     int expectCount = (int) (studentCount * group.getDoubleRate());
                     // 随机数判断加入当前已经生成双评任务的比例加权
                     needDouble = doubleCount < expectCount
-                            && ((studentCount - libraryCount + doubleCount) <= (expectCount - doubleCount)
-                                    || Math.random() < group.getDoubleRate());
+                            && ((studentCount - libraryCount + doubleCount) <= (expectCount - doubleCount) || Math
+                                    .random() < group.getDoubleRate());
                 }
                 if (needDouble) {
                     library = new MarkLibrary();
@@ -977,7 +980,7 @@ public class MarkServiceImpl implements MarkService {
         double avgSpent = 0;
         for (MarkLibrary library : list) {
             finishCount++;
-            if (library.getStatus() == LibraryStatus.MARKED||library.getStatus() == LibraryStatus.INSPECTED) {
+            if (library.getStatus() == LibraryStatus.MARKED || library.getStatus() == LibraryStatus.INSPECTED) {
                 validCount++;
             }
             double score = library.getMarkerScore() != null ? library.getMarkerScore() : 0;
@@ -990,8 +993,8 @@ public class MarkServiceImpl implements MarkService {
                 avgSpent = sumSpent / finishCount;
                 // 递归法计算标准差
                 if (finishCount - 1 != 0) {
-                    tempScore = tempScore
-                            + 1.0 * (finishCount - 1) / finishCount * (score - avgScore) * (score - avgScore);
+                    tempScore = tempScore + 1.0 * (finishCount - 1) / finishCount * (score - avgScore)
+                            * (score - avgScore);
                     stdevScore = Math.sqrt(tempScore / (finishCount - 1));
                 }
             }

+ 1 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupAdd.jsp

@@ -30,6 +30,7 @@
 					$(".doubleDiv").show();
 				}else{
 					$("#doubleRate").attr("value","");
+					$("#thirdPolicy").attr("value","");
 					$("#arbitrateThreshold").attr("value","");
 					$(".doubleDiv").hide();
 				}

+ 2 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditFull.jsp

@@ -32,6 +32,7 @@
 				$(".doubleDiv").show();
 			}else{
 				$("#doubleRate").attr("value","");
+				$("#thirdPolicy").attr("value","");
 				$("#arbitrateThreshold").attr("value","");
 				$(".doubleDiv").hide();
 			}
@@ -41,6 +42,7 @@
 					$(".doubleDiv").show();
 				}else{
 					$("#doubleRate").attr("value","");
+					$("#thirdPolicy").attr("value","");
 					$("#arbitrateThreshold").attr("value","");
 					$(".doubleDiv").hide();
 				}

+ 2 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditSimple.jsp

@@ -33,6 +33,7 @@
 				$(".doubleDiv").show();
 			}else{
 				$("#doubleRate").attr("value","");
+				$("#thirdPolicy").attr("value","");
 				$("#arbitrateThreshold").attr("value","");
 				$(".doubleDiv").hide();
 			}
@@ -42,6 +43,7 @@
 					$(".doubleDiv").show();
 				}else{
 					$("#doubleRate").attr("value","");
+					$("#thirdPolicy").attr("value","");
 					$("#arbitrateThreshold").attr("value","");
 					$(".doubleDiv").hide();
 				}