Sfoglia il codice sorgente

教研分析 开放方法

caozixuan 3 anni fa
parent
commit
9fce2fa552
28 ha cambiato i file con 547 aggiunte e 103 eliminazioni
  1. 124 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/GradePaperDimensionParam.java
  2. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatchPaper.java
  3. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeModuleDefine.java
  4. 16 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeModuleEvaluation.java
  5. 11 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaper.java
  6. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaperDimension.java
  7. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaperStruct.java
  8. 21 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DimensionEnum.java
  9. 43 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradePaperDimensionService.java
  10. 0 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicSemesterServiceImpl.java
  11. 91 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperDimensionServiceImpl.java
  12. 1 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  13. 8 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicSemesterService.java
  14. 80 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/params/TBExamParam.java
  15. 3 3
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TAExamCourseCollegeInspectResult.java
  16. 3 7
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TBExamResult.java
  17. 3 3
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TeachCourseSurveyResult.java
  18. 3 3
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TAExamTotal.java
  19. 9 9
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TBExam.java
  20. 7 7
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TBExamCourse.java
  21. 7 8
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/TBExamCourseService.java
  22. 8 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/TBExamService.java
  23. 1 1
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java
  24. 5 33
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamCourseServiceImpl.java
  25. 52 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamServiceImpl.java
  26. 6 4
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/TeachcloudReportApplication.java
  27. 1 1
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/BasicDatasourceController.java
  28. 8 2
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysReportController.java

+ 124 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/GradePaperDimensionParam.java

@@ -0,0 +1,124 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.DimensionEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 成绩分析 - 维度参数
+ * @Author: CaoZixuan
+ * @Date: 2022-05-20
+ */
+public class GradePaperDimensionParam {
+    @ApiModelProperty(value = "id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
+    @ApiModelProperty(value = "试卷名称")
+    private String paperName;
+
+    @ApiModelProperty(value = "维度类型 - 知识,能力,素养")
+    private DimensionEnum dimensionType;
+
+    @ApiModelProperty(value = "一级维度编号")
+    private String codePrimary;
+
+    @ApiModelProperty(value = "一级维度名称")
+    private String namePrimary;
+
+    @ApiModelProperty(value = "二级维度编号")
+    private String codeSecond;
+
+    @ApiModelProperty(value = "二级维度名称")
+    private String nameSecond;
+
+    @ApiModelProperty(value = "一级维度术语解释")
+    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 getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public DimensionEnum getDimensionType() {
+        return dimensionType;
+    }
+
+    public void setDimensionType(DimensionEnum 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;
+    }
+}

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatchPaper.java

@@ -32,6 +32,9 @@ public class GradeBatchPaper extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
     @ApiModelProperty(value = "试卷名称")
     private String paperName;
 
@@ -59,6 +62,14 @@ public class GradeBatchPaper extends BaseEntity implements Serializable {
         this.paperNumber = paperNumber;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
     public String getPaperName() {
         return paperName;
     }

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

@@ -28,6 +28,9 @@ public class GradeModuleDefine extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
     @ApiModelProperty(value = "试卷名称")
     private String paperName;
 
@@ -71,6 +74,14 @@ public class GradeModuleDefine extends BaseEntity implements Serializable {
         this.paperNumber = paperNumber;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
     public String getPaperName() {
         return paperName;
     }

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

@@ -28,8 +28,11 @@ public class GradeModuleEvaluation extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
     @ApiModelProperty(value = "试卷名称")
-    private String paperCode;
+    private String paperName;
 
     @ApiModelProperty(value = "模块类型(知识、维度、素养)")
     private String moduleType;
@@ -68,12 +71,20 @@ public class GradeModuleEvaluation extends BaseEntity implements Serializable {
         this.paperNumber = paperNumber;
     }
 
-    public String getPaperCode() {
-        return paperCode;
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getPaperName() {
+        return paperName;
     }
 
-    public void setPaperCode(String paperCode) {
-        this.paperCode = paperCode;
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
     }
 
     public String getModuleType() {

+ 11 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaper.java

@@ -30,12 +30,12 @@ public class GradePaper extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
-    @ApiModelProperty(value = "试卷名称")
-    private String paperName;
-
     @ApiModelProperty(value = "试卷类型")
     private String paperType;
 
+    @ApiModelProperty(value = "试卷名称")
+    private String paperName;
+
     @ApiModelProperty(value = "该试卷考试开始时间")
     private Long startTime;
 
@@ -70,14 +70,6 @@ public class GradePaper extends BaseEntity implements Serializable {
         this.paperNumber = paperNumber;
     }
 
-    public String getPaperName() {
-        return paperName;
-    }
-
-    public void setPaperName(String paperName) {
-        this.paperName = paperName;
-    }
-
     public String getPaperType() {
         return paperType;
     }
@@ -86,6 +78,14 @@ public class GradePaper extends BaseEntity implements Serializable {
         this.paperType = paperType;
     }
 
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
     public Long getStartTime() {
         return startTime;
     }

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

@@ -28,6 +28,9 @@ public class GradePaperDimension extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
     @ApiModelProperty(value = "试卷名称")
     private String paperName;
 
@@ -65,6 +68,14 @@ public class GradePaperDimension extends BaseEntity implements Serializable {
         this.paperNumber = paperNumber;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
     public String getPaperName() {
         return paperName;
     }

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradePaperStruct.java

@@ -29,6 +29,9 @@ public class GradePaperStruct extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
     @ApiModelProperty(value = "试卷名称")
     private String paperName;
 

+ 21 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DimensionEnum.java

@@ -0,0 +1,21 @@
+package com.qmth.distributed.print.business.enums;
+
+/**
+ * @Description: 维度枚举类
+ * @Author: CaoZixuan
+ * @Date: 2022-05-20
+ */
+public enum DimensionEnum {
+    KNOWLEDGE("知识"),
+    ABILITY("能力")
+    ;
+    DimensionEnum(String desc) {
+        this.desc = desc;
+    }
+
+    private final String desc;
+
+    public final String getDesc() {
+        return desc;
+    }
+}

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

@@ -1,7 +1,12 @@
 package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.params.GradePaperDimensionParam;
 import com.qmth.distributed.print.business.entity.GradePaperDimension;
+import com.qmth.teachcloud.common.entity.SysUser;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,42 @@ import com.qmth.distributed.print.business.entity.GradePaperDimension;
  */
 public interface GradePaperDimensionService extends IService<GradePaperDimension> {
 
+    // TODO: 2022/5/20 查询接口 
+    /**
+     * 分析 - 试卷维度数据 编辑
+     * @param gradePaperDimensionParam 试卷维度参数
+     * @param requestUser 请求用户
+     * @return 试卷维度数据id
+     */
+    Long editGradePaperDimension(GradePaperDimensionParam gradePaperDimensionParam,SysUser requestUser);
+
+    /**
+     * 分析 - 试卷维度数据批量 编辑
+     * @param gradePaperDimensionParamList 试卷维度参数集合
+     * @param requestUser 请求用户
+     */
+    void editGradePaperDimensionBatch(List<GradePaperDimensionParam> gradePaperDimensionParamList, SysUser requestUser);
+
+    /**
+     * 批量删除试卷维度数据
+     * @param gradePaperDimensionIdList 试卷维度数据id集合
+     */
+    void deleteGradePaperDimension(List<Long> gradePaperDimensionIdList);
+
+    /**
+     * 分析 - 试卷维度数据导入
+     * @param file excel 文件
+     * @param paperNumber 试卷编号
+     * @param paperType 试卷类型
+     * @param requestUser 请求用户
+     */
+    void importGradePaperDimension(MultipartFile file, String paperNumber, String paperType, SysUser requestUser);
+
+    /**
+     * 分析 - 试卷维度模板导出
+     * @param paperNumber 试卷编号
+     * @param paperType 试卷类型
+     * @param requestUser 请求用户
+     */
+    void exportGradePaperDimensionTemplate(String paperNumber, String paperType, SysUser requestUser);
 }

+ 0 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicSemesterServiceImpl.java

@@ -36,9 +36,6 @@ import java.util.stream.Collectors;
  */
 @Service
 public class BasicSemesterServiceImpl extends ServiceImpl<BasicSemesterMapper, BasicSemester> implements BasicSemesterService {
-    @Resource
-    ExamPrintPlanService examPrintPlanService;
-
     @Resource
     BasicExamService basicExamService;
 

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

@@ -1,10 +1,20 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.bean.params.GradePaperDimensionParam;
 import com.qmth.distributed.print.business.entity.GradePaperDimension;
 import com.qmth.distributed.print.business.mapper.GradePaperDimensionMapper;
 import com.qmth.distributed.print.business.service.GradePaperDimensionService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +27,85 @@ import org.springframework.stereotype.Service;
 @Service
 public class GradePaperDimensionServiceImpl extends ServiceImpl<GradePaperDimensionMapper, GradePaperDimension> implements GradePaperDimensionService {
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Long editGradePaperDimension(GradePaperDimensionParam gradePaperDimensionParam, SysUser requestUser) {
+        Long id = gradePaperDimensionParam.getId();
+        Long schoolId = requestUser.getSchoolId();
+        // 基础信息
+        String paperNumber = gradePaperDimensionParam.getPaperNumber();
+        String paperType = gradePaperDimensionParam.getPaperType();
+        String paperName = gradePaperDimensionParam.getPaperName();
+
+        // TODO: 2022/5/23 根据试卷编号和试卷类型校验该试卷是分析试卷
+
+        // 维度信息
+        String codePrimary = gradePaperDimensionParam.getCodePrimary();
+        String namePrimary = gradePaperDimensionParam.getNamePrimary();
+        this.checkCodePrimaryParams(id,paperNumber,paperType,codePrimary,namePrimary,schoolId);
+
+
+        return null;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void editGradePaperDimensionBatch(List<GradePaperDimensionParam> gradePaperDimensionParamList, SysUser requestUser) {
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void deleteGradePaperDimension(List<Long> gradePaperDimensionIdList) {
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void importGradePaperDimension(MultipartFile file, String paperNumber, String paperType, SysUser requestUser) {
+
+    }
+
+    @Override
+    public void exportGradePaperDimensionTemplate(String paperNumber, String paperType, SysUser requestUser) {
+
+    }
+
+    /**
+     * 检验一级维度参数
+     *
+     * @param id          主键
+     * @param paperNumber 试卷编号
+     * @param paperType   试卷类型
+     * @param codePrimary 一级维度编号
+     * @param namePrimary 一级维度名称
+     * @param schoolId    学校id
+     */
+    private void checkCodePrimaryParams(Long id, String paperNumber, String paperType, String codePrimary, String namePrimary, Long schoolId) {
+        if (SystemConstant.isOneNull(paperNumber, paperType, codePrimary, namePrimary)) {
+            throw ExceptionResultEnum.PARAMS_ERROR.exception();
+        }
+
+        if (!codePrimary.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE_PRIMARY_DIMENSION)) {
+            throw ExceptionResultEnum.ERROR.exception("一级维度编号必须为大写A-Z");
+        }
+        List<GradePaperDimension> gradePaperDimensionList = this.list(new QueryWrapper<GradePaperDimension>().lambda()
+                .eq(GradePaperDimension::getPaperNumber, paperNumber)
+                .eq(GradePaperDimension::getPaperType, paperType)
+                .eq(GradePaperDimension::getCodePrimary, codePrimary)
+                .eq(GradePaperDimension::getSchoolId, schoolId));
+
+        if (gradePaperDimensionList.size() > 1) {
+            if (!namePrimary.equals(gradePaperDimensionList.get(0).getNamePrimary())) {
+                throw ExceptionResultEnum.ERROR.exception("一级维度编码和名称不一致");
+            }
+        } else {
+            GradePaperDimension gradePaperDimension = gradePaperDimensionList.get(0);
+            if (!namePrimary.equals(gradePaperDimension.getNamePrimary())) {
+                if (!Objects.equals(gradePaperDimension.getId(), id)) {
+                    throw ExceptionResultEnum.ERROR.exception("一级维度编码和名称不一致");
+                }
+            }
+        }
+    }
 }

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -98,6 +98,7 @@ public class SystemConstant {
     //英文字母、数字、中文括号、英文括号、下划线(_)、减号(-)、中文横线(—)
     public static final String REGULAR_EXPRESSION_OF_CODE = "[a-zA-Z0-9](\\w+)?-?(\\w+)?—?(\\w+)?(\\((\\w+)?-?(\\w+)?—?(\\w+)?\\))?(\\((\\w+)?-?(\\w+)?—?(\\w+)?\\))?(\\w+)?";
     public static final String REGULAR_EXPRESSION_OF_PHONE = "((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}";
+    public static final String REGULAR_EXPRESSION_OF_CODE_PRIMARY_DIMENSION = "[A-Z]";
     public static final String SYS_USER = "sysUser";
     public static final String DATA_COUNT = "dataCount";
     public static final List<Long> MENU_MANAGE = Arrays.asList(507L, 508L, 530L, 531L);

+ 8 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicSemesterService.java

@@ -20,15 +20,17 @@ public interface BasicSemesterService extends IService<BasicSemester> {
 
     /**
      * 基础学期分页查询
-     * @param schoolId 学校id
+     *
+     * @param schoolId   学校id
      * @param pageNumber 分页页数
-     * @param pageSize 分页容量
+     * @param pageSize   分页容量
      * @return 分页结果
      */
-    IPage<BasicSemesterResult> basicSemesterPage(Long schoolId,int pageNumber, int pageSize);
+    IPage<BasicSemesterResult> basicSemesterPage(Long schoolId, int pageNumber, int pageSize);
 
     /**
      * 基础学期编辑
+     *
      * @param basicSemesterParams 编辑参数
      * @return 编辑后该学期id
      */
@@ -36,6 +38,7 @@ public interface BasicSemesterService extends IService<BasicSemester> {
 
     /**
      * 学期删除
+     *
      * @param id 学期主键
      * @return 是否删除成功
      */
@@ -43,6 +46,7 @@ public interface BasicSemesterService extends IService<BasicSemester> {
 
     /**
      * 查询学期
+     *
      * @param schoolId
      * @param inUsed
      * @return
@@ -51,6 +55,7 @@ public interface BasicSemesterService extends IService<BasicSemester> {
 
     /**
      * 设置当前使用学期
+     *
      * @param id
      * @return
      */

+ 80 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/params/TBExamParam.java

@@ -0,0 +1,80 @@
+package com.qmth.teachcloud.report.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 考试参数
+ * @Author: CaoZixuan
+ * @Date: 2022-05-23
+ */
+public class TBExamParam {
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "学校id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long schoolId;
+
+    @ApiModelProperty(value = "考试名称(2020~2021学年上学期期末考试)")
+    @NotNull(message = "请输入考试名称")
+    @Length(min = 1,message = "请输入考试名称")
+    private String examName;
+
+    @ApiModelProperty(value = "考试时间")
+    @NotNull(message = "请输入考试时间")
+    @Range(min = 1L, message = "请输入考试时间")
+    private Long examTime;
+
+    @ApiModelProperty(value = "学期id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "请输入所属学期id")
+    @Range(min = 1L, message = "请输入所属学期id")
+    private Long semesterId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public Long getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(Long examTime) {
+        this.examTime = examTime;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+}

+ 3 - 3
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TAExamCourseCollegeInspectResult.java

@@ -27,7 +27,7 @@ public class TAExamCourseCollegeInspectResult extends TAExamCourseCollegeInspect
     private String collegeName;
 
     @ApiModelProperty(value = "考试时间")
-    private String examTime;
+    private Long examTime;
 
     @ApiModelProperty(value = "考试名称")
     private String examName;
@@ -43,11 +43,11 @@ public class TAExamCourseCollegeInspectResult extends TAExamCourseCollegeInspect
         this.fullScore = fullScore;
     }
 
-    public String getExamTime() {
+    public Long getExamTime() {
         return examTime;
     }
 
-    public void setExamTime(String examTime) {
+    public void setExamTime(Long examTime) {
         this.examTime = examTime;
     }
 

+ 3 - 7
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TBExamResult.java

@@ -25,9 +25,9 @@ public class TBExamResult extends TBExam implements Serializable {
 
     }
 
-    public TBExamResult(Long id, SemesterEnum semester) {
+    public TBExamResult(Long id, String semester) {
         setId(id);
-        setSemester(semester);
+        setSemesterStr(semester);
     }
 
     public TBExamResult(Long id, String examName, String examCode) {
@@ -37,11 +37,7 @@ public class TBExamResult extends TBExam implements Serializable {
     }
 
     public String getSemesterStr() {
-        if (Objects.nonNull(super.getSemester())) {
-            return super.getSemester().getTitle();
-        } else {
-            return semesterStr;
-        }
+        return semesterStr;
     }
 
     public void setSemesterStr(String semesterStr) {

+ 3 - 3
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TeachCourseSurveyResult.java

@@ -11,7 +11,7 @@ import java.math.BigDecimal;
  */
 public class TeachCourseSurveyResult {
     @ApiModelProperty(value = "考试时间")
-    private String examTime;
+    private Long examTime;
 
     @ApiModelProperty(value = "课程名称")
     private String courseName;
@@ -40,11 +40,11 @@ public class TeachCourseSurveyResult {
     @ApiModelProperty(value = "考察学院集合")
     private String inspectCollegeNames;
 
-    public String getExamTime() {
+    public Long getExamTime() {
         return examTime;
     }
 
-    public void setExamTime(String examTime) {
+    public void setExamTime(Long examTime) {
         this.examTime = examTime;
     }
 

+ 3 - 3
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TAExamTotal.java

@@ -83,7 +83,7 @@ public class TAExamTotal implements Serializable {
 
     @ApiModelProperty(value = "考试时间")
     @TableField(value = "exam_time")
-    private String examTime;
+    private Long examTime;
 
     public static long getSerialVersionUID() {
         return serialVersionUID;
@@ -161,11 +161,11 @@ public class TAExamTotal implements Serializable {
         this.absentCount = absentCount;
     }
 
-    public String getExamTime() {
+    public Long getExamTime() {
         return examTime;
     }
 
-    public void setExamTime(String examTime) {
+    public void setExamTime(Long examTime) {
         this.examTime = examTime;
     }
 

+ 9 - 9
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TBExam.java

@@ -38,18 +38,18 @@ public class TBExam extends BaseEntity implements Serializable {
 
     @ApiModelProperty(value = "考试时间")
     @TableField(value = "exam_time")
-    private String examTime;
+    private Long examTime;
 
     @ApiModelProperty(value = "学期")
-    @TableField(value = "semester")
-    private SemesterEnum semester;
+    @TableField(value = "semester_id")
+    private Long semesterId;
 
-    public SemesterEnum getSemester() {
-        return semester;
+    public Long getSemesterId() {
+        return semesterId;
     }
 
-    public void setSemester(SemesterEnum semester) {
-        this.semester = semester;
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
     }
 
     public static long getSerialVersionUID() {
@@ -80,11 +80,11 @@ public class TBExam extends BaseEntity implements Serializable {
         this.examName = examName;
     }
 
-    public String getExamTime() {
+    public Long getExamTime() {
         return examTime;
     }
 
-    public void setExamTime(String examTime) {
+    public void setExamTime(Long examTime) {
         this.examTime = examTime;
     }
 }

+ 7 - 7
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TBExamCourse.java

@@ -46,9 +46,9 @@ public class TBExamCourse extends BaseEntity implements Serializable {
     @TableField(value = "publish_status")
     private PublishStatusEnum publishStatus;
 
-    @ApiModelProperty(value = "教务课程编号")
-    @TableField(value = "examination_course_code")
-    private String examinationCourseCode;
+    @ApiModelProperty(value = "试卷类型")
+    @TableField(value = "paper_type")
+    private String paperType;
 
     @ApiModelProperty(value = "开课学院id")
     @TableField(value = "teach_college_id")
@@ -110,12 +110,12 @@ public class TBExamCourse extends BaseEntity implements Serializable {
         this.publishStatus = publishStatus;
     }
 
-    public String getExaminationCourseCode() {
-        return examinationCourseCode;
+    public String getPaperType() {
+        return paperType;
     }
 
-    public void setExaminationCourseCode(String examinationCourseCode) {
-        this.examinationCourseCode = examinationCourseCode;
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
     }
 
     public Long getTeachCollegeId() {

+ 7 - 8
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/TBExamCourseService.java

@@ -1,7 +1,6 @@
 package com.qmth.teachcloud.report.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.teachcloud.report.business.bean.result.SurveyTeacherExamCourseResult;
 import com.qmth.teachcloud.report.business.bean.result.TBExamCourseResult;
 import com.qmth.teachcloud.report.business.entity.TBExamCourse;
 import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
@@ -58,12 +57,12 @@ public interface TBExamCourseService extends IService<TBExamCourse> {
     /**
      * 创建课程
      *
-     * @param schoolId              学校id
-     * @param examId                考试id
-     * @param courseCode            课程编号
-     * @param courseName            课程名称
-     * @param examinationCourseCode 考务课程编号
-     * @param teachCollegeName      开课学院名称
+     * @param schoolId         学校id
+     * @param examId           考试id
+     * @param courseCode       课程编号
+     * @param courseName       课程名称
+     * @param paperType        试卷类型
+     * @param teachCollegeName 开课学院名称
      */
-    void createCourse(Long schoolId, Long examId, String courseCode, String courseName, String examinationCourseCode, String teachCollegeName);
+    void createCourse(Long schoolId, Long examId, String courseCode, String courseName, String paperType, String teachCollegeName);
 }

+ 8 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/TBExamService.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.report.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.report.business.bean.params.TBExamParam;
 import com.qmth.teachcloud.report.business.entity.TBExam;
 
 /**
@@ -25,4 +26,11 @@ public interface TBExamService extends IService<TBExam> {
      * @return 学校id
      */
     Long findSchoolIdByExamId(Long examId);
+
+    /**
+     * 编辑考试
+     * @param tbExamParam 考试参数
+     * @return 考试id
+     */
+    Long editTBExam(TBExamParam tbExamParam);
 }

+ 1 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java

@@ -1651,7 +1651,7 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
 
         // 考试时间
         TBExam tbExam = tbExamService.getById(examId);
-        String examTime = tbExam.getExamTime();
+        Long examTime = tbExam.getExamTime();
 
         TAExamTotal taExamTotal = new TAExamTotal();
         taExamTotal.setId(SystemConstant.getDbUuid());

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

@@ -14,12 +14,10 @@ import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.report.business.bean.result.TBExamCourseResult;
 import com.qmth.teachcloud.report.business.entity.TBExamCourse;
-import com.qmth.teachcloud.report.business.entity.TBExaminationRelation;
 import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.enums.TestStatusEnum;
 import com.qmth.teachcloud.report.business.mapper.TBExamCourseMapper;
 import com.qmth.teachcloud.report.business.service.TBExamCourseService;
-import com.qmth.teachcloud.report.business.service.TBExaminationRelationService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -50,9 +48,6 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
     @Resource
     SysOrgService sysOrgService;
 
-    @Resource
-    TBExaminationRelationService tbExaminationRelationService;
-
     @Resource
     CommonCacheService commonCacheService;
 
@@ -112,17 +107,6 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
         return effectCourseCodeList;
     }
 
-    /**
-     * 查询科目信息
-     *
-     * @param schoolId
-     * @param examId
-     * @param inspect
-     * @param absent
-     * @param current
-     * @param status
-     * @return
-     */
     @Override
     public List<TBExamCourseResult> findCourseList(Long schoolId, Long examId, boolean inspect, Boolean absent, Boolean current, PublishStatusEnum status) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
@@ -155,31 +139,19 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
     @Override
     public List<TBExamCourseResult> findCourseList(Long schoolId, Long examId, Boolean absent, Boolean current, PublishStatusEnum status) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        return tbExamCourseMapper.findCourseListByTeacherId(schoolId, examId, sysUser.getId(),absent, current, Objects.nonNull(status) ? status.name() : null);
+        return tbExamCourseMapper.findCourseListByTeacherId(schoolId, examId, sysUser.getId(), absent, current, Objects.nonNull(status) ? status.name() : null);
     }
 
     @Transactional
     @Override
-    public void createCourse(Long schoolId, Long examId, String courseCode, String courseName, String examinationCourseCode, String teachCollegeName) {
+    public void createCourse(Long schoolId, Long examId, String courseCode, String courseName, String paperType, String teachCollegeName) {
         List<TBExamCourse> tbExamCourseList = this.list(new QueryWrapper<TBExamCourse>().lambda()
                 .eq(TBExamCourse::getExamId, examId)
                 .eq(TBExamCourse::getSchoolId, schoolId)
                 .eq(TBExamCourse::getCourseCode, courseCode)
-                .eq(TBExamCourse::getExaminationCourseCode, examinationCourseCode));
+                .eq(TBExamCourse::getPaperType, paperType));
         if (tbExamCourseList.size() > 0) {
-            throw ExceptionResultEnum.ERROR.exception("考试课程已存在");
-        }
-        if (!SystemConstant.strNotNull(teachCollegeName)) {
-            List<TBExaminationRelation> tbExaminationRelationList = tbExaminationRelationService.list(new QueryWrapper<TBExaminationRelation>().lambda()
-                    .eq(TBExaminationRelation::getSchoolId, schoolId)
-                    .eq(TBExaminationRelation::getExamId, examId)
-                    .eq(TBExaminationRelation::getExaminationCourseCode, examinationCourseCode));
-            List<String> teachCollegeNameList = tbExaminationRelationList.stream().map(TBExaminationRelation::getTeachCollegeName).distinct().collect(Collectors.toList());
-            if (teachCollegeNameList.size() != 1) {
-                throw ExceptionResultEnum.ERROR.exception("开课学院名称异常");
-            }
-            // 开课学院名称
-            teachCollegeName = teachCollegeNameList.get(0);
+            throw ExceptionResultEnum.ERROR.exception("考试试卷已存在");
         }
         Long teachCollegeId = sysOrgService.searchOrInsert(schoolId, teachCollegeName);
 
@@ -189,9 +161,9 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
         tbExamCourse.setExamId(examId);
         tbExamCourse.setCourseCode(courseCode);
         tbExamCourse.setCourseName(courseName);
+        tbExamCourse.setPaperType(paperType);
         tbExamCourse.setTestStatus(TestStatusEnum.UN_TEST);
         tbExamCourse.setPublishStatus(PublishStatusEnum.UN_COMPUTE);
-        tbExamCourse.setExaminationCourseCode(examinationCourseCode);
         tbExamCourse.setTeachCollegeId(teachCollegeId);
         tbExamCourse.setTeachCollegeName(teachCollegeName);
         this.save(tbExamCourse);

+ 52 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamServiceImpl.java

@@ -1,13 +1,21 @@
 package com.qmth.teachcloud.report.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSemester;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.BasicSemesterService;
+import com.qmth.teachcloud.common.util.DateDisposeUtils;
+import com.qmth.teachcloud.report.business.bean.params.TBExamParam;
 import com.qmth.teachcloud.report.business.entity.TBCloudExam;
 import com.qmth.teachcloud.report.business.entity.TBExam;
 import com.qmth.teachcloud.report.business.mapper.TBExamMapper;
 import com.qmth.teachcloud.report.business.service.TBCloudExamService;
 import com.qmth.teachcloud.report.business.service.TBExamService;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.Objects;
@@ -24,6 +32,8 @@ import java.util.Objects;
 public class TBExamServiceImpl extends ServiceImpl<TBExamMapper, TBExam> implements TBExamService {
     @Resource
     private TBCloudExamService tbCloudExamService;
+    @Resource
+    private BasicSemesterService basicSemesterService;
 
     @Override
     public TBExam findByCloudExamId(Long cloudExamId) {
@@ -44,4 +54,46 @@ public class TBExamServiceImpl extends ServiceImpl<TBExamMapper, TBExam> impleme
         }
         return tbExam.getSchoolId();
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Long editTBExam(TBExamParam tbExamParam) {
+        Long id = tbExamParam.getId();
+        Long schoolId = tbExamParam.getSchoolId();
+        if (!SystemConstant.longNotNull(schoolId)) {
+            throw ExceptionResultEnum.ERROR.exception("缺少参数学校id");
+        }
+
+        String examName = tbExamParam.getExamName();
+        Long examTime = tbExamParam.getExamTime();
+        Long semesterId = tbExamParam.getSemesterId();
+        if (basicSemesterService.count(new QueryWrapper<BasicSemester>().lambda().eq(BasicSemester::getId, semesterId)) == 0) {
+            throw ExceptionResultEnum.ERROR.exception("系统中不存在id为 : " + semesterId + "的学期");
+        }
+
+        TBExam examCheck = this.getOne(new QueryWrapper<TBExam>().lambda().eq(TBExam::getSchoolId, schoolId).eq(TBExam::getExamName, examName));
+        if (Objects.nonNull(examCheck) && !Objects.equals(examCheck.getId(), id)) {
+            throw ExceptionResultEnum.ERROR.exception("系统中考试名称需要唯一");
+        }
+
+        TBExam tbExam = new TBExam();
+        tbExam.setSchoolId(schoolId);
+        tbExam.setExamName(examName);
+        tbExam.setExamCode(DateFormatUtils.format(examTime, "yyyyMMdd"));
+        tbExam.setSemesterId(semesterId);
+        if (SystemConstant.longNotNull(id)) {
+            // 编辑
+            if (Objects.isNull(this.getById(id))) {
+                throw ExceptionResultEnum.ERROR.exception("考试id不存在");
+            }
+            tbExam.setId(id);
+            this.updateById(tbExam);
+        } else {
+            // 新增
+            id = SystemConstant.getDbUuid();
+            tbExam.setId(id);
+            this.save(tbExam);
+        }
+        return id;
+    }
 }

+ 6 - 4
teachcloud-report/src/main/java/com/qmth/teachcloud/report/TeachcloudReportApplication.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.report;
 
+
 import com.qmth.boot.core.security.service.CustomizeAuthorizationService;
 import com.qmth.teachcloud.common.base.CustomizedSqlInjector;
 import com.qmth.teachcloud.common.threadPool.MyThreadPool;
@@ -8,6 +9,7 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Primary;
@@ -17,11 +19,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 import javax.annotation.Resource;
 
-@SpringBootApplication(scanBasePackages = "com.qmth.*")
-@MapperScan({"com.qmth.distributed.print.business.mapper","com.qmth.teachcloud.report.business.mapper","com.qmth.teachcloud.common.mapper"})
+@SpringBootApplication(scanBasePackages = "com.qmth.*", exclude = {SecurityAutoConfiguration.class})
+@MapperScan({"com.qmth.distributed.print.business.mapper", "com.qmth.teachcloud.report.business.mapper", "com.qmth.teachcloud.common.mapper"})
 //主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中,做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
-@EntityScan(basePackages = {"com.qmth.distributed.print.business.entity","com.qmth.teachcloud.report.business.entity","com.qmth.teachcloud.common.entity"}) // 用来扫描和发现指定包及其子包中的Entity定义
-// 用来扫描和发现指定包及其子包中的Entity定义
+@EntityScan(basePackages = {"com.qmth.distributed.print.business.entity", "com.qmth.teachcloud.report.business.entity", "com.qmth.teachcloud.common.entity"})
+//用来扫描和发现指定包及其子包中的Entity定义
 @EnableTransactionManagement // spring开启事务支持
 @EnableAsync // 开启异步任务
 @EnableCaching // 开启缓存注解

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

@@ -1085,7 +1085,7 @@ public class BasicDatasourceController {
                                 .eq(TBExamCourse::getExamId, examId)
                                 .eq(TBExamCourse::getCourseCode, courseCode)
                                 .eq(TBExamCourse::getSchoolId, schoolId))
-                        .getExaminationCourseCode())
+                        .getPaperType())
                 .eq(TBExamination::getCourseName, courseName)
                 .ne(TBExamination::getStudyType, "普通"));
         int count = tbExaminationList.size();

+ 8 - 2
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysReportController.java

@@ -3,6 +3,8 @@ package com.qmth.teachcloud.report.api;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSemester;
+import com.qmth.teachcloud.common.service.BasicSemesterService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.report.business.bean.result.TBExamResult;
@@ -39,18 +41,22 @@ public class SysReportController {
     @Resource
     TBExamStudentService tbExamStudentService;
 
+    @Resource
+    BasicSemesterService basicSemesterService;
+
     @ApiOperation(value = "学期列表")
     @RequestMapping(value = "/common/list_semester", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "考试信息", response = TBExamResult.class)})
     public Result listSemester(@ApiParam(value = "学校id", required = true) @RequestParam String schoolId) {
         QueryWrapper<TBExam> tbExamQueryWrapper = new QueryWrapper<>();
-        tbExamQueryWrapper.select(" DISTINCT id,semester,exam_time ").eq("school_id", SystemConstant.convertIdToLong(schoolId)).orderByDesc("exam_time");
+        tbExamQueryWrapper.select(" DISTINCT id,semester_id,exam_time ").eq("school_id", SystemConstant.convertIdToLong(schoolId)).orderByDesc("exam_time");
         List<TBExam> tbExamList = tbExamService.list(tbExamQueryWrapper);
         List<TBExamResult> tbExamResultList = null;
         if (Objects.nonNull(tbExamList) && tbExamList.size() > 0) {
             tbExamResultList = new ArrayList<>();
             for (TBExam tbExam : tbExamList) {
-                tbExamResultList.add(new TBExamResult(tbExam.getId(), tbExam.getSemester()));
+
+                tbExamResultList.add(new TBExamResult(tbExam.getId(), basicSemesterService.getById(tbExam.getSemesterId()).getName()));
             }
         }
         return ResultUtil.ok(tbExamResultList);