deason 2 kuukautta sitten
vanhempi
commit
b07c559327

+ 48 - 2
src/main/java/cn/com/qmth/examcloud/tool/service/unbind_student_code/UnbindStudentCodeTask.java

@@ -9,6 +9,9 @@ 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.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
 import com.fasterxml.jackson.core.type.TypeReference;
 import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
@@ -16,7 +19,9 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Component
@@ -38,7 +43,48 @@ public class UnbindStudentCodeTask implements TaskService {
     /**
      * 将某个学校的所有学生解绑学号
      */
-    public void execute(User loginUser) {
+    public void unbindStudentCodeForExcel(User loginUser) {
+        String dataFilePath = "D:/home/data/unbindStudentCodes.xlsx";
+
+        long startTime = System.currentTimeMillis();
+        List<StudentVO> list = new ArrayList<>();
+        try {
+            EasyExcel.read(dataFilePath, StudentVO.class, new AnalysisEventListener<StudentVO>() {
+                        @Override
+                        public void invoke(StudentVO data, AnalysisContext analysisContext) {
+                            list.add(data);
+                        }
+
+                        @Override
+                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+                            // ignore
+                        }
+                    }
+            ).sheet().doRead();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new RuntimeException("Excel内容解析错误,请使用标准模板!");
+        }
+
+        log.info("待解绑条数:{}", list.size());
+
+        final String unbindUrl = loginUser.getServerUrl() + "/api/ecs_core/student/unbindStudentCode?rootOrgId=%s&studentCode=%s";
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
+
+        for (StudentVO student : list) {
+            String url = String.format(unbindUrl, loginUser.getRootOrgId(), student.getStudentCodesStr());
+            log.info("identityNumber:{} studentCode:{}", student.getIdentityNumber(), student.getStudentCodesStr());
+            HttpHelper.post(url, headers, null);
+        }
+        log.info("解绑完成,耗时:{}ms", System.currentTimeMillis() - startTime);
+    }
+
+    /**
+     * 将某个学校的所有学生解绑学号
+     */
+    public void unbindStudentCodeForAll(User loginUser) {
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
@@ -57,7 +103,7 @@ public class UnbindStudentCodeTask implements TaskService {
                 break;
             }
 
-            String unbindUrl = loginUser.getServerUrl() + "/api/ecs_core/student/unbindStudentCode?rootOrgId=%s&identityNumber=%s&studentCode=";
+            String unbindUrl = loginUser.getServerUrl() + "/api/ecs_core/student/unbindStudentCode?rootOrgId=%s&identityNumber=%s";
             for (StudentVO student : page.getList()) {
                 HttpHelper.post(String.format(unbindUrl, student.getRootOrgId(), student.getIdentityNumber()), headers, null);
             }

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

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.tool.service.unbind_student_code.vo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -18,8 +19,10 @@ public class StudentVO implements Serializable {
 
     private String name;
 
+    @ExcelProperty(value = "identityNumber", index = 1)
     private String identityNumber;
 
+    @ExcelProperty(value = "studentCodesStr", index = 0)
     private String studentCodesStr;// 多个学号时用逗号分隔
 
     private List<String> studentCodeList;// 学号列表

+ 6 - 4
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -55,11 +55,12 @@ public class ToolTest {
 
     @Test
     public void demo() throws Exception {
-        // User loginUser = doLogin();
+        User loginUser = doLogin();
 
         // this.testTask(loginUser);
         // resetStudentPasswordTask.execute(loginUser, 0L);
-        // unbindStudentCodeTask.execute(loginUser);
+        // unbindStudentCodeTask.unbindStudentCodeForAll(loginUser);
+        // unbindStudentCodeTask.unbindStudentCodeForExcel(loginUser);
         // exportExamPaperStructTask.execute(loginUser, 0L, DATA_DIR);
         // examRecordDataAuditTask.execute(loginUser);
         // exportStudentPhotoTask.execute(null, DATA_DIR);
@@ -82,9 +83,10 @@ public class ToolTest {
     }
 
     private User doLogin() {
-        String serverUrl = "org0.dev39.qmth.com.cn";
+        // String serverUrl = "192.168.10.41";
+        // String serverUrl = "org0.dev39.qmth.com.cn";
         // String serverUrl = "ecs-test.ea100.com.cn";
-        // String serverUrl = "exam.exam-cloud.cn";
+        String serverUrl = "exam.exam-cloud.cn";
 
         String loginName = "admin5";
         String password = "0";