deason 1 éve
szülő
commit
6ee100c259

+ 15 - 11
src/main/java/cn/com/qmth/examcloud/tool/service/exam_record_audit/ExamRecordDataAuditTask.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.tool.service.exam_record_audit;
 
 import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
 import cn.com.qmth.examcloud.tool.vo.user.User;
 import org.slf4j.Logger;
@@ -15,7 +17,7 @@ import java.util.Map;
 import java.util.Set;
 
 @Component
-public class ExamRecordDataAuditTask {
+public class ExamRecordDataAuditTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(ExamRecordDataAuditTask.class);
 
@@ -25,7 +27,15 @@ public class ExamRecordDataAuditTask {
     @Autowired
     private CommonService commonService;
 
-    public void start(User user) {
+    @Override
+    public void start(TaskEntity task) {
+        // this.execute(loginUser, task);
+    }
+
+    /**
+     * 将某些考试记录重审为违纪
+     */
+    public void execute(User loginUser) {
         Set<Long> examRecordDataIds = new HashSet<>();
         // examRecordDataIds.add(52801472L);
         // examRecordDataIds.add(52796160L);
@@ -33,18 +43,12 @@ public class ExamRecordDataAuditTask {
         // examRecordDataIds.add(52791705L);
         // examRecordDataIds.add(52801046L);
         // examRecordDataIds.add(52793413L);
-        this.execute(user, examRecordDataIds);
-    }
 
-    /**
-     * 将某些考试记录重审为违纪
-     */
-    private void execute(User user, Set<Long> examRecordDataIds) {
-        String url = user.getServerUrl() + "/api/ecs_oe_admin/exam/audit/redoAudit";
+        String url = loginUser.getServerUrl() + "/api/ecs_oe_admin/exam/audit/redoAudit";
 
         Map<String, String> headers = new HashMap<>();
-        headers.put("key", user.getKey());
-        headers.put("token", user.getToken());
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
 
         Map<String, Object> params = new HashMap<>();
         params.put("examRecordDataIds", examRecordDataIds);

+ 20 - 14
src/main/java/cn/com/qmth/examcloud/tool/service/export_student_photo/ExportStudentPhotoTask.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.tool.service.export_student_photo;
 
 import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.export_student_photo.vo.StudentVO;
 import cn.com.qmth.examcloud.tool.utils.FileHelper;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
@@ -23,7 +25,7 @@ import java.util.List;
 import java.util.Map;
 
 @Component
-public class ExportStudentPhotoTask {
+public class ExportStudentPhotoTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(ExportStudentPhotoTask.class);
 
@@ -33,28 +35,31 @@ public class ExportStudentPhotoTask {
     @Autowired
     private CommonService commonService;
 
-    private static final String EXPORT_DIR = "D:/home/captures/photo/";
+    @Override
+    public void start(TaskEntity task) {
+        // this.execute(loginUser, task);
+    }
 
-    public void start(User user) {
-        // List<StudentVO> hasPhotoStudents = this.loadStudentFromUrl(user);
+    public void execute(User loginUser, String exportDir) {
+        // List<StudentVO> hasPhotoStudents = this.loadStudentFromUrl(loginUser);
         List<StudentVO> hasPhotoStudents = this.loadStudentFromExcel();
-        this.downloadStudents(hasPhotoStudents);
+        this.downloadStudents(exportDir, hasPhotoStudents);
     }
 
-    private List<StudentVO> loadStudentFromUrl(User user) {
+    private List<StudentVO> loadStudentFromUrl(User loginUser) {
         Map<String, String> headers = new HashMap<>();
-        headers.put("key", user.getKey());
-        headers.put("token", user.getToken());
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
 
         JsonMapper jsonMapper = new JsonMapper();
         long pageNo = 0, pageSize = 100, total = 0, finishedCount = 0, noPhotoCount = 0;
 
-        final String url = user.getServerUrl()
+        final String url = loginUser.getServerUrl()
                 + "/api/ecs_core/student/studentPage/%s/%s?rootOrgId=%s&identityNumber=&studentCode=&name=";
 
         List<StudentVO> hasPhotoStudents = new ArrayList<>();
         while (true) {
-            String json = HttpHelper.get(String.format(url, pageNo, pageSize, user.getRootOrgId()), headers, null);
+            String json = HttpHelper.get(String.format(url, pageNo, pageSize, loginUser.getRootOrgId()), headers, null);
 
             PageInfo<StudentVO> page = jsonMapper.parseJson(json, new TypeReference<PageInfo<StudentVO>>() {
 
@@ -87,17 +92,18 @@ public class ExportStudentPhotoTask {
     private List<StudentVO> loadStudentFromExcel() {
         List<StudentVO> hasPhotoStudents = new ArrayList<>();
         //todo
+
         return hasPhotoStudents;
     }
 
-    private void downloadStudents(List<StudentVO> students) {
+    private void downloadStudents(String exportDir, List<StudentVO> students) {
         for (StudentVO student : students) {
             // 下载底照
-            this.downloadPhoto(student);
+            this.downloadPhoto(exportDir, student);
         }
     }
 
-    private void downloadPhoto(StudentVO student) {
+    private void downloadPhoto(String exportDir, StudentVO student) {
         String identityNumber = student.getIdentityNumber();
 
         String studentCode;
@@ -109,7 +115,7 @@ public class ExportStudentPhotoTask {
             studentCode = "IDCard_" + student.getIdentityNumber();
         }
 
-        String filePath = EXPORT_DIR + "/" + student.getRootOrgId() + "/" + studentCode + ".jpg";
+        String filePath = exportDir + "/" + student.getRootOrgId() + "/" + studentCode + ".jpg";
         if (new File(filePath).exists()) {
             log.info("【已下载】 studentCode:{} identityNumber:{} filePath:{}", studentCode, identityNumber, filePath);
             return;

+ 16 - 13
src/main/java/cn/com/qmth/examcloud/tool/service/query_paper_struct/QueryPaperStructTask.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.tool.service.query_paper_struct;
 
 import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.CourseVO;
 import cn.com.qmth.examcloud.tool.service.query_paper_struct.vo.ExamPaperVO;
 import cn.com.qmth.examcloud.tool.service.query_paper_struct.vo.ExtractConfigVO;
@@ -30,7 +32,7 @@ import java.util.List;
 import java.util.Map;
 
 @Component
-public class QueryPaperStructTask {
+public class QueryPaperStructTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(QueryPaperStructTask.class);
 
@@ -40,21 +42,22 @@ public class QueryPaperStructTask {
     @Autowired
     private CommonService commonService;
 
-    public void start(User user, Long examId) {
-        this.execute(user, examId);
+    @Override
+    public void start(TaskEntity task) {
+        // this.execute(loginUser, task);
     }
 
-    private void execute(User user, Long examId) {
+    public void execute(User loginUser, Long examId, String exportDir) {
         Map<String, String> headers = new HashMap<>();
-        headers.put("key", user.getKey());
-        headers.put("token", user.getToken());
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
 
-        List<CourseVO> courses = commonService.getExamCourseList(user, examId);
+        List<CourseVO> courses = commonService.getExamCourseList(loginUser, examId);
         log.info("考试Id:{}, 课程数为:{}", examId, courses.size());
 
         List<List<String>> excelRows = new ArrayList<>();
         for (CourseVO course : courses) {
-            List<ExtractConfigVO> extractConfigs = this.getExtractConfig(user, examId, course.getCourseCode());
+            List<ExtractConfigVO> extractConfigs = this.getExtractConfig(loginUser, examId, course.getCourseCode());
             if (CollectionUtils.isEmpty(extractConfigs)) {
                 // 若当前账号未配相关数据权限,则会取不到调卷规则数据,请更换账号!!
                 log.info("考试Id:{}, 课程Id:{}, 课程代码:{}, 未配置调卷规则!", examId, course.getCourseId(),
@@ -80,7 +83,7 @@ public class QueryPaperStructTask {
             }
         }
 
-        final String filePath = "D:/result_" + examId + ".xlsx";
+        final String filePath = exportDir + "result_" + examId + ".xlsx";
         List<String> excelHeaders = Lists.newArrayList("考试Id", "课程代码", "课程名称", "抽题模式", "权重比例", "试卷类型", "试卷Id", "试卷名称");
         EasyExcel.write(filePath).head(ExcelHelper.buildHeaders(excelHeaders))
                 .registerWriteHandler(ExcelHelper.sheetStrategy()).registerWriteHandler(ExcelHelper.styleStrategy())
@@ -113,16 +116,16 @@ public class QueryPaperStructTask {
     /**
      * 查询某个考试课程的调卷规则配置
      */
-    private List<ExtractConfigVO> getExtractConfig(User user, Long examId, String courseCode) {
+    private List<ExtractConfigVO> getExtractConfig(User loginUser, Long examId, String courseCode) {
         Map<String, String> headers = new HashMap<>();
-        headers.put("key", user.getKey());
-        headers.put("token", user.getToken());
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
 
         Map<String, String> params = new HashMap<>();
         params.put("examId", String.valueOf(examId));
         params.put("courseNo", courseCode);
 
-        String url = user.getServerUrl() + "/api/ecs_ques/findPageExtractConfig/1/10";
+        String url = loginUser.getServerUrl() + "/api/ecs_ques/findPageExtractConfig/1/10";
         String json = HttpHelper.get(url, headers, params);
 
         Pager<ExtractConfigVO> page = new JsonMapper().parseJson(json, new TypeReference<Pager<ExtractConfigVO>>() {

+ 12 - 8
src/main/java/cn/com/qmth/examcloud/tool/service/reset_student_password/ResetStudentPasswordTask.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.tool.service.reset_student_password;
 
 import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.reset_student_password.vo.StudentVO;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
 import cn.com.qmth.examcloud.tool.utils.JsonMapper;
@@ -18,7 +20,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 @Component
-public class ResetStudentPasswordTask {
+public class ResetStudentPasswordTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(ResetStudentPasswordTask.class);
 
@@ -28,22 +30,23 @@ public class ResetStudentPasswordTask {
     @Autowired
     private CommonService commonService;
 
-    public void start(User user, Long rootOrgId) {
-        this.execute(user, rootOrgId);
+    @Override
+    public void start(TaskEntity task) {
+        // this.execute(loginUser, task);
     }
 
     /**
      * 将某个学校的所有学生重置密码
      */
-    private void execute(User user, Long rootOrgId) {
+    public void execute(User loginUser, Long rootOrgId) {
         Map<String, String> headers = new HashMap<>();
-        headers.put("key", user.getKey());
-        headers.put("token", user.getToken());
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
 
         JsonMapper jsonMapper = new JsonMapper();
         int sum = 0, pageNo = 0, pageSize = 100;
 
-        String url = user.getServerUrl()
+        String url = loginUser.getServerUrl()
                 + "/api/ecs_core/student/studentPage/%s/%s?rootOrgId=%s&identityNumber=&studentCode=&name=";
         while (true) {
             String json = HttpHelper.get(String.format(url, pageNo, pageSize, rootOrgId), headers, null);
@@ -51,12 +54,13 @@ public class ResetStudentPasswordTask {
             PageInfo<StudentVO> page = jsonMapper.parseJson(json, new TypeReference<PageInfo<StudentVO>>() {
 
             });
+
             if (page == null || CollectionUtils.isEmpty(page.getList())) {
                 break;
             }
 
             for (StudentVO student : page.getList()) {
-                HttpHelper.put(user.getServerUrl() + "/api/ecs_core/student/resetPass/" + student.getId(), headers,
+                HttpHelper.put(loginUser.getServerUrl() + "/api/ecs_core/student/resetPass/" + student.getId(), headers,
                         null);
             }
 

+ 16 - 14
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -25,6 +25,8 @@ import java.util.Map;
 @SpringBootTest
 public class ToolTest {
 
+    public static final String DATA_DIR = "C:/Users/deason/Desktop/data/";
+
     @Autowired
     private CommonService commonService;
 
@@ -45,23 +47,23 @@ public class ToolTest {
 
     @Test
     public void demo() throws Exception {
-        User user = doLogin();
+        User loginUser = doLogin();
 
-        // this.testTask(user);
-        // resetStudentPasswordTask.start(user, 0L);
-        // queryPaperStructTask.start(user, 0L);
-        // exportStudentPhotoTask.start(user);
-        // examRecordDataAuditTask.start(user);
+        // this.testTask(loginUser);
+        // resetStudentPasswordTask.execute(loginUser, 0L);
+        // queryPaperStructTask.execute(loginUser, 0L, DATA_DIR);
+        // exportStudentPhotoTask.execute(loginUser, DATA_DIR);
+        // examRecordDataAuditTask.execute(loginUser);
     }
 
-    private void testTask(User user) {
+    private void testTask(User loginUser) {
         Map<String, Object> params = new HashMap<>();
-        params.put("examId", 84);
-        params.put("dataFilePath", "C:/Users/deason/Desktop/批量导入考生模板.xlsx");
-        // params.put("dataFilePath", "C:/Users/deason/Desktop/批量创建用户模板.xlsx");
+        params.put("examId", 0);
+        params.put("dataFilePath", DATA_DIR + "批量导入考生模板.xlsx");
+        // params.put("dataFilePath", DATA_DIR + "批量创建用户模板.xlsx");
 
         TaskEntity task = new TaskEntity();
-        task.setUserToken(user.getToken());
+        task.setUserToken(loginUser.getToken());
         task.setParams(new JsonMapper().toJson(params));
 
         SpringContextHolder.getBean(BatchImportExamStudentTask.class).start(task);
@@ -77,9 +79,9 @@ public class ToolTest {
         String password = "0";
         String smsCode = "5220"; //选填
 
-        User user = commonService.login(serverUrl, loginName, password, smsCode);
-        LoginSessionManager.addLoginSession(user);
-        return user;
+        User loginUser = commonService.login(serverUrl, loginName, password, smsCode);
+        LoginSessionManager.addLoginSession(loginUser);
+        return loginUser;
     }
 
 }