Эх сурвалжийг харах

美术阅卷11月新增需求-修复打分阶段分档配置BUG

wangliang 5 жил өмнө
parent
commit
26d8857615

+ 2 - 2
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/LevelRepo.java

@@ -18,7 +18,7 @@ public interface LevelRepo extends JpaRepository<Level, Long> {
     @Query("select max(l.code) from Level l where l.workId = ?1")
     String findMaxCodeByWorkId(Long workId);
 
-    List<Level> findByCodeNotIn(List<String> levelList);
+    List<Level> findByWorkIdAndCodeNotIn(Long workId, List<String> levelList);
 
-    long countByCodeIn(List<String> levelList);
+    long countByWorkIdAndCodeIn(Long workId, List<String> levelList);
 }

+ 8 - 8
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -202,19 +202,19 @@ public class StageControlService {
             if (Objects.nonNull(scoreConfig) && Objects.nonNull(scoreConfig.getExclude()) && scoreConfig.getExclude().size() > 0) {
                 List<String> configLevelList = scoreConfig.getExclude();
                 configLevelList = configLevelList.stream().map(string -> string.trim().toUpperCase()).collect(Collectors.toList());
-                long levelCount = levelRepo.countByCodeIn(configLevelList);
+                long levelCount = levelRepo.countByWorkIdAndCodeIn(workId, configLevelList);
                 if (levelCount == 0) {
                     statusMap.put(markSubject.getId(), false);
                     throw new RuntimeException("配置的档位:" + configLevelList + "不存在");
                 }
-                List<Level> levels = levelRepo.findByCodeNotIn(configLevelList);
+                List<Level> levels = levelRepo.findByWorkIdAndCodeNotIn(workId, configLevelList);
                 List<String> levelList = levels.stream().map(Level::getCode).collect(Collectors.toList());
                 Collections.sort(levelList);
                 Object o1 = levelList.stream().map(s -> "'" + s + "'").collect(Collectors.joining(","));
                 StringJoiner joiner = new StringJoiner("");
-                joiner.add("select count(1),p.`level` from mark_task mt left join paper p on p.id = mt.paper_id where mt.stage = 2 and p.`level` in (").add(o1.toString()).add(")");
+                joiner.add("select count(1),p.`level` from mark_task mt left join paper p on p.id = mt.paper_id where mt.stage = 2 and p.`level` in (").add(o1.toString()).add(") and mt.work_id = ? ");
                 String sql = sqlUtil.sqlGroupBy(joiner.toString(), "p.`level`");
-                List list = sqlUtil.execSqlForMap(sql);
+                List list = sqlUtil.execSqlForMap(sql, workId);
                 List<String> finalLevelList = new ArrayList();
                 if (Objects.isNull(list) || list.size() == 0) {
                     finalLevelList.addAll(levelList);
@@ -240,9 +240,9 @@ public class StageControlService {
                     Collections.sort(levelList);
                     Object o1 = levelList.stream().map(s -> "'" + s + "'").collect(Collectors.joining(","));
                     StringJoiner joiner = new StringJoiner("");
-                    joiner.add("select count(1),p.`level` from mark_task mt left join paper p on p.id = mt.paper_id where mt.stage = 2 and p.`level` in (").add(o1.toString()).add(")");
+                    joiner.add("select count(1),p.`level` from mark_task mt left join paper p on p.id = mt.paper_id where mt.stage = 2 and p.`level` in (").add(o1.toString()).add(") and mt.work_id = ? ");
                     String sql = sqlUtil.sqlGroupBy(joiner.toString(), "p.`level`");
-                    List list = sqlUtil.execSqlForMap(sql);
+                    List list = sqlUtil.execSqlForMap(sql, workId);
                     List<String> finalLevelList = new ArrayList();
                     for (int i = 0; i < list.size(); i++) {
                         Map map = (Map) list.get(i);
@@ -253,8 +253,8 @@ public class StageControlService {
                     if (finalLevelList.size() > 0) {
                         joiner = new StringJoiner("");
                         Object o2 = finalLevelList.stream().map(s -> "'" + s + "'").collect(Collectors.joining(","));
-                        joiner.add("select count(1) as count from mark_task mt left join paper p on p.id = mt.paper_id where mt.stage = 2 and p.`level` in (").add(o2.toString()).add(")").add(" and mt.`result` is null");
-                        list = sqlUtil.execSqlForMap(joiner.toString());
+                        joiner.add("select count(1) as count from mark_task mt left join paper p on p.id = mt.paper_id where mt.stage = 2 and p.`level` in (").add(o2.toString()).add(")").add(" and mt.`result` is null and mt.work_id = ? ");
+                        list = sqlUtil.execSqlForMap(joiner.toString(), workId);
                         if (Objects.nonNull(list) && list.size() > 0) {
                             Map map = (Map) list.get(0);
                             int taskCount = Integer.parseInt(String.valueOf(map.get("count")));