Sfoglia il codice sorgente

美术阅卷11月新增需求-修复BUG

wangliang 5 anni fa
parent
commit
b4cf848b30

+ 2 - 1
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/LoginInterceptor.java

@@ -26,7 +26,8 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
                              HttpServletResponse response, Object handler) throws Exception {
         String token = (String) request.getSession().getAttribute("token");
         if (token != null) {
-            String loginName = token.substring(14);
+            String[] strs = token.split("#");
+            String loginName = strs[1];
             if (loginConfig.adminLoginConfig().getLoginName().equals(loginName)
                     || loginConfig.inspectionLoginConfig().getLoginName().equals(loginName)) {
                 return true;

+ 1 - 8
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/api/AuthApi.java

@@ -84,14 +84,7 @@ public class AuthApi {
         if (!StringUtils.isEmpty(token)) {
             session.setAttribute("token", null);
         }
-        session.setAttribute("token", System.currentTimeMillis() + "#" + domain.getLoginName());
-        if (!Objects.equals(loginConfig.inspectionLoginConfig().getLoginName(), user.getLoginName())) {
-            if (Objects.equals(Role.COLLECTOR, domain.getRole())) {
-                session.setAttribute("collector", domain);
-            } else {
-                session.setAttribute("markUser", domain);
-            }
-        }
+        session.setAttribute("token", System.currentTimeMillis() + "#" + domain.getLoginName() + "#" + domain.getId());
         return domain;
     }
 

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

@@ -37,8 +37,8 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
 
     long countByQuestionIdIn(List<Long> questionIds);
 
-    @Query(value = "select count(1) from mark_task m left join paper p on m.paper_id = p.id where m.question_id = ? and p.batch_no = (select max(batch_no) from paper where question_id = ?)", nativeQuery = true)
-    long countByQuestionId(Long questionId, Long questionId1);
+    @Query(value = "select count(1) from mark_task m left join paper p on m.paper_id = p.id where m.question_id = ? and p.batch_no = (select max(batch_no) from paper where question_id = ?) and m.marker_id = ?", nativeQuery = true)
+    long countByQuestionId(Long questionId, Long questionId1, Long markerId);
 
     int countByQuestionIdAndStageAndResultIsNull(Long questionId, MarkStage stage);
 

+ 19 - 77
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -8,7 +8,6 @@ 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.dto.MarkTaskDTO;
 import com.alibaba.fastjson.JSONArray;
@@ -26,7 +25,6 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -45,7 +43,6 @@ public class MarkLogAop {
 
     private final String TOKEN = "token",
             MARK_USER = "markUser",//登录用户
-            COLLECTOR = "collector",//采集用户
             PARAM_ARGS = "args",//方法参数
     //            PARAM_ARG_NAMES = "argNames",//方法参数名
     ACTION = "action",//动作
@@ -63,7 +60,7 @@ public class MarkLogAop {
     private MarkLogRepo markLogRepo;
 
     @Autowired
-    private StudentRepo studentRepo;
+    MarkUserRepo markUserRepo;
 
     @Autowired
     private PaperRepo paperRepo;
@@ -113,7 +110,7 @@ public class MarkLogAop {
      */
     @AfterReturning(value = "paperAspect()", returning = RESULT)
     public void afterReturnPaperPoint(JoinPoint joinPoint, Object result) throws Exception {
-        Map<String, Object> map = getAspectCommon(joinPoint, 0);
+        Map<String, Object> map = getAspectCommon(joinPoint);
         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);
@@ -155,7 +152,7 @@ public class MarkLogAop {
      */
     @AfterReturning(value = "markAspect()", returning = RESULT)
     public void afterReturnMarkPoint(JoinPoint joinPoint, Object result) throws Exception {
-        Map<String, Object> map = getAspectCommon(joinPoint, 0);
+        Map<String, Object> map = getAspectCommon(joinPoint);
         JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
         MarkUser markUser = (MarkUser) map.get(MARK_USER);
         JSONObject aopResult = JSONObject.parseObject(JSONObject.toJSONString(result));
@@ -255,67 +252,6 @@ public class MarkLogAop {
         //20191107wangliang加入仲裁自动打回算法 end
     }
 
-    /**
-     * 采集切入(废弃)
-     *
-     * @param joinPoint
-     * @param result
-     * @throws Exception
-     */
-//    @AfterReturning(value = "collectAspect()", returning = RESULT)
-    public void afterReturnCollectPoint(JoinPoint joinPoint, Object result) throws Exception {
-        //参数
-        Object[] paramValues = joinPoint.getArgs();
-
-        // 参数 workdId, subjectId, examNumber
-        Long workId = JSONObject.parseObject(String.valueOf(paramValues[0]), Long.class);
-        int subjectId = JSONObject.parseObject(String.valueOf(paramValues[1]), int.class);
-        Subject subject = Subject.values()[subjectId - 1];
-        String examNumber = JSONObject.parseObject(String.valueOf(paramValues[2]), String.class);
-
-        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-        //取采集用户id
-        Long clientUserId = Long.valueOf(request.getParameter("clientUserId"));
-        //取采集用户名称
-        String clientUsername = request.getParameter("clientUsername");
-        //学生信息
-        String name = request.getParameter("name");
-        //试卷信息
-        List<Paper> paperList = paperRepo.findByWorkIdAndExamNumber(workId, examNumber);
-        Paper paper = paperList.get(0);
-
-        Integer operType = MarkLogOperType.COLLECT.getId();
-
-        Work work = workRepo.findOne(workId);
-
-        MarkLog markLog = new MarkLog();
-        markLog.setCreateUserId(clientUserId);
-        markLog.setCreateUserName(clientUsername);
-        markLog.setCreateRole(Role.COLLECTOR.getName());
-        markLog.setSubject(subject.toString());
-        markLog.setExamNumber(examNumber);
-        markLog.setStudentName(name);
-        markLog.setOperType(operType);
-        markLog.setWorkId(workId);
-        markLog.setWorkName(work.getName());
-        markLog.setPaperId(paper.getId());
-        markLog.setStage(MarkStage.INIT);
-        //识别方式
-        String manual = request.getParameter("manual");
-        markLog.setRemark("0".equals(manual) ? "正常扫描" : "1".equals(manual) ? "手工绑定" : null);
-        //操作时间
-        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String time = request.getParameter("time");
-        markLog.setCreateTime(formatter.parse(time));
-        //登录时间
-        String clientUserLoginTime = request.getParameter("clientUserLoginTime");
-        markLog.setLoginTime(formatter.parse(clientUserLoginTime));
-        //退出时间(没有退出时间)
-        LOGGER.info("markLog:{}", JSONObject.toJSONString(markLog));
-        //分档、打分、回评档位、回评分数、档位打回、档位打回回评end
-        markLogRepo.save(markLog);
-    }
-
     /**
      * 查询处于哪个档位公用
      *
@@ -350,11 +286,10 @@ public class MarkLogAop {
      * 切面公用方法
      *
      * @param joinPoint
-     * @param type
      * @return
      * @throws Exception
      */
-    public Map getAspectCommon(JoinPoint joinPoint, int type) throws Exception {
+    public Map getAspectCommon(JoinPoint joinPoint) throws Exception {
         String className = joinPoint.getSignature().getDeclaringTypeName();
         String methodName = joinPoint.getSignature().getName();
         LOGGER.info("{} aspect path:{}", this.getClass().getMethods()[0], className + "." + methodName);
@@ -365,17 +300,24 @@ public class MarkLogAop {
         if (Objects.isNull(token)) {
             throw new Exception("请先登录");
         }
+        Object[] args = joinPoint.getArgs(); // 参数值
+        MarkTask markTask = null;
         MarkUser markUser = null;
-        switch (type) {
-            case 0:
-                markUser = (MarkUser) session.getAttribute(MARK_USER);
-                break;
-            default:
-                markUser = (MarkUser) session.getAttribute(COLLECTOR);
-                break;
+        if (Objects.nonNull(args) && args.length > 0) {
+            for (Object o : args) {
+                if (o instanceof MarkTask) {
+                    markTask = (MarkTask) o;
+                    break;
+                }
+            }
+        }
+        if (Objects.nonNull(markTask)) {
+            markUser = markUserRepo.findOne(markTask.getMarkerId());
+        } else {
+            String[] strs = token.split("#");
+            markUser = markUserRepo.findOne(Long.parseLong(strs[2]));
         }
         LOGGER.info("markUser:{}", JSONObject.toJSONString(markUser));
-        Object[] args = joinPoint.getArgs(); // 参数值
 //        String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();//参数名
         JSONArray jsonArgsArray = JSONObject.parseArray(JSONObject.toJSONString(args));
 //        JSONArray jsonArgNamesArray = JSONObject.parseArray(JSONObject.toJSONString(argNames));

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

@@ -147,7 +147,7 @@ public class MakrerApi {
         }
 
         //当前老师当前试卷的评档次数(不分档位)
-        long kdtotal = markTaskRepo.countByQuestionId(questionId, questionId);
+        long kdtotal = markTaskRepo.countByQuestionId(questionId, questionId, marker.getId());
         //当前老师所有的评档次数(不分档位)
         long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
 

+ 5 - 12
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.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.repository.ExamQuestionRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
@@ -22,12 +23,8 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.persistence.criteria.Predicate;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
 import java.util.*;
 
 /**
@@ -54,6 +51,9 @@ public class MarkTaskApi {
     @Autowired
     PaperRepo paperRepo;
 
+    @Autowired
+    MarkUserRepo markUserRepo;
+
     /**
      * 评卷员的评卷任务
      *
@@ -106,15 +106,8 @@ public class MarkTaskApi {
                 if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
                     List<Paper> paperList = paperRepo.findByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeAndWorkIdOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_FORMAL.getId(), examQuestion.getAreaCode(), examQuestion.getWorkId());
                     if (Objects.nonNull(paperList) && paperList.size() > 0) {
-                        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-                        HttpServletRequest request = attributes.getRequest();
-                        HttpSession session = request.getSession();
-                        String token = (String) session.getAttribute("token");
-                        if (Objects.isNull(token)) {
-                            throw new Exception("请先登录");
-                        }
+                        MarkUser markUser = markUserRepo.findOne(markerId);
                         for (Paper p : paperList) {
-                            MarkUser markUser = (MarkUser) session.getAttribute("markUser");
                             MarkTask markTask = new MarkTask(markUser, p, stage, 1L);
                             markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
                         }