@ -2,248 +2,87 @@ package go.kr.project.carInspectionPenalty.registration.service.impl;
import egovframework.util.DateUtil ;
import egovframework.util.StringUtil ;
import go.kr.project.api.model.response.NewBasicResponse ;
import go.kr.project.api.model.response.NewLedgerResponse ;
/ * *
* 과 태 료 대 상 비 교 비 고 ( Remark ) 생 성 유 틸 리 티 클 래 스
*
* < p > 각 비 교 로 직 별 비 고 문 자 열 을 생 성 하 는 메 서 드 를 제 공 합 니 다 . < / p >
* /
public class ComparisonRemarkBuilder {
/ * *
* 상 품 용 비 고 생 성 - Case 1
*
* @param step1Record Step 1 API 응 답 ( 검 사 일 기 준 소 유 자 명 )
* @param step4Record Step 4 API 응 답 ( 명 의 이 전 시 점 소 유 자 명 )
* @param ledgerRecord 조 건 에 맞 는 갑 부 레 코 드
* @param vldPrdExpryYmd 유 효 기 간 만 료 일
* @param inspEndYmd 검 사 종 료 일 자
* @return 비 고 문 자 열
* < p > 비 고 패 턴 : < / p >
* < ul >
* < li > 1. 상 품 용 : 상 품 용 < / li >
* < li > 2. 명 의 이 전 : 명 의 이 전 ( 25.9 .5 . ) 이 전 소 유 자 상 품 용 , 시 군 구 명 / 소 유 자 명 < / li >
* < li > 3. 이 첩 - 1 : 시 군 구 명 / 소 유 자 명 , 검 사 일 사 용 본 거 지 < / li >
* < li > 4. 이 첩 - 2 : 시 군 구 명 / 소 유 자 명 , 115 일 도 래 지 < / li >
* < / ul >
* /
public static String buildProductUseRemark (
NewBasicResponse . Record step1Record ,
NewBasicResponse . Record step4Record ,
NewLedgerResponse . Record ledgerRecord ,
String vldPrdExpryYmd ,
String inspEndYmd ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "상품용 - 상품용검사\n" ) ;
// 1. 검사일 기준 소유자 정보
sb . append ( "\n■ 검사일 기준 소유자정보\n" ) ;
sb . append ( " - 소유자명: " ) . append ( StringUtil . nvl ( step1Record . getRprsOwnrNm ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 차대번호: " ) . append ( StringUtil . nvl ( step1Record . getVin ( ) ) ) . append ( "\n" ) ;
// 2. 명의이전 시점 소유자 정보
sb . append ( "\n■ 명의이전 시점 소유자정보\n" ) ;
sb . append ( " - 소유자명: " ) . append ( StringUtil . nvl ( step4Record . getRprsOwnrNm ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 조회일자: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
// 3. 갑부 상세 정보 (명의이전 이력)
sb . append ( "\n■ 갑부 상세 (명의이전 이력)\n" ) ;
sb . append ( " - 변경일자: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 변경업무코드: " ) . append ( StringUtil . nvl ( ledgerRecord . getChgTaskSeCd ( ) ) ) . append ( "\n" ) ;
//sb.append(" - 변경업무명: ").append(StringUtil.nvl(ledgerRecord.getChgTaskSeNm())).append("\n");
//sb.append(" - 접수번호: ").append(StringUtil.nvl(ledgerRecord.getAplyRcptNo())).append("\n");
// 4. 비교 기간
//sb.append("\n■ 비교 기간\n");
//sb.append(" - 유효기간만료일: ").append(DateUtil.formatDateString(vldPrdExpryYmd)).append("\n");
//sb.append(" - 검사종료일자: ").append(DateUtil.formatDateString(inspEndYmd)).append("\n");
return sb . toString ( ) ;
}
public class ComparisonRemarkBuilder {
/ * *
* 상 품 용 - 변 경 등 록 비 고 생 성
* 상 품 용 비 고 생 성
* 비 고 형 식 : 상 품 용
*
* @param step1Record Step 1 API 응 답 ( 검 사 일 기 준 소 유 자 명 )
* @param step4Record Step 4 API 응 답 ( 변 경 등 록 시 점 소 유 자 명 )
* @param ledgerRecord 조 건 에 맞 는 갑 부 레 코 드 ( 변 경 등 록 레 코 드 )
* @param vldPrdExpryYmd 유 효 기 간 만 료 일
* @param inspEndYmd 검 사 종 료 일 자
* @return 비 고 문 자 열
* /
public static String buildProductUseChangeRemark (
NewBasicResponse . Record step1Record ,
NewBasicResponse . Record step4Record ,
NewLedgerResponse . Record ledgerRecord ,
String vldPrdExpryYmd ,
String inspEndYmd ) {
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( "상품용 - 변경등록\n" ) ;
// 1. 검사일 기준 소유자 정보
sb . append ( "\n■ 검사일 기준 소유자정보\n" ) ;
sb . append ( " - 소유자명: " ) . append ( StringUtil . nvl ( step1Record . getRprsOwnrNm ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 차대번호: " ) . append ( StringUtil . nvl ( step1Record . getVin ( ) ) ) . append ( "\n" ) ;
// 2. 변경등록 시점 소유자 정보
sb . append ( "\n■ 변경등록 시점 소유자정보\n" ) ;
sb . append ( " - 소유자명: " ) . append ( StringUtil . nvl ( step4Record . getRprsOwnrNm ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 조회일자: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
// 3. 갑부 상세 정보 (변경등록 이력)
sb . append ( "\n■ 갑부 상세 (변경등록 이력)\n" ) ;
sb . append ( " - 변경일자: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 변경업무코드: " ) . append ( StringUtil . nvl ( ledgerRecord . getChgTaskSeCd ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 변경업무명: " ) . append ( StringUtil . nvl ( ledgerRecord . getChgTaskSeNm ( ) ) ) . append ( "\n" ) ;
sb . append ( " - 특별사항: " ) . append ( StringUtil . nvl ( ledgerRecord . getSpcablMttr ( ) ) ) . append ( "\n" ) ;
// 4. 비교 기간
//sb.append("\n■ 비교 기간\n");
//sb.append(" - 검사종료일자: ").append(DateUtil.formatDateString(inspEndYmd)).append("\n");
return sb . toString ( ) ;
public static String buildProductUseRemark ( ) {
return "상품용" ;
}
/ * *
* 상 품 용 비 고 생 성 - Case 2 ( 검 사 일 소 유 자 가 상 품 용 이 아 니 지 만 , 명 의 이 전 후 상 품 용 인 경 우 )
*
* 비 고 형 식 :
* 명 의 이 전 ( 25.9 .3 . ) 이 전 소 유 자 상 품 용
* 22 루 2283
* 검 사 기 간 시 작 일 자 - 종 료 일 자
* 검 사 일 일 자
* 명 의 이 전 일 자
* 상 품 용 일 자
* 명 의 이 전 이 전 소 유 자 상 품 용 비 고 생 성
* 비 고 형 식 : 명 의 이 전 ( 25.9 .5 . ) 이 전 소 유 자 상 품 용 , 시 군 구 명 / 소 유 자 명
*
* @param step1Record Step 1 API 응 답 ( 검 사 일 기 준 소 유 자 명 )
* @param step4Record Step 4 API 응 답 ( 명 의 이 전 시 점 소 유 자 명 = 상 품 용 )
* @param ledgerRecord 조 건 에 맞 는 갑 부 레 코 드 ( 명 의 이 전 레 코 드 )
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param vldPrdExpryYmd 유 효 기 간 만 료 일
* @param inspEndYmd 검 사 종 료 일 자
* @param daysBetween 일 수 차 이
* @param sggNm 시 군 구 명
* @param ownerNm 소 유 자 명
* @return 비 고 문 자 열
* /
public static String buildProductCloseLevyRemark (
NewBasicResponse . Record step1Record ,
NewBasicResponse . Record step4Record ,
NewLedgerResponse . Record ledgerRecord ,
String vhclno ,
String inspYmd ,
String vldPrdExpryYmd ,
String inspEndYmd ,
long daysBetween ) {
// 날짜 포맷 변환 (YYYYMMDD -> YY.M.D)
public static String buildProductCloseLevyRemark ( NewLedgerResponse . Record ledgerRecord ,
String sggNm , String ownerNm ) {
String chgYmdFormatted = DateUtil . formatToShortDate ( ledgerRecord . getChgYmd ( ) ) ;
String step1wnerName = StringUtil . nvl ( step1Record . getRprsOwnrNm ( ) ) ;
StringBuilder sb = new StringBuilder ( ) ;
// 첫 줄: 명의이전(25.9.3.) 이전소유자 상품용
sb . append ( "명의이전(" ) . append ( chgYmdFormatted ) . append ( ") 이전소유자 상품용" ) . append ( "\n" ) ;
// 둘째 줄: 차량번호
sb . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
// 셋째 줄: 검사기간 시작일자 - 종료일자
sb . append ( " - 검사기간: " ) . append ( DateUtil . formatDateString ( vldPrdExpryYmd ) )
. append ( " - " ) . append ( DateUtil . formatDateString ( inspEndYmd ) ) . append ( "\n" ) ;
// 넷째 줄: 검사일 일자
sb . append ( " - 검사일: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
// 다섯째 줄: 명의이전 일자
sb . append ( " - 명의이전: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
// 여섯째 줄: 상품용 일자 (명의이전 일자와 동일)
sb . append ( " - 상품용: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
// 일곱째 줄: 일수차이
sb . append ( "일수차이: " ) . append ( daysBetween ) . append ( "일" ) ;
return sb . toString ( ) ;
return String . format ( "명의이전(%s) 이전소유자 상품용, %s/ %s" ,
chgYmdFormatted , StringUtil . nvl ( sggNm ) , StringUtil . nvl ( ownerNm ) ) ;
}
/ * *
* 명 의 이 전 비 고 생 성 ( 내 사 종 결 또 는 날 짜 수 정 후 부 과 )
* 명 의 이 전 비 고 생 성
* 비 고 형 식 : 명 의 이 전 ( 25.9 .5 . ) , 시 군 구 명 / 소 유 자 명
*
* 비 고 형 식 :
* 명 의 이 전 ( 25.9 .3 . ) 이 전 소 유 자 상 품 용
* 22 루 2283
* 검 사 기 간 시 작 일 자 - 종 료 일 자
* 검 사 일 일 자
* 명 의 이 전 일 자
* 상 품 용 일 자
*
* @param step1Record Step 1 API 응 답 ( 검 사 일 기 준 소 유 자 명 )
* @param step4Record Step 4 API 응 답 ( 명 의 이 전 시 점 소 유 자 명 = 상 품 용 )
* @param ledgerRecord 조 건 에 맞 는 갑 부 레 코 드 ( 명 의 이 전 레 코 드 )
* @param vhclno 차 량 번 호
* @param inspYmd 검 사 일 자
* @param vldPrdExpryYmd 유 효 기 간 만 료 일
* @param inspEndYmd 검 사 종 료 일 자
* @param daysBetween 일 수 차 이
* @param sggNm 시 군 구 명
* @param ownerNm 소 유 자 명
* @return 비 고 문 자 열
* /
public static String buildOwnerChangeRemark ( NewBasicResponse . Record step1Record ,
NewBasicResponse . Record step4Record ,
NewLedgerResponse . Record ledgerRecord ,
String vhclno ,
String inspYmd ,
String vldPrdExpryYmd ,
String inspEndYmd ,
long daysBetween ) {
// 날짜 포맷 변환 (YYYYMMDD -> YY.M.D)
public static String buildOwnerChangeRemark ( NewLedgerResponse . Record ledgerRecord ,
String sggNm , String ownerNm ) {
String chgYmdFormatted = DateUtil . formatToShortDate ( ledgerRecord . getChgYmd ( ) ) ;
String step1wnerName = StringUtil . nvl ( step1Record . getRprsOwnrNm ( ) ) ;
StringBuilder sb = new StringBuilder ( ) ;
// 첫 줄: 명의이전(25.9.3.) 이전소유자 상품용
sb . append ( "명의이전(" ) . append ( chgYmdFormatted ) . append ( ")" ) . append ( "\n" ) ;
// 둘째 줄: 차량번호
sb . append ( StringUtil . nvl ( vhclno ) ) . append ( "\n" ) ;
// 셋째 줄: 검사기간 시작일자 - 종료일자
sb . append ( " - 검사기간: " ) . append ( DateUtil . formatDateString ( vldPrdExpryYmd ) )
. append ( " - " ) . append ( DateUtil . formatDateString ( inspEndYmd ) ) . append ( "\n" ) ;
// 넷째 줄: 검사일 일자
sb . append ( " - 검사일: " ) . append ( DateUtil . formatDateString ( inspYmd ) ) . append ( "\n" ) ;
// 다섯째 줄: 명의이전 일자
sb . append ( " - 명의이전: " ) . append ( DateUtil . formatDateString ( ledgerRecord . getChgYmd ( ) ) ) . append ( "\n" ) ;
// 일곱째 줄: 일수차이
sb . append ( "일수차이: " ) . append ( daysBetween ) . append ( "일" ) ;
return sb . toString ( ) ;
return String . format ( "명의이전(%s), %s/ %s" ,
chgYmdFormatted , StringUtil . nvl ( sggNm ) , StringUtil . nvl ( ownerNm ) ) ;
}
/ * *
* 이 첩 비 고 생 성 - Case 이 첩 - 1 ( 검 사 일 사 용 본 거 지 )
* 비 고 형 식 : 시 군 구 명 / 소 유 자 명 , 검 사 일 사 용 본 거 지
*
* @param sggNm 시 군 구 명
* @param userOrg4 사 용 자 조 직 코 드 앞 4 자 리
* @param ownerNm 소 유 자 명
* @return 비 고 문 자 열
* /
public static String buildTransferCase1Remark ( String sggNm , String userOrg4 ) {
return String . format ( "%s, 검사일사용본거지, [사용자 조직코드 앞 4자리: %s, 법정동명: %s]" ,
sggNm , userOrg4 , sggNm ) ;
public static String buildTransferCase1Remark ( String sggNm , String ownerNm ) {
return String . format ( "%s/ %s, 검사일사용본거지" , StringUtil . nvl ( sggNm ) , StringUtil . nvl ( ownerNm ) ) ;
}
/ * *
* 이 첩 비 고 생 성 - Case 이 첩 - 2 ( 115 일 도 래 지 )
* 비 고 형 식 : 시 군 구 명 / 소 유 자 명 , 115 일 도 래 지
*
* @param sggNm 시 군 구 명
* @param legalDong4 법 정 동 코 드 앞 4 자 리
* @param ownerNm 소 유 자 명
* @return 비 고 문 자 열
* /
public static String buildTransferCase2Remark ( String sggNm , String legalDong4 ) {
return String . format ( "%s, 115일 도래지, [법정동코드: %s, 법정동명: %s]" ,
sggNm , legalDong4 , sggNm ) ;
public static String buildTransferCase2Remark ( String sggNm , String ownerNm ) {
return String . format ( "%s/ %s, 115일 도래지" , StringUtil . nvl ( sggNm ) , StringUtil . nvl ( ownerNm ) ) ;
}
/ * *
@ -259,21 +98,14 @@ public class ComparisonRemarkBuilder {
StringBuilder detail = new StringBuilder ( ) ;
// 변경 정보
StringUtil . appendIfNotEmpty ( detail , "변경업무구분코드" , record . getChgTaskSeCd ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "변경업무구분명" , record . getChgTaskSeNm ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "변경일자" , DateUtil . formatDateString ( record . getChgYmd ( ) ) ) ;
// 주요 정보
StringUtil . appendIfNotEmpty ( detail , "주요번호" , record . getMainNo ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "일련번호" , record . getSno ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "특별사항" , record . getSpcablMttr ( ) ) ;
// 명의자 정보
StringUtil . appendIfNotEmpty ( detail , "명의자명" , record . getHshldrNm ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "명의자식별번호" , StringUtil . maskIdecno ( record . getHshldrIdecno ( ) ) ) ;
// 기타
StringUtil . appendIfNotEmpty ( detail , "신청접수번호" , record . getAplyRcptNo ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "차량관리번호" , record . getVhmno ( ) ) ;
StringUtil . appendIfNotEmpty ( detail , "원부그룹번호" , record . getLedgerGroupNo ( ) ) ;