살려줘 시리즈 3

S_H_H·2022년 10월 4일
0

집사 도움!

목록 보기
3/3

살려줘 시리즈 1에 이어지는 내용입니다.

??? : 엑셀 데이터 정리 후에 조기 퇴근을 정리하는데 이것 좀 해줘라
SHH : 넴


4교대 기준으로 퇴근 시간이 정해져 있는데, 퇴근 시간보다 빨리 퇴근한 사람을 찾으면 되는 것
ex) 18시 퇴근 시간이면, 17~18시에 퇴근한 사람들

퇴근 시간 1시간 전에 해당하는 사람만 있으면 된다고, 그전에 퇴근한 사람은 상관 없다고 하네요


데이터 읽기

1탄에 있음으로 생략



데이터 정리

private static List<List<ExcelHeader>> processor(ArrayList<ExcelHeader> excelHeaderDataList) {
        Comparator<ExcelHeader> compare = Comparator
                .comparing(ExcelHeader::getCardNumber)
                .thenComparing(ExcelHeader::getIssueDate);

        List<List<ExcelHeader>> groupingData = excelHeaderDataList.stream()
                .filter(x -> isEarlyLeaveTime(x.getIssueTime()))
                .collect(Collectors.groupingBy(ExcelHeader::getCompanyName))
                .entrySet()
                .stream()
                .map(x -> x.getValue().stream().sorted(compare).collect(Collectors.toList()))
                .collect(Collectors.toList());
        return groupingData;
}


static boolean isEarlyLeaveTime(LocalTime issueTime){
        List<Integer> earlyTime = Arrays.asList(6, 14, 16, 22);
        return earlyTime.indexOf(issueTime.getHour()) >= 0;
}
  1. 조기 퇴근시간이 6, 14, 16, 22시에 해당하는 사람들 필터링
    • 조기 퇴근 시간이 적혀 있는 List를 만들어 퇴근 시간이 들어있으면 True 반납
  2. 정렬처리는 카드 숫자, 발행 일자 기준으로 처리
    • Comparator 를 사용하여 정렬 처리


데이터 쓰기

기존 1탄과 달라진게 있다면,
회사 별로 나누어 엑셀 파일을 떨군다는 정도?
OUTPUT 파일 한개 였다면, 지금은 회사 개수 만큼 엑셀 파일이 만들어진다
자세한 내용은 git 을 확인해 주세요



profile
LEVEL UP

0개의 댓글