wangliang пре 4 година
родитељ
комит
973f593489

+ 4 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java

@@ -77,6 +77,10 @@ public enum ExceptionResultEnum {
 
     EXAM_TASK_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000029, "命题任务为空"),
 
+    NO_DATA(HttpStatus.INTERNAL_SERVER_ERROR, 5000030, "没有数据"),
+
+    DATA_COUNT_EXCEPTION(HttpStatus.INTERNAL_SERVER_ERROR, 5000031, "得到的数据条数异常,应该有且仅有一条数据"),
+
     /**
      * 401
      */

+ 46 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/CourseInfoResult.java

@@ -0,0 +1,46 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: CourseInfoResult
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public class CourseInfoResult implements Serializable {
+
+    @ApiModelProperty(value = "试卷result")
+    private TBPaperInfoResult courseProfile;
+
+    @ApiModelProperty(value = "DescriptiveStatisticsResult")
+    private DescriptiveStatisticsResult descriptiveStatistics;
+
+    public CourseInfoResult() {
+
+    }
+
+    public CourseInfoResult(TBPaperInfoResult courseProfile, DescriptiveStatisticsResult descriptiveStatistics) {
+        this.courseProfile = courseProfile;
+        this.descriptiveStatistics = descriptiveStatistics;
+    }
+
+    public TBPaperInfoResult getCourseProfile() {
+        return courseProfile;
+    }
+
+    public void setCourseProfile(TBPaperInfoResult courseProfile) {
+        this.courseProfile = courseProfile;
+    }
+
+    public DescriptiveStatisticsResult getDescriptiveStatistics() {
+        return descriptiveStatistics;
+    }
+
+    public void setDescriptiveStatistics(DescriptiveStatisticsResult descriptiveStatistics) {
+        this.descriptiveStatistics = descriptiveStatistics;
+    }
+}

+ 46 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/DescriptiveStatisticsResult.java

@@ -0,0 +1,46 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: DescriptiveStatisticsResult
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+public class DescriptiveStatisticsResult implements Serializable {
+
+    @ApiModelProperty(value = "学院result")
+    private TAExamCourseCollegeInspectResult collegeDescriptiveStatistics;
+
+    @ApiModelProperty(value = "学校result")
+    private TAExamCourseCollegeInspectResult schoolDescriptiveStatistics;
+
+    public DescriptiveStatisticsResult() {
+
+    }
+
+    public DescriptiveStatisticsResult(TAExamCourseCollegeInspectResult collegeDescriptiveStatistics, TAExamCourseCollegeInspectResult schoolDescriptiveStatistics) {
+        this.collegeDescriptiveStatistics = collegeDescriptiveStatistics;
+        this.schoolDescriptiveStatistics = schoolDescriptiveStatistics;
+    }
+
+    public TAExamCourseCollegeInspectResult getCollegeDescriptiveStatistics() {
+        return collegeDescriptiveStatistics;
+    }
+
+    public void setCollegeDescriptiveStatistics(TAExamCourseCollegeInspectResult collegeDescriptiveStatistics) {
+        this.collegeDescriptiveStatistics = collegeDescriptiveStatistics;
+    }
+
+    public TAExamCourseCollegeInspectResult getSchoolDescriptiveStatistics() {
+        return schoolDescriptiveStatistics;
+    }
+
+    public void setSchoolDescriptiveStatistics(TAExamCourseCollegeInspectResult schoolDescriptiveStatistics) {
+        this.schoolDescriptiveStatistics = schoolDescriptiveStatistics;
+    }
+}

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

@@ -1,6 +1,8 @@
 package com.qmth.teachcloud.report.business.bean.result;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.report.business.entity.TAExamCourseCollegeInspect;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -16,9 +18,23 @@ import java.io.Serializable;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class TAExamCourseCollegeInspectResult extends TAExamCourseCollegeInspect implements Serializable {
 
+    @ApiModelProperty(value = "学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long collegeId;
+
     @ApiModelProperty(value = "学院名称")
     private String collegeName;
 
+    @Override
+    public Long getCollegeId() {
+        return collegeId;
+    }
+
+    @Override
+    public void setCollegeId(Long collegeId) {
+        this.collegeId = collegeId;
+    }
+
     public String getCollegeName() {
         return collegeName;
     }

+ 29 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/result/TBPaperInfoResult.java

@@ -0,0 +1,29 @@
+package com.qmth.teachcloud.report.business.bean.result;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.qmth.teachcloud.report.business.entity.TBPaper;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: TBPaperInfoResult
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/6/10
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class TBPaperInfoResult extends TBPaper implements Serializable {
+
+    @ApiModelProperty(value = "学院数量")
+    private Integer collegeCount;
+
+    public Integer getCollegeCount() {
+        return collegeCount;
+    }
+
+    public void setCollegeCount(Integer collegeCount) {
+        this.collegeCount = collegeCount;
+    }
+}

+ 12 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/ReportCommonService.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.report.business.service;
 
+import com.qmth.teachcloud.report.business.bean.result.CourseInfoResult;
+
 /**
  * @Description: 教研公共服务
  * @Param:
@@ -8,4 +10,14 @@ package com.qmth.teachcloud.report.business.service;
  * @Date: 2021/6/4
  */
 public interface ReportCommonService {
+
+    /**
+     * 学院学科报表查询科目信息
+     *
+     * @param examId
+     * @param courseCode
+     * @param collegeId
+     * @return
+     */
+    CourseInfoResult findCourseInfo(Long examId, String courseCode, Long collegeId);
 }

+ 73 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java

@@ -1,8 +1,25 @@
 package com.qmth.teachcloud.report.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.gson.Gson;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.report.business.bean.result.CourseInfoResult;
+import com.qmth.teachcloud.report.business.bean.result.DescriptiveStatisticsResult;
+import com.qmth.teachcloud.report.business.bean.result.TAExamCourseCollegeInspectResult;
+import com.qmth.teachcloud.report.business.bean.result.TBPaperInfoResult;
+import com.qmth.teachcloud.report.business.entity.TBPaper;
 import com.qmth.teachcloud.report.business.service.ReportCommonService;
+import com.qmth.teachcloud.report.business.service.TAExamCourseCollegeInspectService;
+import com.qmth.teachcloud.report.business.service.TBPaperService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
 /**
  * @Description: 教研公共服务
  * @Param:
@@ -12,4 +29,60 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class ReportCommonServiceImpl implements ReportCommonService {
+    private final static Logger log = LoggerFactory.getLogger(ReportCommonServiceImpl.class);
+
+    @Resource
+    TBPaperService tbPaperService;
+
+    @Resource
+    TAExamCourseCollegeInspectService taExamCourseCollegeInspectService;
+
+    /**
+     * 学院学科报表查询科目信息
+     *
+     * @param examId
+     * @param courseCode
+     * @param collegeId
+     * @return
+     */
+    @Override
+    public CourseInfoResult findCourseInfo(Long examId, String courseCode, Long collegeId) {
+        //查找试卷
+        QueryWrapper<TBPaper> tbPaperQueryWrapper = new QueryWrapper<>();
+        tbPaperQueryWrapper.lambda().eq(TBPaper::getExamId, examId)
+                .eq(TBPaper::getCourseCode, courseCode);
+        List<TBPaper> tbPaperList = tbPaperService.list(tbPaperQueryWrapper);
+
+        //查找学院科目维度
+        List<TAExamCourseCollegeInspectResult> taExamCourseCollegeInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForCollege(examId, courseCode);
+        //查找学校科目维度
+        List<TAExamCourseCollegeInspectResult> taExamCourseSchoolInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForSchool(examId, courseCode);
+
+        // 课程概况
+        if (tbPaperList.size() < 1) {
+            throw ExceptionResultEnum.NO_DATA.exception();
+        }
+        Set<String> paperTypeSet = tbPaperList.stream().map(e -> e.getPaperType()).collect(Collectors.toSet());
+        String paperType = String.join(",", paperTypeSet); // 多种试卷类型的试卷类型合并','号隔开
+        Gson gson = new Gson();
+        TBPaperInfoResult TBPaperInfoResult = gson.fromJson(gson.toJson(tbPaperList.get(0)), TBPaperInfoResult.class);
+        TBPaperInfoResult.setPaperType(paperType);
+        TBPaperInfoResult.setCollegeCount(taExamCourseCollegeInspectResultList.size());
+
+        // 学院该科目的描述统计
+        List<TAExamCourseCollegeInspectResult> collegeDescriptiveStatisticsList = taExamCourseCollegeInspectResultList
+                .stream().filter(e -> collegeId.intValue() == e.getCollegeId().intValue()).collect(Collectors.toList());
+        if (collegeDescriptiveStatisticsList.size() != 1) {
+            throw ExceptionResultEnum.DATA_COUNT_EXCEPTION.exception();
+        }
+        TAExamCourseCollegeInspectResult collegeDescriptiveStatistics = taExamCourseCollegeInspectResultList.get(0);
+
+        // 全校该科目的描述统计
+        if (taExamCourseSchoolInspectResultList.size() != 1) {
+            throw ExceptionResultEnum.DATA_COUNT_EXCEPTION.exception();
+        }
+        TAExamCourseCollegeInspectResult schoolDescriptiveStatistics = taExamCourseSchoolInspectResultList.get(0);
+        DescriptiveStatisticsResult descriptiveStatisticsResult = new DescriptiveStatisticsResult(collegeDescriptiveStatistics, schoolDescriptiveStatistics);
+        return new CourseInfoResult(TBPaperInfoResult, descriptiveStatisticsResult);
+    }
 }

+ 19 - 12
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TAExamCourseServiceImpl.java

@@ -7,7 +7,10 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.report.business.bean.result.*;
-import com.qmth.teachcloud.report.business.entity.*;
+import com.qmth.teachcloud.report.business.entity.TAExamCourse;
+import com.qmth.teachcloud.report.business.entity.TAExamCourseRecord;
+import com.qmth.teachcloud.report.business.entity.TBCommonLevelConfig;
+import com.qmth.teachcloud.report.business.entity.TBDimension;
 import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.enums.SemesterEnum;
 import com.qmth.teachcloud.report.business.mapper.TAExamCourseMapper;
@@ -57,6 +60,9 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
     @Resource
     TAExamCourseCollegeTeacherService taExamCourseCollegeTeacherService;
 
+    @Resource
+    ReportCommonService reportCommonService;
+
     /**
      * 开课课程考试总览列表接口
      *
@@ -143,17 +149,18 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
         if (Objects.isNull(sysUser)) {
             throw ExceptionResultEnum.NOT_LOGIN.exception();
         }
-        //查找试卷
-        QueryWrapper<TBPaper> tbPaperQueryWrapper = new QueryWrapper<>();
-        tbPaperQueryWrapper.lambda().eq(TBPaper::getExamId, examId)
-                .eq(TBPaper::getCourseCode, courseCode);
-        List<TBPaper> tbPaperList = tbPaperService.list(tbPaperQueryWrapper);
-
-        //查找学院科目维度
-        List<TAExamCourseCollegeInspectResult> taExamCourseCollegeInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForCollege(examId, courseCode);
-        //查找学校科目维度
-        List<TAExamCourseCollegeInspectResult> taExamCourseSchoolInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForSchool(examId, courseCode);
-
+//        //查找试卷
+//        QueryWrapper<TBPaper> tbPaperQueryWrapper = new QueryWrapper<>();
+//        tbPaperQueryWrapper.lambda().eq(TBPaper::getExamId, examId)
+//                .eq(TBPaper::getCourseCode, courseCode);
+//        List<TBPaper> tbPaperList = tbPaperService.list(tbPaperQueryWrapper);
+//
+//        //查找学院科目维度
+//        List<TAExamCourseCollegeInspectResult> taExamCourseCollegeInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForCollege(examId, courseCode);
+//        //查找学校科目维度
+//        List<TAExamCourseCollegeInspectResult> taExamCourseSchoolInspectResultList = taExamCourseCollegeInspectService.findCourseDescriptiveStatisticsForSchool(examId, courseCode);
+
+        CourseInfoResult courseInfoResult = reportCommonService.findCourseInfo(examId, courseCode, sysUser.getOrgId());
         //查找维度
         List<CourseDimensionResult> courseDimensionResultList = tbDimensionService.findDimensionInfo(examId, courseCode, sysUser.getOrgId());
 

+ 1 - 0
teachcloud-report-business/src/main/resources/mapper/TAExamCourseCollegeInspectMapper.xml

@@ -4,6 +4,7 @@
 
     <select id="findCourseDescriptiveStatisticsForCollege" resultType="com.qmth.teachcloud.report.business.bean.result.TAExamCourseCollegeInspectResult">
         select
+            so.id as collegeId,
             so.name as collegeName,
             round(convert(taecci.max_score, decimal(10, 4)), 2) as maxScore,
             round(convert(taecci.min_score, decimal(10, 4)), 2) as minScore,