deason 2 days ago
parent
commit
a2786ccbaa

+ 2 - 2
src/main/java/cn/com/qmth/examcloud/tool/service/CommonService.java

@@ -262,7 +262,7 @@ public class CommonService {
             pageNo++;
             sum += page.getList().size();
             float rate = sum * 100f / page.getTotal();
-            log.info("examId:{} courseId:{} 已获取考生数:{} 进度:{}%", examId, courseId, sum, rate);
+            log.info("examId:{} courseId:{} identityNumber:{} 已获取考生数:{} 进度:{}%", examId, courseId, identityNumber, sum, rate);
         }
 
         return all;
@@ -305,7 +305,7 @@ public class CommonService {
 
             sum += page.getContent().size();
             float rate = sum * 100f / page.getTotalElements();
-            log.info("examId:{} courseId:{} 已获取考生数:{} 进度:{}%", examId, courseId, sum, rate);
+            log.info("examId:{} courseId:{} identityNumber:{} 已获取考生数:{} 进度:{}%", examId, courseId, identityNumber, sum, rate);
         }
 
         return all;

+ 21 - 2
src/main/java/cn/com/qmth/examcloud/tool/service/batch_delete_exam_student/BatchDeleteExamStudentTask.java

@@ -5,6 +5,7 @@ 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.batch_delete_exam_student.vo.ExamStudentExcelVO;
+import cn.com.qmth.examcloud.tool.utils.HttpHelper;
 import cn.com.qmth.examcloud.tool.vo.examstudent.EwExamStudentVO;
 import cn.com.qmth.examcloud.tool.vo.user.User;
 import com.alibaba.excel.EasyExcel;
@@ -16,7 +17,9 @@ 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
 public class BatchDeleteExamStudentTask implements TaskService {
@@ -60,16 +63,32 @@ public class BatchDeleteExamStudentTask implements TaskService {
             throw new RuntimeException("Excel内容解析错误,请使用标准模板!");
         }
 
-        log.info("待删除数:{}", list.size());
+        log.info("待删除考生数:{}", list.size());
 
         for (ExamStudentExcelVO vo : list) {
             List<EwExamStudentVO> examStudents = commonService.getExamStudentListFromEW(loginUser, vo.getExamId(), null, vo.getIdentityNumber());
+            if (examStudents.isEmpty()) {
+                log.warn("【未找到考生】examId:{} identityNumber:{}", vo.getExamId(), vo.getIdentityNumber());
+                continue;
+            }
+
             for (EwExamStudentVO examStudent : examStudents) {
-                log.info("examId:{} identityNumber:{} examStudentId:{}", examStudent.getExamId(), examStudent.getIdentityNumber(), examStudent.getId());
+                log.info("【待删除】examId:{} identityNumber:{} examStudentId:{}", examStudent.getExamId(), examStudent.getIdentityNumber(), examStudent.getId());
+                this.deleteExamStudent(loginUser, examStudent.getId());
             }
         }
 
         log.info("删除完成,耗时:{}ms", System.currentTimeMillis() - startTime);
     }
 
+    private void deleteExamStudent(User loginUser, Long examStudentId) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
+
+        String url = loginUser.getServerUrl() + "/api/ecs_exam_work/exam_student/" + examStudentId;
+        String result = HttpHelper.delete(url, headers, null);
+        log.info("【删除已执行】{}", result);
+    }
+
 }

+ 13 - 1
src/main/java/cn/com/qmth/examcloud/tool/utils/HttpHelper.java

@@ -51,6 +51,18 @@ public class HttpHelper {
         return call(url, headers, builder);
     }
 
+    public static String delete(String url, Map<String, String> headers, Map<String, Object> params) {
+        String jsonParams = "{}";
+        if (MapUtils.isNotEmpty(params)) {
+            jsonParams = new JsonMapper().toJson(params);
+        }
+        log.debug("[DELETE] {}, headers: {}, params: {}", url, headers, jsonParams);
+
+        RequestBody requestBody = FormBody.create(jsonParams, MediaType.parse(Constants.CONTENT_TYPE_JSON));
+        Request.Builder builder = new Request.Builder().delete(requestBody).url(url);
+        return call(url, headers, builder);
+    }
+
     private static String call(String url, Map<String, String> headers, Request.Builder builder) {
         if (MapUtils.isNotEmpty(headers)) {
             for (Map.Entry<String, String> entry : headers.entrySet()) {
@@ -60,7 +72,7 @@ public class HttpHelper {
 
         Request request = builder.build();
         try (Response response = HttpClientBuilder.getClient().newCall(request).execute();
-                ResponseBody body = response.body();) {
+             ResponseBody body = response.body();) {
             String bodyStr = body.string();
             if (response.isSuccessful()) {
                 return bodyStr;