테이블컬럼 재정의

비교 로직 소스 정리 진행중...
main
박성영 2 weeks ago
parent 791926ba6a
commit 36d13ac671

@ -14,15 +14,15 @@ create table tb_car_bass_matter_inqire
DMND_INQ_SE_CD varchar(1) null comment '요청 조회 구분 코드',
DMND_VHRNO varchar(30) null comment '요청 자동차등록번호',
DMND_VIN varchar(17) null comment '요청 차대번호',
LINK_RSLT_CD varchar(10) null comment '연계 결과 코드',
LINK_RSLT_CD varchar(10) null comment '연계 결과 코드',
LINK_RSLT_DTL varchar(4000) null comment '연계 결과 상세',
YRIDNW varchar(4) null comment '연식',
REG_YMD varchar(10) null comment '등록일',
REG_YMD varchar(10) null comment '등록일',
ERSR_REG_SE_CD varchar(4) null comment '말소 등록 구분 코드',
ERSR_REG_SE_NM varchar(30) null comment '말소 등록 구분명',
ERSR_REG_YMD varchar(10) null comment '말소 등록일',
ERSR_REG_YMD varchar(10) null comment '말소 등록일',
REG_DTL_CD varchar(3) null comment '등록 상세 코드',
DSPLVL varchar(6) null comment '배기량',
DSPLVL varchar(10) null comment '배기량',
USGSRHLD_STDG_CD varchar(10) null comment '사용 본거지 법정동 코드',
USGSRHLD_DONG_CD varchar(10) null comment '사용 본거지 행정동 코드',
USGSRHLD_MTN_YN varchar(2) null comment '사용 본거지 산',
@ -37,7 +37,7 @@ create table tb_car_bass_matter_inqire
RPRS_OWNR_MBR_SE_CD varchar(2) null comment '대표소유자 회원 구분 코드',
RPRS_OWNR_NM varchar(75) null comment '대표소유자 성명',
RPRSV_OWNR_IDECNO varchar(100) null comment '대표소유자 회원 번호',
RPRS_OWNR_TELNO varchar(20) null comment '대표소유자 전화번호',
RPRS_OWNR_TELNO varchar(25) null comment '대표소유자 전화번호',
OWNR_STDG_CD varchar(10) null comment '소유자 법정동 코드',
OWNR_DONG_CD varchar(10) null comment '소유자 행정동 코드',
OWNR_MTN_YN varchar(2) null comment '소유자 산',
@ -58,8 +58,8 @@ create table tb_car_bass_matter_inqire
VIN varchar(17) null comment '차대번호',
ATMB_NM varchar(75) null comment '차명',
VHCL_TOTL_WT varchar(6) null comment '차량 총 중량',
VEAG_END_YMD varchar(8) null comment '차령 만료일자',
CHG_YMD varchar(8) null comment '차번호 변경시기',
VEAG_END_YMD varchar(10) null comment '차령 만료일자',
CHG_YMD varchar(10) null comment '차번호 변경시기',
CARMDL_ASORT_CD varchar(1) null comment '차종 종별 코드',
CARMDL_TYPE_CD varchar(1) null comment '차종 유형 코드',
CARMDL_SE_CD varchar(1) null comment '차종 분류 코드',
@ -67,30 +67,30 @@ create table tb_car_bass_matter_inqire
CARMDL_ASORT_NM varchar(150) null comment '차종 종별명',
CARMDL_TYPE_NM varchar(150) null comment '차종 유형명',
CARMDL_CLSF_NM varchar(150) null comment '차종 분류명',
FRST_REG_YMD varchar(10) null comment '최초 등록일',
FRST_REG_YMD varchar(10) null comment '최초 등록일',
FOM_NM varchar(75) null comment '형식',
ACQS_YMD varchar(10) null comment '취득 일자',
ACQS_END_YMD varchar(10) null comment '취득 종료일자',
FBCTN_YMD varchar(10) null comment '제작 년월일',
TRANSR_REG_YMD varchar(10) null comment '이전 등록일',
ACQS_YMD varchar(10) null comment '취득 일자',
ACQS_END_YMD varchar(10) null comment '취득 종료일자',
FBCTN_YMD varchar(10) null comment '제작 년월일',
TRANSR_REG_YMD varchar(10) null comment '이전 등록일',
SPCF_REG_STTS_CD varchar(6) null comment '제원 등록 상태 코드',
COLOR_NM varchar(75) null comment '색상명',
MRTG_CNT varchar(9) null comment '저당수',
SZR_CNT varchar(9) null comment '압류건수',
STRCT_CHG_CNT varchar(9) null comment '구조변경수',
NOPLT_CSDY_YN varchar(1) null comment '번호판 영치 여부',
NOPLT_CSDY_AVTSMT_YMD varchar(8) null comment '번호판 영치 최고일',
NOPLT_CSDY_AVTSMT_YMD varchar(10) null comment '번호판 영치 최고일',
SRC_SE_CD varchar(1) null comment '출처 구분 코드',
NOPLT_SPCFCT_CD varchar(1) null comment '번호판 규격 코드',
ACQS_AMT varchar(18) null comment '취득 금액',
INSP_VLD_PD_BGNG_YMD varchar(8) null comment '검사 유효 기간 시작일',
INSP_VLD_PD_END_YMD varchar(8) null comment '검사 유효 기간 종료일',
INSP_VLD_PD_BGNG_YMD varchar(10) null comment '검사 유효 기간 시작일',
INSP_VLD_PD_END_YMD varchar(10) null comment '검사 유효 기간 종료일',
USGSRHLD_GRC_CD varchar(4) null comment '사용 본거지 관청 코드',
RDCPCT_CNT varchar(3) null comment '승차정원수',
SPMNNO varchar(17) null comment '제원관리번호',
SPMNNO varchar(25) null comment '제원관리번호',
DRVNG_DSTNC varchar(10) null comment '주행거리',
FRST_REG_APLY_RCPT_NO varchar(25) null comment '최초 등록 접수번호',
VLNT_ERSR_PRVNTC_AVTSMT_YMD varchar(8) null comment '예고통지일',
VLNT_ERSR_PRVNTC_AVTSMT_YMD varchar(10) null comment '예고통지일',
OGNZ_NM varchar(150) null comment '등록 기관명',
PRCS_IMPRTY_RSN_CD varchar(2) null comment '처리 불가 사유 코드',
PRCS_IMPRTY_RSN_DTLS varchar(75) null comment '처리 불가 사유 명세',

@ -1,4 +1,3 @@
-- auto-generated definition
create table tb_car_ffnlg_trgt
(
CAR_FFNLG_TRGT_ID varchar(20) not null comment '자동차 과태료 대상 ID'
@ -38,4 +37,5 @@ create table tb_car_ffnlg_trgt
DEL_DT datetime null comment '삭제 일시',
DLTR varchar(11) null comment '삭제자'
)
comment '자동차 과태료 대상';
comment '자동차 과태료 대상';

@ -20,8 +20,8 @@ create table tb_car_ledger_frmbk
DMND_INQ_SE_CD varchar(1) null comment '요청 조회 구분 코드',
LINK_RSLT_CD varchar(8) null comment '연계 결과 코드',
LINK_RSLT_DTL varchar(4000) null comment '연계 결과 상세',
LEDGER_GROUP_NO varchar(10) null comment '원부 그룹 번호',
LEDGER_INDIV_NO varchar(10) null comment '원부 개별 번호',
LEDGER_GROUP_NO varchar(10) null comment '원부 그룹 번호',
LEDGER_INDIV_NO varchar(10) null comment '원부 개별 번호',
VHMNO varchar(25) null comment '차량관리번호',
VHRNO varchar(30) null comment '차량등록번호',
VIN varchar(17) null comment '차대번호',
@ -36,27 +36,27 @@ create table tb_car_ledger_frmbk
USG_SE_NM varchar(20) null comment '용도 구분명',
MTRS_FOM_NM varchar(75) null comment '원동기 형식명',
FOM_NM varchar(75) null comment '형식명',
ACQS_AMT varchar(100) null comment '취득 금액',
ACQS_AMT varchar(100) null comment '취득 금액',
REG_DTL_CD varchar(8) null comment '등록 상세 코드',
REG_DTL_NM varchar(30) null comment '등록 상세명',
FRST_REG_YMD varchar(10) null comment '최초 등록일',
VEAG_END_YMD varchar(10) null comment '차령 종료일',
FRST_REG_YMD varchar(10) null comment '최초 등록일',
VEAG_END_YMD varchar(10) null comment '차령 종료일',
YRIDNW varchar(4) null comment '연식',
SPMNNO_1 varchar(10) null comment '제원관리번호1',
SPMNNO_1 varchar(10) null comment '제원관리번호1',
SPMNNO_2 varchar(20) null comment '제원관리번호2',
FBCTN_YMD varchar(10) null comment '제작 년월일',
FBCTN_YMD varchar(10) null comment '제작 년월일',
DRVNG_DSTNC varchar(10) null comment '주행 거리',
INSP_VLD_PD_BGNG_YMD varchar(10) null comment '검사 유효 기간 시작일',
INSP_VLD_PD_END_YMD varchar(10) null comment '검사 유효 기간 종료일',
CHCK_VLD_PD_BGNG_YMD varchar(10) null comment '점검 유효 기간 시작일',
CHCK_VLD_PD_END_YMD varchar(10) null comment '점검 유효 기간 종료일',
INSP_VLD_PD_BGNG_YMD varchar(10) null comment '검사 유효 기간 시작일',
INSP_VLD_PD_END_YMD varchar(10) null comment '검사 유효 기간 종료일',
CHCK_VLD_PD_BGNG_YMD varchar(10) null comment '점검 유효 기간 시작일',
CHCK_VLD_PD_END_YMD varchar(10) null comment '점검 유효 기간 종료일',
REG_APLY_SE_NM varchar(75) null comment '등록 신청 구분명',
FRST_REG_APLY_RCPT_NO varchar(20) null comment '최초 등록 접수번호',
NOPLT_CSDY_AVTSMT_YMD varchar(10) null comment '번호판 영치 최고일',
NOPLT_CSDY_AVTSMT_YMD varchar(10) null comment '번호판 영치 최고일',
NOPLT_CSDY_YN varchar(1) null comment '번호판 영치 여부',
BSS_USE_PD_YMD varchar(30) null comment '사업용 사용 기간',
OCTHT_ERSR_PRVNTC_AVTSMT_YMD varchar(10) null comment '직권 말소 예고 통지일',
ERSR_REG_YMD varchar(10) null comment '말소 등록일',
OCTHT_ERSR_PRVNTC_AVTSMT_YMD varchar(10) null comment '직권 말소 예고 통지일',
ERSR_REG_YMD varchar(10) null comment '말소 등록일',
ERSR_REG_SE_CD varchar(4) null comment '말소 등록 구분 코드',
ERSR_REG_SE_NM varchar(200) null comment '말소 등록 구분명',
MRTG_CNT varchar(4) null comment '저당수',
@ -76,9 +76,9 @@ create table tb_car_ledger_frmbk
SPCABL_MTTR_CNT varchar(5) null comment '특기사항 건수',
USGSRHLD_DONG_NM varchar(75) null comment '사용 본거지 행정동명',
PRVNTC_CNT varchar(4) null comment '예고수',
XPORT_FLFL_YN_DCLR_YMD varchar(10) null comment '수출 이행 여부 신고일',
XPORT_FLFL_YN_DCLR_YMD varchar(10) null comment '수출 이행 여부 신고일',
ISSU_NO varchar(13) null comment '발급번호',
FRST_TRNSFR_YMD varchar(10) null comment '최초 양도일',
FRST_TRNSFR_YMD varchar(10) null comment '최초 양도일',
DRIV_SRGBTRY_IDNTF_NO varchar(20) null comment '구동축전지 식별번호',
PRCS_IMPRTY_RSN_CD varchar(2) null comment '처리 불가 사유 코드',
PRCS_IMPRTY_RSN_DTLS varchar(200) null comment '처리 불가 사유 명세',

@ -5,18 +5,18 @@ create table tb_car_ledger_frmbk_dtl
CAR_LEDGER_FRMBK_ID varchar(20) null comment '자동차 등록 원부 갑 ID',
SZR_RMV_DTL_SN varchar(2) null comment '해제여부',
CHG_TASK_SE_CD varchar(2) null comment '변경 업무 구분 코드',
MAIN_NO varchar(10) null comment '주번호',
SNO varchar(10) null comment '부번호',
MAIN_NO varchar(10) null comment '주번호',
SNO varchar(10) null comment '부번호',
SPCABL_MTTR varchar(2000) null comment '사항란',
HSHLDR_NM varchar(75) null comment '세대주명',
HSHLDR_IDECNO varchar(500) null comment '세대주개인암호화번호',
APLY_RCPT_NO varchar(25) null comment '접수번호',
VHMNO varchar(25) null comment '차량관리번호',
LEDGER_GROUP_NO varchar(10) null comment '원부 그룹 번호',
LEDGER_INDIV_NO varchar(10) null comment '원부 개별 번호',
LEDGER_GROUP_NO varchar(10) null comment '원부 그룹 번호',
LEDGER_INDIV_NO varchar(10) null comment '원부 개별 번호',
CHG_TASK_SE_NM varchar(75) null comment '변경 업무 구분명',
CHG_YMD varchar(10) null comment '변경 일자',
DTL_SN varchar(10) null comment '상세 순번',
CHG_YMD varchar(10) null comment '변경 일자',
DTL_SN varchar(10) null comment '상세 순번',
FLAG varchar(3) null comment '표기여부',
REG_DT datetime null comment '등록 일시',
RGTR varchar(11) null comment '등록자'

@ -219,7 +219,7 @@ public class StringUtil {
/**
* UTF-8 .
* 3, / 1 .
*
*
* @param str
* @return , null 0
*/
@ -227,11 +227,11 @@ public class StringUtil {
if (str == null || str.isEmpty()) {
return 0;
}
int byteLength = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
// 한글 유니코드 범위 확인
if ((c >= 0xAC00 && c <= 0xD7A3) || (c >= 0x3131 && c <= 0x318E)) {
byteLength += 3; // 한글은 3바이트
@ -239,7 +239,44 @@ public class StringUtil {
byteLength += 1; // 영문/숫자는 1바이트
}
}
return byteLength;
}
/**
* null (null )
* @param value
* @return null ,
*/
public static String nvl(String value) {
return value != null ? value : "";
}
/**
* ( 7 )
* @param idecno
* @return ( 6 *******)
*/
public static String maskIdecno(String idecno) {
if (idecno == null || idecno.length() < 7) {
return idecno != null ? idecno : "";
}
String front = idecno.substring(0, Math.min(6, idecno.length()));
return front + "*******";
}
/**
* ( StringBuilder )
* @param sb StringBuilder
* @param label
* @param value
*/
public static void appendIfNotEmpty(StringBuilder sb, String label, String value) {
if (value != null && !value.isEmpty()) {
if (sb.length() > 0) {
sb.append(", ");
}
sb.append(label).append(": ").append(value);
}
}
}

@ -0,0 +1,157 @@
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
*/
public static String buildProductUseRemarkCase1(
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");
sb.append(" - 판정: 명의이전일자가 기간 내 존재하고 검사일 소유자명과 일치");
*/
return sb.toString();
}
/**
* - Case 2 ( , )
*
* :
* (25.9.3.)
* 222283
* -
*
*
*
*
* @param step1Record Step 1 API ( )
* @param step4Record Step 4 API ( = )
* @param ledgerRecord ( )
* @param vhclno
* @param inspYmd
* @param vldPrdExpryYmd
* @param inspEndYmd
* @return
*/
public static String buildCloseProductUseRemark(
NewBasicResponse.Record step1Record,
NewBasicResponse.Record step4Record,
NewLedgerResponse.Record ledgerRecord,
String vhclno,
String inspYmd,
String vldPrdExpryYmd,
String inspEndYmd) {
// 날짜 포맷 변환 (YYYYMMDD -> YY.M.D)
String chgYmdFormatted = DateUtil.formatToShortDate(ledgerRecord.getChgYmd());
String step1OwnerName = 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()));
return sb.toString();
}
/**
*
*
* @param record
* @return
*/
public static String buildLedgerRecordDetail(NewLedgerResponse.Record record) {
if (record == null) {
return "";
}
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());
StringUtil.appendIfNotEmpty(detail, "원부개별번호", record.getLedgerIndivNo());
StringUtil.appendIfNotEmpty(detail, "상세일련번호", record.getDtlSn());
return detail.toString();
}
}

@ -4,6 +4,7 @@ import egovframework.constant.TaskPrcsSttsConstants;
import egovframework.exception.MessageException;
import egovframework.util.DateUtil;
import egovframework.util.SessionUtil;
import egovframework.util.StringUtil;
import go.kr.project.api.model.request.NewBasicRequest;
import go.kr.project.api.model.request.NewLedgerRequest;
import go.kr.project.api.model.response.NewBasicResponse;
@ -275,7 +276,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
log.info("[상품용] 모든 조건 충족! 차량번호: {}, 변경일자: {}", vhclno, targetChgYmd);
// ========== 비고 생성 ==========
String rmrk = buildProductUseRemarkCase1(
String rmrk = ComparisonRemarkBuilder.buildProductUseRemarkCase1(
step1Record, step4Record, targetRecord,
vldPrdExpryYmd, inspEndYmd
);
@ -289,7 +290,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkDtl(buildLedgerRecordDetail(targetRecord));
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
int updateCount = carFfnlgTrgtMapper.update(existingData);
@ -321,7 +322,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
* CHG_YMD <=
* CHG_YMD
* CHG_TASK_SE_CD == "11" ()
* 30
* 31
* - 3: 4 API .contains("상품용")
*
* @param existingData
@ -442,14 +443,14 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
return null;
}
// 조건: 가장 마지막 명의이전일자가 검사일의 30일 이내인지 확인
// 조건: 가장 마지막 명의이전일자가 검사일의 31일 이내인지 확인
long daysBetween = java.time.temporal.ChronoUnit.DAYS.between(latestChgDate, inspDate);
if (daysBetween < 0 || daysBetween > 30) {
log.debug("[내사종결] 명의이전일자가 검사일의 30일 이내가 아님 - 변경일자: {}, 검사일: {}, 일수차이: {}일",
if (daysBetween < 0 || daysBetween > 31) {
log.debug("[내사종결] 명의이전일자가 검사일의 31일 이내가 아님 - 변경일자: {}, 검사일: {}, 일수차이: {}일",
targetRecord.getChgYmd(), inspYmd, daysBetween);
return null;
}
log.info("[내사종결] 명의이전일자가 검사일의 30일 이내 확인 - 변경일자: {}, 검사일: {}, 일수차이: {}일",
log.info("[내사종결] 명의이전일자가 검사일의 31일 이내 확인 - 변경일자: {}, 검사일: {}, 일수차이: {}일",
targetRecord.getChgYmd(), inspYmd, daysBetween);
String targetChgYmd = targetRecord.getChgYmd();
@ -485,7 +486,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
log.info("[내사종결] 모든 조건 충족! 차량번호: {}, 변경일자: {}", vhclno, targetChgYmd);
// ========== 비고 생성 ==========
String rmrk = buildCloseProductUseRemark(
String rmrk = ComparisonRemarkBuilder.buildCloseProductUseRemark(
step1Record, step4Record, targetRecord,
vhclno, inspYmd, vldPrdExpryYmd, inspEndYmd
);
@ -499,7 +500,7 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkDtl(buildLedgerRecordDetail(targetRecord));
existingData.setCarRegFrmbkDtl(ComparisonRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
int updateCount = carFfnlgTrgtMapper.update(existingData);
@ -714,174 +715,4 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
return request;
}
/**
*
*
* @param step1Record Step 1 API ( )
* @param step4Record Step 4 API ( )
* @param ledgerRecord
* @param vldPrdExpryYmd
* @param inspEndYmd
* @return
*/
private String buildProductUseRemarkCase1(
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(nvl(step1Record.getRprsOwnrNm())).append("\n");
sb.append(" - 차대번호: ").append(nvl(step1Record.getVin())).append("\n");
// 2. 명의이전 시점 소유자 정보
sb.append("\n■ 명의이전 시점 소유자정보\n");
sb.append(" - 소유자명: ").append(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(nvl(ledgerRecord.getChgTaskSeCd())).append("\n");
//sb.append(" - 변경업무명: ").append(nvl(ledgerRecord.getChgTaskSeNm())).append("\n");
//sb.append(" - 접수번호: ").append(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");
sb.append(" - 판정: 명의이전일자가 기간 내 존재하고 검사일 소유자명과 일치");
*/
return sb.toString();
}
/**
* - Case 2 ( , )
*
* :
* (25.9.3.)
* 222283
* -
*
*
*
*
* @param step1Record Step 1 API ( )
* @param step4Record Step 4 API ( = )
* @param ledgerRecord ( )
* @param vhclno
* @param inspYmd
* @param vldPrdExpryYmd
* @param inspEndYmd
* @return
*/
private String buildCloseProductUseRemark(
NewBasicResponse.Record step1Record,
NewBasicResponse.Record step4Record,
NewLedgerResponse.Record ledgerRecord,
String vhclno,
String inspYmd,
String vldPrdExpryYmd,
String inspEndYmd) {
// 날짜 포맷 변환 (YYYYMMDD -> YY.M.D)
String chgYmdFormatted = DateUtil.formatToShortDate(ledgerRecord.getChgYmd());
String step1OwnerName = nvl(step1Record.getRprsOwnrNm());
StringBuilder sb = new StringBuilder();
// 첫 줄: 명의이전(25.9.3.) 이전소유자 상품용
sb.append("명의이전(").append(chgYmdFormatted).append(") 이전소유자 상품용").append("\n");
// 둘째 줄: 차량번호
sb.append(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()));
return sb.toString();
}
/**
* null
*/
private String nvl(String value) {
return value != null ? value : "";
}
/**
* ( 7 )
*/
private String maskIdecno(String idecno) {
if (idecno == null || idecno.length() < 7) {
return idecno != null ? idecno : "";
}
String front = idecno.substring(0, Math.min(6, idecno.length()));
return front + "*******";
}
/**
*
*/
private String buildLedgerRecordDetail(NewLedgerResponse.Record record) {
if (record == null) {
return "";
}
StringBuilder detail = new StringBuilder();
// 변경 정보
appendIfNotEmpty(detail, "변경업무구분코드", record.getChgTaskSeCd());
appendIfNotEmpty(detail, "변경업무구분명", record.getChgTaskSeNm());
appendIfNotEmpty(detail, "변경일자", DateUtil.formatDateString(record.getChgYmd()));
// 주요 정보
appendIfNotEmpty(detail, "주요번호", record.getMainNo());
appendIfNotEmpty(detail, "일련번호", record.getSno());
appendIfNotEmpty(detail, "특별사항", record.getSpcablMttr());
// 명의자 정보
appendIfNotEmpty(detail, "명의자명", record.getHshldrNm());
appendIfNotEmpty(detail, "명의자식별번호", maskIdecno(record.getHshldrIdecno()));
// 기타
appendIfNotEmpty(detail, "신청접수번호", record.getAplyRcptNo());
appendIfNotEmpty(detail, "차량관리번호", record.getVhmno());
appendIfNotEmpty(detail, "원부그룹번호", record.getLedgerGroupNo());
appendIfNotEmpty(detail, "원부개별번호", record.getLedgerIndivNo());
appendIfNotEmpty(detail, "상세일련번호", record.getDtlSn());
return detail.toString();
}
/**
* ( )
*/
private void appendIfNotEmpty(StringBuilder sb, String label, String value) {
if (value != null && !value.isEmpty()) {
if (sb.length() > 0) {
sb.append(", ");
}
sb.append(label).append(": ").append(value);
}
}
}

Loading…
Cancel
Save