Prechádzať zdrojové kódy

采集端日志记录

xiaof 5 rokov pred
rodič
commit
ba6459814d

+ 1 - 0
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -96,6 +96,7 @@ public class CollectApi {
 //                loginname.equals(loginConfig.clientLoginConfig().getLoginName()) && password.equals(loginConfig.clientLoginConfig().getPassword())) {
         Work activeWork = workRepo.findByActiveTrue();
         loginDTO = new LoginDTO();
+        loginDTO.setUserId(markUser.getId());
         loginDTO.setExamId(activeWork.getId());
         loginDTO.setExamName(activeWork.getName());
         loginDTO.setImageEnc(imageConfig.isImageEnc());

+ 9 - 0
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/dto/LoginDTO.java

@@ -8,6 +8,7 @@ import java.util.List;
  */
 public class LoginDTO {
 
+    private Long userId;
     private String name;
     private Long examId;
     private String examName;
@@ -22,6 +23,14 @@ public class LoginDTO {
         this.imageEnc = imageEnc;
     }
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
     public String getName() {
         return name;
     }

+ 67 - 68
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -3,17 +3,12 @@ package cn.com.qmth.stmms.ms.log.aop;
 import cn.com.qmth.stmms.ms.commons.config.LevelConfig;
 import cn.com.qmth.stmms.ms.commons.constant.ArbitrateCallback;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
-import cn.com.qmth.stmms.ms.core.domain.MarkLog;
-import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
-import cn.com.qmth.stmms.ms.core.domain.MarkStage;
-import cn.com.qmth.stmms.ms.core.domain.Paper;
+import cn.com.qmth.stmms.ms.core.domain.*;
 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.MarkLogRepo;
-import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
-import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
-import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
+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;
@@ -31,6 +26,7 @@ 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;
 
@@ -98,12 +94,12 @@ public class MarkLogAop {
     public void markAspect() {
     }
 
-//    /**
-//     * 采集端采集试卷切入点
-//     */
-//    @Pointcut("execution(* cn.com.qmth.stmms.ms.collect.api.CollectApi.imageUploadSheet(..))")
-//    public void collectAspect() {
-//    }
+    /**
+     * 采集端采集试卷切入点
+     */
+    @Pointcut("execution(* cn.com.qmth.stmms.ms.collect.api.CollectApi.imageUploadSheet(..))")
+    public void collectAspect() {
+    }
 
     /**
      * 标准卷设置、定档设置、档位打回切入
@@ -253,60 +249,63 @@ 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 {
-//        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));
-//
-//        // 参数 workdId, subjectId, examNumber
-//        JSONObject arg0 = (JSONObject) jsonArgsArray.get(0);
-//        Long workId = JSONObject.parseObject(arg0.toJSONString(), Long.class);
-//        JSONObject arg1 = (JSONObject) jsonArgsArray.get(1);
-//        int subjectId = JSONObject.parseObject(arg1.toJSONString(), int.class);
-//        Subject subject = Subject.values()[subjectId - 1];
-//        JSONObject arg3 = (JSONObject) jsonArgsArray.get(2);
-//        String examNumber = JSONObject.parseObject(arg3.toJSONString(), String.class);
-//
-//        //学生信息
-//        Student student = studentRepo.findByWorkIdAndExamNumber(workId, examNumber);
-//
-//        //试卷信息
-//        List<Paper> paperList = paperRepo.findByWorkIdAndExamNumber(workId, examNumber);
-//        Paper paper = paperList.get(0);
-//
-//        Integer operType = MarkLogOperType.COLLECT.getId();
-//
-//        MarkLog markLog = new MarkLog();
-//        markLog.setCreateUserId(markUser.getId());
-//        markLog.setCreateUserName(markUser.getName());
-//        markLog.setCreateRole(markUser.getRole().getName());
-//        markLog.setSubject(subject.toString());
-//        markLog.setExamNumber(examNumber);
-//        markLog.setStudentName(student.getName());
-//        markLog.setOperType(operType);
-//        markLog.setWorkId(workId);
-//        markLog.setPaperId(paper.getId());
-//        markLog.setStage(MarkStage.INIT);
-//        //识别方式
-//        markLog.setRemark("");
-//        //操作时间
-//        markLog.setCreateTime(new Date());
-//        //todo
-//        //登录时间
-//        //退出时间
-//        LOGGER.info("markLog:{}", JSONObject.toJSONString(markLog));
-//        //分档、打分、回评档位、回评分数、档位打回、档位打回回评end
-//        markLogRepo.save(markLog);
-//    }
+    /**
+     * 采集切入
+     *
+     * @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();
+
+        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.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);
+    }
 
     /**
      * 查询处于哪个档位公用