Kaynağa Gözat

3.3.4 update

xiaofei 1 yıl önce
ebeveyn
işleme
d1f6c07da2
14 değiştirilmiş dosya ile 461 ekleme ve 6 silme
  1. 73 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/StudentCourseInfoDto.java
  2. 50 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/StudentRequirementInfoDto.java
  3. 50 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/CourseTargetRequirement.java
  4. 52 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentCourseRequirement.java
  5. 33 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentCourseRequirementDetail.java
  6. 26 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentRequirement.java
  7. 36 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentTotalRequirement.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCourseTargetMapper.java
  9. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TRExamStudentMapper.java
  10. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCourseTargetService.java
  11. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TRExamStudentService.java
  12. 78 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java
  13. 22 0
      distributed-print-business/src/main/resources/mapper/TRExamStudentMapper.xml
  14. 18 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeReportController.java

+ 73 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/StudentCourseInfoDto.java

@@ -0,0 +1,73 @@
+package com.qmth.distributed.print.business.bean.dto.report;
+
+import com.qmth.distributed.print.business.bean.result.report.studentRequirement.CourseTargetRequirement;
+
+import java.util.List;
+
+public class StudentCourseInfoDto {
+
+    private Long cultureProgramId;
+    private String semesterName;
+    private String courseCode;
+    private String courseName;
+    private String resultDetail;
+    private Double score;
+
+    private List<CourseTargetRequirement> courseTargetRequirementList;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getResultDetail() {
+        return resultDetail;
+    }
+
+    public void setResultDetail(String resultDetail) {
+        this.resultDetail = resultDetail;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<CourseTargetRequirement> getCourseTargetRequirementList() {
+        return courseTargetRequirementList;
+    }
+
+    public void setCourseTargetRequirementList(List<CourseTargetRequirement> courseTargetRequirementList) {
+        this.courseTargetRequirementList = courseTargetRequirementList;
+    }
+}

+ 50 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/StudentRequirementInfoDto.java

@@ -0,0 +1,50 @@
+package com.qmth.distributed.print.business.bean.dto.report;
+
+public class StudentRequirementInfoDto {
+
+    private Long cultureProgramId;
+    private String studentCode;
+    private String studentName;
+    private String collegeName;
+    private String majorName;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+}

+ 50 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/CourseTargetRequirement.java

@@ -0,0 +1,50 @@
+package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
+
+public class CourseTargetRequirement {
+
+    private Long subRequirementId;
+    private Long requirementId;
+    private String requirementName;
+    private Double courseTargetDegree;
+
+    public CourseTargetRequirement() {
+    }
+
+    public CourseTargetRequirement(Long subRequirementId, Long requirementId, String requirementName) {
+        this.subRequirementId = subRequirementId;
+        this.requirementId = requirementId;
+        this.requirementName = requirementName;
+    }
+
+    public Long getSubRequirementId() {
+        return subRequirementId;
+    }
+
+    public void setSubRequirementId(Long subRequirementId) {
+        this.subRequirementId = subRequirementId;
+    }
+
+    public Long getRequirementId() {
+        return requirementId;
+    }
+
+    public void setRequirementId(Long requirementId) {
+        this.requirementId = requirementId;
+    }
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public Double getCourseTargetDegree() {
+        return courseTargetDegree;
+    }
+
+    public void setCourseTargetDegree(Double courseTargetDegree) {
+        this.courseTargetDegree = courseTargetDegree;
+    }
+}

+ 52 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentCourseRequirement.java

@@ -0,0 +1,52 @@
+package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
+
+import java.util.List;
+
+public class StudentCourseRequirement {
+
+    private String courseCode;
+    private String courseName;
+    private String semesterName;
+    private Double score;
+    private List<StudentCourseRequirementDetail> requirementDetailList;
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<StudentCourseRequirementDetail> getRequirementDetailList() {
+        return requirementDetailList;
+    }
+
+    public void setRequirementDetailList(List<StudentCourseRequirementDetail> requirementDetailList) {
+        this.requirementDetailList = requirementDetailList;
+    }
+}

+ 33 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentCourseRequirementDetail.java

@@ -0,0 +1,33 @@
+package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
+
+public class StudentCourseRequirementDetail {
+
+    // 毕业要求名称
+    private String requirementName;
+    // 学生个人达成度
+    private Double studentDegree;
+
+    public StudentCourseRequirementDetail() {
+    }
+
+    public StudentCourseRequirementDetail(String requirementName, Double studentDegree) {
+        this.requirementName = requirementName;
+        this.studentDegree = studentDegree;
+    }
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public Double getStudentDegree() {
+        return studentDegree;
+    }
+
+    public void setStudentDegree(Double studentDegree) {
+        this.studentDegree = studentDegree;
+    }
+}

+ 26 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentRequirement.java

@@ -0,0 +1,26 @@
+package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
+
+import java.util.List;
+
+public class StudentRequirement {
+
+    private List<StudentTotalRequirement> studentTotalRequirementList;
+
+    private List<StudentCourseRequirement> studentCourseRequirementList;
+
+    public List<StudentTotalRequirement> getStudentTotalRequirementList() {
+        return studentTotalRequirementList;
+    }
+
+    public void setStudentTotalRequirementList(List<StudentTotalRequirement> studentTotalRequirementList) {
+        this.studentTotalRequirementList = studentTotalRequirementList;
+    }
+
+    public List<StudentCourseRequirement> getStudentCourseRequirementList() {
+        return studentCourseRequirementList;
+    }
+
+    public void setStudentCourseRequirementList(List<StudentCourseRequirement> studentCourseRequirementList) {
+        this.studentCourseRequirementList = studentCourseRequirementList;
+    }
+}

+ 36 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentTotalRequirement.java

@@ -0,0 +1,36 @@
+package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
+
+public class StudentTotalRequirement {
+
+    // 毕业要求名称
+    private String requirementName;
+    // 学生个人达成度
+    private Double studentDegree;
+    // 专业达成度
+    private Double professionalDegree;
+
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public Double getStudentDegree() {
+        return studentDegree;
+    }
+
+    public void setStudentDegree(Double studentDegree) {
+        this.studentDegree = studentDegree;
+    }
+
+    public Double getProfessionalDegree() {
+        return professionalDegree;
+    }
+
+    public void setProfessionalDegree(Double professionalDegree) {
+        this.professionalDegree = professionalDegree;
+    }
+}

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCourseTargetMapper.java

@@ -1,8 +1,8 @@
 package com.qmth.distributed.print.business.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.distributed.print.business.bean.result.ObeCourseTargetResult;
 import com.qmth.distributed.print.business.entity.ObeCourseTarget;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TRExamStudentMapper.java

@@ -1,7 +1,11 @@
 package com.qmth.distributed.print.business.mapper;
 
+import com.qmth.distributed.print.business.bean.dto.report.StudentCourseInfoDto;
 import com.qmth.distributed.print.business.entity.TRExamStudent;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TRExamStudentMapper extends BaseMapper<TRExamStudent> {
 
+    List<StudentCourseInfoDto> listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId(@Param("cultureProgramId") Long cultureProgramId, @Param("studentCode") String studentCode, @Param("semesterId") Long semesterId);
 }

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

@@ -60,4 +60,5 @@ public interface ObeCourseTargetService extends IService<ObeCourseTarget> {
      * @param requestUser                     请求人
      */
     void settingExpectValue(ObeCourseTargetExpectValueParam obeCourseTargetExpectValueParam, SysUser requestUser);
+
 }

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TRExamStudentService.java

@@ -1,10 +1,15 @@
 package com.qmth.distributed.print.business.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.report.ReportExamStudentDto;
+import com.qmth.distributed.print.business.bean.dto.report.StudentRequirementInfoDto;
+import com.qmth.distributed.print.business.bean.result.report.studentRequirement.StudentRequirement;
 import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.entity.TRExamStudent;
 
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
 import java.util.List;
 import java.util.Map;
 
@@ -45,4 +50,15 @@ public interface TRExamStudentService extends IService<TRExamStudent> {
      * @return
      */
     public Boolean remove(Long examId, String courseCode, String paperNumber, Long teachCourseId);
+
+    /**
+     * 学生毕业要求达成度
+     *
+     * @param cultureProgramId 培养方案
+     * @param studentCode      学号
+     * @param semesterId       学期
+     */
+    StudentRequirement getRequirementsStudentReport(Long cultureProgramId, String studentCode, Long semesterId);
+
+    Page<StudentRequirementInfoDto> getRequirementsStudentPage(Long cultureProgramId, String studentCodeOrName, Integer pageNumber, Integer pageSize);
 }

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

@@ -1,12 +1,16 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.report.*;
 import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
-import com.qmth.distributed.print.business.entity.TRBasicInfo;
-import com.qmth.distributed.print.business.entity.TRExamStudent;
+import com.qmth.distributed.print.business.bean.result.report.studentRequirement.*;
+import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
+import com.qmth.distributed.print.business.service.ObeCourseTargetService;
+import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
 import com.qmth.distributed.print.business.service.TRBasicInfoService;
 import com.qmth.distributed.print.business.service.TRExamStudentService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -15,6 +19,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -39,6 +44,10 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
 
     @Resource
     TRBasicInfoService trBasicInfoService;
+    @Resource
+    private ObeCourseTargetService obeCourseTargetService;
+    @Resource
+    private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
 
     /**
      * 获取考生详细报告
@@ -202,6 +211,73 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         return Objects.nonNull(trBasicInfo) ? trExamStudentService.remove(trBasicInfo.getId()) : false;
     }
 
+    @Override
+    public StudentRequirement getRequirementsStudentReport(Long cultureProgramId, String studentCode, Long semesterId) {
+        List<CourseTargetRequirement> courseTargetRequirementList = new ArrayList<>();
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listRequirement(cultureProgramId);
+        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
+            for (ObeCultureProgramRequirement cultureProgramRequirement : obeCultureProgramRequirement.getSubRequirementList()) {
+                courseTargetRequirementList.add(new CourseTargetRequirement(cultureProgramRequirement.getId(), obeCultureProgramRequirement.getId(), obeCultureProgramRequirement.getName()));
+            }
+        }
+
+        List<StudentCourseInfoDto> studentCourseInfoDtoList = this.baseMapper.listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId(cultureProgramId, studentCode, semesterId);
+        for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
+            studentCourseInfoDto.setCourseTargetRequirementList(courseTargetRequirementList);
+            String resultDetail = studentCourseInfoDto.getResultDetail();
+            if (!StringUtils.isEmpty(resultDetail)) {
+                List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSON.parseArray(resultDetail, ReportExamStudentTargetDto.class);
+                // 指标点
+                for (ReportExamStudentTargetDto reportExamStudentTargetDto : reportExamStudentTargetDtoList) {
+                    ObeCourseTarget obeCourseTarget = obeCourseTargetService.getById(reportExamStudentTargetDto.getTargetId());
+                    for (CourseTargetRequirement courseTargetRequirement : studentCourseInfoDto.getCourseTargetRequirementList()) {
+                        if (courseTargetRequirement.getSubRequirementId().equals(obeCourseTarget.getObeCultureProgramRequirementId())) {
+                            courseTargetRequirement.setCourseTargetDegree(reportExamStudentTargetDto.getMatrixDegree().doubleValue());
+                        }
+                    }
+                }
+            }
+        }
+
+        StudentRequirement studentRequirement = new StudentRequirement();
+        // 各科目达成度
+        List<StudentCourseRequirement> studentCourseRequirementList = new ArrayList<>();
+        for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
+            StudentCourseRequirement studentCourseRequirement = new StudentCourseRequirement();
+            studentCourseRequirement.setCourseCode(studentCourseInfoDto.getCourseCode());
+            studentCourseRequirement.setCourseName(studentCourseInfoDto.getCourseName());
+            studentCourseRequirement.setSemesterName(studentCourseInfoDto.getSemesterName());
+            studentCourseRequirement.setScore(studentCourseInfoDto.getScore());
+            LinkedHashMap<String, Double> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.toMap(CourseTargetRequirement::getRequirementName, CourseTargetRequirement::getCourseTargetDegree, (v1, v2) -> v1 == null ? v2 == null ? v2 : v1.doubleValue() <= v2.doubleValue() ? v1 : v2 : v1, LinkedHashMap::new));
+            List<StudentCourseRequirementDetail> requirementDetailList = map.entrySet().stream().map(entry -> new StudentCourseRequirementDetail(entry.getKey(), entry.getValue())).collect(Collectors.toList());
+            studentCourseRequirement.setRequirementDetailList(requirementDetailList);
+            studentCourseRequirementList.add(studentCourseRequirement);
+        }
+        studentRequirement.setStudentCourseRequirementList(studentCourseRequirementList);
+
+        // 汇总达成度
+        List<CourseTargetRequirement> courseTargetRequirementListAll = new ArrayList<>();
+        for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
+            courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.toList()));
+        }
+        Map<String, List<CourseTargetRequirement>> stringDoubleMap = courseTargetRequirementListAll.stream().collect(Collectors.groupingBy(CourseTargetRequirement::getRequirementName));
+        List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
+        for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
+            Map<Long, Double> doubleMap = entry.getValue().stream().collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.summingDouble(CourseTargetRequirement::getCourseTargetDegree)));
+            StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
+            studentTotalRequirement.setRequirementName(entry.getKey());
+            studentTotalRequirement.setStudentDegree(doubleMap.values().stream().min(Double::compare).get());
+            studentTotalRequirementList.add(studentTotalRequirement);
+        }
+        studentRequirement.setStudentTotalRequirementList(studentTotalRequirementList);
+        return studentRequirement;
+    }
+
+    @Override
+    public Page<StudentRequirementInfoDto> getRequirementsStudentPage(Long cultureProgramId, String studentCodeOrName, Integer pageNumber, Integer pageSize) {
+        return null;
+    }
+
 //    /**
 //     * 知识点纬度数据构建
 //     *

+ 22 - 0
distributed-print-business/src/main/resources/mapper/TRExamStudentMapper.xml

@@ -2,4 +2,26 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.distributed.print.business.mapper.TRExamStudentMapper">
 
+    <select id="listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId"
+            resultType="com.qmth.distributed.print.business.bean.dto.report.StudentCourseInfoDto">
+        SELECT
+            rbi.culture_program_id,
+            bs.name semesterName,
+            rbi.course_code,
+            rbi.course_name,
+            res.result_detail,
+            res.score
+        FROM
+            t_r_exam_student res
+                LEFT JOIN
+            t_r_basic_info rbi ON res.r_basic_info_id = rbi.id
+                LEFT JOIN
+            basic_exam be ON rbi.exam_id = be.id
+                LEFT JOIN
+            basic_semester bs ON be.semester_id = bs.id
+        WHERE
+            rbi.culture_program_id = #{cultureProgramId}
+          AND res.student_code = #{studentCode}
+          AND bs.id = #{semesterId}
+    </select>
 </mapper>

+ 18 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeReportController.java

@@ -28,6 +28,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
@@ -143,11 +145,24 @@ public class ObeReportController {
         return ResultUtil.ok(true);
     }
 
-    @ApiOperation(value = "毕业要求达成度学生报表")
+    @ApiOperation(value = "毕业要求达成度学生报表-列表")
     @RequestMapping(value = "/requirements/student/report", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
     @Aac(auth = false)
-    public Result requirementsStudentReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam(required = false) Long cultureProgramId) {
-        return ResultUtil.ok(true);
+    public Result requirementsStudentPage(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId,
+                                          @ApiParam(value = "学号/姓名", required = true) @RequestParam String studentCodeOrName,
+                                          @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                          @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(trExamStudentService.getRequirementsStudentPage(cultureProgramId, studentCodeOrName, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "毕业要求达成度学生报表-查看详情")
+    @RequestMapping(value = "/requirements/student/report", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
+    @Aac(auth = false)
+    public Result requirementsStudentReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId,
+                                            @ApiParam(value = "学号", required = true) @RequestParam String studentCode,
+                                            @ApiParam(value = "学期", required = true) @RequestParam Long semesterId) {
+        return ResultUtil.ok(trExamStudentService.getRequirementsStudentReport(cultureProgramId, studentCode, semesterId));
     }
 }