Răsfoiți Sursa

美术阅卷10月新增需求-试评和正评代码合并

wangliang 5 ani în urmă
părinte
comite
788e57c9fb

+ 9 - 5
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/api/AuthApi.java

@@ -60,7 +60,7 @@ public class AuthApi {
                     throw new RuntimeException("用户不存在");
                 }
             }
-            if(Objects.equals(Role.COLLECTOR, domain.getRole())){
+            if (Objects.equals(Role.COLLECTOR, domain.getRole())) {
                 throw new RuntimeException("该账户只能在采集端登录");
             }
             if (!user.getPassword().equals(domain.getPassword())) {
@@ -71,8 +71,8 @@ public class AuthApi {
             }
 
             //科组长生成随机数
-            if(Objects.equals(Role.MARK_LEADER, domain.getRole())){
-                if(RandomUtil.randomMap.size() == 0){
+            if (Objects.equals(Role.MARK_LEADER, domain.getRole())) {
+                if (RandomUtil.randomMap.size() == 0) {
                     RandomUtil.getRandom(domain.getWorkId(), true);
                 }
             }
@@ -85,8 +85,12 @@ public class AuthApi {
             session.setAttribute("token", null);
         }
         session.setAttribute("token", System.currentTimeMillis() + "#" + domain.getLoginName());
-        if (!Objects.equals(Role.COLLECTOR, domain.getRole()) && !Objects.equals(loginConfig.inspectionLoginConfig().getLoginName(), user.getLoginName())) {
-            session.setAttribute("markUser", domain);
+        if (!Objects.equals(loginConfig.inspectionLoginConfig().getLoginName(), user.getLoginName())) {
+            if (Objects.equals(Role.COLLECTOR, domain.getRole())) {
+                session.setAttribute("collector", domain);
+            } else {
+                session.setAttribute("markUser", domain);
+            }
         }
         return domain;
     }

+ 9 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/TrialService.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.ms.admin.service;
 
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.Work;
 import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.repository.*;
@@ -47,6 +48,9 @@ public class TrialService {
     @Autowired
     ExamQuestionRepo examQuestionRepo;
 
+    @Autowired
+    MarkLogRepo markLogRepo;
+
     /**
      * 检查任务状态
      *
@@ -147,12 +151,16 @@ public class TrialService {
         //4.删除卷子信息
         examQuestionRepo.deleteByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.INIT.getId());
         //5.更新该科目下的试卷信息,可暂且不更新
-//        List<Paper> paperList = paperRepo.findByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.START_TRIAL.getId());
+        List<Paper> paperList = paperRepo.findByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.START_TRIAL.getId());
+        List<Long> paperIds = paperList.stream().map(o -> o.getId()).collect(Collectors.toList());
 //        paperList.forEach(o -> {
 //            o.setLevel(null);//更新档位
 //            o.setScore(null);//更新分数
 //        });
 //        paperRepo.save(paperList);
         //5.删除学生的试卷信息(服务器图片)
+
+        //6.删除log日志
+        markLogRepo.deleteByPaperIdIn(paperIds);
     }
 }

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

@@ -27,4 +27,6 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
     public MarkLog findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(Long createUserId, Integer operType, String subject, String examNumber);
 
     List<MarkUser> findByCreateUserId(Long userId);
+
+    void deleteByPaperIdIn(List<Long> paperIds);
 }

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -45,7 +45,7 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
 
     int countByQuestionIdAndMarkerIdAndStageAndResultIsNull(Long questionId, Long markerId, MarkStage stage);
 
-    @Query(value = "select count(1) from mark_task m left join paper p on m.paper_id = p.id where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.result = ?4 and p.batch_no = (select max(batch_no) from paper where question_id = ?5 and is_test = 0)", nativeQuery = true)
+    @Query(value = "select count(1) from mark_task m left join paper p on m.paper_id = p.id where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.result = ?4 and p.batch_no = (select max(batch_no) from paper where question_id = ?5)", nativeQuery = true)
     int countByQuestionIdAndMarkerIdAndStageAndResult(Long questionId, Long markerId, int stage, String result, Long questionId1);
 
     int countByWorkIdAndSubjectAndMarkerIdAndStageAndResult(Long workId, Subject subject, Long markerId, MarkStage stage, String result);

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java

@@ -73,7 +73,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
             "SUM(IF(p.`is_arbitrated` = 1, 1, 0))" +
             "FROM paper p " +
             "WHERE p.`question_id` = ? and p.is_missing = false " +
-            "AND p.batch_no = (select max(batch_no) from paper where question_id = ? and is_test = 0)"+
+            "AND p.batch_no = (select max(batch_no) from paper where question_id = ?)" +
             "GROUP BY p.`level` ORDER BY p.`level`", nativeQuery = true)
     List<Object[]> countGroupByLevel(Long questionId, Long questionId1);
 

+ 15 - 5
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -40,6 +40,7 @@ public class MarkLogAop {
 
     private final String TOKEN = "token",
             MARK_USER = "markUser",//登录用户
+            COLLECTOR = "collector",//采集用户
             PARAM_ARGS = "args",//方法参数
     //            PARAM_ARG_NAMES = "argNames",//方法参数名
     ACTION = "action",//动作
@@ -95,7 +96,7 @@ public class MarkLogAop {
      */
     @AfterReturning(value = "paperAspect()", returning = RESULT)
     public void afterReturnPaperPoint(JoinPoint joinPoint, Object result) throws Exception {
-        Map<String, Object> map = getAspectCommon(joinPoint);
+        Map<String, Object> map = getAspectCommon(joinPoint, 0);
         JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
         MarkUser markUser = (MarkUser) map.get(MARK_USER);
         Paper paper = JSONObject.parseObject(((JSONObject) jsonArgsArray.get(0)).toJSONString(), Paper.class);
@@ -136,7 +137,7 @@ public class MarkLogAop {
      */
     @AfterReturning(value = "markAspect()", returning = RESULT)
     public void afterReturnMarkPoint(JoinPoint joinPoint, Object result) throws Exception {
-        Map<String, Object> map = getAspectCommon(joinPoint);
+        Map<String, Object> map = getAspectCommon(joinPoint, 0);
         JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
         MarkUser markUser = (MarkUser) map.get(MARK_USER);
         JSONObject aopResult = JSONObject.parseObject(JSONObject.toJSONString(result));
@@ -211,7 +212,7 @@ public class MarkLogAop {
      */
     @AfterReturning(value = "collectAspect()", returning = RESULT)
     public void afterReturnCollectPoint(JoinPoint joinPoint, Object result) throws Exception {
-        Map<String, Object> map = getAspectCommon(joinPoint);
+        Map<String, Object> map = getAspectCommon(joinPoint, 1);
         JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
         MarkUser markUser = (MarkUser) map.get(MARK_USER);
 //        JSONObject aopResult = JSONObject.parseObject(JSONObject.toJSONString(result));
@@ -291,10 +292,11 @@ public class MarkLogAop {
      * 切面公用方法
      *
      * @param joinPoint
+     * @param type
      * @return
      * @throws Exception
      */
-    public Map getAspectCommon(JoinPoint joinPoint) throws Exception {
+    public Map getAspectCommon(JoinPoint joinPoint, int type) throws Exception {
         String className = joinPoint.getSignature().getDeclaringTypeName();
         String methodName = joinPoint.getSignature().getName();
         LOGGER.info("{} aspect path:{}", this.getClass().getMethods()[0], className + "." + methodName);
@@ -305,7 +307,15 @@ public class MarkLogAop {
         if (Objects.isNull(token)) {
             throw new Exception("请先登录");
         }
-        MarkUser markUser = (MarkUser) session.getAttribute(MARK_USER);
+        MarkUser markUser = null;
+        switch (type) {
+            case 0:
+                markUser = (MarkUser) session.getAttribute(MARK_USER);
+                break;
+            default:
+                markUser = (MarkUser) session.getAttribute(COLLECTOR);
+                break;
+        }
         LOGGER.info("markUser:{}", JSONObject.toJSONString(markUser));
         Object[] args = joinPoint.getArgs(); // 参数值
 //        String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();//参数名

+ 4 - 4
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -76,7 +76,7 @@ public class MarkSubjectApi {
      */
     @RequestMapping(value = "{markSubjectId}", method = RequestMethod.GET)
     public MarkSubject get(@PathVariable String markSubjectId) {
-        MarkSubject subject =  markSubjectRepo.findOne(markSubjectId);
+        MarkSubject subject = markSubjectRepo.findOne(markSubjectId);
         return subject;
     }
 
@@ -108,9 +108,9 @@ public class MarkSubjectApi {
         List<QuestionStatDTO> questionStatDTOs = new ArrayList<>();
         List<Object[]> qStats = null;
         if (markSubject.getStage() == MarkStage.LEVEL) {
-            qStats = paperRepo.countGroupByQuestionForLevel(markSubject.getWorkId(), markSubject.getSubject().toString(), 0);
+            qStats = paperRepo.countGroupByQuestionForLevel(markSubject.getWorkId(), markSubject.getSubject().toString(), markSubject.getTest());
         } else {
-            qStats = paperRepo.countGroupByQuestionForScore(markSubject.getWorkId(), markSubject.getSubject().toString(), 0);
+            qStats = paperRepo.countGroupByQuestionForScore(markSubject.getWorkId(), markSubject.getSubject().toString(), markSubject.getTest());
         }
         for (Object[] objects : qStats) {
             QuestionStatDTO dto = questionStatAssembler.toDTO(objects);
@@ -235,7 +235,7 @@ public class MarkSubjectApi {
      * 该评卷科目进入下一阶段
      *
      * @param markSubject 评卷科目id
-     * @param taskCount 分配任务数量
+     * @param taskCount   分配任务数量
      */
     @RequestMapping(value = "{markSubject}", method = RequestMethod.PATCH)
     public void goNext(@PathVariable MarkSubject markSubject, @RequestParam(value = "taskCount", defaultValue = "0") int taskCount) throws Exception {

+ 3 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -85,10 +85,11 @@ public class MarkTaskApi {
                 predicates.add(builder.isNull(root.get("result")));
             } else if (stage == MarkStage.LEVEL) {
                 predicates.add(builder.equal(root.get("result"), level));
-                if(!Objects.isNull(batchNo)){
+                if (!Objects.isNull(batchNo)) {
                     predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
                 }
-            } else if (stage == MarkStage.SCORE) {
+            }
+            else if (stage == MarkStage.SCORE) {
                 predicates.add(builder.isNotNull(root.get("result")));
             }
             if (isSample != null) {