본문 바로가기
Side Project

[Spring Boot] 환자 관리 프로그램 - Service (3)

by jisayDeveloper 2023. 10. 19.
728x90
반응형
SMALL

저번 포스팅에 이어서 Service를 만들어 보겠습니다.

https://jisaydeveloper.tistory.com/32

 

[Spring Boot] 환자 관리 프로그램 - Entity, Repository (2)

저번 포스팅에 이어서 Entity와 Repository를 만들어 보겠습니다. https://jisaydeveloper.tistory.com/31 [Spring Boot] 환자 관리 프로그램 - 설정 (1) 게시판 연습할겸 환자 관리 프로그램을 만들어 보겠습니다. dep

jisaydeveloper.tistory.com

이번 편은 메서드 단위로 끊어서 설명하겠습니다.

MisayService

@Service
@RequiredArgsConstructor
public class MisayService {

    private final MisayRepository misayRepository;

    private final MemberRepository memberRepository;
}

JPA 사용하기 위해서 repository를 final로 선언하면 @RequiredArgsConstructor가 초기화를 해줍니다.

getList()

public List getList(){
        List<MisayDTO> result = new ArrayList<>(); // 검색 결과를 저장할 리스트
        List<Misay> misay = misayRepository.findAll();

        for(Misay list : misay){
            Member member = list.getMember();
            MisayDTO dto = MisayDTO.builder()
                    .bno(list.getBno())
                    .name(member.getName())
                    .age(member.getAge())
                    .surgeryDate(list.getSurgeryDate())
                    .surgeryName(list.getSurgeryName())
                    .surgeryArea(list.getSurgeryArea())
                    .rehab(list.getRehab())
                    .rehabDate(list.getRehabDate())
                    .memo(list.getMemo())
                    .build();
            result.add(dto);
        }
        return result;
    }

findAll() 메서드를 통해서 Misay의 모든 엔티티를 가져온 후 dto를 통해서 parsing 후 List<MisayDTO>를 리턴합니다.

 

getCategory(), getSurgery(), getName()

public List<MisayDTO> getCategory(String value){

        List<MisayDTO> result = new ArrayList<>();
        List<Misay> misay = misayRepository.findBySurgeryArea(value);

        for(Misay list : misay){
            Member member = list.getMember();
            MisayDTO dto = MisayDTO.builder()
                    .bno(list.getBno())
                    .name(member.getName())
                    .age(member.getAge())
                    .surgeryDate(list.getSurgeryDate())
                    .surgeryName(list.getSurgeryName())
                    .surgeryArea(list.getSurgeryArea())
                    .rehab(list.getRehab())
                    .rehabDate(list.getRehabDate())
                    .memo(list.getMemo())
                    .build();
            result.add(dto);
        }
        return result;
    }
    public List<MisayDTO> getSurgery(String keyword){

        List<MisayDTO> result = new ArrayList<>();
        List<Misay> misay = misayRepository.findBySurgeryAreaContaining(keyword);

        for(Misay list : misay){
            Member member = list.getMember();
            MisayDTO dto = MisayDTO.builder()
                    .bno(list.getBno())
                    .name(member.getName())
                    .age(member.getAge())
                    .surgeryDate(list.getSurgeryDate())
                    .surgeryName(list.getSurgeryName())
                    .surgeryArea(list.getSurgeryArea())
                    .rehab(list.getRehab())
                    .rehabDate(list.getRehabDate())
                    .memo(list.getMemo())
                    .build();
            result.add(dto);
        }
        return result;
    }
    public List<MisayDTO> getName(String keyword){

        List<MisayDTO> result = new ArrayList<>();
        List<Misay> misay = misayRepository.findByMemberNameContaining(keyword);

        for(Misay list : misay){
            Member member = list.getMember();
            MisayDTO dto = MisayDTO.builder()
                    .bno(list.getBno())
                    .name(member.getName())
                    .age(member.getAge())
                    .surgeryDate(list.getSurgeryDate())
                    .surgeryName(list.getSurgeryName())
                    .surgeryArea(list.getSurgeryArea())
                    .rehab(list.getRehab())
                    .rehabDate(list.getRehabDate())
                    .memo(list.getMemo())
                    .build();
            result.add(dto);
        }
        return result;
    }

이 메서드들은 검색 기능을 위해 사용하는 메서드 입니다.

카테고리에서 수술부위(SurgeyArea)별 List가 필요할때, 수술부위 또는 환자 이름에 따른 검색 기능을 위해 쓰입니다.

 

member(), getmembers(), searchMembers()

    public void member(MisayDTO dto){
        Member member = Member.builder().name(dto.getName()).age(dto.getAge()).build();
        memberRepository.save(member);
    }

    public List<Member> getMembers(){
        return memberRepository.findAll();
    }

    public List<Member> searchMembers(String keyword){
        return memberRepository.findByNameContaining(keyword);
    }

member()는 환자를 등록하는 메서드,

getMembers()는 모든 환자를 조회해오는 메서드,

searchMembers()는 검색하고싶은 환자를 조회하는 메서드입니다.

 

getMisayDTO()

public MisayDTO getMisayDTO(Long mno){
        Member member = memberRepository.getOne(mno);
        MisayDTO dto = MisayDTO.builder()
                .mno(member.getMno())
                .name(member.getName())
                .age(member.getAge())
                .build();
        return dto;
    }

Member 엔티티를 가져오면 MisayDTO로 변환하는 메서드입니다.

 

deleteBoard(), modify(), read(), register()

    public void deleteBoard(Long bno){
        Optional<Misay> misayOptional = misayRepository.findById(bno);

        if (misayOptional.isPresent()) {
            Misay misay = misayOptional.get();
            misayRepository.delete(misay);
        } else {
            // 지정된 bno에 해당하는 Misay 엔티티가 없을 때 처리
        }
    }

    public void modify(MisayDTO dto){
        Member member = Member.builder().name(dto.getName()).build();
        Misay misay = Misay.builder()
                .bno(dto.getBno())
                .memo(dto.getMemo())
                .member(member)
                .surgeryName(dto.getSurgeryName())
                .surgeryDate(dto.getSurgeryDate())
                .surgeryArea(dto.getSurgeryArea())
                .rehabDate(dto.getRehabDate())
                .rehab(dto.getRehab())
                .build();
        misayRepository.save(misay);
    }

    public MisayDTO read(Long bno){
        Misay list = misayRepository.getOne(bno);
        Member member = list.getMember();
        MisayDTO dto = MisayDTO.builder()
                .mno(member.getMno())
                .name(member.getName())
                .age(member.getAge())
                .surgeryDate(list.getSurgeryDate())
                .surgeryName(list.getSurgeryName())
                .surgeryArea(list.getSurgeryArea())
                .bno(list.getBno())
                .rehab(list.getRehab())
                .rehabDate(list.getRehabDate())
                .memo(list.getMemo())
                .build();
        return dto;
    }
    
    public void register(MisayDTO dto){

        Member member = memberRepository.getOne(dto.getMno());

        Misay m = Misay.builder()
                .member(member)
                .bno(dto.getBno())
                .rehab(dto.getRehab())
                .rehabDate(dto.getRehabDate())
                .surgeryArea(dto.getSurgeryArea())
                .surgeryDate(dto.getSurgeryDate())
                .surgeryName(dto.getSurgeryName())
                .memo(dto.getMemo())
                .build();

        misayRepository.save(m);
    }

deleteBoard()는 차트를 삭제할 때,

modify()는 차트를 수정할 때

read()는 조회할 차트를 가져올 때

register()는 차트를 등록하는 메서드입니다.

 

마지막은 Controller와 총평으로 돌아오겠습니다.

728x90
반응형
LIST