Эх сурвалжийг харах

add: 联调知学知考openapi

caozixuan 3 жил өмнө
parent
commit
e065277bff
22 өөрчлөгдсөн 212 нэмэгдсэн , 40 устгасан
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradeModuleEvaluationDatasource.java
  2. 0 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradeModuleKnowledgeDefineParam.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradePaperDimensionParam.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeModuleEvaluationResult.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradePaperDimensionResult.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/SecondDimensionResult.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeModuleDefine.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeModuleEvaluation.java
  9. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaperDimension.java
  10. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradePaperDimensionService.java
  11. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeModuleDefineServiceImpl.java
  12. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperDimensionServiceImpl.java
  13. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperServiceImpl.java
  14. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/OpenApiServiceImpl.java
  15. 0 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperController.java
  16. 1 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperDimensionController.java
  17. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/DimensionEnum.java
  18. 5 3
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperEvaluation.java
  19. 10 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataCheckService.java
  20. 16 2
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataGetAndEditService.java
  21. 17 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataCheckServiceImpl.java
  22. 149 13
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataGetAndEditServiceImpl.java

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradeModuleEvaluationDatasource.java

@@ -1,6 +1,6 @@
 package com.qmth.distributed.print.business.bean.params.analyze;
 
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.enums.EvaluationEnum;
 import io.swagger.annotations.ApiModelProperty;
 

+ 0 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradeModuleKnowledgeDefineParam.java

@@ -1,6 +1,5 @@
 package com.qmth.distributed.print.business.bean.params.analyze;
 
-import com.qmth.distributed.print.business.enums.DimensionEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/analyze/GradePaperDimensionParam.java

@@ -1,6 +1,6 @@
 package com.qmth.distributed.print.business.bean.params.analyze;
 
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Range;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeModuleEvaluationResult.java

@@ -1,6 +1,6 @@
 package com.qmth.distributed.print.business.bean.result.analyze;
 
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.enums.EvaluationEnum;
 import io.swagger.annotations.ApiModelProperty;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradePaperDimensionResult.java

@@ -1,6 +1,6 @@
 package com.qmth.distributed.print.business.bean.result.analyze;
 
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/SecondDimensionResult.java

@@ -1,6 +1,6 @@
 package com.qmth.distributed.print.business.bean.result.analyze;
 
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeModuleDefine.java

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeModuleEvaluation.java

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.enums.EvaluationEnum;
 import io.swagger.annotations.ApiModel;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaperDimension.java

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradePaperDimensionService.java

@@ -6,7 +6,7 @@ import com.qmth.distributed.print.business.bean.params.analyze.GradePaperDimensi
 import com.qmth.distributed.print.business.bean.result.analyze.GradePaperDimensionResult;
 import com.qmth.distributed.print.business.bean.result.analyze.SecondDimensionResult;
 import com.qmth.distributed.print.business.entity.GradePaperDimension;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.entity.SysUser;
 import org.springframework.web.multipart.MultipartFile;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeModuleDefineServiceImpl.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.params.analyze.GradeModuleKnowledgeDefineParam;
 import com.qmth.distributed.print.business.bean.params.analyze.GradePaperDefineParam;
 import com.qmth.distributed.print.business.entity.GradeModuleDefine;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.distributed.print.business.mapper.GradeModuleDefineMapper;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
 import com.qmth.distributed.print.business.service.GradeModuleDefineService;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperDimensionServiceImpl.java

@@ -12,7 +12,7 @@ import com.qmth.distributed.print.business.bean.params.analyze.GradePaperDimensi
 import com.qmth.distributed.print.business.bean.result.analyze.GradePaperDimensionResult;
 import com.qmth.distributed.print.business.bean.result.analyze.SecondDimensionResult;
 import com.qmth.distributed.print.business.entity.GradePaperDimension;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.distributed.print.business.mapper.GradePaperDimensionMapper;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
 import com.qmth.distributed.print.business.service.GradePaperDimensionService;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperServiceImpl.java

@@ -8,7 +8,7 @@ import com.qmth.distributed.print.business.bean.params.analyze.GradePaperDefineP
 import com.qmth.distributed.print.business.bean.result.analyze.GradePaperDefineResult;
 import com.qmth.distributed.print.business.entity.GradeModuleDefine;
 import com.qmth.distributed.print.business.entity.GradePaper;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.distributed.print.business.mapper.GradePaperMapper;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
 import com.qmth.distributed.print.business.service.GradeModuleDefineService;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/OpenApiServiceImpl.java

@@ -173,7 +173,7 @@ public class OpenApiServiceImpl implements OpenApiService {
             BasicMajor basicMajor = basicMajorService.getById(m.getMajorId());
             examStudentScore.setMajor(basicMajor == null ? null : basicMajor.getName());
             examStudentScore.setClassName(m.getClazzName());
-            GradeBatchStudent gradeBatchStudent = gradeBatchStudentList.stream().filter(s -> s.getStudentCode().equals(examStudentScore.getStudentCode()) && s.getPaperNumber().equals(examStudentScore.getPaperNumber()) && s.getPaperType().equals(examStudentScore.getPaperType())).findFirst().orElseGet(null);
+            GradeBatchStudent gradeBatchStudent = gradeBatchStudentList.isEmpty() ? null : gradeBatchStudentList.stream().filter(s -> s.getStudentCode().equals(examStudentScore.getStudentCode()) && s.getPaperNumber().equals(examStudentScore.getPaperNumber()) && s.getPaperType().equals(examStudentScore.getPaperType())).findFirst().orElseGet(null);
             examStudentScore.setTeacherName(gradeBatchStudent != null ? gradeBatchStudent.getTeacherName() : null);
             examStudentScore.setTeacherCode(gradeBatchStudent != null ? gradeBatchStudent.getTeacherNumber() : null);
             examStudentScore.setStatus(m.getStatus());

+ 0 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperController.java

@@ -1,7 +1,5 @@
 package com.qmth.distributed.print.api;
 
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.params.analyze.GradePaperDefineParam;
 import com.qmth.distributed.print.business.bean.result.analyze.GradeInitResult;

+ 1 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperDimensionController.java

@@ -1,11 +1,9 @@
 package com.qmth.distributed.print.api;
 
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.params.analyze.GradePaperDimensionParam;
 import com.qmth.distributed.print.business.bean.result.analyze.GradePaperDimensionResult;
-import com.qmth.distributed.print.business.enums.DimensionEnum;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.distributed.print.business.service.GradePaperDimensionService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -21,8 +19,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
 import java.io.IOException;
 
 /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DimensionEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/DimensionEnum.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.enums;
+package com.qmth.teachcloud.common.enums;
 
 /**
  * @Description: 维度枚举类

+ 5 - 3
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperEvaluation.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.report.business.bean.dto.printOpen;
 
+import com.qmth.teachcloud.common.enums.DimensionEnum;
+
 import java.util.List;
 
 /**
@@ -8,18 +10,18 @@ import java.util.List;
  * @Date: 2022-06-08
  */
 public class PaperEvaluation {
-    private String moduleType;
+    private DimensionEnum moduleType;
     private String interpret;
     private String remark;
     private List<SecondaryDimensionLevelDefine> secondaryDimensionLevelDefineList;
     private String formula;
     private List<ModuleEvaluation> moduleEvaluationList;
 
-    public String getModuleType() {
+    public DimensionEnum getModuleType() {
         return moduleType;
     }
 
-    public void setModuleType(String moduleType) {
+    public void setModuleType(DimensionEnum moduleType) {
         this.moduleType = moduleType;
     }
 

+ 10 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataCheckService.java

@@ -6,4 +6,14 @@ package com.qmth.teachcloud.report.business.service;
  * @Date: 2022-06-07
  */
 public interface AnalyzeDataCheckService {
+
+    /**
+     * 编辑试卷结构时的内部校验 - 校验试卷结构涉及的知识和能力维度都在试卷维度池当中
+     *
+     * @param knowledgeDimension 知识维度
+     * @param abilityDimension   能力维度
+     * @param examId             考试id
+     * @param courseCode         课程编号
+     */
+    void checkPaperStructInDimensionDatasource(String knowledgeDimension, String abilityDimension, Long examId, String courseCode);
 }

+ 16 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataGetAndEditService.java

@@ -31,9 +31,23 @@ public interface AnalyzeDataGetAndEditService {
      */
     void tbPaperDimensionDispose(Long examId, String courseCode, Long schoolId) throws IOException;
 
-    void tbPaperStructDispose(Long examId, String courseCode, Long schoolId);
+    /**
+     * 基础试卷结构根据试卷id删除后新增't_b_paper_struct'
+     *
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param schoolId   学校id
+     */
+    void tbPaperStructDispose(Long examId, String courseCode, Long schoolId) throws IOException;
 
-    void tbPaperModuleDispose(Long examId, String courseCode, Long schoolId);
+    /**
+     * 基础模块评价和二级维度熟练度定义 't_b_module_config'和 't_b_module_proficiency'
+     * @param examId 考试id
+     * @param courseCode 课程编号
+     * @param schoolId 学校id
+     * @throws IOException 异常
+     */
+    void tbPaperModuleDispose(Long examId, String courseCode, Long schoolId) throws IOException;
 
     void tbExamStudentScoreDatasourceDispose(Long examId, String courseCode, Long schoolId);
 }

+ 17 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataCheckServiceImpl.java

@@ -0,0 +1,17 @@
+package com.qmth.teachcloud.report.business.service.impl;
+
+import com.qmth.teachcloud.report.business.service.AnalyzeDataCheckService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+@Service
+public class AnalyzeDataCheckServiceImpl implements AnalyzeDataCheckService {
+    @Override
+    public void checkPaperStructInDimensionDatasource(String knowledgeDimension, String abilityDimension, Long examId, String courseCode) {
+
+    }
+}

+ 149 - 13
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataGetAndEditServiceImpl.java

@@ -2,23 +2,21 @@ package com.qmth.teachcloud.report.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.DimensionEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
-import com.qmth.teachcloud.report.business.bean.dto.printOpen.PaperConfig;
-import com.qmth.teachcloud.report.business.bean.dto.printOpen.PaperDimension;
-import com.qmth.teachcloud.report.business.entity.TBPaper;
-import com.qmth.teachcloud.report.business.service.AnalyzeDataGetAndEditService;
-import com.qmth.teachcloud.report.business.service.CallPrintOpenApiService;
-import com.qmth.teachcloud.report.business.service.TBExamCourseService;
-import com.qmth.teachcloud.report.business.service.TBPaperService;
+import com.qmth.teachcloud.report.business.bean.dto.printOpen.*;
+import com.qmth.teachcloud.report.business.entity.*;
+import com.qmth.teachcloud.report.business.service.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * @Description: 分析数据获取和编辑服务实现类
@@ -36,6 +34,17 @@ public class AnalyzeDataGetAndEditServiceImpl implements AnalyzeDataGetAndEditSe
 
     @Resource
     private TBPaperService tbPaperService;
+    @Resource
+    private TBDimensionService tbDimensionService;
+    @Resource
+    private TBPaperStructService tbPaperStructService;
+    @Resource
+    private TBModuleProficiencyService tbModuleProficiencyService;
+    @Resource
+    private TBModuleConfigService tbModuleConfigService;
+
+    @Resource
+    private AnalyzeDataCheckService analyzeDataCheckService;
 
 
     @Transactional(rollbackFor = Exception.class)
@@ -88,20 +97,147 @@ public class AnalyzeDataGetAndEditServiceImpl implements AnalyzeDataGetAndEditSe
             throw ExceptionResultEnum.ERROR.exception("课程编号为【" + courseCode + "】的课程不能进行数据更改");
         }
         List<PaperDimension> paperDimensionList = callPrintOpenApiService.callPaperDimension(examId,courseCode);
-        // TODO: 2022/6/8 维度新增
-//        List<TBDimension> tbDimensionList = paperDimensionList.stream().flatMap(e -> )
+        String courseName = basicCourseService.findByCourseCode(courseCode, schoolId).getName();
+
+        List<TBDimension> tbDimensionList = paperDimensionList.stream().flatMap(e -> {
+            TBDimension tbDimension = new TBDimension();
+            tbDimension.setId(SystemConstant.getDbUuid());
+            tbDimension.setExamId(examId);
+            tbDimension.setCourseCode(courseCode);
+            tbDimension.setCourseName(courseName);
+            tbDimension.setDimensionType(e.getDimensionType());
+            tbDimension.setCodePrimary(e.getCodePrimary());
+            tbDimension.setNamePrimary(e.getNamePrimary());
+            tbDimension.setCodeSecond(e.getCodeSecond());
+            tbDimension.setNameSecond(e.getNameSecond());
+            tbDimension.setInterpretation(e.getInterpretation());
+            return Stream.of(tbDimension);
+        }).collect(Collectors.toList());
+        // 根据课程编号删除已有
+        tbDimensionService.remove(new QueryWrapper<TBDimension>().lambda().eq(TBDimension::getExamId,examId).eq(TBDimension::getCourseCode,courseCode));
+        // 批量新增
+        tbDimensionService.saveBatch(tbDimensionList);
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void tbPaperStructDispose(Long examId, String courseCode, Long schoolId) {
+    public void tbPaperStructDispose(Long examId, String courseCode, Long schoolId) throws IOException {
+        if (tbExamCourseService.verifyExamCourseCantRun(examId,schoolId,courseCode,null)){
+            throw ExceptionResultEnum.ERROR.exception("课程编号为【" + courseCode + "】的课程不能进行数据更改");
+        }
+        List<TBPaper> tbPaperList = tbPaperService.list(new QueryWrapper<TBPaper>().lambda().eq(TBPaper::getExamId,examId).eq(TBPaper::getCourseCode,courseCode));
+        if (tbPaperList.size() != 1){
+            throw ExceptionResultEnum.ERROR.exception("未找到考试id为【" + examId + "】,课程编号为【" + courseCode + "】的唯一试卷");
+        }
+        TBPaper tbPaper = tbPaperList.get(0);
+        Long paperId = tbPaper.getId();
 
+        List<PaperStructure> paperStructureList = callPrintOpenApiService.callPaperStruct(examId,courseCode);
+
+        List<TBPaperStruct> tbPaperStructList = paperStructureList.stream().flatMap(e -> {
+            TBPaperStruct tbPaperStruct = new TBPaperStruct();
+            tbPaperStruct.setId(SystemConstant.getDbUuid());
+            tbPaperStruct.setPaperId(paperId);
+            tbPaperStruct.setQuestionName(e.getQuestionName());
+            tbPaperStruct.setNumberType(e.getNumberType());
+            tbPaperStruct.setBigQuestionNumber(e.getBigQuestionNumber());
+            tbPaperStruct.setSmallQuestionNumber(e.getSmallQuestionNumber());
+            tbPaperStruct.setQuestionType(e.getBigTopicName());
+            tbPaperStruct.setFullScore(e.getFullScore());
+            tbPaperStruct.setScoreRules(e.getScoreRules());
+            String knowledgeDimension = e.getKnowledgeDimension();
+            String abilityDimension = e.getAbilityDimension();
+            // TODO: 2022/6/9  校验的实现
+            analyzeDataCheckService.checkPaperStructInDimensionDatasource(knowledgeDimension,abilityDimension,examId,courseCode);
+            tbPaperStruct.setKnowledgeDimension(knowledgeDimension);
+            tbPaperStruct.setAbilityDimension(abilityDimension);
+            return Stream.of(tbPaperStruct);
+        }).collect(Collectors.toList());
+
+        // 删除试卷id下所有试卷结构
+        tbPaperStructService.remove(new QueryWrapper<TBPaperStruct>().lambda().eq(TBPaperStruct::getPaperId,paperId));
+        // 新增试卷id下的试卷结构
+        tbPaperStructService.saveBatch(tbPaperStructList);
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void tbPaperModuleDispose(Long examId, String courseCode, Long schoolId) {
+    public void tbPaperModuleDispose(Long examId, String courseCode, Long schoolId) throws IOException {
+        if (tbExamCourseService.verifyExamCourseCantRun(examId,schoolId,courseCode,null)){
+            throw ExceptionResultEnum.ERROR.exception("课程编号为【" + courseCode + "】的课程不能进行数据更改");
+        }
+        String courseName = basicCourseService.findByCourseCode(courseCode, schoolId).getName();
+        List<PaperEvaluation> paperEvaluationList = callPrintOpenApiService.callPaperModule(examId,courseCode);
+
+        List<TBModuleProficiency> tbModuleProficiencyList = new ArrayList<>();
+        List<TBModuleConfig> tbModuleConfigList = new ArrayList<>();
+        Map<DimensionEnum,PaperEvaluation> checkDimensionType = new HashMap<>();
+        for (PaperEvaluation paperEvaluation : paperEvaluationList) {
+            // 校验大的数据结构
+            DimensionEnum moduleType = paperEvaluation.getModuleType();
+            if (checkDimensionType.containsKey(moduleType)){
+                throw ExceptionResultEnum.ERROR.exception("模块数据存在相同模块类型【" + moduleType + "】异常");
+            }
+            checkDimensionType.put(moduleType,paperEvaluation);
+
+            String interpret = paperEvaluation.getInterpret();
+            String remark = paperEvaluation.getRemark();
+            String formula = paperEvaluation.getFormula();
+
+            // 解析并生成't_b_module_proficiency' 二级维度精熟度
+            List<SecondaryDimensionLevelDefine> secondaryDimensionLevelDefineList = paperEvaluation.getSecondaryDimensionLevelDefineList();
+            List<TBModuleProficiency> tbModuleProficiencyCell = secondaryDimensionLevelDefineList.stream().flatMap(e -> {
+                TBModuleProficiency tbModuleProficiency = new TBModuleProficiency();
+                tbModuleProficiency.setId(SystemConstant.getDbUuid());
+                tbModuleProficiency.setExamId(examId);
+                tbModuleProficiency.setCourseCode(courseCode);
+                tbModuleProficiency.setCourseName(courseName);
+                tbModuleProficiency.setModuleType(moduleType.getDesc());
+                tbModuleProficiency.setInterpret(interpret);
+                tbModuleProficiency.setRemark(remark);
+                tbModuleProficiency.setDefine(e.getDefine().trim());
+                tbModuleProficiency.setLevel(e.getLevel());
+                tbModuleProficiency.setMin(e.getMin());
+                tbModuleProficiency.setMax(e.getMax());
+                tbModuleProficiency.setScope(e.getScope());
+                return Stream.of(tbModuleProficiency);
+            }).collect(Collectors.toList());
+            tbModuleProficiencyList.addAll(tbModuleProficiencyCell);
+
+            // 解析并生成't_b_module_config' 维度模块等级评价及建议
+            List<ModuleEvaluation> moduleEvaluationList = paperEvaluation.getModuleEvaluationList();
+            List<TBModuleConfig> tbModuleConfigCell = moduleEvaluationList.stream().flatMap(e -> {
+                TBModuleConfig tbModuleConfig = new TBModuleConfig();
+                tbModuleConfig.setId(SystemConstant.getDbUuid());
+                tbModuleConfig.setExamId(examId);
+                tbModuleConfig.setCourseCode(courseCode);
+                tbModuleConfig.setCourseName(courseName);
+                tbModuleConfig.setModuleType(moduleType.getDesc());
+                tbModuleConfig.setFormula(formula);
+                tbModuleConfig.setScope(e.getScope());
+                tbModuleConfig.setLevelCode(e.getLevelCode());
+                tbModuleConfig.setLevelName(e.getLevelName());
+                tbModuleConfig.setResult(e.getResult());
+                tbModuleConfig.setAdvice(e.getAdvice());
+                if (DimensionEnum.KNOWLEDGE.equals(moduleType)) {
+                    tbModuleConfig.setAttribute("knowledgeDimension");
+                } else if (DimensionEnum.ABILITY.equals(moduleType)) {
+                    tbModuleConfig.setAttribute("abilityDimension");
+                }
+                return Stream.of(tbModuleConfig);
+            }).collect(Collectors.toList());
+            tbModuleConfigList.addAll(tbModuleConfigCell);
+        }
+        // 删除后新增
+        tbModuleProficiencyService.remove(new QueryWrapper<TBModuleProficiency>().lambda()
+                .eq(TBModuleProficiency::getExamId,examId)
+                .eq(TBModuleProficiency::getCourseCode,courseCode));
+        tbModuleProficiencyService.saveBatch(tbModuleProficiencyList);
 
+        tbModuleConfigService.remove(new QueryWrapper<TBModuleConfig>().lambda()
+                .eq(TBModuleConfig::getExamId,examId)
+                .eq(TBModuleConfig::getCourseCode,courseCode));
+        tbModuleConfigService.saveBatch(tbModuleConfigList);
     }
 
     @Transactional(rollbackFor = Exception.class)