= 내부 결재 == 개요 SDL에서 제공하는 내부결재 기능. + 결재를 위한 문서 Entity등록과 내부결재 후처리를 위한 Interceptor 클래스 구현으로 간단하게 결재 기능을 구현할 수 있다. + 샘플로 제공하는 화면의 결재 스텝을 지정하는 Component를 필요한 결재 문서 화면에 적용하여 사용할 수 있으며 샘플 Controller를 참조하여 문서와 결재 스텝 목록을 저장하여 approvalService.submit 메소드를 호출하면 된다. == Table * 결재 정보 : TN_CF_APPROVAL * 결재 스텝 정보 : TN_CF_APPROVAL_STEP * Sample Document : TN_CF_SAMPLE_APPROVAL_INTERNAL_DOCUMENT == API .ApprovalController.java . 상신함 목록 조회(내부 결재) + GET /internal-approvals/submit + Query ID : selectInternalApprovalPagingListBySubmit * 사용자가 상신한 내부결재 문서를 조회한다. . 미결함 목록 조회(내부 결재) + GET /internal-approvals/not-approve + Query ID : selectInternalApprovalPagingListByNotApprove * 미결중인 내부결재 문서를 조회한다. . 기결함 목록 조회(내부 결재) + GET /internal-approvals/approved + Query ID : selectInternalApprovalPagingListByApproved * 사용자가 결재 완료한 내부결재 문서를 조회한다. . 통보함 목록 조회(내부 결재) + GET /internal-approvals/notice + Query ID : selectInternalApprovalPagingListByNotice * 사용자가 통보 대상인 결재문서를 조회한다. . 내부결재 문서 상신 취소 + POST /internal-approvals/{approvalRequestId}/cancel + Service : cancelInternalApproval Query ID : updateInternalApprovalStep * 결재 문서 상신을 취소한다. . 내부결재 문서 결재 승인 또는 합의 + POST /internal-approvals/{approvalRequestId}/confirm + Service : confirmInternalApproval Query ID : updateInternalApprovalStep * 결재 문서 승인 또는 합의 한다. . 내부결재 문서 반려 + POST /internal-approvals/{approvalRequestId}/reject + Service : rejectInternalApproval Query ID : updateInternalApprovalStep * 결재 문서를 반려 한다. .ApprovalSampleController.java . 내부결재 문서 목록 조회(페이징) + GET /internal-approval/sample-document-with-paging + Query ID : selectSampleApprovalDocumentPagingList * Sample Document 문서 목록을 조회한다. . 내부 결재 문서 상신(Sample Document) + POST /internal-approval/submit/sample-document * Knox 결재 정보 동기화 로직을 제외한 다른 부분은 Knox 결재 상신과 동일하다. * 동기화 배치 로직 대상에서 제외된다. * 내부결재 전후 처리 로직은 문서 타입별로 Interceptor 클래스를 구현하여 처리한다. [source,java] ---- @Log4j2 @ApprovalDocumentType(names = {"internalSample"}) public class InternalApprovalSampleInterceptor implements ApprovalInterceptor { @Autowired InternalApprovalSampleService internalApprovalSampleService; @Override public void afterSubmit(Approval approval, List approvalStepList, Map attribute) { log.debug("execute ApprovalSampleInterceptor afterSubmit"); //상신 후 문서 상태 업데이트 internalApprovalSampleService.updateSampleApprovalDocument(approval.getDbDocId(), ApprovalDocStatus.INPROCESS); } --생략-- } ---- == 화면 . 내부결재 문서 상신함 image::internalApproval_01.png[] image::internalApproval_05.png[] * 사용자가 상신한 내부결재 문서 목록을 조회한다. * 상세화면에 진입하여 상신취소가 가능하다. [start=2] . 내부결재 문서 미결함 image::internalApproval_02.png[] image::internalApproval_06.png[] * 사용자의 결재 차순에 있는 내부결재 문서 목록을 조회한다. * 상세화면에 진입하여 승인/합의 또는 반려가 가능하다. [start=3] . 내부결재 문서 기결함 image::internalApproval_03.png[] * 사용자의 결재 완료한 내부결재 문서 목록을 조회한다. [start=4] . 내부결재 문서 통보함 image::internalApproval_04.png[] * 결재 완료 후 사용자에게 통보된 내부결재 문서 목록을 조회한다.