From 4f3eed5cd22a0814bc77af1613e0b85a4a017cec Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Sun, 12 Jun 2022 20:08:05 +0800 Subject: [PATCH] Added selectFromAttendance(long stuID, long courID) --- .../library/database/DatabaseHelper.java | 12 ++++++++++ .../database/operation/AttendanceOA.java | 23 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/Library/src/main/java/com/cfive/classroom/library/database/DatabaseHelper.java b/Library/src/main/java/com/cfive/classroom/library/database/DatabaseHelper.java index 15fa7b8..0621024 100644 --- a/Library/src/main/java/com/cfive/classroom/library/database/DatabaseHelper.java +++ b/Library/src/main/java/com/cfive/classroom/library/database/DatabaseHelper.java @@ -726,6 +726,18 @@ public class DatabaseHelper { return AttendanceOA.select(attID); } + /** + * 通过学生编号和课程编号查询考勤 + * + * @param stuID 学生编号 + * @param courID 课程编号 + * @return Attendance 考勤类 + * @see Attendance + */ + public static Attendance selectFromAttendance(long stuID, long courID) throws NoConfigException, SQLException { + return AttendanceOA.select(stuID, courID); + } + /** * 插入考勤 * diff --git a/Library/src/main/java/com/cfive/classroom/library/database/operation/AttendanceOA.java b/Library/src/main/java/com/cfive/classroom/library/database/operation/AttendanceOA.java index 9ce05d0..cc9d123 100644 --- a/Library/src/main/java/com/cfive/classroom/library/database/operation/AttendanceOA.java +++ b/Library/src/main/java/com/cfive/classroom/library/database/operation/AttendanceOA.java @@ -60,6 +60,29 @@ public class AttendanceOA { return null; } + public static Attendance select(long stuID, long courID) throws SQLException, NoConfigException { + String sql = "SELECT attID,attTime,attStatus,student.stuID,stuName,stuGender,student.passwd,student.salt,class.classID,grade,classNum,major.majorID,majorName,course.courID,courTimeFrom,courTimeEnd,subject.subID,subName,teacher.tchID,tchName,tchGender,teacher.passwd,teacher.salt,faculty.facID,facName FROM attendance,student,class,major,course,subject,teacher,faculty where attendance.courID=course.courID AND attendance.stuID=student.stuID AND class.classID=student.classID AND class.majorID=major.majorID AND major.facID=faculty.facID AND course.subID=subject.subID AND course.tchID=teacher.tchID AND teacher.facID=faculty.facID AND attendance.stuID=? AND attendance.courID=?"; + try (Connection connection = PoolHelper.getConnection()) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + preparedStatement.setLong(1, stuID); + preparedStatement.setLong(2, courID); + try (ResultSet resultSet = preparedStatement.executeQuery()) { + if (resultSet.next()) { + Subject subject = new Subject(resultSet.getInt("subID"), resultSet.getString("subName")); + Faculty faculty = new Faculty(resultSet.getInt("facID"), resultSet.getString("facName")); + Teacher teacher = new Teacher(resultSet.getLong("tchID"), resultSet.getString("tchName"), resultSet.getString("tchGender").equals("m") ? Gender.m : Gender.f, faculty, resultSet.getString("teacher.passwd"), resultSet.getString("teacher.salt")); + Course course = new Course(resultSet.getLong("courID"), subject, teacher, LocalDateTime.ofEpochSecond(resultSet.getTimestamp("courTimeFrom").getTime() / 1000, 0, ZoneOffset.of("+8")), LocalDateTime.ofEpochSecond(resultSet.getTimestamp("courTimeEnd").getTime() / 1000, 0, ZoneOffset.of("+8"))); + Major major = new Major(resultSet.getInt("majorID"), resultSet.getString("majorName"), faculty); + AClass aClass = new AClass(resultSet.getLong("classID"), major, resultSet.getInt("grade"), resultSet.getInt("classNum")); + Student student = new Student(resultSet.getLong("stuID"), resultSet.getString("stuName"), resultSet.getString("stuGender").equals("m") ? Gender.m : Gender.f, aClass, resultSet.getString("student.passwd"), resultSet.getString("student.salt")); + return new Attendance(resultSet.getString("attID"), course, student, resultSet.getTimestamp("attTime") == null ? null : LocalDateTime.ofEpochSecond(resultSet.getTimestamp("attTime").getTime() / 1000, 0, ZoneOffset.of("+8")), AttStatus.fromString(resultSet.getString("attStatus"))); + } + } + } + } + return null; + } + public static Attendance insert(long courID, long stuID, @Nullable LocalDateTime attTime, AttStatus attStatus) throws NoConfigException, SQLException, AlreadyExistsException, DependenciesNotFoundException, InsertException { if (!CourseOA.isExists(courID) || !StudentOA.isExists(stuID)) throw new DependenciesNotFoundException();