Skip to content

Commit

Permalink
Merge pull request #388 from DSM-PICK/387-timetable-save-scheduling
Browse files Browse the repository at this point in the history
🔀 :: (PiCK-387) timetable save scheduling
  • Loading branch information
meltapplee authored Oct 11, 2024
2 parents 4f9447a + 7a12902 commit 7a21a7e
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class TimetablePersistenceAdapter(
timetableRepository.save(timetableMapper.toEntity(timetable))
}

override fun deleteAll() = timetableRepository.deleteAll()

override fun saveAll(timetables: MutableList<Timetable>) {
val entities = timetables.map { timetableMapper.toEntity(it) }
timetableRepository.saveAll(entities)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dsm.pick2024.domain.timetable.port.out

interface DeleteTimeTablePort {
fun deleteAll()
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package dsm.pick2024.domain.timetable.port.out

interface TimetablePort :
SaveTimetablePort,
QueryTimeTablePort
QueryTimeTablePort,
DeleteTimeTablePort
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@ import dsm.pick2024.domain.timetable.port.`in`.ModifyTimetableUseCase
import dsm.pick2024.domain.timetable.port.`in`.QueryDayTimetableUseCase
import dsm.pick2024.domain.timetable.port.`in`.QueryTeacherTimetableUseCase
import dsm.pick2024.domain.timetable.port.`in`.QueryWeekTimetableUseCase
import dsm.pick2024.domain.timetable.port.`in`.SaveTimetableUseCase
import dsm.pick2024.domain.timetable.presentation.dto.request.ChangeTimetableRequest
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PatchMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
Expand All @@ -20,16 +18,11 @@ import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/timetable")
class TimetableController(
private val saveTimetableUseCase: SaveTimetableUseCase,
private val queryDayTimetableUseCase: QueryDayTimetableUseCase,
private val queryWeekTimetableUseCase: QueryWeekTimetableUseCase,
private val queryTeacherTimetableUseCase: QueryTeacherTimetableUseCase,
private val modifyTimetableUseCase: ModifyTimetableUseCase
) {
@Operation(summary = "시간표 저장 API")
@PostMapping
fun saveTimetableInfo() = saveTimetableUseCase.saveTimetable()

@Operation(summary = "당일 시간표 조회 API")
@GetMapping("/today")
fun getTodayTimetable() = queryDayTimetableUseCase.queryDayTimetable()
Expand All @@ -45,6 +38,10 @@ class TimetableController(
@RequestParam(name = "class_num") classNum: Int
) =
queryTeacherTimetableUseCase.queryTeacherTimetable(grade, classNum)
//
// @Operation(summary = "과목 전체 조회")
// @GetMapping("/subjects")
// fun getSubjectNames() = querySubjectNameUseCase.getAllSubjectNames()

@Operation(summary = "시간표 수정")
@PatchMapping("/change")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dsm.pick2024.domain.timetable.service

import dsm.pick2024.domain.timetable.domain.Timetable
import dsm.pick2024.domain.timetable.port.`in`.SaveTimetableUseCase
import dsm.pick2024.domain.timetable.port.out.SaveTimetablePort
import dsm.pick2024.infrastructure.feign.NeisTimetableFeignClientService
Expand All @@ -16,6 +17,38 @@ class SaveTimetableService(
override fun saveTimetable() {
val timetableEntities = neisTimetableFeignClientService.getNeisInfoToEntity()

timetableEntities?.let { saveAllTimetablePort.saveAll(it) }
val updatedTimetableEntities = timetableEntities?.map { timetable ->
val subject = updatedSubjectName(timetable.subjectName)

Timetable(
id = timetable.id,
grade = timetable.grade,
classNum = timetable.classNum,
period = timetable.period,
subjectName = subject,
dayWeek = timetable.dayWeek
)
}?.toMutableList()

updatedTimetableEntities?.let { saveAllTimetablePort.saveAll(it) }
}

private fun updatedSubjectName(subjectName: String): String {
val cleanName = subjectName.replace(Regex("^\\(.*?\\)\\s*"), "")

return when (cleanName) {
"* 데이터베이스 구현", "* SQL활용" -> "DB 프로그래밍"
"* 응용SW 변경관리" -> "응용SW 변경관리"
"* 응용SW 운영관리" -> "디지털 포렌식"
"* 정보통신기기 PCB보드 개발" -> "정보통신기기 PCB보드 개발"
"* 정보통신기기 펌웨어구현" -> "정보통신기기 펌웨어구현"
"* 빅데이터 분석 결과 시각화", "빅데이터 분석 결과 시각화" -> "빅데이터 분석"
"* 시스템 유지보수관리" -> "시스템 유지보수관리"
"* 시스템 점검관리" -> "시스템 점검관리"
"자율활동", "동아리활동" -> "창체"
"자료구조와 알고리즘" -> "자료구조"
"미술 창작" -> "미술"
else -> cleanName
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import dsm.pick2024.domain.attendance.port.`in`.ResetAttendanceUseCase
import dsm.pick2024.domain.classroom.port.out.DeleteClassRoomPort
import dsm.pick2024.domain.meal.port.`in`.MealUseCase
import dsm.pick2024.domain.status.port.`in`.ResetStatusUseCase
import dsm.pick2024.domain.timetable.port.`in`.SaveTimetableUseCase
import dsm.pick2024.domain.timetable.port.out.DeleteTimeTablePort
import dsm.pick2024.domain.weekendmeal.port.`in`.ResetWeekendMealUseCase
import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component
Expand All @@ -15,10 +17,12 @@ class ScheduleService(
private val deleteClassRoomPort: DeleteClassRoomPort,
private val deleteApplicationPort: DeleteApplicationPort,
private val deleteAfterSchoolStudentPort: DeleteAfterSchoolStudentPort,
private val deleteTimetablePort: DeleteTimeTablePort,
private val mealUseCase: MealUseCase,
private val resetAttendanceUseCase: ResetAttendanceUseCase,
private val resetWeekendMealUseCase: ResetWeekendMealUseCase,
private val resetStatusUseCase: ResetStatusUseCase
private val resetStatusUseCase: ResetStatusUseCase,
private val saveTimetableUseCase: SaveTimetableUseCase
) {
@Scheduled(cron = "0 30 20 * * ?", zone = "Asia/Seoul")
fun deleteTable() {
Expand All @@ -38,4 +42,10 @@ class ScheduleService(
resetAttendanceUseCase.resetAttendance()
resetStatusUseCase.reset()
}

@Scheduled(cron = "0 14 * * SUN")
fun saveTimetable() {
deleteTimetablePort.deleteAll()
saveTimetableUseCase.saveTimetable()
}
}

0 comments on commit 7a21a7e

Please sign in to comment.