Procházet zdrojové kódy

Merge branch 'dev'

# Conflicts:
#	themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskExamPaperImportTemplete.java
wangliang před 4 roky
rodič
revize
4dd1b0c0bb

+ 20 - 10
themis-business/src/main/java/com/qmth/themis/business/entity/TEExamCourse.java

@@ -1,13 +1,11 @@
 package com.qmth.themis.business.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.qmth.themis.business.base.BaseEntity;
+import com.qmth.themis.common.contanst.Constants;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.io.Serializable;
-
 /**
  * @Description: 考试科目
  * @Param:
@@ -54,7 +52,19 @@ public class TEExamCourse extends BaseEntity {
     @ApiModelProperty(value = "题干包含音频,0:不包含,1:包含")
     @TableField(value = "has_audio")
     private Integer hasAudio;
-    
+
+    public TEExamCourse() {
+
+    }
+
+    public TEExamCourse(Long examId, String courseCode, String courseName, Long createId) {
+        setId(Constants.idGen.next());
+        this.examId = examId;
+        this.courseCode = courseCode;
+        this.courseName = courseName;
+        setCreateId(createId);
+    }
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -123,11 +133,11 @@ public class TEExamCourse extends BaseEntity {
         this.audioPlayCount = audioPlayCount;
     }
 
-	public Integer getHasAudio() {
-		return hasAudio;
-	}
+    public Integer getHasAudio() {
+        return hasAudio;
+    }
 
-	public void setHasAudio(Integer hasAudio) {
-		this.hasAudio = hasAudio;
-	}
+    public void setHasAudio(Integer hasAudio) {
+        this.hasAudio = hasAudio;
+    }
 }

+ 0 - 9
themis-business/src/main/java/com/qmth/themis/business/templete/TaskImportCommon.java

@@ -130,15 +130,6 @@ public class TaskImportCommon {
                     excelFile.delete();
                 }
             }
-            //临时加的代码 我不知道该怎么写
-            if(this.exception) {
-            	this.tbTaskHistory.setSummary("处理出错");
-            }else {
-            	this.tbTaskHistory.setProgress(100.0);
-            	if(StringUtils.isBlank(this.tbTaskHistory.getSummary())) {
-            		this.tbTaskHistory.setSummary("处理成功");
-            	}
-            }
             tbTaskHistoryService.updateById(this.tbTaskHistory);
         } catch (IOException e) {
             e.printStackTrace();

+ 1 - 0
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskExamPaperImportTemplete.java

@@ -84,6 +84,7 @@ public class TaskExamPaperImportTemplete implements TaskImportTemplete {
             addResult(result, "耗时(秒):" + ((end - start) / 1000));
             taskImportCommon.getTbTaskHistory().setFinishTime(new Date());
             taskImportCommon.getTbTaskHistory().setStatus(TaskStatusEnum.FINISH);
+            taskImportCommon.getTbTaskHistory().setProgress(100.0d);
             taskImportCommon.writeImportResultTxt(result.toString(), file);
         }
         return ResultUtil.ok(Collections.singletonMap("success", true));

+ 4 - 0
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskExamStudentImportTemplete.java

@@ -57,15 +57,18 @@ public class TaskExamStudentImportTemplete implements TaskImportTemplete {
         taskImportCommon.setTxtList(new ArrayList());
         String timeFormat = taskImportCommon.getTimeFormat();
         taskImportCommon.getTxtList().add(DateUtil.format(new Date(), timeFormat) + "->开始准备处理导入的考生数据");
+        Map<String, Object> finalMap = map;
         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, IOException {
+                Map<String, String> courseCodeMap = new HashMap<>();
                 List<ExcelError> excelErrorList = new ArrayList<>();
                 for (int i = 0; i < finalList.size(); i++) {
                     LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
                     List<Object> examStudentImportDtoList = map.get(i);
                     for (int y = 0; y < examStudentImportDtoList.size(); y++) {
                         ExamStudentImportDto examStudentImportDto = (ExamStudentImportDto) examStudentImportDtoList.get(y);
+                        courseCodeMap.put(examStudentImportDto.getCourseCode(), examStudentImportDto.getCourseName());
                         List<ExcelError> excelErrorTemp = ExcelUtil.checkExcelField(examStudentImportDto, y, i);
                         if (excelErrorTemp.size() > 0) {
                             excelErrorList.addAll(excelErrorTemp);
@@ -82,6 +85,7 @@ public class TaskExamStudentImportTemplete implements TaskImportTemplete {
                     taskImportCommon.writeImportResultTxt(taskImportCommon.getTxtList().toString(), file);
                     throw new BusinessException(JSONObject.toJSONString(excelErrorList));
                 }
+                finalMap.put("courseCodeMap", courseCodeMap);
                 return finalList;
             }
         });

+ 26 - 0
themis-business/src/main/java/com/qmth/themis/business/templete/service/impl/TempleteLogicServiceImpl.java

@@ -21,6 +21,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 导入导出模版处理逻辑 impl
@@ -56,6 +57,9 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
     @Resource
     TBUserRoleService tbUserRoleService;
 
+    @Resource
+    TEExamCourseService teExamCourseService;
+
     /**
      * 考生导入逻辑
      *
@@ -78,6 +82,24 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
         Gson gson = new Gson();
         Set<String> roomCodeAndNameSet = new HashSet<>();
         Map<String, TEExamActivity> teExamActivityMap = (Map<String, TEExamActivity>) map.get("teExamActivityMap");
+        Map<String, String> courseCodeMap = (Map<String, String>) map.get("courseCodeMap");
+        QueryWrapper<TEExamCourse> teExamCourseQueryWrapper = new QueryWrapper<>();
+        Set<String> courseCodeSet = courseCodeMap.keySet().stream().collect(Collectors.toSet());
+        teExamCourseQueryWrapper.lambda().in(TEExamCourse::getCourseCode, courseCodeSet);
+        List<TEExamCourse> teExamCourseList = teExamCourseService.list(teExamCourseQueryWrapper);
+        if (Objects.nonNull(teExamCourseList) && teExamCourseList.size() > 0) {
+            teExamCourseList.forEach(s -> {
+                courseCodeMap.remove(s.getCourseCode());
+            });
+        }
+        List<TEExamCourse> teExamCourses = new ArrayList<>();
+        courseCodeMap.forEach((k, v) -> {
+            TEExamCourse teExamCourse = new TEExamCourse(examId, k, v, createId);
+            teExamCourses.add(teExamCourse);
+        });
+        if (teExamCourses.size() > 0) {
+            teExamCourseService.saveBatch(teExamCourses);
+        }
 
         //保存用户
         for (int i = 0; i < finalList.size(); i++) {
@@ -118,6 +140,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
                         }
                         teExamStudent.setStudentId(teStudent.getId());
                         teExamStudent.setCreateId(createId);
+                        teExamStudent.setCourseCode(examStudentImportDto.getCourseCode());
+                        teExamStudent.setCourseName(examStudentImportDto.getCourseName());
                     } else {
                         teExamStudent.setUpdateId(createId);
                         teExamStudent.setName(examStudentImportDto.getName());
@@ -126,6 +150,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
                         teExamStudent.setClassNo(examStudentImportDto.getClassNo());
                         teExamStudent.setRoomCode(examStudentImportDto.getRoomCode());
                         teExamStudent.setRoomName(examStudentImportDto.getRoomName());
+                        teExamStudent.setCourseCode(examStudentImportDto.getCourseCode());
+                        teExamStudent.setCourseName(examStudentImportDto.getCourseName());
                         if (Objects.nonNull(teExamActivity)) {
                             teExamStudent.setExamActivityId(teExamActivity.getId());
                         }