deason 8 mesiacov pred
rodič
commit
fe0b41bd2a

+ 72 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/unbind_student_code/UnbindStudentCodeTask.java

@@ -0,0 +1,72 @@
+package cn.com.qmth.examcloud.tool.service.unbind_student_code;
+
+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.unbind_student_code.vo.StudentVO;
+import cn.com.qmth.examcloud.tool.utils.HttpHelper;
+import cn.com.qmth.examcloud.tool.utils.JsonMapper;
+import cn.com.qmth.examcloud.tool.vo.PageInfo;
+import cn.com.qmth.examcloud.tool.vo.user.User;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.apache.commons.collections4.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class UnbindStudentCodeTask implements TaskService {
+
+    private final static Logger log = LoggerFactory.getLogger(UnbindStudentCodeTask.class);
+
+    @Autowired
+    private SysProperty sysProperty;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Override
+    public void start(TaskEntity task) {
+        // this.execute(loginUser, task);
+    }
+
+    /**
+     * 将某个学校的所有学生解绑学号
+     */
+    public void execute(User loginUser) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
+
+        JsonMapper jsonMapper = new JsonMapper();
+        int sum = 0, pageNo = 0, pageSize = 1;
+
+        String url = loginUser.getServerUrl() + "/api/ecs_core/student/studentPage/%s/%s";
+        while (true) {
+            String json = HttpHelper.get(String.format(url, pageNo, pageSize), headers, null);
+            PageInfo<StudentVO> page = jsonMapper.parseJson(json, new TypeReference<PageInfo<StudentVO>>() {
+
+            });
+
+            if (page == null || CollectionUtils.isEmpty(page.getList())) {
+                break;
+            }
+
+            String unbindUrl = loginUser.getServerUrl() + "/api/ecs_core/student/unbindStudentCode?rootOrgId=%s&identityNumber=%s&studentCode=";
+            for (StudentVO student : page.getList()) {
+                HttpHelper.post(String.format(unbindUrl, student.getRootOrgId(), student.getIdentityNumber()), headers, null);
+            }
+
+            pageNo++;
+            sum += page.getList().size();
+            float rate = sum * 100f / page.getTotal();
+            log.info("已解绑学号数:{} 进度:{}%", sum, rate);
+        }
+    }
+
+}

+ 27 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/unbind_student_code/vo/StudentVO.java

@@ -0,0 +1,27 @@
+package cn.com.qmth.examcloud.tool.service.unbind_student_code.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Setter
+@Getter
+public class StudentVO implements Serializable {
+
+    private static final long serialVersionUID = -4647126917276922968L;
+
+    private Long id;
+
+    private Long rootOrgId;
+
+    private String name;
+
+    private String identityNumber;
+
+    private String studentCodesStr;// 多个学号时用逗号分隔
+
+    private List<String> studentCodeList;// 学号列表
+
+}

+ 5 - 0
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -11,6 +11,7 @@ import cn.com.qmth.examcloud.tool.service.export_exam_capture.ExportExamCaptureT
 import cn.com.qmth.examcloud.tool.service.export_exam_paper_struct.ExportExamPaperStructTask;
 import cn.com.qmth.examcloud.tool.service.export_student_photo.ExportStudentPhotoTask;
 import cn.com.qmth.examcloud.tool.service.reset_student_password.ResetStudentPasswordTask;
+import cn.com.qmth.examcloud.tool.service.unbind_student_code.UnbindStudentCodeTask;
 import cn.com.qmth.examcloud.tool.utils.JsonMapper;
 import cn.com.qmth.examcloud.tool.vo.user.User;
 import org.junit.Test;
@@ -35,6 +36,9 @@ public class ToolTest {
     @Autowired
     private ResetStudentPasswordTask resetStudentPasswordTask;
 
+    @Autowired
+    private UnbindStudentCodeTask unbindStudentCodeTask;
+
     @Autowired
     private ExportStudentPhotoTask exportStudentPhotoTask;
 
@@ -55,6 +59,7 @@ public class ToolTest {
 
         // this.testTask(loginUser);
         // resetStudentPasswordTask.execute(loginUser, 0L);
+        // unbindStudentCodeTask.execute(loginUser);
         // exportExamPaperStructTask.execute(loginUser, 0L, DATA_DIR);
         // examRecordDataAuditTask.execute(loginUser);
         // exportStudentPhotoTask.execute(loginUser, DATA_DIR);