From aae556a1806ea530b7d5fe20bdf8579b7fa4605e Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Mon, 14 Jul 2025 13:57:07 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=B0=EC=B0=A8=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../localhost/service/localvacaService.java | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/main/java/io/company/localhost/service/localvacaService.java b/src/main/java/io/company/localhost/service/localvacaService.java index 57b9c50..6655db6 100644 --- a/src/main/java/io/company/localhost/service/localvacaService.java +++ b/src/main/java/io/company/localhost/service/localvacaService.java @@ -288,36 +288,29 @@ public class localvacaService { return emp; }).collect(Collectors.toList()); } - /** - * 총 연차 계산 로직 - */ + + /** + * 총 연차 계산 로직 + */ public int procCalculateTotalVacation(LocalDate hireDate) { LocalDate today = LocalDate.now(); - int currentYear = today.getYear(); int hireYear = hireDate.getYear(); - - // 입사일부터 오늘까지의 전체 근속 개월 수 계산 - int workMonths = (int) ChronoUnit.MONTHS.between(hireDate, today); - - // 올해 입사자 → 1년 미만: 입사월 이후로 계산 + int currentYear = today.getYear(); + + // 입사년도와 현재년도가 같으면 : (12 - 입사월) if (hireYear == currentYear) { - return 12 - workMonths; - }else if(workMonths < 12) { - return 12; + return 12 - hireDate.getMonthValue(); } + // 기본 연차 15 int totalVacation = 15; - // 2년 경과 이후부터, 입사월이 도래했을 때 1개씩 추가 - LocalDate baseDate = hireDate.plusYears(2).withDayOfMonth(1); + // 입사년도 기준 3년차 1월부터, 매 2년마다 1개씩 증가 + LocalDate accrualDate = LocalDate.of(hireYear + 3, 1, 1); - while (!baseDate.isAfter(today)) { - // 입사월이 현재 달과 같거나 지났을 때만 연차 추가 - if (baseDate.getYear() == today.getYear() && baseDate.getMonthValue() > today.getMonthValue()) { - break; // 아직 입사월이 도달하지 않았으면 종료 - } - totalVacation += 1; - baseDate = baseDate.plusYears(2); + while (!accrualDate.isAfter(today)) { + totalVacation++; + accrualDate = accrualDate.plusYears(2); } return totalVacation;