Browse Source

新增试卷蓝图

wangliang 1 năm trước cách đây
mục cha
commit
0246dea7b4

+ 8 - 60
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/PaperStructResult.java

@@ -1,7 +1,5 @@
 package com.qmth.distributed.print.business.bean.result.report;
 
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.bean.dto.report.CourseTargetDto;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Range;
@@ -9,6 +7,7 @@ import org.hibernate.validator.constraints.Range;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -20,27 +19,6 @@ import java.util.List;
  */
 public class PaperStructResult implements Serializable {
 
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "id")
-    private Long id;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "考试id")
-    @NotNull(message = "考试id不能为空")
-    private Long examId;
-
-    @ApiModelProperty(value = "课程编码")
-    @NotNull(message = "课程编码不能为空")
-    private String courseCode;
-
-    @ApiModelProperty(value = "课程名称")
-    @NotNull(message = "课程名称不能为空")
-    private String courseName;
-
-    @ApiModelProperty(value = "试卷编号")
-    @NotNull(message = "试卷编号不能为空")
-    private String paperNumber;
-
     @ApiModelProperty(value = "大题号")
     @NotNull(message = "大题号不能为空")
     @Range(min = 1L, message = "大题号最小为1")
@@ -56,14 +34,16 @@ public class PaperStructResult implements Serializable {
 
     @ApiModelProperty(value = "课程目标集合")
     @NotEmpty(message = "课程目标集合不能为空")
-    private List<CourseTargetDto> targetList;
+    private List<CourseTargetDto> targetList = new ArrayList<>();
+
+    public PaperStructResult() {
 
-    public String getCourseName() {
-        return courseName;
     }
 
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
+    public PaperStructResult(Integer mainNumber, Integer subNumber, Double score) {
+        this.mainNumber = mainNumber;
+        this.subNumber = subNumber;
+        this.score = score;
     }
 
     public Integer getMainNumber() {
@@ -97,36 +77,4 @@ public class PaperStructResult implements Serializable {
     public void setTargetList(List<CourseTargetDto> targetList) {
         this.targetList = targetList;
     }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getPaperNumber() {
-        return paperNumber;
-    }
-
-    public void setPaperNumber(String paperNumber) {
-        this.paperNumber = paperNumber;
-    }
 }

+ 25 - 10
distributed-print/src/main/java/com/qmth/distributed/print/api/TCFinalScoreController.java

@@ -1,23 +1,26 @@
 package com.qmth.distributed.print.api;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.gson.reflect.TypeToken;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.excel.ExcelField;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
 import com.qmth.distributed.print.business.entity.TCFinalScore;
+import com.qmth.distributed.print.business.entity.TCPaperStruct;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.distributed.print.business.service.TCFinalScoreService;
+import com.qmth.distributed.print.business.service.TCPaperStructService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
+import com.qmth.teachcloud.common.util.GsonUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import com.qmth.teachcloud.mark.entity.MarkPaper;
-import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkQuestionService;
 import io.swagger.annotations.*;
 import org.slf4j.Logger;
@@ -61,7 +64,7 @@ public class TCFinalScoreController {
     MarkQuestionService markQuestionService;
 
     @Resource
-    MarkPaperService markPaperService;
+    TCPaperStructService tcPaperStructService;
 
     @ApiOperation(value = "导入期末成绩-模板下载")
     @RequestMapping(value = "/final_score/template_download", method = RequestMethod.POST)
@@ -160,7 +163,7 @@ public class TCFinalScoreController {
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     @ApiResponses({@ApiResponse(code = 200, message = "试卷蓝图保存", response = Object.class)})
     @Transactional
-    public Object finalScorePaperStructSave(@ApiParam(value = "试卷蓝图结构", required = true) @Valid @RequestBody PaperStructResult paperStructResult, BindingResult bindingResult) throws IOException {
+    public Object finalScorePaperStructSave(@ApiParam(value = "试卷蓝图结构", required = true) @Valid @RequestBody List<PaperStructResult> paperStructResultList, BindingResult bindingResult) throws IOException {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
@@ -174,12 +177,24 @@ public class TCFinalScoreController {
     public Object finalScorePaperStructQuery(@ApiParam(value = "考试id", required = true) @RequestParam Long examId,
                                              @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
                                              @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
-        List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndPaperType(examId, paperNumber, null);
-        if (CollectionUtils.isEmpty(markQuestionList)) {
-            throw ExceptionResultEnum.ERROR.exception("未找到试卷结构");
+        List<PaperStructResult> paperStructResultList = null;
+        TCPaperStruct tcPaperStruct = tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId).eq(TCPaperStruct::getCourseCode, courseCode).eq(TCPaperStruct::getPaperNumber, paperNumber));
+        if (Objects.isNull(tcPaperStruct)) {
+            List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndPaperType(examId, paperNumber, null);
+            if (CollectionUtils.isEmpty(markQuestionList)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到试卷结构");
+            }
+
+            paperStructResultList = new ArrayList<>(markQuestionList.size());
+            for (MarkQuestion markQuestion : markQuestionList) {
+                paperStructResultList.add(new PaperStructResult(markQuestion.getMainNumber(), markQuestion.getSubNumber(), markQuestion.getTotalScore()));
+            }
+        } else {
+            if (Objects.nonNull(tcPaperStruct.getPaperStruct())) {
+                paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
+                }.getType());
+            }
         }
-        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
-        Objects.requireNonNull(markPaper, "未找到科目信息");
-        return ResultUtil.ok(true);
+        return ResultUtil.ok(paperStructResultList);
     }
 }