2023.07.16.SUN

ronglong·2023년 7월 16일
0

[ 느낀 점 ]

querydsl 써보고 싶었는데, insert 지원 안 해서 이번 프로젝트에서는 적용이 어렵고, 다음 프로젝트에 사용해보는 것으로... ㅠ

공휴일 계산하는 로직이 전자정부프레임을 사용하지 못하는 이상, 결국 손수 날짜를 지정해줘야하는 면이 있다.

그래서 원래 만들어놓은 로직은 주말이면 ban 상태로 두는 것으로 설정해놨으나,
공휴일을 따로 입력하는 부분도 dto 및 로직에 포함시켰다.

사실 이럴거면, 그냥 DB에서 쿼리로 bulk insert하는 게 효율적인가 싶기도 하지만,
값을 엑셀에서 일일이 설정해주는 것보다는 이렇게 프로그램 만들어서 돌리는 게 실수가 적을 것 같다.

다음주에 테스트 코드 짜야겠다.
코드를 짜면서 동시에 테스트 코드 짜는 습관을 들여야하는데,,
다음 프로젝트에서는 도전해보겠음,,

//각 날짜마다 시작 시간부터 종료 시간까지 for문 돌면서 repository insert.
        for (int i = 1; i <= lastDay; i++) {
            for (int j = startHour; j <= endHour; j++) {
                //entity 생성
                ReservationDate reservationDate = ReservationDate.builder().build();
                reservationDate.setRdTypeCd(rdType);
                LocalDateTime localDateTime = LocalDateTime.of(year, month, i, 0, 0, 0);
                String date = makeDate(localDateTime);
                reservationDate.setDate(date);

                reservationDate.setHour(j);
                //주말이거나 공휴일이면 상태 ban
                String day = getDay(localDateTime);
                if (day.equals("토요일") || day.equals("일요일") || dto.getHolidays().contains(date.substring(0,10))) {
                    reservationDate.setRdState(ReservationDate.State.BAN);
                } else {
                    //점심시간이면 상태 lunch
                    int lunchTime = 12;
                    if (j == lunchTime) {
                        reservationDate.setRdState(ReservationDate.State.LUNCH);
                    }
                    //영업 종료시간이면 상태 ban
                    else if (j == endHour) {
                        reservationDate.setRdState(ReservationDate.State.BAN);
                    }
                    else {
                        reservationDate.setRdState(ReservationDate.State.NORMAL);
                    }
                }
                repository.save(reservationDate);
            }
        }
    }

0개의 댓글