Przeglądaj źródła

考务导入接口

wangliang 5 lat temu
rodzic
commit
fb514e71e2

+ 59 - 4
themis-backend/src/main/java/com/qmth/themis/backend/api/TBExamInvigilateUserController.java

@@ -3,18 +3,25 @@ package com.qmth.themis.backend.api;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.themis.backend.config.DictionaryConfig;
+import com.qmth.themis.backend.constant.BackendConstant;
 import com.qmth.themis.backend.util.ServletUtil;
 import com.qmth.themis.business.constant.SystemConstant;
-import com.qmth.themis.business.entity.TBExamInvigilateUser;
-import com.qmth.themis.business.entity.TBOrg;
-import com.qmth.themis.business.entity.TEExamStudent;
+import com.qmth.themis.business.entity.*;
 import com.qmth.themis.business.enums.FieldUniqueEnum;
+import com.qmth.themis.business.enums.MqEnum;
+import com.qmth.themis.business.enums.TaskTypeEnum;
+import com.qmth.themis.business.enums.TaskTypeExecEnum;
+import com.qmth.themis.business.service.TBAttachmentService;
 import com.qmth.themis.business.service.TBExamInvigilateUserService;
+import com.qmth.themis.business.service.TBTaskHistoryService;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
+import com.qmth.themis.mq.dto.MqDto;
+import com.qmth.themis.mq.service.MqDtoService;
 import io.swagger.annotations.*;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.transaction.annotation.Transactional;
@@ -23,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -40,6 +48,18 @@ public class TBExamInvigilateUserController {
     @Resource
     TBExamInvigilateUserService tbExamInvigilateUserService;
 
+    @Resource
+    MqDtoService mqDtoService;
+
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
+    @Resource
+    TBTaskHistoryService taskHistoryService;
+
+    @Resource
+    TBAttachmentService tbAttachmentService;
+
     @ApiOperation(value = "监考员查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.GET)
     @ApiResponses({@ApiResponse(code = 200, message = "监考员信息", response = TEExamStudent.class)})
@@ -110,7 +130,42 @@ public class TBExamInvigilateUserController {
         if (Objects.isNull(file) || Objects.equals(file, "")) {
             throw new BusinessException(ExceptionResultEnum.ATTACHMENT_IS_NULL);
         }
-        return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
+        Map<String, Object> mapParameter = BackendConstant.getAttachmentEnv(type);
+        TBAttachment tbAttachment = null;
+        TBTaskHistory tbTaskHistory = null;
+        Map transMap = new HashMap();
+        try {
+            TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
+            tbAttachment = tbAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), ServletUtil.getRequestPath(), mapParameter, tbUser.getOrgId(), tbUser.getId());
+            if (Objects.isNull(tbAttachment)) {
+                throw new BusinessException(ExceptionResultEnum.ATTACHMENT_ERROR);
+            } else {
+                //往任务表里插一条数据
+                tbTaskHistory = new TBTaskHistory(TaskTypeEnum.import_exam_student.ordinal(), tbAttachment.getId(), TaskTypeExecEnum.init.ordinal(), "准备开始处理", 0d, tbAttachment.getName(), tbAttachment.getRemark(), tbUser.getId());
+                taskHistoryService.save(tbTaskHistory);
+                transMap.put("tbTaskHistory", tbTaskHistory);
+            }
+            transMap.put("createId", tbUser.getId());
+            transMap.put("orgId", tbUser.getOrgId());
+            transMap.put("remark", tbAttachment.getRemark());
+            //mq发送消息start
+            MqDto mqDto = new MqDto(dictionaryConfig.mqConfigDomain().getTaskTopic(), dictionaryConfig.mqConfigDomain().getTaskTopicRoomCodeImportTag(), transMap, MqEnum.TASK_LOG, String.valueOf(tbTaskHistory.getId()), tbUser.getName());
+            mqDtoService.assembleSendOneWayMsg(mqDto);
+            //mq发送消息end
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (Objects.nonNull(tbAttachment)) {
+                tbAttachmentService.deleteAttachment(mapParameter, tbAttachment);
+            }
+            if (e instanceof BusinessException) {
+                throw new BusinessException(e.getMessage());
+            } else {
+                throw new RuntimeException(e);
+            }
+        }
+        Map map = new HashMap();
+        map.put(SystemConstant.TASK_ID, tbTaskHistory.getId());
+        return ResultUtil.ok(map);
     }
 
     @ApiOperation(value = "监考员导出接口")

+ 18 - 21
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamStudentController.java

@@ -54,6 +54,24 @@ public class TEExamStudentController {
     @Resource
     TBAttachmentService tbAttachmentService;
 
+    @Resource
+    TBTaskHistoryService taskHistoryService;
+
+    @Resource
+    TEExamService teExamService;
+
+    @Resource
+    TEExamActivityService teExamActivityService;
+
+    @Resource
+    TBExamInvigilateUserService tbExamInvigilateUserService;
+
+    @Resource
+    MqDtoService mqDtoService;
+
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
     @ApiOperation(value = "考生查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.GET)
     @ApiResponses({@ApiResponse(code = 200, message = "考生信息", response = TEExamStudent.class)})
@@ -118,27 +136,6 @@ public class TEExamStudentController {
         return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
     }
 
-    @Resource
-    TBTaskHistoryService taskHistoryService;
-
-    @Resource
-    MyThreadPool myThreadPool;
-
-    @Resource
-    TEExamService teExamService;
-
-    @Resource
-    TEExamActivityService teExamActivityService;
-
-    @Resource
-    TBExamInvigilateUserService tbExamInvigilateUserService;
-
-    @Resource
-    MqDtoService mqDtoService;
-
-    @Resource
-    DictionaryConfig dictionaryConfig;
-
     @ApiOperation(value = "考生导入接口")
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     @Transactional

+ 17 - 0
themis-business/src/main/java/com/qmth/themis/business/annotation/ExcelNotNull.java

@@ -0,0 +1,17 @@
+package com.qmth.themis.business.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @Description: excel字段不为空注解
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/19
+ */
+@Documented
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelNotNull {
+
+}

+ 14 - 8
themis-business/src/main/java/com/qmth/themis/business/dto/ExamStudentDtoImport.java → themis-business/src/main/java/com/qmth/themis/business/dto/ExamStudentImportDto.java

@@ -1,19 +1,25 @@
 package com.qmth.themis.business.dto;
 
+import com.qmth.themis.business.annotation.ExcelNotNull;
+
 import java.io.Serializable;
 
-/** 
-* @Description: 考生导入dto
-* @Param:  
-* @return:  
-* @Author: wangliang
-* @Date: 2020/7/15 
-*/ 
-public class ExamStudentDtoImport implements Serializable {
+/**
+ * @Description: 考生导入dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/15
+ */
+public class ExamStudentImportDto implements Serializable {
 
+    @ExcelNotNull
     private String name; //姓名
+    @ExcelNotNull
     private String identity; //证件号
+    @ExcelNotNull
     private String courseCode; //科目代码
+    @ExcelNotNull
     private String courseName; //科目名称
     private String grade; //年级
     private String classNo; //教学班级

+ 63 - 0
themis-business/src/main/java/com/qmth/themis/business/dto/RoomCodeImportDto.java

@@ -0,0 +1,63 @@
+package com.qmth.themis.business.dto;
+
+import com.qmth.themis.business.annotation.ExcelNotNull;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 考场导入dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/15
+ */
+public class RoomCodeImportDto implements Serializable {
+
+    @ExcelNotNull
+    private String roomCode; //考场代码
+    @ExcelNotNull
+    private String roomName; //考场名称
+    private String teacher1; //监考帐号1
+    private String teacher2; //监考帐号2
+    private String teacher3; //监考帐号3
+
+    public String getRoomCode() {
+        return roomCode;
+    }
+
+    public void setRoomCode(String roomCode) {
+        this.roomCode = roomCode;
+    }
+
+    public String getRoomName() {
+        return roomName;
+    }
+
+    public void setRoomName(String roomName) {
+        this.roomName = roomName;
+    }
+
+    public String getTeacher1() {
+        return teacher1;
+    }
+
+    public void setTeacher1(String teacher1) {
+        this.teacher1 = teacher1;
+    }
+
+    public String getTeacher2() {
+        return teacher2;
+    }
+
+    public void setTeacher2(String teacher2) {
+        this.teacher2 = teacher2;
+    }
+
+    public String getTeacher3() {
+        return teacher3;
+    }
+
+    public void setTeacher3(String teacher3) {
+        this.teacher3 = teacher3;
+    }
+}

+ 6 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/TBExamInvigilateUser.java

@@ -43,6 +43,12 @@ public class TBExamInvigilateUser implements Serializable {
 
     }
 
+    public TBExamInvigilateUser(String roomCode, String roomName) {
+        this.id = Constants.idGen.next();
+        this.roomCode = roomCode;
+        this.roomName = roomName;
+    }
+
     public TBExamInvigilateUser(Long orgId, Long userId, String roomCode, String roomName) {
         this.id = Constants.idGen.next();
         this.orgId = orgId;

+ 15 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/TBUser.java

@@ -2,6 +2,8 @@ package com.qmth.themis.business.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.qmth.themis.business.base.BaseEntity;
+import com.qmth.themis.business.constant.SystemConstant;
+import com.qmth.themis.common.contanst.Constants;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -43,6 +45,19 @@ public class TBUser extends BaseEntity {
     @TableField(value = "name")
     private String name;
 
+    public TBUser() {
+
+    }
+
+    public TBUser(Long orgId, String loginName, String name,Long createId) {
+        setId(Constants.idGen.next());
+        this.orgId = orgId;
+        this.loginName = loginName;
+        this.name = name;
+        setCreateId(createId);
+        this.password = SystemConstant.DEFAULT_PASSWORD;
+    }
+
     public String getName() {
         return name;
     }

+ 29 - 48
themis-business/src/main/java/com/qmth/themis/business/enums/AttachmentEnum.java

@@ -11,33 +11,36 @@ import java.util.Objects;
  */
 public enum AttachmentEnum {
 
-    name("姓名", true),
+    name("姓名"),
 
-    identity("证件号", true),
+    identity("证件号"),
 
-    courseCode("科目代码", true),
+    courseCode("科目代码"),
 
-    courseName("科目名称", true),
+    courseName("科目名称"),
 
-    grade("年级", false),
+    grade("年级"),
 
-    classNo("教学班级", false),
+    classNo("教学班级"),
 
-    examActivityCode("场次", false),
+    examActivityCode("场次"),
 
-    roomCode("考场代码", false),
+    roomCode("考场代码"),
 
-    roomName("考场名称", false),
+    roomName("考场名称"),
 
-    extendColumn("扩展字段", false);
+    teacher1("监考账号1"),
 
-    private String code;
+    teacher2("监考账号2"),
+
+    teacher3("监考账号3"),
 
-    private boolean required;
+    extendColumn("扩展字段");
+
+    private String code;
 
-    private AttachmentEnum(String code, boolean required) {
+    private AttachmentEnum(String code) {
         this.code = code;
-        this.required = required;
     }
 
     /**
@@ -65,6 +68,12 @@ public enum AttachmentEnum {
             return roomCode.name();
         } else if (Objects.equals(value.trim(), roomName.code)) {
             return roomName.name();
+        } else if (Objects.equals(value.trim(), teacher1.code)) {
+            return teacher1.name();
+        } else if (Objects.equals(value.trim(), teacher2.code)) {
+            return teacher2.name();
+        } else if (Objects.equals(value.trim(), teacher3.code)) {
+            return teacher3.name();
         } else {
             return identity.name();
         }
@@ -95,46 +104,18 @@ public enum AttachmentEnum {
             return roomCode.code;
         } else if (Objects.equals(value.trim(), roomName.name())) {
             return roomName.code;
+        } else if (Objects.equals(value.trim(), teacher1.name())) {
+            return teacher1.code;
+        } else if (Objects.equals(value.trim(), teacher2.name())) {
+            return teacher2.code;
+        } else if (Objects.equals(value.trim(), teacher3.name())) {
+            return teacher3.code;
         } else {
             return identity.code;
         }
     }
 
-    /**
-     * 状态转换 toCode
-     *
-     * @param value
-     * @return
-     */
-    public static boolean convertToRequired(String value) {
-        if (Objects.equals(value.trim(), name.name())) {
-            return name.required;
-        } else if (Objects.equals(value.trim(), courseCode.name())) {
-            return courseCode.required;
-        } else if (Objects.equals(value.trim(), courseName.name())) {
-            return courseName.required;
-        } else if (Objects.equals(value.trim(), extendColumn.name())) {
-            return extendColumn.required;
-        } else if (Objects.equals(value.trim(), grade.name())) {
-            return grade.required;
-        } else if (Objects.equals(value.trim(), classNo.name())) {
-            return classNo.required;
-        } else if (Objects.equals(value.trim(), examActivityCode.name())) {
-            return examActivityCode.required;
-        } else if (Objects.equals(value.trim(), roomCode.name())) {
-            return roomCode.required;
-        } else if (Objects.equals(value.trim(), roomName.name())) {
-            return roomName.required;
-        } else {
-            return identity.required;
-        }
-    }
-
     public String getCode() {
         return code;
     }
-
-    public boolean isRequired() {
-        return required;
-    }
 }

+ 14 - 4
themis-business/src/main/java/com/qmth/themis/business/templete/TaskImportCommon.java

@@ -50,10 +50,16 @@ public class TaskImportCommon {
      */
     public void init() {
         Gson gson = new Gson();
-        this.mode = Integer.parseInt(String.valueOf(this.map.get("mode")));
-        this.orgId = Long.parseLong(String.valueOf(this.map.get("orgId")));
+        if (Objects.nonNull(this.map.get("mode"))) {
+            this.mode = Integer.parseInt(String.valueOf(this.map.get("mode")));
+        }
+        if (Objects.nonNull(this.map.get("orgId"))) {
+            this.orgId = Long.parseLong(String.valueOf(this.map.get("orgId")));
+        }
         this.createId = Long.parseLong(String.valueOf(this.map.get("createId")));
-        this.examId = Long.parseLong(String.valueOf(this.map.get("examId")));
+        if (Objects.nonNull(this.map.get("examId"))) {
+            this.examId = Long.parseLong(String.valueOf(this.map.get("examId")));
+        }
         JSONObject remarkJs = JSONObject.parseObject(String.valueOf(this.map.get("remark")));
         this.type = String.valueOf(remarkJs.get("type"));
         this.path = String.valueOf(remarkJs.get("path"));
@@ -166,13 +172,17 @@ public class TaskImportCommon {
      */
     public List<String> exception(int min, int y, Exception e, List<String> txtList) {
         this.exception = true;
-        String exceptionStr = "数据处理到第" + (min + y + 1) + "条时发生异常:" + e.getMessage();
+        String exceptionStr = "数据处理到第" + (min + y + 1) + "条时发生异常" + e.getMessage();
         txtList.add(DateUtil.format(new Date(), this.timeFormat) + "->" + exceptionStr);
         this.tbTaskHistory.setSummary(exceptionStr);
         this.tbTaskHistoryService.updateById(this.tbTaskHistory);
         return txtList;
     }
 
+    public void setException(boolean exception) {
+        this.exception = exception;
+    }
+
     public boolean isException() {
         return exception;
     }

+ 34 - 27
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskExamStudentImportTemplete.java

@@ -7,11 +7,14 @@ import com.google.common.collect.Lists;
 import com.google.gson.Gson;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
-import com.qmth.themis.business.dto.ExamStudentDtoImport;
+import com.qmth.themis.business.dto.ExamStudentImportDto;
 import com.qmth.themis.business.entity.*;
 import com.qmth.themis.business.enums.ExamModeEnum;
 import com.qmth.themis.business.enums.RoleEnum;
-import com.qmth.themis.business.service.*;
+import com.qmth.themis.business.service.TBExamInvigilateUserService;
+import com.qmth.themis.business.service.TBUserRoleService;
+import com.qmth.themis.business.service.TEExamStudentService;
+import com.qmth.themis.business.service.TEStudentService;
 import com.qmth.themis.business.templete.TaskImportCommon;
 import com.qmth.themis.business.templete.TaskImportTemplete;
 import com.qmth.themis.business.util.ExcelCallback;
@@ -57,26 +60,33 @@ public class TaskExamStudentImportTemplete implements TaskImportTemplete {
         TaskImportCommon taskImportCommon = new TaskImportCommon(map);
         taskImportCommon.init();
         File file = taskImportCommon.getUploadFile();
-        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(new FileInputStream(file), Lists.newArrayList(ExamStudentDtoImport.class), new ExcelCallback() {
+        List<String> txtList = new ArrayList();
+        String timeFormat = taskImportCommon.getTimeFormat();
+        txtList.add(DateUtil.format(new Date(), timeFormat) + "->开始准备处理导入的考生数据");
+        List<String> finalTxtList = txtList;
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(new FileInputStream(file), Lists.newArrayList(ExamStudentImportDto.class), new ExcelCallback() {
             @Override
-            public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException {
+            public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException, IOException {
                 List<ExcelError> excelErrorList = new ArrayList<>();
                 for (int i = 0; i < finalList.size(); i++) {
                     LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
-                    List<Object> examStudentDtoImportList = map.get(i);
-                    for (int y = 0; y < examStudentDtoImportList.size(); y++) {
-                        ExamStudentDtoImport examStudentDtoImport = (ExamStudentDtoImport) examStudentDtoImportList.get(y);
-                        List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(examStudentDtoImport, y, i);
+                    List<Object> examStudentImportDtoList = map.get(i);
+                    for (int y = 0; y < examStudentImportDtoList.size(); y++) {
+                        ExamStudentImportDto examStudentImportDto = (ExamStudentImportDto) examStudentImportDtoList.get(y);
+                        List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(examStudentImportDto, y, i);
                         if (excelErrorTemp.size() > 0) {
                             excelErrorList.addAll(excelErrorTemp);
                         }
                         //校验考试模式,如果是集中统一,则需填写考试场次
-                        if (taskImportCommon.getMode().intValue() == ExamModeEnum.together.ordinal() && Objects.isNull(examStudentDtoImport.getExamActivityCode())) {
-                            excelErrorList.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行考场为空"));
+                        if (taskImportCommon.getMode().intValue() == ExamModeEnum.together.ordinal() && Objects.isNull(examStudentImportDto.getExamActivityCode())) {
+                            excelErrorList.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[考场]为空"));
                         }
                     }
                 }
                 if (excelErrorList.size() > 0) {
+                    finalTxtList.add(DateUtil.format(new Date(), timeFormat) + "->数据校验异常:" + JSONObject.toJSONString(excelErrorList));
+                    taskImportCommon.setException(true);
+                    taskImportCommon.writeImportResultTxt(finalTxtList.toString());
                     throw new BusinessException(JSONObject.toJSONString(excelErrorList));
                 }
                 return finalList;
@@ -91,14 +101,11 @@ public class TaskExamStudentImportTemplete implements TaskImportTemplete {
             TEStudentService teStudentService = SpringContextHolder.getBean(TEStudentService.class);
             TBUserRoleService tbUserRoleService = SpringContextHolder.getBean(TBUserRoleService.class);
             TBExamInvigilateUserService tbExamInvigilateUserService = SpringContextHolder.getBean(TBExamInvigilateUserService.class);
-            String timeFormat = taskImportCommon.getTimeFormat();
 
             List<TEExamStudent> teExamStudentList = new ArrayList<>();
             List<TEStudent> teStudentList = new ArrayList<>();
             List<TBUserRole> tbUserRoleList = new ArrayList<>();
             List<TBExamInvigilateUser> tbExamInvigilateUserList = new ArrayList<>();
-            List<String> txtList = new ArrayList();
-            txtList.add(DateUtil.format(new Date(), timeFormat) + "->开始准备处理导入的考生数据");
             int y = 0, min = 0;
             try {
                 Gson gson = new Gson();
@@ -107,27 +114,27 @@ public class TaskExamStudentImportTemplete implements TaskImportTemplete {
                 //保存用户
                 for (int i = 0; i < finalList.size(); i++) {
                     LinkedMultiValueMap<Integer, Object> finalMap = finalList.get(i);
-                    List<Object> examStudentDtoImportList = finalMap.get(i);
+                    List<Object> examStudentImportDtoList = finalMap.get(i);
                     min = 0;
-                    int max = SystemConstant.MAX_IMPORT_SIZE, size = examStudentDtoImportList.size();
+                    int max = SystemConstant.MAX_IMPORT_SIZE, size = examStudentImportDtoList.size();
                     if (max >= size) {
                         max = size;
                     }
                     while (max <= size) {
-                        List subList = examStudentDtoImportList.subList(min, max);
+                        List subList = examStudentImportDtoList.subList(min, max);
                         for (y = 0; y < subList.size(); y++) {
-                            ExamStudentDtoImport examStudentDtoImport = (ExamStudentDtoImport) subList.get(y);
-                            Map m = (Map) teExamActivityMap.get(examStudentDtoImport.getExamActivityCode());
+                            ExamStudentImportDto examStudentImportDto = (ExamStudentImportDto) subList.get(y);
+                            Map m = (Map) teExamActivityMap.get(examStudentImportDto.getExamActivityCode());
                             m = SystemConstant.timeTransform(m);
                             TEExamActivity teExamActivity = gson.fromJson(gson.toJson(m), TEExamActivity.class);
                             //先根据证件号+科目代码查询考生是否存在,存在则更新,不存在则插入
                             QueryWrapper<TEExamStudent> teExamStudentQueryWrapper = new QueryWrapper<>();
-                            teExamStudentQueryWrapper.lambda().eq(TEExamStudent::getIdentity, examStudentDtoImport.getIdentity()).eq(TEExamStudent::getCourseCode, examStudentDtoImport.getCourseCode());
+                            teExamStudentQueryWrapper.lambda().eq(TEExamStudent::getIdentity, examStudentImportDto.getIdentity()).eq(TEExamStudent::getCourseCode, examStudentImportDto.getCourseCode());
                             TEExamStudent teExamStudent = teExamStudentService.getOne(teExamStudentQueryWrapper);
                             //如果为空则插入考生数据,插入考生前先插入学生档案数据
                             if (Objects.isNull(teExamStudent)) {
                                 //先插入学生档案数据
-                                TEStudent teStudent = new TEStudent(taskImportCommon.getOrgId(), examStudentDtoImport.getIdentity(), examStudentDtoImport.getName(), taskImportCommon.getCreateId());
+                                TEStudent teStudent = new TEStudent(taskImportCommon.getOrgId(), examStudentImportDto.getIdentity(), examStudentImportDto.getName(), taskImportCommon.getCreateId());
                                 teStudentService.save(teStudent);
                                 teStudentList.add(teStudent);
 
@@ -136,19 +143,19 @@ public class TaskExamStudentImportTemplete implements TaskImportTemplete {
                                 tbUserRoleService.save(tbUserRole);
                                 tbUserRoleList.add(tbUserRole);
 
-                                teExamStudent = gson.fromJson(gson.toJson(examStudentDtoImport), TEExamStudent.class);
+                                teExamStudent = gson.fromJson(gson.toJson(examStudentImportDto), TEExamStudent.class);
                                 teExamStudent.setExamId(taskImportCommon.getExamId());
                                 teExamStudent.setExamActivityId(teExamActivity.getId());
                                 teExamStudent.setStudentId(teStudent.getId());
                                 teExamStudent.setCreateId(taskImportCommon.getCreateId());
                             } else {
                                 teExamStudent.setUpdateId(taskImportCommon.getCreateId());
-                                teExamStudent.setName(examStudentDtoImport.getName());
-                                teExamStudent.setCourseName(examStudentDtoImport.getCourseName());
-                                teExamStudent.setGrade(examStudentDtoImport.getGrade());
-                                teExamStudent.setClassNo(examStudentDtoImport.getClassNo());
-                                teExamStudent.setRoomCode(examStudentDtoImport.getRoomCode());
-                                teExamStudent.setRoomName(examStudentDtoImport.getRoomName());
+                                teExamStudent.setName(examStudentImportDto.getName());
+                                teExamStudent.setCourseName(examStudentImportDto.getCourseName());
+                                teExamStudent.setGrade(examStudentImportDto.getGrade());
+                                teExamStudent.setClassNo(examStudentImportDto.getClassNo());
+                                teExamStudent.setRoomCode(examStudentImportDto.getRoomCode());
+                                teExamStudent.setRoomName(examStudentImportDto.getRoomName());
                                 teExamStudent.setExamActivityId(teExamActivity.getId());
                             }
                             teExamStudentService.saveOrUpdate(teExamStudent);

+ 70 - 19
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskRoomCodeImportTemplete.java

@@ -2,13 +2,15 @@ package com.qmth.themis.business.templete.impl;
 
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
-import com.qmth.themis.business.dto.ExamStudentDtoImport;
+import com.qmth.themis.business.dto.RoomCodeImportDto;
 import com.qmth.themis.business.entity.TBExamInvigilateUser;
 import com.qmth.themis.business.entity.TBUser;
 import com.qmth.themis.business.entity.TBUserRole;
+import com.qmth.themis.business.enums.RoleEnum;
 import com.qmth.themis.business.service.TBExamInvigilateUserService;
 import com.qmth.themis.business.service.TBUserRoleService;
 import com.qmth.themis.business.service.TBUserService;
@@ -42,6 +44,14 @@ import java.util.stream.Collectors;
 public class TaskRoomCodeImportTemplete implements TaskImportTemplete {
     private final static Logger log = LoggerFactory.getLogger(TaskRoomCodeImportTemplete.class);
 
+    private TBUserService tbUserService = SpringContextHolder.getBean(TBUserService.class);
+    private TBUserRoleService tbUserRoleService = SpringContextHolder.getBean(TBUserRoleService.class);
+    private TBExamInvigilateUserService tbExamInvigilateUserService = SpringContextHolder.getBean(TBExamInvigilateUserService.class);
+
+    private List<TBUser> tbUserList = null;
+    private List<TBUserRole> tbUserRoleList = null;
+    private List<TBExamInvigilateUser> tbExamInvigilateUserList = null;
+
     /**
      * 考场导入模版
      *
@@ -56,22 +66,29 @@ public class TaskRoomCodeImportTemplete implements TaskImportTemplete {
         TaskImportCommon taskImportCommon = new TaskImportCommon(map);
         taskImportCommon.init();
         File file = taskImportCommon.getUploadFile();
-        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(new FileInputStream(file), Lists.newArrayList(ExamStudentDtoImport.class), new ExcelCallback() {
+        List<String> txtList = new ArrayList();
+        String timeFormat = taskImportCommon.getTimeFormat();
+        txtList.add(DateUtil.format(new Date(), timeFormat) + "->开始准备处理导入的考场数据");
+        List<String> finalTxtList = txtList;
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(new FileInputStream(file), Lists.newArrayList(RoomCodeImportDto.class), new ExcelCallback() {
             @Override
-            public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException {
+            public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException, IOException {
                 List<ExcelError> excelErrorList = new ArrayList<>();
                 for (int i = 0; i < finalList.size(); i++) {
                     LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
-                    List<Object> examStudentDtoImportList = map.get(i);
-                    for (int y = 0; y < examStudentDtoImportList.size(); y++) {
-                        ExamStudentDtoImport examStudentDtoImport = (ExamStudentDtoImport) examStudentDtoImportList.get(y);
-                        List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(examStudentDtoImport, y, i);
+                    List<Object> roomCodeImportDtoList = map.get(i);
+                    for (int y = 0; y < roomCodeImportDtoList.size(); y++) {
+                        RoomCodeImportDto roomCodeImportDto = (RoomCodeImportDto) roomCodeImportDtoList.get(y);
+                        List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(roomCodeImportDto, y, i);
                         if (excelErrorTemp.size() > 0) {
                             excelErrorList.addAll(excelErrorTemp);
                         }
                     }
                 }
                 if (excelErrorList.size() > 0) {
+                    finalTxtList.add(DateUtil.format(new Date(), timeFormat) + "->数据校验异常:" + JSONObject.toJSONString(excelErrorList));
+                    taskImportCommon.setException(true);
+                    taskImportCommon.writeImportResultTxt(finalTxtList.toString());
                     throw new BusinessException(JSONObject.toJSONString(excelErrorList));
                 }
                 return finalList;
@@ -82,19 +99,11 @@ public class TaskRoomCodeImportTemplete implements TaskImportTemplete {
             log.info("开始导入考场数据");
             long start = System.currentTimeMillis();
 
-            TBUserService tbUserService = SpringContextHolder.getBean(TBUserService.class);
-            TBUserRoleService tbUserRoleService = SpringContextHolder.getBean(TBUserRoleService.class);
-            TBExamInvigilateUserService tbExamInvigilateUserService = SpringContextHolder.getBean(TBExamInvigilateUserService.class);
-            String timeFormat = taskImportCommon.getTimeFormat();
-
-            List<TBUser> tbUserList = new ArrayList<>();
-            List<TBUserRole> tbUserRoleList = new ArrayList<>();
-            List<TBExamInvigilateUser> tbExamInvigilateUserList = new ArrayList<>();
-            List<String> txtList = new ArrayList();
-            txtList.add(DateUtil.format(new Date(), timeFormat) + "->开始准备处理导入的考场数据");
+            tbUserList = new ArrayList<>();
+            tbUserRoleList = new ArrayList<>();
+            tbExamInvigilateUserList = new ArrayList<>();
             int y = 0, min = 0;
             try {
-//                Gson gson = new Gson();
                 //保存用户
                 for (int i = 0; i < finalList.size(); i++) {
                     LinkedMultiValueMap<Integer, Object> finalMap = finalList.get(i);
@@ -107,7 +116,10 @@ public class TaskRoomCodeImportTemplete implements TaskImportTemplete {
                     while (max <= size) {
                         List subList = examStudentDtoImportList.subList(min, max);
                         for (y = 0; y < subList.size(); y++) {
-
+                            RoomCodeImportDto roomCodeImportDto = (RoomCodeImportDto) subList.get(y);
+                            dataVerify(roomCodeImportDto.getTeacher1(), roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), taskImportCommon.getOrgId(), taskImportCommon.getCreateId());
+                            dataVerify(roomCodeImportDto.getTeacher2(), roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), taskImportCommon.getOrgId(), taskImportCommon.getCreateId());
+                            dataVerify(roomCodeImportDto.getTeacher3(), roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), taskImportCommon.getOrgId(), taskImportCommon.getCreateId());
                         }
                         txtList = taskImportCommon.progress(max, min, size, txtList);
                         if (max == size) {
@@ -146,4 +158,43 @@ public class TaskRoomCodeImportTemplete implements TaskImportTemplete {
         }
         return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
     }
+
+    /**
+     * 查询监考帐号是否存在
+     *
+     * @param userName
+     * @param roomCode
+     * @param roomName
+     * @param orgId
+     * @param createId
+     */
+    void dataVerify(String userName, String roomCode, String roomName, Long orgId, Long createId) {
+        if (Objects.nonNull(userName)) {
+            //先查询监考帐号是否存在
+            QueryWrapper<TBUser> tbUserQueryWrapper = new QueryWrapper<>();
+            tbUserQueryWrapper.lambda().eq(TBUser::getLoginName, userName).eq(TBUser::getOrgId, orgId);
+            TBUser tbUser = tbUserService.getOne(tbUserQueryWrapper);
+            if (Objects.nonNull(tbUser)) {
+                //新增考场
+                TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(orgId, tbUser.getId(), roomCode, roomName);
+                tbExamInvigilateUserService.save(tbExamInvigilateUser);
+                tbExamInvigilateUserList.add(tbExamInvigilateUser);
+            } else {
+                //新增用户
+                tbUser = new TBUser(orgId, userName, userName, createId);
+                tbUserService.save(tbUser);
+                tbUserList.add(tbUser);
+
+                //新增用户角色
+                TBUserRole tbUserRole = new TBUserRole(tbUser.getId(), RoleEnum.TEACHER.name());
+                tbUserRoleService.save(tbUserRole);
+                tbUserRoleList.add(tbUserRole);
+            }
+        } else {
+            //新增考场
+            TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(roomCode, roomName);
+            tbExamInvigilateUserService.save(tbExamInvigilateUser);
+            tbExamInvigilateUserList.add(tbExamInvigilateUser);
+        }
+    }
 }

+ 2 - 1
themis-business/src/main/java/com/qmth/themis/business/util/ExcelCallback.java

@@ -2,6 +2,7 @@ package com.qmth.themis.business.util;
 
 import org.springframework.util.LinkedMultiValueMap;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -20,5 +21,5 @@ public interface ExcelCallback {
      * @param finalColumnNameList
      * @throws IllegalAccessException ß
      */
-    public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException;
+    public List<LinkedMultiValueMap<Integer, Object>> callback(List<LinkedMultiValueMap<Integer, Object>> finalList, List<LinkedMultiValueMap<Integer, String>> finalColumnNameList) throws IllegalAccessException, IOException;
 }

+ 6 - 3
themis-business/src/main/java/com/qmth/themis/business/util/ExcelUtil.java

@@ -1,5 +1,6 @@
 package com.qmth.themis.business.util;
 
+import com.qmth.themis.business.annotation.ExcelNotNull;
 import com.qmth.themis.business.enums.AttachmentEnum;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
@@ -13,6 +14,7 @@ import org.springframework.util.LinkedMultiValueMap;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.util.*;
 
@@ -164,10 +166,11 @@ public class ExcelUtil {
         for (int i = 0; i < fields.length; i++) {
             Field field = fields[i];
             field.setAccessible(true);
-            if (Objects.isNull(field.get(obj)) && AttachmentEnum.convertToRequired(field.getName())) {
-                excelErrorList.add(new ExcelError(index + 1, "excel第" + (sheetIndex + 1) + "个sheet第" + (index + 1) + "行,第" + (i + 1) + "列" + AttachmentEnum.convertToCode(field.getName()) + "为空"));
+            Annotation annotation = field.getAnnotation(ExcelNotNull.class);
+            if (Objects.isNull(field.get(obj)) && Objects.nonNull(annotation)) {
+                excelErrorList.add(new ExcelError(index + 1, "excel第" + (sheetIndex + 1) + "个sheet第" + (index + 1) + "行[" + AttachmentEnum.convertToCode(field.getName()) + "]为空"));
             }
         }
         return excelErrorList;
     }
-}
+}

+ 0 - 1
themis-mq/src/main/java/com/qmth/themis/mq/listener/RocketSessionConsumer.java

@@ -63,7 +63,6 @@ public class RocketSessionConsumer implements
      * @return
      */
     @Override
-    @Transactional
     public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
         MqDto mqDto = null;
         try {

+ 53 - 93
themis-mq/src/main/java/com/qmth/themis/mq/listener/RocketTaskConsumer.java

@@ -42,7 +42,7 @@ import java.util.concurrent.TimeUnit;
  * @Date: 2020/7/2
  */
 @Service
-public class RocketTaskConsumer {
+public class RocketTaskConsumer implements MessageListenerConcurrently {
     private final static Logger log = LoggerFactory.getLogger(RocketTaskConsumer.class);
 
     @Resource
@@ -54,6 +54,56 @@ public class RocketTaskConsumer {
     @Resource
     MyThreadPool myThreadPool;
 
+    @Override
+    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
+        MqDto mqDto = null;
+        try {
+            long threadId = Thread.currentThread().getId();
+            String threadName = Thread.currentThread().getName();
+            Gson gson = new Gson();
+            for (MessageExt messageExt : msgs) {
+                log.info(":{}-:{} task ExamStudentImport Consumer重试次数:{}", threadId, threadName, messageExt.getReconsumeTimes());
+                mqDto = JacksonUtil.readJson(new String(messageExt.getBody(), Constants.CHARSET), MqDto.class);
+                log.info(":{}-:{} task ExamStudentImport Consumer接收到的消息:{}", threadId, threadName, JacksonUtil.parseJson(mqDto));
+                log.info(":{}-:{} task ExamStudentImport Consumer mqDto sequence:{},tag:{}", threadId, threadName, mqDto.getSequence(), mqDto.getTag());
+                if (Objects.nonNull(mqDto.getAck()) && mqDto.getAck().intValue() != SystemConstant.STANDARD_ACK_TYPE && Objects.nonNull(redisUtil.getMqTopicList(SystemConstant.TASKLOG_TOPIC_BUFFER_LIST, mqDto.getId())) && redisUtil.lock(SystemConstant.REDIS_LOCK_MQ_PREFIX, mqDto.getId(), SystemConstant.REDIS_LOCK_MQ_TIME_OUT, TimeUnit.SECONDS)) {
+                    Map<String, Object> map = (Map<String, Object>) mqDto.getBody();
+                    String tag = mqDto.getTag();
+                    myThreadPool.arbitratePoolTaskExecutor.execute(() -> {
+                        TaskImportTemplete taskImportTemplete = null;
+                        if (tag.contains("examStudentImport")) {
+                            taskImportTemplete = new TaskExamStudentImportTemplete();
+                        } else if (tag.contains("roomCodeImport")) {
+                            taskImportTemplete = new TaskRoomCodeImportTemplete();
+                        }
+                        try {
+                            taskImportTemplete.importTask(map);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                    });
+                    mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
+                    mqDto.setBody(JacksonUtil.parseJson(mqDto.getBody()));
+                    TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
+                    tmRocketMessageService.saveOrUpdate(tmRocketMessage);
+                    redisUtil.deleteMqTopicList(SystemConstant.TASKLOG_TOPIC_BUFFER_LIST, mqDto.getId());
+                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+                } else {
+                    log.info(":{}-:{} 消息ack未确认,重发", threadId, threadName);
+                    return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
+        } finally {
+            if (Objects.nonNull(mqDto)) {
+                redisUtil.releaseLock(SystemConstant.REDIS_LOCK_MQ_PREFIX, mqDto.getId());
+            }
+        }
+        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;//成功
+    }
+
     /**
      * 考生导入
      */
@@ -71,52 +121,7 @@ public class RocketTaskConsumer {
             defaultMQPushConsumer.setConsumeMessageBatchMaxSize(SystemConstant.CONSUME_MESSAGE_BATCH_MAX_SIZE);//每次拉取10条
             defaultMQPushConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
             defaultMQPushConsumer.setMaxReconsumeTimes(SystemConstant.MAXRECONSUMETIMES);//最大重试次数
-            defaultMQPushConsumer.registerMessageListener(new MessageListenerConcurrently() {
-
-                @Override
-                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
-                    MqDto mqDto = null;
-                    try {
-                        long threadId = Thread.currentThread().getId();
-                        String threadName = Thread.currentThread().getName();
-                        Gson gson = new Gson();
-                        for (MessageExt messageExt : msgs) {
-                            log.info(":{}-:{} task ExamStudentImport Consumer重试次数:{}", threadId, threadName, messageExt.getReconsumeTimes());
-                            mqDto = JacksonUtil.readJson(new String(messageExt.getBody(), Constants.CHARSET), MqDto.class);
-                            log.info(":{}-:{} task ExamStudentImport Consumer接收到的消息:{}", threadId, threadName, JacksonUtil.parseJson(mqDto));
-                            log.info(":{}-:{} task ExamStudentImport Consumer mqDto sequence:{},tag:{}", threadId, threadName, mqDto.getSequence(), mqDto.getTag());
-                            if (Objects.nonNull(mqDto.getAck()) && mqDto.getAck().intValue() != SystemConstant.STANDARD_ACK_TYPE && Objects.nonNull(redisUtil.getMqTopicList(SystemConstant.TASKLOG_TOPIC_BUFFER_LIST, mqDto.getId())) && redisUtil.lock(SystemConstant.REDIS_LOCK_MQ_PREFIX, mqDto.getId(), SystemConstant.REDIS_LOCK_MQ_TIME_OUT, TimeUnit.SECONDS)) {
-                                Map<String, Object> map = (Map<String, Object>) mqDto.getBody();
-                                myThreadPool.arbitratePoolTaskExecutor.execute(() -> {
-                                    TaskImportTemplete examStudentImportTemplete = new TaskExamStudentImportTemplete();
-                                    try {
-                                        examStudentImportTemplete.importTask(map);
-                                    } catch (IOException e) {
-                                        e.printStackTrace();
-                                    }
-                                });
-                                mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
-                                mqDto.setBody(JacksonUtil.parseJson(mqDto.getBody()));
-                                TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
-                                tmRocketMessageService.saveOrUpdate(tmRocketMessage);
-                                redisUtil.deleteMqTopicList(SystemConstant.TASKLOG_TOPIC_BUFFER_LIST, mqDto.getId());
-                                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
-                            } else {
-                                log.info(":{}-:{} 消息ack未确认,重发", threadId, threadName);
-                                return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
-                            }
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
-                    } finally {
-                        if (Objects.nonNull(mqDto)) {
-                            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_MQ_PREFIX, mqDto.getId());
-                        }
-                    }
-                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;//成功
-                }
-            });
+            defaultMQPushConsumer.registerMessageListener(RocketTaskConsumer.this::consumeMessage);
         }
     }
 
@@ -137,52 +142,7 @@ public class RocketTaskConsumer {
             defaultMQPushConsumer.setConsumeMessageBatchMaxSize(SystemConstant.CONSUME_MESSAGE_BATCH_MAX_SIZE);//每次拉取10条
             defaultMQPushConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
             defaultMQPushConsumer.setMaxReconsumeTimes(SystemConstant.MAXRECONSUMETIMES);//最大重试次数
-            defaultMQPushConsumer.registerMessageListener(new MessageListenerConcurrently() {
-
-                @Override
-                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
-                    MqDto mqDto = null;
-                    try {
-                        long threadId = Thread.currentThread().getId();
-                        String threadName = Thread.currentThread().getName();
-                        Gson gson = new Gson();
-                        for (MessageExt messageExt : msgs) {
-                            log.info(":{}-:{} task roomCodeImport Consumer重试次数:{}", threadId, threadName, messageExt.getReconsumeTimes());
-                            mqDto = JacksonUtil.readJson(new String(messageExt.getBody(), Constants.CHARSET), MqDto.class);
-                            log.info(":{}-:{} task roomCodeImport Consumer接收到的消息:{}", threadId, threadName, JacksonUtil.parseJson(mqDto));
-                            log.info(":{}-:{} task roomCodeImport Consumer mqDto sequence:{},tag:{}", threadId, threadName, mqDto.getSequence(), mqDto.getTag());
-                            if (Objects.nonNull(mqDto.getAck()) && mqDto.getAck().intValue() != SystemConstant.STANDARD_ACK_TYPE && Objects.nonNull(redisUtil.getMqTopicList(SystemConstant.TASKLOG_TOPIC_BUFFER_LIST, mqDto.getId())) && redisUtil.lock(SystemConstant.REDIS_LOCK_MQ_PREFIX, mqDto.getId(), SystemConstant.REDIS_LOCK_MQ_TIME_OUT, TimeUnit.SECONDS)) {
-                                Map<String, Object> map = (Map<String, Object>) mqDto.getBody();
-                                myThreadPool.arbitratePoolTaskExecutor.execute(() -> {
-                                    TaskImportTemplete roomCodeImportTemplete = new TaskRoomCodeImportTemplete();
-                                    try {
-                                        roomCodeImportTemplete.importTask(map);
-                                    } catch (IOException e) {
-                                        e.printStackTrace();
-                                    }
-                                });
-                                mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
-                                mqDto.setBody(JacksonUtil.parseJson(mqDto.getBody()));
-                                TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
-                                tmRocketMessageService.saveOrUpdate(tmRocketMessage);
-                                redisUtil.deleteMqTopicList(SystemConstant.TASKLOG_TOPIC_BUFFER_LIST, mqDto.getId());
-                                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
-                            } else {
-                                log.info(":{}-:{} 消息ack未确认,重发", threadId, threadName);
-                                return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
-                            }
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
-                    } finally {
-                        if (Objects.nonNull(mqDto)) {
-                            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_MQ_PREFIX, mqDto.getId());
-                        }
-                    }
-                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;//成功
-                }
-            });
+            defaultMQPushConsumer.registerMessageListener(RocketTaskConsumer.this::consumeMessage);
         }
     }
 }