Explorar o código

机构版-迭代

xiaof %!s(int64=4) %!d(string=hai) anos
pai
achega
084a6d8d2e

+ 6 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkUserRepo.java

@@ -6,6 +6,8 @@ import cn.com.qmth.stmms.ms.core.vo.Subject;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 
 import java.util.List;
 
@@ -35,4 +37,8 @@ public interface MarkUserRepo extends JpaRepository<MarkUser,Long>, JpaSpecifica
     List<MarkUser> findByOrganizationIdAndRoleIn(Long organizationId, Role... role);
 
     List<MarkUser> findByWorkIdAndSubject(Long workId, Subject subject);
+
+    @Modifying
+    @Query("update MarkUser set groupId = null where workId = ?1 and subject = ?2")
+    void updateByWorkIdAndSubject(Long workId, Subject subject);
 }

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

@@ -31,4 +31,6 @@ public interface TaskPublishSettingRepo extends JpaRepository<TaskPublishSetting
     Integer maxPublishCountByQuestionId(Long workId, Long questionId, String name);
 
     List<TaskPublishSetting> findByWorkIdAndSubjectAndPublishCount(Long workId, String name, int max);
+
+    void deleteByWorkIdAndSubject(Long workId, Subject subject);
 }

+ 4 - 0
stmms-ms-marking/pom.xml

@@ -25,5 +25,9 @@
             <groupId>cn.com.qmth</groupId>
             <artifactId>stmms-ms-commons</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.com.qmth</groupId>
+            <artifactId>stmms-ms-accesscontrol</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 42 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.ms.marking.api;
 
+import cn.com.qmth.stmms.ms.accesscontrol.config.LoginConfig;
 import cn.com.qmth.stmms.ms.commons.threadPool.MyThreadPool;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.core.cache.ParamCache;
@@ -17,6 +18,7 @@ import cn.com.qmth.stmms.ms.marking.assembler.LevelStatAssembler;
 import cn.com.qmth.stmms.ms.marking.assembler.MarkerAssembler;
 import cn.com.qmth.stmms.ms.marking.assembler.QuestionStatAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.*;
+import cn.com.qmth.stmms.ms.marking.service.MarkingService;
 import javassist.bytecode.stackmap.BasicBlock;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,6 +75,12 @@ public class MakrerApi {
     @Autowired
     StudentRepo studentRepo;
 
+    @Autowired
+    private LoginConfig loginConfig;
+
+    @Autowired
+    MarkingService markingService;
+
     /**
      * 评卷员信息
      *
@@ -689,4 +697,38 @@ public class MakrerApi {
         return objectMap;
     }
 
+    /**
+     * 清空当前阶段数据
+     * @param workId
+     * @param subject
+     * @param stage
+     * @param loginName
+     * @param password
+     * @return
+     */
+    @RequestMapping(value = "/subject/reset", method = RequestMethod.POST)
+    public Object subjectReset(@PathVariable Long workId,
+                               @RequestParam Subject subject,
+                               @RequestParam MarkStage stage,
+                               @RequestParam String loginName,
+                               @RequestParam String password) {
+        if(Objects.nonNull(workId)){
+            throw new RuntimeException("工作ID不能为空");
+        }
+        if(Objects.nonNull(subject)){
+            throw new RuntimeException("科目不能为空");
+        }
+        if (!loginConfig.adminLoginConfig().getLoginName().equals(loginName)) {
+            throw new RuntimeException("只有管理员才能操作");
+        }
+        if (loginConfig.adminLoginConfig().getPassword().equals(password)) {
+            throw new RuntimeException("管理员密码错误");
+        }
+
+        // 清空当前阶段数据
+        markingService.subjectReset(workId, subject, stage);
+
+        return true;
+    }
+
 }

+ 27 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingService.java

@@ -9,6 +9,7 @@ import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
 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.config.MarkingConfig;
 import cn.com.qmth.stmms.ms.marking.service.arbitration.ArbitrationService;
 import com.alibaba.fastjson.JSONObject;
@@ -66,6 +67,12 @@ public class MarkingService {
     @Resource
     MarkTaskJobRepo markTaskJobRepo;
 
+    @Autowired
+    MarkerGroupRepo markerGroupRepo;
+
+    @Autowired
+    TaskPublishSettingRepo taskPublishSettingRepo;
+
     /**
      * 提交分档。如果每个评卷都提交了,则进行仲裁判定,如果没有触发仲裁就定档
      *
@@ -397,4 +404,24 @@ public class MarkingService {
         }
 
     }
+
+    /**
+     * 清空当前阶段数据
+     * @param workId
+     * @param subject
+     * @param stage
+     */
+    @Transactional
+    public void subjectReset(Long workId, Subject subject, MarkStage stage) {
+        // 删除mark_task阶段数据
+        markTaskRepo.deleteByWorkIdAndSubjectAndStage(workId, subject, stage);
+        // 删除mark_user分组
+        markUserRepo.updateByWorkIdAndSubject(workId, subject);
+        // 删除mark_group分组
+        markerGroupRepo.deleteBySubjectAndWorkId(subject, workId);
+        // 打分阶段,删除task_publish_setting数据
+        if(MarkStage.SCORE.equals(stage)){
+            taskPublishSettingRepo.deleteByWorkIdAndSubject(workId, subject);
+        }
+    }
 }