37 시작하기
hanmj edited this page 2 months ago

xit-lntris-interface란?

지방 세외수입 연계시스템으로

  • 지방 세외수입 개별시스템
  • 지방 세외수입 특화시스템 연계를 지원한다.

스프링부트 애플리케이션이므로 설치 후 즉시 실행할 수 있다.

설치

배포파일(xit-lntris-interface.zip)을 원하는 디렉토리에 압축을 풀면 다음과 같은 레이아웃으로 설치된다.

  • 3rd-party - 암호화 외부 솔루션
  • 17 - 자바17 운영환경
  • files - 작업파일 디렉토리
  • intf-conf - 세외수입/파일작업 설정 디렉토리
  • logs - 로그파일 디렉토리
  • spring - 작업스케쥴러 설정 디렉토리
  • sql - 데이터베이스 테이블 생성 디렉토리
  • ssl - SSL 설정 디렉토리
  • application.yml - 애플리케이션 기본설정 파일
  • ojdbc6.jar - 오라클 jdbc 라이브러리
  • xit-crypto.conf - 암호화 설정 파일
  • xit-lntris-interface.bat - 시작 배치파일
  • xit-lntris-interface.jar - 지방 세외수입 연계 모듈

데이터베이스

데이터베이스 생성

sql/xit-lntris-xxx.sql 파일을 실행해, 데이터베이스 테이블을 생성한다.

NVL vs IFNULL

  • 마리아DB의 경우 버젼에 따라 NVL 함수를 지원하지 않는 경우가 있다.
  • 이 경우 다음 스크립트를 실행해 NVL 함수를 생성한다.
DELIMITER $$
CREATE FUNCTION NVL(IP_DATA VARCHAR(100), IP_CONVERT VARCHAR(100)) RETURNS VARCHAR(100)
BEGIN
    DECLARE RTN_DATA VARCHAR(100);

    SET RTN_DATA := IFNULL(IP_DATA, IP_CONVERT);

    RETURN RTN_DATA;
END $$

DELIMITER ;

설정

xit-lntris-interface가 올바로 동작하려면 다음 사항들을 설정한다.

  • 웹애플리케이션 이름, 포트
  • 데이터베이스 접속 정보
  • 지역 자치단체 및 시스템 정보
  • 파일작업 정보
  • 데이터 암호화 정보

application.yml

웹애플리케이션 이름, 포트 설정

server:
  port: 포트번호(18080)
  servlet:
    context-path: 이름(/)

데이터베이스 설정

  sql:
    init:
      platform: mariadb 또는 oracle(해당 내용만 지정)

  datasource:
    hikari:
      driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
      jdbc-url: '데이터베이스별 jdbc url' 참고
      username: 사용자 아이디      
      password: 사용자 비밀번호
      auto-commit: false

데이터베이스별 jdbc url

* Maria DB: jdbc:log4jdbc:mariadb://호스트:포트/DB이름?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
* Oracle: jdbc:log4jdbc:oracle:thin:@호스트:포트:SID

lntris.conf

{
	"useDatabase": true,           /* 데이터베이스 사용여부 */
	"sendRequest": true,            /* 연계 요청 여부 */
	
	"locals": [
		{"organization": "4060000", /* 지역 자치단체 코드(7자리) */
		 "systems": ["DPV"]         /* 지역 시스템 코드(3자리) */
		}
	],
	
	"remote": {
	    "organization": "1741000", /* 지방세외수입 기관 코드(7자리) */
	    "systems": ["NIS"],        /* 지방세외수입 시스템 코드(3자리) */
	    "urls": {
	    	"basic": "https://10.60.75.57:22411/mediate/ltis",   /* 연계(개별) 운영 url */
	    	/*"basic": "https://10.60.75.138:22411/mediate/ltis",  /* 연계(개별) 검증 url */
	    	
	    	"special": "https://10.60.75.57:32411/mediate/ltis"  /* 연계(특화) 운영 url */
	    }
	}
}

지역 자치단체와 시스템이 여럿일 경우 다음과 같이 한다.

	"locals": [
		{"organization": "4060000", /* 지역 자치단체 코드(7자리) */
		 "systems": ["DPV"]         /* 지역 시스템 코드(3자리) */
		},
		{"organization": "4060000", /* 지역 자치단체 코드(7자리) */
		 "systems": ["PVS"]         /* 지역 시스템 코드(3자리) */
		}
	]

file-job.conf

파일 수신과 전송을 위한 작업 디렉토리를 설정한다. (file-job.conf 설정 참고)

ESB 수신파일과 전송파일의 최상위 디렉토리와 작업파일을 위한 디렉토리를 다음 항목에 설정한다.

"dirs": {
	"receive": "…", /* 수신 파일 최상위 디렉토리 */
	"send": "…",     /* 전송 파일 최상위 디렉토리 */

	"working": "…", /* 파일 작업 최상위 디렉토리 */
	"success": "…", /* 작업 완료한 파일의 최상위 디렉토리 */
	"fail": "…"      /* 작업 실패한 파일의 최상위 디렉토리 */
}

수신/전송파일 최상위 디렉토리 아래에 위치하는 차세대 지방 세외수입 시스템 디렉토리를 다음 항목에 설정한다.

"dirCodes": {
	"lntris": "..." /* 차세대 지방 세외수입 시스템 */
}

시스템은 "dirs" 항목과 "dirCodes" 항목에 설정된 값을 조합하여 연계대상 시스템별 수신/전송파일의 최상위 디렉토리 경로를 알아낸다.

예) "dirs": {
		"receive": "files/ESB_AGENT/RCV",
		"send": "files/ESB_AGENT/SND",
	},

	"dirCodes": {
		"lntris": "1741000NIS" /* 차세대 지방 세외수입 시스템 */
	},

위와 같이 설정할 경우 차세대 지방 세외수입 시스템의

  • 수신파일 디렉토리는 files/ESB_AGENT/RCV/1741000NIS
  • 전송파일 디렉토리는 files/ESB_AGENT/SND/1741000NIS 이 된다.

"receiptDates" 항목을 설정하면 수신파일 처리 시 수신일수를 지정할 수 있다.

  • 지정하지 않으면 해당 디렉토리의 모든 파일을 처리한다.
  • 0: 처리 당일에 받은 파일을 처리한다.
  • -n: 당일 포함 n일 전까지 받은 파일을 처리한다.

다음은 모든 수신파일의 수신일수를 당일 포함 4일 전까지 처리하도록 하는 예다.

"defaults": {
    ...
    "receiptDates": -4
    ...
}

특정 업무의 수신파일에 대해 다른 수신일수를 지정하려면, 해당 업무의 설정에 "receiptDates" 항목을 추가한다.

다음은 과태료 대장 전일자 변동자료 파일의 수신일수를 2일 전까지로 하는 예다.

"jobs": [
    ...
    {    /* 과태료 대장 등록자료 일괄조회(전일자 변동자료) */
         "name": "lntrisA02",
         "dirCode": "lntris", /* <-- dirCodes */
         "receiptDates": -3
    }
    ...
]

"receiptCount" 항목을 설정하면 수신파일 처리 시 한 번에 처리하는 파일수를 지정할 수 있다.

  • 지정하지 않거나 1보다 작으면 해당 디렉토리의 모든 파일을 처리한다.
  • 0보다 크면 지정한 수의 파일씩 가져와 처리한다.

다음은 모든 수신파일 처리건수를 1건씩 처리하도록 하는 예다.

"defaults": {
    ...
    "receiptCount": 1
    ...
}

특정 업무의 수신파일에 대해 처리건수를 다르게 지정하려면, 해당 업무의 설정에 "receiptCount" 항목을 추가한다.

다음은 과태료 대장 전일자 변동자료 파일을 2건씩 처리하게 하는 예다.

"jobs": [
    ...
    {    /* 과태료 대장 등록자료 일괄조회(전일자 변동자료) */
         "name": "lntrisA02",
         "dirCode": "lntris", /* <-- dirCodes */
         "receiptCount": 2
    }
    ...
]

context-scheduler.xml

업무별 수신/전송 파일작업 스케쥴을 설정한다.

업무별 파일작업의 스케쥴은 <bean id=”XXXTrigger” …/> 항목의 “cronExpression” 프로퍼티로 설정한다.

cronExpression 설정 참고: https://fmd1225.tistory.com/60

xit-crypto.conf

xit-crypto.conf 설정 참고

전문 요청 수신

이용기관은 지방 세외수입 개별시스템에서 다음 요청을 실시간으로 수신한다.

  • D03 - 부과결과 정보
  • D04 - 부과취소 정보
  • D05 - 수납정보
  • D06 - 감액정보

위 요청에 대한 응답을 제공하려면

  • SSL(https) 통신을 활성화하고
  • 수신 URL을 지방 세외수입 개별시스템 측에 제공한다.

SSL 활성화 설정

  • application.yml 파일의 server.ssl.enabled를 true로 설정한다.
  • 설치 위치/ssl 디렉토리의 파일들은 자체적으로 발급한 키 및 인증서들이다.
  • 필요 시 인증기관에서 키와 인증서를 발급받고 server.ssl 항목에 설정한다.

수신 URL

  • https://호스트:포트 또는 도메인/intf/lntris
  • 위 url로 수신한 요청은 헤더를 확인 후 자체 분기하여 처리한다.

시작과 종료

xit-lntris-interface를

  • 시작하려면 xit-lntris-interface.bat를 실행한다.
  • 종료하려면 xit-lntris-interface 실행 콘솔에서 Ctrl+Z키를 누른다.

xit-lntris-interface.bat는

  • 디폴트로 현재 로그파일(xit-lntris-interface.log)을 삭제하고 시작한다.
  • 기존 로그파일에 이어서 로그를 저장하려면 해당부분의 코드를 제거한다.

연계 테스트

시스템은 swagger로 테스트를 실행할 수 있다.

시스템을 테스트하려면

  • 시스템을 시작한다.
  • 웹브라우저를 시작하고, http://호스트:포트/swagger-ui/index.html 페이지를 연다.
  • 예) http://localhost:18080/swagger-ui/index.html 또는
  • SSL이 적용되었으면 https://호스트:포트/swagger-ui/index.html
  • 예) https://localhost:18080/swagger-ui/index.html
  • 테스트 하려는 업무를 클릭한다.
  • “Try it out” 버튼을 클릭하고 “Request body”에 요청정보를 입력한 후 “Execute” 버튼을 클릭한다.

전문별 테스트는 지방 세외수입 특화시스템 요청 참고