From 70d2fdded8e663dd45ac32c7294a0cd2a758f026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 11:22:56 +0900 Subject: [PATCH 01/10] issue --- .../dsm/pick2024/domain/attendance/enums/AttendanceStatus.kt | 3 ++- .../domain/attendance/service/QueryClubAttendanceService.kt | 2 ++ .../dsm/pick2024/domain/status/service/ChangeStatusService.kt | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/enums/AttendanceStatus.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/enums/AttendanceStatus.kt index c7ad48de..99bfc67e 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/enums/AttendanceStatus.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/enums/AttendanceStatus.kt @@ -7,5 +7,6 @@ enum class AttendanceStatus { DISALLOWED, // 무단 PICNIC, // 현체 EMPLOYMENT, // 취업 - GO_HOME //귀가 + GO_HOME, //귀가 + DROPOUT //자퇴 } diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt index 74451754..4db3d631 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt @@ -41,6 +41,8 @@ class QueryClubAttendanceService( status = returnStatus, classroomName = classroomName!! ) + }.filter { + it.status == AttendanceStatus.DROPOUT || it.status == AttendanceStatus.EMPLOYMENT }.sortedWith( compareBy({ it.grade }, { it.classNum }, { it.num }) ) diff --git a/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt b/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt index 05710664..f92046d6 100644 --- a/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt @@ -56,6 +56,7 @@ class ChangeStatusService( private fun updatePeriodStatus(statusType: StatusType): AttendanceStatus { return when (statusType) { PICNIC -> AttendanceStatus.PICNIC + DROPOUT -> AttendanceStatus.DROPOUT EMPLOYMENT -> AttendanceStatus.EMPLOYMENT else -> AttendanceStatus.ATTENDANCE } From f272ddb4c87bf03ccc40a547b5b25eeacc2c6560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 11:53:51 +0900 Subject: [PATCH 02/10] refactor --- .../persistence/AttendancePersistenceAdapter.kt | 4 +++- .../service/QueryClubAttendanceService.kt | 14 ++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt index 90efef17..7db46ba5 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt @@ -3,6 +3,7 @@ package dsm.pick2024.domain.attendance.persistence import com.querydsl.jpa.impl.JPAQueryFactory import dsm.pick2024.domain.attendance.domain.Attendance import dsm.pick2024.domain.attendance.entity.QAttendanceJpaEntity +import dsm.pick2024.domain.attendance.enums.AttendanceStatus import dsm.pick2024.domain.attendance.mapper.AttendanceMapper import dsm.pick2024.domain.attendance.persistence.repository.AttendanceRepository import dsm.pick2024.domain.attendance.port.out.AttendancePort @@ -49,7 +50,8 @@ class AttendancePersistenceAdapter( jpaQueryFactory .selectFrom(QAttendanceJpaEntity.attendanceJpaEntity) .where( - QAttendanceJpaEntity.attendanceJpaEntity.club.eq(club) + QAttendanceJpaEntity.attendanceJpaEntity.club.eq(club), + QAttendanceJpaEntity.attendanceJpaEntity.period6.ne(AttendanceStatus.DROPOUT) ) .fetch() .map { attendanceMapper.toDomain(it) } diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt index 4db3d631..1136e7bd 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/service/QueryClubAttendanceService.kt @@ -39,21 +39,19 @@ class QueryClubAttendanceService( classNum = it.classNum, num = it.num, status = returnStatus, - classroomName = classroomName!! + classroomName = classroomName ) - }.filter { - it.status == AttendanceStatus.DROPOUT || it.status == AttendanceStatus.EMPLOYMENT }.sortedWith( compareBy({ it.grade }, { it.classNum }, { it.num }) ) } private fun returnStatus(period: Int, attendance: Attendance): AttendanceStatus { return when (period) { - 6 -> attendance!!.period6 - 7 -> attendance!!.period7 - 8 -> attendance!!.period8 - 9 -> attendance!!.period9 - 10 -> attendance!!.period10 + 6 -> attendance.period6 + 7 -> attendance.period7 + 8 -> attendance.period8 + 9 -> attendance.period9 + 10 -> attendance.period10 else -> throw InvalidPeriodException } } From 58216db7f1b7f2b47490f5c55b13de9108a8ca06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 12:05:28 +0900 Subject: [PATCH 03/10] refactor --- .../domain/attendance/service/ResetAttendanceService.kt | 3 ++- .../dsm/pick2024/infrastructure/schedule/ScheduleService.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt index 7d2d0160..358562c4 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt @@ -5,6 +5,7 @@ import dsm.pick2024.domain.attendance.domain.Attendance import dsm.pick2024.domain.attendance.port.`in`.ResetAttendanceUseCase import dsm.pick2024.domain.attendance.port.out.QueryAttendancePort import dsm.pick2024.domain.attendance.port.out.SaveAttendancePort +import dsm.pick2024.domain.status.entity.enum.StatusType import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -35,7 +36,7 @@ class ResetAttendanceService( private fun getStatus(currentStatus: AttendanceStatus) = when (currentStatus) { - AttendanceStatus.PICNIC, AttendanceStatus.EMPLOYMENT -> currentStatus + AttendanceStatus.DROPOUT, AttendanceStatus.PICNIC, AttendanceStatus.EMPLOYMENT -> currentStatus else -> AttendanceStatus.ATTENDANCE } } diff --git a/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt b/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt index 28e78cf7..cc68060c 100644 --- a/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt +++ b/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt @@ -36,8 +36,8 @@ class ScheduleService( @Scheduled(cron = "0 00 21 * * ?", zone = "Asia/Seoul") fun resetTable() { - resetAttendanceUseCase.resetAttendance() resetStatusUseCase.reset() + resetAttendanceUseCase.resetAttendance() } @Scheduled(cron = "0 0 14 * * SUN") From 2321ba237fe427ed6071de58499e7e4ff83bf6c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 12:08:26 +0900 Subject: [PATCH 04/10] lint --- .../domain/attendance/service/ResetAttendanceService.kt | 1 - .../dsm/pick2024/domain/status/service/ResetStatusService.kt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt index 358562c4..2c6846fc 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/service/ResetAttendanceService.kt @@ -5,7 +5,6 @@ import dsm.pick2024.domain.attendance.domain.Attendance import dsm.pick2024.domain.attendance.port.`in`.ResetAttendanceUseCase import dsm.pick2024.domain.attendance.port.out.QueryAttendancePort import dsm.pick2024.domain.attendance.port.out.SaveAttendancePort -import dsm.pick2024.domain.status.entity.enum.StatusType import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional diff --git a/src/main/kotlin/dsm/pick2024/domain/status/service/ResetStatusService.kt b/src/main/kotlin/dsm/pick2024/domain/status/service/ResetStatusService.kt index e0dbdb67..60842eda 100644 --- a/src/main/kotlin/dsm/pick2024/domain/status/service/ResetStatusService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/status/service/ResetStatusService.kt @@ -10,13 +10,13 @@ import org.springframework.transaction.annotation.Transactional @Service class ResetStatusService( - private val querystatusPort: QueryStatusPort, + private val queryStatusPort: QueryStatusPort, private val saveStatusPort: SaveStatusPort ) : ResetStatusUseCase { @Transactional(readOnly = true) override fun reset() { - val allStudent = querystatusPort.findAll() + val allStudent = queryStatusPort.findAll() val update = mutableListOf() allStudent.map { it -> From 5ef42dc9576b4b9827fe11180cce477d3a59e616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 12:24:50 +0900 Subject: [PATCH 05/10] refactor --- .../persistence/SchedulePersistenceAdapter.kt | 4 +++ .../repository/ScheduleRepository.kt | 2 ++ .../schedule/port/in/SaveScheduleUseCase.kt | 2 +- .../schedule/port/out/DeleteSchedulePort.kt | 2 ++ .../presentation/ScheduleController.kt | 4 +-- .../schedule/service/SaveScheduleService.kt | 26 ++++++++++++++++++- .../schedule/ScheduleService.kt | 10 ++++++- 7 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/SchedulePersistenceAdapter.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/SchedulePersistenceAdapter.kt index c1591197..2832bc3b 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/SchedulePersistenceAdapter.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/SchedulePersistenceAdapter.kt @@ -56,4 +56,8 @@ class SchedulePersistenceAdapter( val entities = schedule.map { scheduleMapper.toEntity(it) } scheduleRepository.saveAll(entities) } + + override fun deleteAll() { + scheduleRepository.deleteAll() + } } diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/repository/ScheduleRepository.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/repository/ScheduleRepository.kt index b134ddad..bf7fbfa1 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/repository/ScheduleRepository.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/persistence/repository/ScheduleRepository.kt @@ -15,4 +15,6 @@ interface ScheduleRepository : Repository { fun saveAll(entity: Iterable) fun findAllByDate(date: LocalDate): List? + + fun deleteAll() } diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/port/in/SaveScheduleUseCase.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/port/in/SaveScheduleUseCase.kt index f8388fc4..4b9f1c1a 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/port/in/SaveScheduleUseCase.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/port/in/SaveScheduleUseCase.kt @@ -1,5 +1,5 @@ package dsm.pick2024.domain.schedule.port.`in` interface SaveScheduleUseCase { - fun saveNeisInfoToDatabase(start: String, end: String) + fun saveNeisInfoToDatabase() } diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/port/out/DeleteSchedulePort.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/port/out/DeleteSchedulePort.kt index 1d7e1b4d..0533ed17 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/port/out/DeleteSchedulePort.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/port/out/DeleteSchedulePort.kt @@ -4,4 +4,6 @@ import java.util.UUID interface DeleteSchedulePort { fun deleteById(id: UUID) + + fun deleteAll() } diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt index c80b438c..1d11091d 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt @@ -69,9 +69,7 @@ class ScheduleController( @Operation(summary = "나이스 학사일정 저장 api") @PostMapping("/save") fun saveSchedule( - @RequestParam(name = "start") start: String, - @RequestParam(name = "end") end: String - ) = scheduleUseCase.saveNeisInfoToDatabase(start, end) + ) = scheduleUseCase.saveNeisInfoToDatabase() @Operation(summary = "일 별 학사일정조회 api") @GetMapping("/date") diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt index 022ad2be..619ff575 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt @@ -1,22 +1,46 @@ package dsm.pick2024.domain.schedule.service import dsm.pick2024.domain.schedule.port.`in`.SaveScheduleUseCase +import dsm.pick2024.domain.schedule.port.out.DeleteSchedulePort import dsm.pick2024.domain.schedule.port.out.SaveSchedulePort +import dsm.pick2024.global.config.cache.CacheName import dsm.pick2024.infrastructure.feign.NeisScheduleFeignClientService +import org.springframework.cache.annotation.CacheEvict +import org.springframework.context.annotation.Configuration +import org.springframework.stereotype.Component import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional +import java.time.LocalDate +import java.time.format.DateTimeFormatter @Service class SaveScheduleService( private val saveSchedulePort: SaveSchedulePort, + private val deleteSchedulePort: DeleteSchedulePort, private val neisScheduleFeignClientService: NeisScheduleFeignClientService ) : SaveScheduleUseCase { + @CacheEvict(value = [CacheName.SCHEDULES], allEntries = true) @Transactional - override fun saveNeisInfoToDatabase(start: String, end: String) { + override fun saveNeisInfoToDatabase() { + + val (start, end) = formatDate() + deleteSchedulePort.deleteAll() val scheduleForSave = neisScheduleFeignClientService.getNeisInfoToEntity(start, end) scheduleForSave?.let { saveSchedulePort.saveFeignSchedule(it) } } + + private fun formatDate(): Pair { + val today = LocalDate.now() + + val start = LocalDate.of(today.year - 1, 1, 1) + + val end = LocalDate.of(today.year + 1, 3, 1) + + val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") + + return start.format(formatter) to end.format(formatter) + } } diff --git a/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt b/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt index cc68060c..092fe99a 100644 --- a/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt +++ b/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt @@ -5,6 +5,8 @@ import dsm.pick2024.domain.application.port.out.DeleteApplicationPort 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.schedule.port.`in`.SaveScheduleUseCase +import dsm.pick2024.domain.schedule.service.SaveScheduleService import dsm.pick2024.domain.status.port.`in`.ResetStatusUseCase import dsm.pick2024.domain.timetable.port.`in`.SaveTimetableUseCase import dsm.pick2024.domain.timetable.port.out.DeleteTimeTablePort @@ -20,7 +22,8 @@ class ScheduleService( private val mealUseCase: MealUseCase, private val resetAttendanceUseCase: ResetAttendanceUseCase, private val resetStatusUseCase: ResetStatusUseCase, - private val saveTimetableUseCase: SaveTimetableUseCase + private val saveTimetableUseCase: SaveTimetableUseCase, + private val saveScheduleUseCase: SaveScheduleUseCase ) { @Scheduled(cron = "0 30 20 * * ?", zone = "Asia/Seoul") fun deleteTable() { @@ -45,4 +48,9 @@ class ScheduleService( deleteTimetablePort.deleteAll() saveTimetableUseCase.saveTimetable() } + + @Scheduled(cron = "0 0 8 * * ?") + fun saveSchedule() { + saveScheduleUseCase.saveNeisInfoToDatabase() + } } From 052c54f11428926a67c14c6d4463d3ed3af99471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 12:28:00 +0900 Subject: [PATCH 06/10] lint --- .../domain/schedule/presentation/ScheduleController.kt | 3 +-- .../pick2024/domain/schedule/service/SaveScheduleService.kt | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt index 1d11091d..af4242cb 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/presentation/ScheduleController.kt @@ -68,8 +68,7 @@ class ScheduleController( @Operation(summary = "나이스 학사일정 저장 api") @PostMapping("/save") - fun saveSchedule( - ) = scheduleUseCase.saveNeisInfoToDatabase() + fun saveSchedule() = scheduleUseCase.saveNeisInfoToDatabase() @Operation(summary = "일 별 학사일정조회 api") @GetMapping("/date") diff --git a/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt b/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt index 619ff575..70629981 100644 --- a/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/schedule/service/SaveScheduleService.kt @@ -6,8 +6,6 @@ import dsm.pick2024.domain.schedule.port.out.SaveSchedulePort import dsm.pick2024.global.config.cache.CacheName import dsm.pick2024.infrastructure.feign.NeisScheduleFeignClientService import org.springframework.cache.annotation.CacheEvict -import org.springframework.context.annotation.Configuration -import org.springframework.stereotype.Component import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.time.LocalDate @@ -23,7 +21,6 @@ class SaveScheduleService( @CacheEvict(value = [CacheName.SCHEDULES], allEntries = true) @Transactional override fun saveNeisInfoToDatabase() { - val (start, end) = formatDate() deleteSchedulePort.deleteAll() val scheduleForSave = From f3a129cac068a0275f3f12c20859cd9fe8c829fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 12:30:53 +0900 Subject: [PATCH 07/10] lint --- .../dsm/pick2024/infrastructure/schedule/ScheduleService.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt b/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt index 092fe99a..c24e4599 100644 --- a/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt +++ b/src/main/kotlin/dsm/pick2024/infrastructure/schedule/ScheduleService.kt @@ -6,7 +6,6 @@ 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.schedule.port.`in`.SaveScheduleUseCase -import dsm.pick2024.domain.schedule.service.SaveScheduleService import dsm.pick2024.domain.status.port.`in`.ResetStatusUseCase import dsm.pick2024.domain.timetable.port.`in`.SaveTimetableUseCase import dsm.pick2024.domain.timetable.port.out.DeleteTimeTablePort From 73fa7d4ce4ee434beb3f328fce58c986d626917f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 13:58:56 +0900 Subject: [PATCH 08/10] modify :: ChangeStatusService --- .../dsm/pick2024/domain/status/service/ChangeStatusService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt b/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt index f92046d6..5ef0e0f8 100644 --- a/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/status/service/ChangeStatusService.kt @@ -35,7 +35,7 @@ class ChangeStatusService( ) updateStatuses.add(updatedStatus) - if (requests.statusType in setOf(EMPLOYMENT, PICNIC, ATTENDANCE)) { + if (requests.statusType in setOf(EMPLOYMENT, PICNIC, ATTENDANCE, DROPOUT)) { val attendance = queryAttendancePort.findByUserId(requests.userId) ?: throw UserNotFoundException From fa893fadebe33628ee08377cc0b811a45e9bd8e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 15:01:07 +0900 Subject: [PATCH 09/10] Code migration --- .../service/QueryFloorApplicationService.kt | 9 ++------- .../persistence/AttendancePersistenceAdapter.kt | 17 +++++++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt b/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt index f3f58635..079b40d0 100644 --- a/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt @@ -19,16 +19,11 @@ class QueryFloorApplicationService( @Transactional(readOnly = true) override fun queryFloorAndStatusApplication(floor: Int, status: Status): List { - val today = LocalDate.now().dayOfWeek - val applications = when (floor) { 2, 3, 4 -> { - val filteredClassrooms = if (today == 2 || today == 5) { - queryApplicationPort.queryApplicationWithAttendance(floor) - } else { + val filterClassroomList = queryApplicationPort.findByFloorAndApplicationKind(floor, ApplicationKind.APPLICATION) - } - filteredClassrooms.filter { it.status == status } + filterClassroomList.filter { it.status == status } } 5 -> { queryAllApplicationPort.findAllByStatusAndApplicationKind(status, ApplicationKind.APPLICATION) diff --git a/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt b/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt index 7db46ba5..b531c8cf 100644 --- a/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt +++ b/src/main/kotlin/dsm/pick2024/domain/attendance/persistence/AttendancePersistenceAdapter.kt @@ -28,11 +28,15 @@ class AttendancePersistenceAdapter( override fun findAll() = attendanceJpaRepository.findAll().map { attendanceMapper.toDomain(it) } - override fun findByFloor(floor: Int): List? = attendanceJpaRepository.findByFloor(floor).map { - attendanceMapper.toDomain( - it - ) - } + override fun findByFloor(floor: Int): List? = + jpaQueryFactory + .selectFrom(QAttendanceJpaEntity.attendanceJpaEntity) + .where( + QAttendanceJpaEntity.attendanceJpaEntity.floor.eq(floor), + QAttendanceJpaEntity.attendanceJpaEntity.period6.ne(AttendanceStatus.DROPOUT) + ) + .fetch() + .map { attendanceMapper.toDomain(it) } override fun findByGradeAndClassNum( grade: Int, @@ -41,7 +45,8 @@ class AttendancePersistenceAdapter( .selectFrom(QAttendanceJpaEntity.attendanceJpaEntity) .where( QAttendanceJpaEntity.attendanceJpaEntity.grade.eq(grade), - QAttendanceJpaEntity.attendanceJpaEntity.classNum.eq(classNum) + QAttendanceJpaEntity.attendanceJpaEntity.classNum.eq(classNum), + QAttendanceJpaEntity.attendanceJpaEntity.period6.ne(AttendanceStatus.DROPOUT) ) .fetch() .map { attendanceMapper.toDomain(it) } From a7c0b5fbfe4274501e03a4a01432194e4de7580f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Tue, 12 Nov 2024 15:04:37 +0900 Subject: [PATCH 10/10] lint --- .../domain/application/service/QueryFloorApplicationService.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt b/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt index 079b40d0..c5420fdb 100644 --- a/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/application/service/QueryFloorApplicationService.kt @@ -7,7 +7,6 @@ import dsm.pick2024.domain.application.port.out.QueryAllApplicationPort import dsm.pick2024.domain.application.port.out.QueryApplicationPort import dsm.pick2024.domain.application.presentation.dto.response.QueryApplicationResponse import dsm.pick2024.domain.classroom.exception.FloorNotFoundException -import org.joda.time.LocalDate import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional