이전에 스케쥴러를 사용해서 카카오 알림톡으로 미출퇴근 알림을 보내는 기능을 구현한 적이 있다.
해당 업체에서 메뉴를 하나 추가해서 날짜를 지정하면 해당 날짜에는 알림톡을 발송하지 않는 기능을 추가해달라는 요청을 받았다.
처음에는 달력 라이브러리를 사용해서 구현을 할 생각이었다. 메뉴를 클릭했을 때 화면에 캘린더를 띄우고 거기서 날짜를 클릭해서 저장하고 수정하고 삭제하는 방향으로 잡았다.
하지만 시간이 많이 없었기 때문에 기존 메뉴 하나를 참고해서 리스트 형식으로 구현을 하기로 했다.조회 창에서는 좌측 상단에 input 태그를 하나 만들고 클릭 시에 작은 캘린더가 나오는 형식으로 설계했다. 날짜를 선택했을 때 등록된 휴일이 있다면 내용이 밑에 리스트 형식으로 출력된다. 휴일 등록창에서는 휴일명과 시작일과 종료일, 비고 등을 저장할 수 있도록 설계했다. 삭제는 이력 관리가 필요한 경우에 delete문이 아니라 update문을 사용해서 use_at같은 상태 구분 컬럼을 통해 Y 또는 N으로 관리하는 방법이 있다. 하지만 휴일이라는 데이터는 이력 관리가 필요한 중요 데이터는 아니라서 그냥 delete문을 사용했다.
이후에 스케쥴러를 관리하는 자바 단에서 미출퇴근 확인 스케쥴러 구동 부분에 분기를 하나 추가했다. 스케쥴러가 작동할 시점의 날짜를 dateformat을 통해 DB 저장 날짜 형식으로 변환한 후에 매개변수에 태워서 쿼리를 날려준다. 휴일 데이터에는 시작일과 종료일이 있기 때문에 between 구문을 통해 오늘 날짜가 휴일 기간에 포함되는지 검사하고 조회된 데이터의 갯수를 가져온다. 조회된 데이터가 하나라도 있다면 return 코드를 통해 이후의 코드를 실행하지 않고 호출한 메소드로 돌아가도록 구현했다.