TIL

220707 TIL 실전프로젝트 트러블슈팅

Vince_rf 2022. 7. 8. 01:41

# 스트링 타입으로 들어온 회의 시작 시간을 스트링 타입으로 들어오는 회의 예정 소요시간에
더해줘서 스트링타입으로 반환해줘야하는 CRUD를 요구받았다.

String[] meetingTime1 = meetingTime.split(":");
        String[] meetingDuration1 = meetingDuration.split("시");
        String meetingTime2 = meetingTime1[0];
        String meetingDuration2 = meetingDuration1[0];
        String meetingOverTime1 = "";

        int meetingTimeInt = Integer.parseInt(meetingTime2);
        int meetingDurationInt = Integer.parseInt(meetingDuration2);
        int meetingOverTime = meetingTimeInt + meetingDurationInt;

        if (meetingOverTime >= 24){
            meetingOverTime -= 24;
        }

        if (meetingOverTime < 10){
            meetingOverTime1 = "0"+meetingOverTime+":00";
        } else {
            meetingOverTime1 = meetingOverTime+":00";
        }

회의 시작시간의 스트링 인풋 형태가 "00:00",
회의 예정 소요시간의 스트링 인풋 형태가 "0시간" 이기 때문에
스플릿을 이용해 알맞은 곳에서 문자열을 잘라주고, 배열에 저장한 뒤,
필요한 배열의 인덱스를 꺼내와서 서로 더해준 뒤, 
시간이 24시부터는 00시로 리셋 되어야하기 때문에 미팅이 끝나는 시간이 24시를 넘어가는 순간
부터 00시로 리셋 시켰다.

그리고 시간이 한 자릿수면 스트링으로 반환할 때 앞에다 0을 붙여서 01:00,02:00 등으로 반환하게
하였고, 두 자릿수 부터는 0을 빼고 11:00, 12:00 의 형태로 반환하게 해주었다.

# 각 팀에 속한 미팅들을 수정된 순으로 정렬해서 내려줘야하는 요구를 받았다!

Repository에서 findAllbyTeamIdAndOrderByModifiedAtDesc~~ 로 처리를 시도했으나,

OrderByModifiedAt과 다른 파라미터를 같이 사용하는 방법은 계속해서 실패했다.

결국 Service에서 처리하자는 생각이 들어,

Service에서 먼저 findAllbyOrderByModifiedAtDesc로 미팅 리스트를 찾아주고,

Meeting이 Team을 ManyToOne으로 가지고 있기에,

List<Meeting> meetingList1 = new ArrayList<>();
        for (Meeting meeting : meetingList){
            if (meeting.getTeam().getId().equals(teamId)){
                meetingList1.add(meeting);
            }
        }

meeting에서 팀을 꺼내고 다시 아이디를 뽑아낸 뒤, PathVariable로 들어오는 teamId와

비교해서, 같으면 빈 리스트인 meetingList1에 추가해주는 방법을 통해 문제를 해결했다!