본문 바로가기
카테고리 없음

Java로 구현한 결재 업무 정보 제공 REST API 예시 프로그램

by 아야옹이다 2024. 7. 14.
반응형

1. 프로젝트 설정

  • Spring Boot 2.7.1
  • Lombok
  • Spring Data JPA
  • H2 Database (테스트용)

2. 엔티티 클래스

Java
@Entity
@Table(name = "approval_work")
public class ApprovalWork {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String title;

    private String content;

    @Enumerated(EnumType.STRING)
    private ApprovalStatus status;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "approval_work_approvers",
            joinColumns = @JoinColumn(name = "approval_work_id"),
            inverseJoinColumns = @JoinColumn(name = "approver_id"))
    private Set<Approver> approvers;

    // Getter, Setter 생략
}
코드를 사용할 때는 주의가 필요합니다.
 

3. 열거형 클래스 (ApprovalStatus)

Java
public enum ApprovalStatus {
    PENDING, APPROVED, REJECTED
}
코드를 사용할 때는 주의가 필요합니다.
 

4. Approver 엔티티 클래스

Java
@Entity
@Table(name = "approvers")
public class Approver {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String position;

    // Getter, Setter 생략
}
코드를 사용할 때는 주의가 필요합니다.
 

5. ApprovalWorkRepository 인터페이스

Java
public interface ApprovalWorkRepository extends JpaRepository<ApprovalWork, Long> {
}
코드를 사용할 때는 주의가 필요합니다.
 

6. ApprovalWorkController 클래스

Java
@RestController
@RequestMapping("/api/approval-works")
public class ApprovalWorkController {

    private final ApprovalWorkRepository approvalWorkRepository;

    public ApprovalWorkController(ApprovalWorkRepository approvalWorkRepository) {
        this.approvalWorkRepository = approvalWorkRepository;
    }

    @GetMapping
    public List<ApprovalWork> getAllApprovalWorks() {
        return approvalWorkRepository.findAll();
    }

    @GetMapping("/{id}")
    public ApprovalWork getApprovalWorkById(@PathVariable Long id) {
        return approvalWorkRepository.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("Approval work not found with id: " + id));
    }

    // 추가적인 API 엔드포인트 구현 가능 (예: 생성, 수정, 삭제)
}
코드를 사용할 때는 주의가 필요합니다.
 

7. 실행 방법

  1. Maven 또는 Gradle을 사용하여 프로젝트 빌드
  2. Spring Boot 애플리케이션 실행
  3. 다음 URL에 GET 요청을 보내면 모든 결재 업무 정보를 JSON 형식으로 확인 가능: http://localhost:8080/api/approval-works
  4. 특정 ID의 결재 업무 정보 확인: http://localhost:8080/api/approval-works/{id} (예: http://localhost:8080/api/approval-works/1)

참고:

  • 이 예시 코드는 기본적인 기능만 구현합니다. 실제 서비스 구현 시에는 보안, 권한 관리, 오류 처리 등을 추가적으로 고려해야 합니다.
  • H2 Database는 테스트용 DB입니다. 실제 서비스 환경에서는 MySQL, PostgreSQL 등을 사용하는 것이 좋습니다.
  • Lombok 라이브러리를 사용하여 코드를 간결하게 작성했습니다.

추가 기능:

  • 특정 조건에 맞는 결재 업무만 조회하는 필터링 기능
  • 페이징 기능
  • 검색 기능
  • 결재 라인 정보 제공
  • 결재 상태 변경 기능
  • 첨부파일 처리