@ -85,6 +85,215 @@ public class ComparisonRemarkBuilder {
return String . format ( "%s/ %s, 115일 도래지" , StringUtil . nvl ( sggNm ) , StringUtil . nvl ( ownerNm ) ) ;
}
// ========================== 비고 상세 (RMRK_DTL) 생성 메서드 ==========================
/ * *
* 상 품 용 비 고 상 세 생 성
*
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param step1OwnerNm Step1 소 유 자 명
* @param targetChgYmd 갑 부 변 경 일 자
* @param step4OwnerNm Step4 소 유 자 명 ( 명 의 이 전 시 점 )
* @return 비 고 상 세 문 자 열
* /
public static String buildProductUseRemarkDetail ( String vhclno , String inspYmd ,
String step1OwnerNm , String targetChgYmd , String step4OwnerNm ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[상품용 판정]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사일자: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
sb . append ( "검사일 기준 소유자명: " ) . append ( StringUtil . nvl ( step1OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "갑부 변경일자: " ) . append ( DateUtil . formatDateString ( targetChgYmd ) ) . append ( "\n" ) ;
sb . append ( "변경일 기준 소유자명: " ) . append ( StringUtil . nvl ( step4OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "판정근거: 검사일 기준 소유자명에 '상품용' 포함되어 있고, " ) ;
sb . append ( "갑부 상세에서 변경업무구분코드 '21'(변경등록) 레코드 확인됨" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 내 사 종 결 - 명 의 이 전 이 전 소 유 자 상 품 용 비 고 상 세 생 성
*
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param step1OwnerNm Step1 소 유 자 명
* @param targetChgYmd 갑 부 명 의 이 전 일 자
* @param step4OwnerNm Step4 소 유 자 명 ( 명 의 이 전 전 소 유 자 )
* @param daysBetween 검 사 일 과 명 의 이 전 일 간 일 수 차 이
* @return 비 고 상 세 문 자 열
* /
public static String buildProductCloseLevyRemarkDetail ( String vhclno , String inspYmd ,
String step1OwnerNm , String targetChgYmd ,
String step4OwnerNm , long daysBetween ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[내사종결 - 명의이전 이전소유자 상품용 판정]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사일자: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
sb . append ( "검사일 기준 소유자명: " ) . append ( StringUtil . nvl ( step1OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "갑부 명의이전 일자: " ) . append ( DateUtil . formatDateString ( targetChgYmd ) ) . append ( "\n" ) ;
sb . append ( "명의이전 전 소유자명: " ) . append ( StringUtil . nvl ( step4OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "검사일~명의이전일 일수: " ) . append ( daysBetween ) . append ( "일\n" ) ;
sb . append ( "판정근거: 검사일 기준 소유자명에 '상품용' 미포함이나, " ) ;
sb . append ( "갑부 상세에서 변경업무구분코드 '11'(명의이전) 레코드의 이전 소유자가 '상품용'이고, " ) ;
sb . append ( "명의이전일이 검사일로부터 31일 이내임" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 내 사 종 결 - 명 의 이 전 비 고 상 세 생 성
*
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param step1OwnerNm Step1 소 유 자 명
* @param targetChgYmd 갑 부 명 의 이 전 일 자
* @param step4OwnerNm Step4 소 유 자 명 ( 명 의 이 전 전 소 유 자 )
* @param daysBetween 검 사 일 과 명 의 이 전 일 간 일 수 차 이
* @return 비 고 상 세 문 자 열
* /
public static String buildOwnerChangeRemarkDetail ( String vhclno , String inspYmd ,
String step1OwnerNm , String targetChgYmd ,
String step4OwnerNm , long daysBetween ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[내사종결 - 명의이전 판정]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사일자: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
sb . append ( "검사일 기준 소유자명: " ) . append ( StringUtil . nvl ( step1OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "갑부 명의이전 일자: " ) . append ( DateUtil . formatDateString ( targetChgYmd ) ) . append ( "\n" ) ;
sb . append ( "명의이전 전 소유자명: " ) . append ( StringUtil . nvl ( step4OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "검사일~명의이전일 일수: " ) . append ( daysBetween ) . append ( "일\n" ) ;
sb . append ( "판정근거: 검사일 기준 소유자와 명의이전 전 소유자가 동일하고, " ) ;
sb . append ( "명의이전일이 검사일로부터 31일 이내임" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 날 짜 수 정 후 부 과 - 명 의 이 전 이 전 소 유 자 상 품 용 비 고 상 세 생 성
*
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param step1OwnerNm Step1 소 유 자 명
* @param targetChgYmd 갑 부 명 의 이 전 일 자
* @param step4OwnerNm Step4 소 유 자 명 ( 명 의 이 전 전 소 유 자 )
* @param daysBetween 검 사 일 과 명 의 이 전 일 간 일 수 차 이
* @return 비 고 상 세 문 자 열
* /
public static String buildProductLevyOver31RemarkDetail ( String vhclno , String inspYmd ,
String step1OwnerNm , String targetChgYmd ,
String step4OwnerNm , long daysBetween ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[날짜수정후부과 - 명의이전 이전소유자 상품용 판정]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사일자: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
sb . append ( "검사일 기준 소유자명: " ) . append ( StringUtil . nvl ( step1OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "갑부 명의이전 일자: " ) . append ( DateUtil . formatDateString ( targetChgYmd ) ) . append ( "\n" ) ;
sb . append ( "명의이전 전 소유자명: " ) . append ( StringUtil . nvl ( step4OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "검사일~명의이전일 일수: " ) . append ( daysBetween ) . append ( "일\n" ) ;
sb . append ( "판정근거: 검사일 기준 소유자명에 '상품용' 미포함이나, " ) ;
sb . append ( "갑부 상세에서 변경업무구분코드 '11'(명의이전) 레코드의 이전 소유자가 '상품용'이고, " ) ;
sb . append ( "명의이전일이 검사일로부터 31일 초과함 (부과일자 수정 필요)" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 날 짜 수 정 후 부 과 - 명 의 이 전 비 고 상 세 생 성
*
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param step1OwnerNm Step1 소 유 자 명
* @param targetChgYmd 갑 부 명 의 이 전 일 자
* @param step4OwnerNm Step4 소 유 자 명 ( 명 의 이 전 전 소 유 자 )
* @param daysBetween 검 사 일 과 명 의 이 전 일 간 일 수 차 이
* @return 비 고 상 세 문 자 열
* /
public static String buildOwnerLevyOver31RemarkDetail ( String vhclno , String inspYmd ,
String step1OwnerNm , String targetChgYmd ,
String step4OwnerNm , long daysBetween ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[날짜수정후부과 - 명의이전 판정]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사일자: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
sb . append ( "검사일 기준 소유자명: " ) . append ( StringUtil . nvl ( step1OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "갑부 명의이전 일자: " ) . append ( DateUtil . formatDateString ( targetChgYmd ) ) . append ( "\n" ) ;
sb . append ( "명의이전 전 소유자명: " ) . append ( StringUtil . nvl ( step4OwnerNm ) ) . append ( "\n" ) ;
sb . append ( "검사일~명의이전일 일수: " ) . append ( daysBetween ) . append ( "일\n" ) ;
sb . append ( "판정근거: 검사일 기준 소유자와 명의이전 전 소유자가 동일하고, " ) ;
sb . append ( "명의이전일이 검사일로부터 31일 초과함 (부과일자 수정 필요)" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 이 첩 비 고 상 세 생 성 - Case 이 첩 - 1 ( 검 사 일 사 용 본 거 지 )
*
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param ownerNm 소 유 자 명
* @param usgsrhldStdgCd 사 용 본 거 지 법 정 동 코 드
* @param sggNm 시 군 구 명
* @param userOrgCd 사 용 자 조 직 코 드
* @return 비 고 상 세 문 자 열
* /
public static String buildTransferCase1RemarkDetail ( String vhclno , String inspYmd ,
String ownerNm , String usgsrhldStdgCd ,
String sggNm , String userOrgCd ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[이첩 판정 - 검사일 사용본거지]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사일자: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
sb . append ( "소유자명: " ) . append ( StringUtil . nvl ( ownerNm ) ) . append ( "\n" ) ;
sb . append ( "사용본거지법정동코드: " ) . append ( StringUtil . nvl ( usgsrhldStdgCd ) ) . append ( "\n" ) ;
sb . append ( "시군구명: " ) . append ( StringUtil . nvl ( sggNm ) ) . append ( "\n" ) ;
sb . append ( "현재 사용자 조직코드: " ) . append ( StringUtil . nvl ( userOrgCd ) ) . append ( "\n" ) ;
sb . append ( "판정근거: DAYCNT가 115일 이하이고, " ) ;
sb . append ( "검사일 기준 사용본거지법정동코드 앞 4자리가 현재 사용자 조직코드 앞 4자리와 불일치하여 이첩 대상임" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 이 첩 비 고 상 세 생 성 - Case 이 첩 - 2 ( 115 일 도 래 지 )
*
* @param vhclno 차 량 번 호
* @param inspEndYmd 검 사 종 료 일 자
* @param ownerNm 소 유 자 명
* @param usgsrhldStdgCd 사 용 본 거 지 법 정 동 코 드
* @param sggNm 시 군 구 명
* @param userOrgCd 사 용 자 조 직 코 드
* @param daycnt 일 수
* @return 비 고 상 세 문 자 열
* /
public static String buildTransferCase2RemarkDetail ( String vhclno , String inspEndYmd ,
String ownerNm , String usgsrhldStdgCd ,
String sggNm , String userOrgCd , String daycnt ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "[이첩 판정 - 115일 도래지]\n" ) ;
sb . append ( "차량번호: " ) . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
sb . append ( "검사종료일자: " ) . append ( DateUtil . formatDateString ( inspEndYmd ) ) . append ( "\n" ) ;
sb . append ( "소유자명: " ) . append ( StringUtil . nvl ( ownerNm ) ) . append ( "\n" ) ;
sb . append ( "DAYCNT: " ) . append ( StringUtil . nvl ( daycnt ) ) . append ( "일\n" ) ;
sb . append ( "사용본거지법정동코드: " ) . append ( StringUtil . nvl ( usgsrhldStdgCd ) ) . append ( "\n" ) ;
sb . append ( "시군구명: " ) . append ( StringUtil . nvl ( sggNm ) ) . append ( "\n" ) ;
sb . append ( "현재 사용자 조직코드: " ) . append ( StringUtil . nvl ( userOrgCd ) ) . append ( "\n" ) ;
sb . append ( "판정근거: DAYCNT가 115일 초과이고, " ) ;
sb . append ( "검사종료일+115일 기준 사용본거지법정동코드 앞 4자리가 현재 사용자 조직코드 앞 4자리와 불일치하여 이첩 대상임" ) ;
return truncateToMaxLength ( sb . toString ( ) ) ;
}
/ * *
* 문 자 열 최 대 길 이 제 한 ( 한 글 3 바 이 트 기 준 약 1300 자 )
*
* @param str 원 본 문 자 열
* @return 제 한 된 문 자 열
* /
private static String truncateToMaxLength ( String str ) {
if ( str = = null ) {
return "" ;
}
// 4000바이트 / 3(한글) = 약 1333자, 여유있게 1300자로 제한
if ( str . length ( ) > 1300 ) {
return str . substring ( 0 , 1297 ) + "..." ;
}
return str ;
}
/ * *
* 등 록 원 부 갑 부 레 코 드 상 세 정 보 생 성
*