CalculationService构建,有待家长相关的完善

This commit is contained in:
chuyan 2020-09-11 20:35:05 +08:00
parent 29d8aa4079
commit 17aace8fa6
4 changed files with 96 additions and 16 deletions

View File

@ -0,0 +1,11 @@
package com.codesdream.ase.controller.student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("student")
public class StudentController {
public
}

View File

@ -1,15 +0,0 @@
package com.codesdream.ase.repository.student;
import com.codesdream.ase.model.student.StudentCourse;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SCRepository extends JpaRepository<StudentCourse, Integer> {
List<StudentCourse> findByStudentId(String studentId);
List<StudentCourse> findByStudentId(String studentId, Sort sort);
}

View File

@ -171,7 +171,7 @@ public class ActivityService {
* @exception NotFoundException 对应activityId在数据库中无记录
* @see NotFoundException
* @param activityId
* @return
* @return 对应活动实例
*/
private Activity getActivity(int activityId){
Optional<Activity> optionalActivity = activityRepository.findById(activityId);

View File

@ -0,0 +1,84 @@
package com.codesdream.ase.service;
import com.codesdream.ase.exception.notfound.NotFoundException;
import com.codesdream.ase.model.student.Course;
import com.codesdream.ase.model.student.Student;
import com.codesdream.ase.model.student.StudentCourse;
import com.codesdream.ase.repository.student.CourseRepository;
import com.codesdream.ase.repository.student.StudentCourseRepository;
import com.codesdream.ase.repository.student.StudentRepository;
import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;
public class CalculationService {
@Resource
StudentRepository studentRepository;
@Resource
StudentCourseRepository studentCourseRepository;
@Resource
CourseRepository courseRepository;
/**
* 用于计算指定学生的学分绩
* @exception NotFoundException 课程或学生id无效
* @param studentId 学生id
* @return 计算好的学分绩
*/
public float calculateGPA(int studentId){
if(checkStudentExistence(studentId)){
throw new NotFoundException("No such student.");
}
List<StudentCourse> studentCourses = studentCourseRepository.findByStudentId(studentId);
float sum = 0f;
float credits = 0f;
for (StudentCourse studentCourse : studentCourses){
Optional<Course> optionalCourse = courseRepository.findById(studentCourse.getCourseId());
if(!optionalCourse.isPresent()){
throw new NotFoundException("No such course.");
}
Course course = optionalCourse.get();
sum += studentCourse.getScore() * course.getCredit();
credits += course.getCredit();
}
return sum / credits;
}
public float calculateAttendanceRate(int studentId, int term){
//Todo
return -1;
}
public float sumUpStudentAbsence (int studentId, int term){
//Todo
return -1;
}
public float calculateConcernRate(int parentId){
//Todo
return -1;
}
public float calculateGradeChange(int studentId){
//Todo
return -1;
}
/**
* 私有方法用于判断学生id是否有效
* @param studentId 学生id
* @return 是否有效
*/
private boolean checkStudentExistence(int studentId){
Optional<Student> optionalStudent = studentRepository.findById(studentId);
if(!optionalStudent.isPresent()){
return false;
}
return true;
}
}