Parcourir la source

add: 联调知学知考openapi

caozixuan il y a 3 ans
Parent
commit
a11a4ddaba
20 fichiers modifiés avec 1096 ajouts et 81 suppressions
  1. 48 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/open/GradeOpenPageParams.java
  2. 54 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/open/GradeOpenParams.java
  3. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/OpenApiServiceImpl.java
  4. 50 53
      distributed-print/src/main/java/com/qmth/distributed/print/api/OpenApiController.java
  5. 45 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/AnswerInfo.java
  6. 155 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/ExamStudentScore.java
  7. 54 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/ModuleEvaluation.java
  8. 4 3
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperConfig.java
  9. 102 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperDimension.java
  10. 65 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperEvaluation.java
  11. 114 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperStructure.java
  12. 54 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/SecondaryDimensionLevelDefine.java
  13. 39 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataGetAndEditService.java
  14. 0 13
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataGetService.java
  15. 33 1
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/CallPrintOpenApiService.java
  16. 112 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataGetAndEditServiceImpl.java
  17. 110 5
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/CallPrintOpenApiServiceImpl.java
  18. 5 2
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamCourseServiceImpl.java
  19. 49 1
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/TestCallPrintOpenApiController.java
  20. 1 1
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/start/StartRunning.java

+ 48 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/open/GradeOpenPageParams.java

@@ -0,0 +1,48 @@
+package com.qmth.distributed.print.business.bean.params.open;
+
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+import java.util.Optional;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public class GradeOpenPageParams extends GradeOpenParams{
+    @ApiModelProperty(value = "分页页数")
+    @NotNull(message = "请输入分页页数")
+    @Range(min = 1L, message = "请输入分页页数")
+    private Integer pageNumber;
+
+    @ApiModelProperty(value = "分页容量")
+    @NotNull(message = "请输入分页容量")
+    @Range(min = 1L, message = "请输入分页容量")
+    private Integer pageSize;
+
+    public Integer getPageNumber() {
+        return pageNumber;
+    }
+
+    public void setPageNumber(Integer pageNumber) {
+        this.pageNumber = pageNumber;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    @Override
+    public void validParams() {
+        super.validParams();
+        Optional.ofNullable(this.getPageNumber()).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("分页页数为空"));
+        Optional.ofNullable(this.getPageSize()).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("分页容量为空"));
+    }
+}

+ 54 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/open/GradeOpenParams.java

@@ -0,0 +1,54 @@
+package com.qmth.distributed.print.business.bean.params.open;
+
+import com.qmth.teachcloud.common.annotation.DBVerify;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Optional;
+
+/**
+ * @Description: 分布式印刷开放接口参数
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class GradeOpenParams implements Serializable {
+    @ApiModelProperty(value = "教研分析考试id")
+    @NotNull(message = "请输入教研分析考试id")
+    @Range(min = 1L, message = "请输入教研分析考试id")
+    @DBVerify(value = "教研分析考试id", required = true, min = 1)
+    private String thirdExamId;
+
+    @ApiModelProperty(value = "教研分析课程编号")
+    @NotNull(message = "请输入教研分析课程编号")
+    @Length(min = 1, message = "请输入教研分析课程编号")
+    @DBVerify(value = "教研分析课程编号", required = true, min = 1, max = 50)
+    private String gradeCourseCode;
+
+    public String getThirdExamId() {
+        return thirdExamId;
+    }
+
+    public void setThirdExamId(String thirdExamId) {
+        this.thirdExamId = thirdExamId;
+    }
+
+    public String getGradeCourseCode() {
+        return gradeCourseCode;
+    }
+
+    public void setGradeCourseCode(String gradeCourseCode) {
+        this.gradeCourseCode = gradeCourseCode;
+    }
+
+    /**
+     * 参数校验
+     */
+    public void validParams() {
+        Optional.ofNullable(this.getThirdExamId()).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("第三方考试id为空"));
+        Optional.ofNullable(this.getGradeCourseCode()).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("课程编号为空"));
+    }
+}

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

@@ -96,7 +96,7 @@ public class OpenApiServiceImpl implements OpenApiService {
                 String[] key = stringListEntry.getKey().split("_");
                 String moduleType = key[0];
                 String interpret = key[1];
-                String remark = key[3];
+                String remark = key[2];
 
                 PaperEvaluation paperEvaluation = new PaperEvaluation();
                 paperEvaluation.setModuleType(moduleType);
@@ -116,7 +116,7 @@ public class OpenApiServiceImpl implements OpenApiService {
                 paperEvaluation.setSecondaryDimensionLevelDefineList(secondaryDimensionLevelDefineArrayList);
 
                 if (!gradeModuleEvaluationList.isEmpty()) {
-                    List<PaperEvaluation.ModuleEvaluation> moduleEvaluationList = gradeModuleEvaluationList.stream().filter(m -> moduleType.equals(m.getModuleType())).map(m -> {
+                    List<PaperEvaluation.ModuleEvaluation> moduleEvaluationList = gradeModuleEvaluationList.stream().filter(m -> moduleType.equals(m.getModuleType().name())).map(m -> {
                         PaperEvaluation.ModuleEvaluation moduleEvaluation = new PaperEvaluation.ModuleEvaluation();
                         moduleEvaluation.setAdvice(m.getAdvice());
                         moduleEvaluation.setLevelCode(m.getLevelCode());

+ 50 - 53
distributed-print/src/main/java/com/qmth/distributed/print/api/OpenApiController.java

@@ -3,26 +3,29 @@ 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.open.GradeOpenPageParams;
+import com.qmth.distributed.print.business.bean.params.open.GradeOpenParams;
 import com.qmth.distributed.print.business.service.OpenApiService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.util.AuthThirdUtil;
+import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
+import io.swagger.annotations.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import javax.validation.constraints.Min;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Optional;
 
 /**
  * <p>
@@ -42,85 +45,79 @@ public class OpenApiController {
     @Resource
     private OpenApiService openApiService;
 
-    /**
-     * 试卷基础配置查询
-     *
-     * @param thirdExamId     第三方考试id
-     * @param gradeCourseCode 第三方课程编号
-     */
     @ApiOperation(value = "试卷基础配置查询")
     @ApiResponses({@ApiResponse(code = 200, message = "试卷基础配置查询", response = Object.class)})
     @PostMapping("/paper_config")
     @Aac(auth = BOOL.FALSE)
-    public Result paperConfig(@RequestParam String thirdExamId,
-                              @RequestParam String gradeCourseCode) {
+    public Result paperConfig(@ApiParam(value = "接收试卷配置数据信息", required = true) @RequestBody String result) throws UnsupportedEncodingException {
+        Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
+        String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
+        log.info("paperConfigSelect进来了,result:{}", decodeJson);
+        GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
+        Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
+        gradeOpenParams.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
-        return ResultUtil.ok(openApiService.getPaperConfig(basicSchool, thirdExamId, gradeCourseCode));
+        return ResultUtil.ok(openApiService.getPaperConfig(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
     }
 
-    /**
-     * 试卷考察点查询
-     *
-     * @param thirdExamId     第三方考试id
-     * @param gradeCourseCode 第三方课程编号
-     */
     @ApiOperation(value = "试卷考察点查询")
     @ApiResponses({@ApiResponse(code = 200, message = "试卷考察点查询", response = Object.class)})
     @PostMapping("/paper_dimension")
     @Aac(auth = BOOL.FALSE)
-    public Result paperDimension(@RequestParam String thirdExamId,
-                                 @RequestParam String gradeCourseCode) {
+    public Result paperDimension(@ApiParam(value = "试卷考察点查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
+
+        Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
+        String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
+        log.info("paperDimensionSelect进来了,result:{}", decodeJson);
+        GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
+        Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
+        gradeOpenParams.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
-        return ResultUtil.ok(openApiService.getPaperDimension(basicSchool, thirdExamId, gradeCourseCode));
+        return ResultUtil.ok(openApiService.getPaperDimension(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
     }
 
-    /**
-     * 试卷蓝图查询
-     *
-     * @param thirdExamId     第三方考试id
-     * @param gradeCourseCode 第三方课程编号
-     */
     @ApiOperation(value = "试卷蓝图查询")
     @ApiResponses({@ApiResponse(code = 200, message = "试卷蓝图查询", response = Object.class)})
     @PostMapping("/paper_structure")
     @Aac(auth = BOOL.FALSE)
-    public Result paperStructure(@RequestParam String thirdExamId,
-                                 @RequestParam String gradeCourseCode) {
+    public Result paperStructure(@ApiParam(value = "试卷考察点查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
+        Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
+        String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
+        log.info("paperStructureSelect进来了,result:{}", decodeJson);
+        GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
+        Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
+        gradeOpenParams.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
-        return ResultUtil.ok(openApiService.getPaperStructure(basicSchool, thirdExamId, gradeCourseCode));
+        return ResultUtil.ok(openApiService.getPaperStructure(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
     }
 
-    /**
-     * 试卷评价模型查询
-     *
-     * @param thirdExamId     第三方考试id
-     * @param gradeCourseCode 第三方课程编号
-     */
     @ApiOperation(value = "试卷评价模型查询")
     @ApiResponses({@ApiResponse(code = 200, message = "试卷评价模型查询", response = Object.class)})
     @PostMapping("/paper_evaluation")
     @Aac(auth = BOOL.FALSE)
-    public Result paperEvaluation(@RequestParam String thirdExamId,
-                                  @RequestParam String gradeCourseCode) {
+    public Result paperEvaluation(@ApiParam(value = "试卷评价模型查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
+        Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
+        String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
+        log.info("paperEvaluation进来了,result:{}", decodeJson);
+        GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
+        Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
+        gradeOpenParams.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
-        return ResultUtil.ok(openApiService.getPaperEvaluation(basicSchool, thirdExamId, gradeCourseCode));
+        return ResultUtil.ok(openApiService.getPaperEvaluation(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
     }
 
-    /**
-     * 考生成绩查询
-     *
-     * @param thirdExamId     第三方考试id
-     * @param gradeCourseCode 第三方课程编号
-     */
     @ApiOperation(value = "考生成绩查询")
     @ApiResponses({@ApiResponse(code = 200, message = "考生成绩查询", response = Object.class)})
     @PostMapping("/exam_student_score")
     @Aac(auth = BOOL.FALSE)
-    public Result examStudentScore(@RequestParam String thirdExamId,
-                                   @RequestParam String gradeCourseCode,
-                                   @RequestParam(defaultValue = "1") @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                   @RequestParam(defaultValue = "10") @Min(SystemConstant.PAGE_SIZE_MIN) Integer pageSize) {
+    public Result examStudentScore(@ApiParam(value = "考生成绩查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
+        Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
+        String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
+        log.info("examStudentScore进来了,result:{}", decodeJson);
+        GradeOpenPageParams gradeOpenPageParams = JacksonUtil.readJson(decodeJson, GradeOpenPageParams.class);
+        Optional.ofNullable(gradeOpenPageParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
+        gradeOpenPageParams.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
-        return ResultUtil.ok(openApiService.listExamStudentScore(basicSchool, thirdExamId, gradeCourseCode, pageNumber, pageSize));
+        return ResultUtil.ok(openApiService.listExamStudentScore(basicSchool, gradeOpenPageParams.getThirdExamId(), gradeOpenPageParams.getGradeCourseCode(), gradeOpenPageParams.getPageNumber(), gradeOpenPageParams.getPageSize()));
     }
 }

+ 45 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/AnswerInfo.java

@@ -0,0 +1,45 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+/**
+ * @Description: 考生每题目作答
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class AnswerInfo {
+    private String score;
+    private String answer;
+    private Integer mainNumber;
+    private String subNumber;
+
+    public String getScore() {
+        return score;
+    }
+
+    public void setScore(String score) {
+        this.score = score;
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+}

+ 155 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/ExamStudentScore.java

@@ -0,0 +1,155 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public class ExamStudentScore {
+    private String name;
+    private String studentCode;
+    private String paperNumber;
+    private String paperName;
+    private String paperType;
+    private String college;
+    private String major;
+    private String className;
+    private String teacherName;
+    private String teacherCode;
+    private Integer status;
+    private Double totalScore;
+    private Double objectiveScore;
+    private Double subjectiveScore;
+    private List<AnswerInfo> objectiveScoreDetail;
+    private List<AnswerInfo> subjectiveScoreDetail;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherCode() {
+        return teacherCode;
+    }
+
+    public void setTeacherCode(String teacherCode) {
+        this.teacherCode = teacherCode;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public Double getObjectiveScore() {
+        return objectiveScore;
+    }
+
+    public void setObjectiveScore(Double objectiveScore) {
+        this.objectiveScore = objectiveScore;
+    }
+
+    public Double getSubjectiveScore() {
+        return subjectiveScore;
+    }
+
+    public void setSubjectiveScore(Double subjectiveScore) {
+        this.subjectiveScore = subjectiveScore;
+    }
+
+    public List<AnswerInfo> getObjectiveScoreDetail() {
+        return objectiveScoreDetail;
+    }
+
+    public void setObjectiveScoreDetail(List<AnswerInfo> objectiveScoreDetail) {
+        this.objectiveScoreDetail = objectiveScoreDetail;
+    }
+
+    public List<AnswerInfo> getSubjectiveScoreDetail() {
+        return subjectiveScoreDetail;
+    }
+
+    public void setSubjectiveScoreDetail(List<AnswerInfo> subjectiveScoreDetail) {
+        this.subjectiveScoreDetail = subjectiveScoreDetail;
+    }
+}

+ 54 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/ModuleEvaluation.java

@@ -0,0 +1,54 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+/**
+ * @Description: 模块评价
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class ModuleEvaluation {
+    private String advice;
+    private String levelCode;
+    private String levelName;
+    private String result;
+    private String scope;
+
+    public String getAdvice() {
+        return advice;
+    }
+
+    public void setAdvice(String advice) {
+        this.advice = advice;
+    }
+
+    public String getLevelCode() {
+        return levelCode;
+    }
+
+    public void setLevelCode(String levelCode) {
+        this.levelCode = levelCode;
+    }
+
+    public String getLevelName() {
+        return levelName;
+    }
+
+    public void setLevelName(String levelName) {
+        this.levelName = levelName;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+}

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

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.report.business.bean.dto.printOpen;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.AssignEnum;
 
 import java.math.BigDecimal;
 
@@ -26,7 +27,7 @@ public class PaperConfig {
 
     private BigDecimal passScore;
 
-    private String scoreType;
+    private AssignEnum scoreType;
 
     public Long getId() {
         return id;
@@ -84,11 +85,11 @@ public class PaperConfig {
         this.passScore = passScore;
     }
 
-    public String getScoreType() {
+    public AssignEnum getScoreType() {
         return scoreType;
     }
 
-    public void setScoreType(String scoreType) {
+    public void setScoreType(AssignEnum scoreType) {
         this.scoreType = scoreType;
     }
 }

+ 102 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperDimension.java

@@ -0,0 +1,102 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+/**
+ * @Description: 分布式印刷开放接口 - 试卷维度配置
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class PaperDimension {
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    private String paperNumber;
+
+    private String paperName;
+
+    private String dimensionType;
+
+    private String codePrimary;
+
+    private String namePrimary;
+
+    private String codeSecond;
+
+    private String nameSecond;
+
+    private String interpretation;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public String getDimensionType() {
+        return dimensionType;
+    }
+
+    public void setDimensionType(String dimensionType) {
+        this.dimensionType = dimensionType;
+    }
+
+    public String getCodePrimary() {
+        return codePrimary;
+    }
+
+    public void setCodePrimary(String codePrimary) {
+        this.codePrimary = codePrimary;
+    }
+
+    public String getNamePrimary() {
+        return namePrimary;
+    }
+
+    public void setNamePrimary(String namePrimary) {
+        this.namePrimary = namePrimary;
+    }
+
+    public String getCodeSecond() {
+        return codeSecond;
+    }
+
+    public void setCodeSecond(String codeSecond) {
+        this.codeSecond = codeSecond;
+    }
+
+    public String getNameSecond() {
+        return nameSecond;
+    }
+
+    public void setNameSecond(String nameSecond) {
+        this.nameSecond = nameSecond;
+    }
+
+    public String getInterpretation() {
+        return interpretation;
+    }
+
+    public void setInterpretation(String interpretation) {
+        this.interpretation = interpretation;
+    }
+}

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

@@ -0,0 +1,65 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+import java.util.List;
+
+/**
+ * @Description: 试卷评价
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class PaperEvaluation {
+    private String moduleType;
+    private String interpret;
+    private String remark;
+    private List<SecondaryDimensionLevelDefine> secondaryDimensionLevelDefineList;
+    private String formula;
+    private List<ModuleEvaluation> moduleEvaluationList;
+
+    public String getModuleType() {
+        return moduleType;
+    }
+
+    public void setModuleType(String moduleType) {
+        this.moduleType = moduleType;
+    }
+
+    public String getInterpret() {
+        return interpret;
+    }
+
+    public void setInterpret(String interpret) {
+        this.interpret = interpret;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public List<SecondaryDimensionLevelDefine> getSecondaryDimensionLevelDefineList() {
+        return secondaryDimensionLevelDefineList;
+    }
+
+    public void setSecondaryDimensionLevelDefineList(List<SecondaryDimensionLevelDefine> secondaryDimensionLevelDefineList) {
+        this.secondaryDimensionLevelDefineList = secondaryDimensionLevelDefineList;
+    }
+
+    public String getFormula() {
+        return formula;
+    }
+
+    public void setFormula(String formula) {
+        this.formula = formula;
+    }
+
+    public List<ModuleEvaluation> getModuleEvaluationList() {
+        return moduleEvaluationList;
+    }
+
+    public void setModuleEvaluationList(List<ModuleEvaluation> moduleEvaluationList) {
+        this.moduleEvaluationList = moduleEvaluationList;
+    }
+}

+ 114 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/PaperStructure.java

@@ -0,0 +1,114 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: 分布式印刷开放接口 - 试卷蓝图配置
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class PaperStructure {
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    private String questionName;
+
+    private String numberType;
+
+    private String bigQuestionNumber;
+
+    private String smallQuestionNumber;
+
+    private String bigTopicName;
+
+    private BigDecimal fullScore;
+
+    private String scoreRules;
+
+    private String knowledgeDimension;
+
+    private String abilityDimension;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getQuestionName() {
+        return questionName;
+    }
+
+    public void setQuestionName(String questionName) {
+        this.questionName = questionName;
+    }
+
+    public String getNumberType() {
+        return numberType;
+    }
+
+    public void setNumberType(String numberType) {
+        this.numberType = numberType;
+    }
+
+    public String getBigQuestionNumber() {
+        return bigQuestionNumber;
+    }
+
+    public void setBigQuestionNumber(String bigQuestionNumber) {
+        this.bigQuestionNumber = bigQuestionNumber;
+    }
+
+    public String getSmallQuestionNumber() {
+        return smallQuestionNumber;
+    }
+
+    public void setSmallQuestionNumber(String smallQuestionNumber) {
+        this.smallQuestionNumber = smallQuestionNumber;
+    }
+
+    public String getBigTopicName() {
+        return bigTopicName;
+    }
+
+    public void setBigTopicName(String bigTopicName) {
+        this.bigTopicName = bigTopicName;
+    }
+
+    public BigDecimal getFullScore() {
+        return fullScore;
+    }
+
+    public void setFullScore(BigDecimal fullScore) {
+        this.fullScore = fullScore;
+    }
+
+    public String getScoreRules() {
+        return scoreRules;
+    }
+
+    public void setScoreRules(String scoreRules) {
+        this.scoreRules = scoreRules;
+    }
+
+    public String getKnowledgeDimension() {
+        return knowledgeDimension;
+    }
+
+    public void setKnowledgeDimension(String knowledgeDimension) {
+        this.knowledgeDimension = knowledgeDimension;
+    }
+
+    public String getAbilityDimension() {
+        return abilityDimension;
+    }
+
+    public void setAbilityDimension(String abilityDimension) {
+        this.abilityDimension = abilityDimension;
+    }
+}

+ 54 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/dto/printOpen/SecondaryDimensionLevelDefine.java

@@ -0,0 +1,54 @@
+package com.qmth.teachcloud.report.business.bean.dto.printOpen;
+
+/**
+ * @Description: 考察点二级熟练度定义
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+public class SecondaryDimensionLevelDefine {
+    private String define;
+    private String level;
+    private String max;
+    private String min;
+    private String scope;
+
+    public String getDefine() {
+        return define;
+    }
+
+    public void setDefine(String define) {
+        this.define = define;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getMax() {
+        return max;
+    }
+
+    public void setMax(String max) {
+        this.max = max;
+    }
+
+    public String getMin() {
+        return min;
+    }
+
+    public void setMin(String min) {
+        this.min = min;
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+}

+ 39 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataGetAndEditService.java

@@ -0,0 +1,39 @@
+package com.qmth.teachcloud.report.business.service;
+
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * @Description: 基础分析数据获取及新增服务类
+ * @Author: CaoZixuan
+ * @Date: 2022-06-07
+ */
+@Service
+public interface AnalyzeDataGetAndEditService {
+
+    /**
+     * 基础试卷信息新增或更新't_b_paper'
+     *
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param schoolId   学校id
+     * @throws IOException 结果
+     */
+    void tbPaperDispose(Long examId, String courseCode, Long schoolId) throws IOException;
+
+    /**
+     * 基础试卷维度表全表删除后新增't_b_dimension'
+     *
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param schoolId   学校id
+     */
+    void tbPaperDimensionDispose(Long examId, String courseCode, Long schoolId) throws IOException;
+
+    void tbPaperStructDispose(Long examId, String courseCode, Long schoolId);
+
+    void tbPaperModuleDispose(Long examId, String courseCode, Long schoolId);
+
+    void tbExamStudentScoreDatasourceDispose(Long examId, String courseCode, Long schoolId);
+}

+ 0 - 13
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeDataGetService.java

@@ -1,13 +0,0 @@
-package com.qmth.teachcloud.report.business.service;
-
-import org.springframework.stereotype.Service;
-
-/**
- * @Description: 基础分析数据获取服务类
- * @Author: CaoZixuan
- * @Date: 2022-06-07
- */
-@Service
-public interface AnalyzeDataGetService {
-
-}

+ 33 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/CallPrintOpenApiService.java

@@ -1,8 +1,9 @@
 package com.qmth.teachcloud.report.business.service;
 
-import com.qmth.teachcloud.report.business.bean.dto.printOpen.PaperConfig;
+import com.qmth.teachcloud.report.business.bean.dto.printOpen.*;
 
 import java.io.IOException;
+import java.util.List;
 
 /**
  * @Description: 请求知学知考开放接口
@@ -18,4 +19,35 @@ public interface CallPrintOpenApiService {
      */
     PaperConfig callPaperConfig(Long thirdExamId,String gradeCourseCode) throws IOException;
 
+    /**
+     * 请求分布式印刷试卷维度查询接口
+     * @param thirdExamId 考试id
+     * @param gradeCourseCode 科目编号
+     * @return 结果
+     */
+    List<PaperDimension> callPaperDimension(Long thirdExamId,String gradeCourseCode) throws IOException;
+
+    /**
+     * 请求分布式印刷试卷蓝图接口
+     * @param thirdExamId 考试id
+     * @param gradeCourseCode 科目编号
+     * @return 结果
+     */
+    List<PaperStructure> callPaperStruct(Long thirdExamId,String gradeCourseCode) throws IOException;
+
+    /**
+     * 请求分布式印刷试卷模块接口
+     * @param thirdExamId 考试id
+     * @param gradeCourseCode 科目编号
+     * @return 结果
+     */
+    List<PaperEvaluation> callPaperModule(Long thirdExamId,String gradeCourseCode) throws IOException;
+
+    /**
+     * 请求学生成绩数据接口
+     * @param thirdExamId 考试id
+     * @param gradeCourseCode 科目编号
+     * @return 结果
+     */
+    List<ExamStudentScore> callExamStudentScore(Long thirdExamId,String gradeCourseCode) throws IOException;
 }

+ 112 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataGetAndEditServiceImpl.java

@@ -0,0 +1,112 @@
+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.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 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;
+
+/**
+ * @Description: 分析数据获取和编辑服务实现类
+ * @Author: CaoZixuan
+ * @Date: 2022-06-08
+ */
+@Service
+public class AnalyzeDataGetAndEditServiceImpl implements AnalyzeDataGetAndEditService {
+    @Resource
+    private CallPrintOpenApiService callPrintOpenApiService;
+    @Resource
+    private TBExamCourseService tbExamCourseService;
+    @Resource
+    private BasicCourseService basicCourseService;
+
+    @Resource
+    private TBPaperService tbPaperService;
+
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void tbPaperDispose(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();
+        PaperConfig paperConfig = callPrintOpenApiService.callPaperConfig(examId,courseCode);
+
+        BigDecimal coefficient = BigDecimal.ZERO;
+        if (Objects.nonNull(paperConfig.getCoefficient())) {
+            coefficient = BigDecimal.valueOf(Double.parseDouble(String.valueOf(paperConfig.getCoefficient())));
+        }
+        String paperType = paperConfig.getPaperType();
+        List<TBPaper> oldList = tbPaperService.list(new QueryWrapper<TBPaper>().lambda()
+                .eq(TBPaper::getExamId, examId).eq(TBPaper::getCourseCode, courseCode).eq(TBPaper::getPaperType, paperType));
+        Long id;
+        if (oldList.size() == 1) {
+            id = oldList.get(0).getId();
+        } else if (oldList.size() < 1) {
+            id = SystemConstant.getDbUuid();
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("表数据异常[t_b_paper]");
+        }
+
+        TBPaper tbPaper = new TBPaper();
+        tbPaper.setCourseCode(courseCode);
+        tbPaper.setCourseName(courseName);
+        tbPaper.setPaperType(paperConfig.getPaperType());
+        Long startTime = tbPaper.getStartTime();
+        Long endTime = tbPaper.getEndTime();
+        if (!SystemConstant.isOneNull(startTime,endTime)){
+            tbPaper.setStartTime(startTime);
+            tbPaper.setEndTime(endTime);
+        }
+        tbPaper.setCoefficient(coefficient);
+        tbPaper.setTotalScore(paperConfig.getTotalScore());
+        tbPaper.setPassScore(paperConfig.getPassScore());
+        tbPaper.setScoreType(paperConfig.getScoreType());
+        tbPaper.setId(id);
+        tbPaperService.saveOrUpdate(tbPaper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void tbPaperDimensionDispose(Long examId, String courseCode, Long schoolId) throws IOException {
+        if (tbExamCourseService.verifyExamCourseCantRun(examId,schoolId,courseCode,null)){
+            throw ExceptionResultEnum.ERROR.exception("课程编号为【" + courseCode + "】的课程不能进行数据更改");
+        }
+        List<PaperDimension> paperDimensionList = callPrintOpenApiService.callPaperDimension(examId,courseCode);
+        // TODO: 2022/6/8 维度新增
+//        List<TBDimension> tbDimensionList = paperDimensionList.stream().flatMap(e -> )
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void tbPaperStructDispose(Long examId, String courseCode, Long schoolId) {
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void tbPaperModuleDispose(Long examId, String courseCode, Long schoolId) {
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void tbExamStudentScoreDatasourceDispose(Long examId, String courseCode, Long schoolId) {
+
+    }
+}

+ 110 - 5
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/CallPrintOpenApiServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.report.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.boot.tools.signature.SignatureEntity;
 import com.qmth.boot.tools.signature.SignatureType;
@@ -9,7 +10,8 @@ import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.util.HttpUtil;
 import com.qmth.teachcloud.common.util.JacksonUtil;
-import com.qmth.teachcloud.report.business.bean.dto.printOpen.PaperConfig;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.report.business.bean.dto.printOpen.*;
 import com.qmth.teachcloud.report.business.service.CallPrintOpenApiService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -17,6 +19,8 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -47,10 +51,111 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
         long timestamp = System.currentTimeMillis();
 
         String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.printOpenDomain().getPaperConfig(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
-        String result = HttpUtil.postJson(dictionaryConfig.reportOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getPaperConfig(), JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
-        if (Objects.nonNull(result)) {
-            log.info("result:{}", JacksonUtil.parseJson(result));
+        String callResult = HttpUtil.postJson(dictionaryConfig.printOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getPaperConfig(), JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
+        PaperConfig paperConfig = new PaperConfig();
+        if (Objects.nonNull(callResult)) {
+            log.info("callResult:{}", JacksonUtil.parseJson(callResult));
+            Result result = JSON.parseObject(callResult,Result.class);
+            Object data = result.getData();
+            paperConfig = JSON.parseObject(JSON.toJSONString(data),PaperConfig.class);
         }
-        return null;
+        return paperConfig;
     }
+
+    @Override
+    public List<PaperDimension> callPaperDimension(Long thirdExamId, String gradeCourseCode) throws IOException {
+        Long schoolId = 2L;
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        log.info("请求分布式印刷维度查询");
+        JSONObject printOpenParams = new JSONObject();
+        printOpenParams.put("thirdExamId", thirdExamId);
+        printOpenParams.put("gradeCourseCode", gradeCourseCode);
+        long timestamp = System.currentTimeMillis();
+
+        String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.printOpenDomain().getPaperDimension(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+        String callResult = HttpUtil.postJson(dictionaryConfig.printOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getPaperDimension(), JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
+        List<PaperDimension> paperDimensionList = new ArrayList<>();
+        if (Objects.nonNull(callResult)) {
+            log.info("callResult:{}", JacksonUtil.parseJson(callResult));
+            Result result = JSON.parseObject(callResult,Result.class);
+            Object data = result.getData();
+            paperDimensionList = JSON.parseArray(JSON.toJSONString(data),PaperDimension.class);
+        }
+        return paperDimensionList;
+    }
+
+    @Override
+    public List<PaperStructure> callPaperStruct(Long thirdExamId, String gradeCourseCode) throws IOException {
+        Long schoolId = 2L;
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        log.info("请求分布式印刷试卷结构查询");
+        JSONObject printOpenParams = new JSONObject();
+        printOpenParams.put("thirdExamId", thirdExamId);
+        printOpenParams.put("gradeCourseCode", gradeCourseCode);
+        long timestamp = System.currentTimeMillis();
+
+        String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.printOpenDomain().getPaperStructure(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+        String callResult = HttpUtil.postJson(dictionaryConfig.printOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getPaperStructure(), JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
+        List<PaperStructure> paperStructureList = new ArrayList<>();
+        if (Objects.nonNull(callResult)) {
+            log.info("callResult:{}", JacksonUtil.parseJson(callResult));
+            Result result = JSON.parseObject(callResult,Result.class);
+            Object data = result.getData();
+            paperStructureList = JSON.parseArray(JSON.toJSONString(data),PaperStructure.class);
+        }
+        return paperStructureList;
+    }
+
+    @Override
+    public List<PaperEvaluation> callPaperModule(Long thirdExamId, String gradeCourseCode) throws IOException {
+        Long schoolId = 2L;
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        log.info("请求分布式印刷试卷模块评价查询");
+        JSONObject printOpenParams = new JSONObject();
+        printOpenParams.put("thirdExamId", thirdExamId);
+        printOpenParams.put("gradeCourseCode", gradeCourseCode);
+        long timestamp = System.currentTimeMillis();
+
+        String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.printOpenDomain().getPaperEvaluation(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+        String callResult = HttpUtil.postJson(dictionaryConfig.printOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getPaperEvaluation(), JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
+        List<PaperEvaluation> paperEvaluationList = new ArrayList<>();
+        if (Objects.nonNull(callResult)) {
+            log.info("callResult:{}", JacksonUtil.parseJson(callResult));
+            Result result = JSON.parseObject(callResult,Result.class);
+            Object data = result.getData();
+            paperEvaluationList = JSON.parseArray(JSON.toJSONString(data),PaperEvaluation.class);
+        }
+        return paperEvaluationList;
+    }
+
+    @Override
+    public List<ExamStudentScore> callExamStudentScore(Long thirdExamId, String gradeCourseCode) throws IOException {
+        Long schoolId = 2L;
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        log.info("请求分布式印刷考生成绩查询");
+        JSONObject printOpenParams = new JSONObject();
+        printOpenParams.put("thirdExamId", thirdExamId);
+        printOpenParams.put("gradeCourseCode", gradeCourseCode);
+        printOpenParams.put("pageSize", 100);
+        List<ExamStudentScore> examStudentScoreList = new ArrayList<>();
+        List<ExamStudentScore> examStudentScoreCell = new ArrayList<>();
+        int pageNumber = 1;
+        do{
+            printOpenParams.put("pageNumber",pageNumber);
+            long timestamp = System.currentTimeMillis();
+            String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.printOpenDomain().getExamStudentScore(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
+            String callResult = HttpUtil.postJson(dictionaryConfig.printOpenDomain().getHostUrl() + dictionaryConfig.printOpenDomain().getExamStudentScore(), JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
+            if (Objects.nonNull(callResult)) {
+                log.info("callResult:{}", JacksonUtil.parseJson(callResult));
+                Result result = JSON.parseObject(callResult,Result.class);
+                Object data = result.getData();
+                examStudentScoreCell = JSON.parseArray(JSON.toJSONString(data),ExamStudentScore.class);
+                examStudentScoreList.addAll(examStudentScoreCell);
+            }
+            pageNumber ++;
+        }while (examStudentScoreCell.size() > 0);
+        return examStudentScoreList;
+    }
+
+
 }

+ 5 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamCourseServiceImpl.java

@@ -53,11 +53,14 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
 
     @Override
     public boolean verifyExamCourseCantRun(Long examId, Long schoolId, String courseCode, String courseName) {
+
         QueryWrapper<BasicCourse> schoolCourseQuery = new QueryWrapper<>();
         schoolCourseQuery.lambda()
                 .eq(BasicCourse::getSchoolId, schoolId)
-                .eq(BasicCourse::getCode, courseCode)
-                .eq(BasicCourse::getName, courseName);
+                .eq(BasicCourse::getCode, courseCode);
+        if (SystemConstant.strNotNull(courseName)){
+            schoolCourseQuery.lambda().eq(BasicCourse::getName, courseName);
+        }
         List<BasicCourse> tbSchoolCourseList = basicCourseService.list(schoolCourseQuery);
         if (tbSchoolCourseList.size() != 1) {
             throw ExceptionResultEnum.ERROR.exception("学校课程基础数据异常");

+ 49 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/TestCallPrintOpenApiController.java

@@ -1,10 +1,12 @@
 package com.qmth.teachcloud.report.api;
 
+import com.alibaba.fastjson.JSON;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.report.business.bean.dto.printOpen.*;
 import com.qmth.teachcloud.report.business.service.CallPrintOpenApiService;
 import io.swagger.annotations.*;
 import org.springframework.validation.annotation.Validated;
@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.io.IOException;
+import java.util.List;
 
 /**
  * @Description:
@@ -35,7 +38,52 @@ public class TestCallPrintOpenApiController {
     @Aac(auth = BOOL.FALSE)
     public Result paperConfig(@ApiParam(value = "考试id", required = true) @RequestParam Long thirdExamId,
                               @ApiParam(value = "科目编号", required = true) @RequestParam String courseCode) throws IOException {
-        callPrintOpenApiService.callPaperConfig(thirdExamId,courseCode);
+        PaperConfig paperConfig = callPrintOpenApiService.callPaperConfig(thirdExamId, courseCode);
+        System.out.println(JSON.toJSONString(paperConfig));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "维度配置")
+    @ApiResponses({@ApiResponse(code = 200, message = "试卷配置", response = Object.class)})
+    @RequestMapping(value = "/paper_dimension", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Result paperDimension(@ApiParam(value = "考试id", required = true) @RequestParam Long thirdExamId,
+                                 @ApiParam(value = "科目编号", required = true) @RequestParam String courseCode) throws IOException {
+        List<PaperDimension> paperDimensionList = callPrintOpenApiService.callPaperDimension(thirdExamId, courseCode);
+        System.out.println(JSON.toJSONString(paperDimensionList));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "蓝图配置")
+    @ApiResponses({@ApiResponse(code = 200, message = "试卷配置", response = Object.class)})
+    @RequestMapping(value = "/paper_struct", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Result paperStruct(@ApiParam(value = "考试id", required = true) @RequestParam Long thirdExamId,
+                              @ApiParam(value = "科目编号", required = true) @RequestParam String courseCode) throws IOException {
+        List<PaperStructure> paperStructureList = callPrintOpenApiService.callPaperStruct(thirdExamId, courseCode);
+        System.out.println(JSON.toJSONString(paperStructureList));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "模块配置")
+    @ApiResponses({@ApiResponse(code = 200, message = "试卷配置", response = Object.class)})
+    @RequestMapping(value = "/paper_module", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Result paperModule(@ApiParam(value = "考试id", required = true) @RequestParam Long thirdExamId,
+                              @ApiParam(value = "科目编号", required = true) @RequestParam String courseCode) throws IOException {
+        List<PaperEvaluation> paperEvaluationList = callPrintOpenApiService.callPaperModule(thirdExamId, courseCode);
+        System.out.println(JSON.toJSONString(paperEvaluationList));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "考生成绩")
+    @ApiResponses({@ApiResponse(code = 200, message = "考生成绩", response = Object.class)})
+    @RequestMapping(value = "/exam_student_score", method = RequestMethod.POST)
+    @Aac(auth = BOOL.FALSE)
+    public Result examStudentScore(@ApiParam(value = "考试id", required = true) @RequestParam Long thirdExamId,
+                                   @ApiParam(value = "科目编号", required = true) @RequestParam String courseCode) throws IOException {
+        List<ExamStudentScore> examStudentScoreList = callPrintOpenApiService.callExamStudentScore(thirdExamId, courseCode);
+        System.out.println(JSON.toJSONString(examStudentScoreList));
         return ResultUtil.ok();
     }
 }

+ 1 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/start/StartRunning.java

@@ -27,7 +27,7 @@ public class StartRunning implements CommandLineRunner {
     public void run(String... args) throws Exception {
         log.info("服务器启动时执行 start");
         SystemConstant.initTempFiles();
-        orgCenterDataDisposeService.updateSchoolInfo();
+//        orgCenterDataDisposeService.updateSchoolInfo();
         log.info("服务器启动时执行 end");
     }
 }