다시 정리중...

main
박성영 3 weeks ago
parent 8c0899a0d1
commit 7ccd94a93d

@ -3,30 +3,14 @@
## 개요
자동차 과태료 부과 대상을 검증하기 위한 비교 로직 정의서입니다.
CarFfnlgTrgtServiceImpl.compareWithApi 메소드안에 해당 로직이 들어가야함
기존에 사용하던 비교로직 서비스 : src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/ComparisonServiceImpl.java
그러나 이젠 아예 비교로직이 틀어져서 compareWithApi 메소드 포함, ComparisonServiceImpl 서비스 자체를 처음부터 다시 개발해도 무방.
기존꺼 활용하기보다는 아예 재구축 검토
### 기본 설정
- 비교로직에 사용되는 API는 ExternalVehicleApiServiceImpl.getBasicInfo, getLedgerInfo 호출!!
- **API 선택**: 각 api별 YML flag 값에 따라 구/신 API 호출 결정
- **통합 모델**: 구/신 API 응답을 통일된 model object로 처리
- 구 API: 자동차기본정보 API
- 신 API: 자동차기본정보 API, 자동차등록원부(갑)
- **통합 오브젝트**: 자동차기본정보(구, 신)만 필요
- 자동차등록원부(갑) 이 신규 api 만 되도록 변경되면서 구조 필드 등 변경됨
D:\workspace\git\VMIS-interface\src\main\java\com\vmis\interfaceapp\model\ledger\NewLedgerRequest.java
D:\workspace\git\VMIS-interface\src\main\java\com\vmis\interfaceapp\model\ledger\NewLedgerResponse.java
- 외부호출 url 변경 : /api/v1/vehicles/old-basic, /api/v1/vehicles/new-basic, /api/v1/vehicles/new-ledger
- 외부호출되는 프로젝트 : D:\workspace\git\VMIS-interface, jdk1.8 springboot 설정, profiles : prd 기준
- 외부호출되는 프로젝트에서 return 을 요청과 응답 모두 포함해서 던져주도록 변경
- ApiResponse 생성 시 txId 전달
```text
응답 예시
{
"txId": "yyyyMMddHHmmssSSS12345678",
"request": { "data": [...] },
"response": { "data": [...] }
}
```
### 처리 규칙
@ -54,7 +38,7 @@
```java
// 조건 1: 소유자명에 '상품용' 포함 여부
api.MBER_NM.contains("상품용")
tb_car_ffnlg_trgt.OWNR_NM.contains("상품용")
// 조건 2: 갑부 상세 목록에서 명의이전 이력 확인
for (LedgerRecord record : 갑부상세List) {
@ -209,3 +193,63 @@ private boolean checkTransferCondition_LegalDongMismatch(
3. **조기 종료**: 조건 충족 시 즉시 다음 차량으로 이동
4. **비고 컬럼**: 각 조건별 정해진 형식으로 기록
5. **법정동코드 길이 검증**: 최소 4자리 이상 필요
## 내가 text 로 정리한 내용
-- 1. 상품용 [자동차등록원부(갑) 필요]
----- 필요한 api 정보
1. 자동차기본정보 api 호출 [차량번호, 부과일자:검사일] -> response.차대번호, response.소유자명
2. 자동차기본정보 api 호출 [1.response.차대번호, 부과일자:오늘일자] -> response.차량번호, response.성명, response.민원인주민번호, response.민원인법정동코드
3. 자동차등록원본(갑) api 호출 [2.response.차량번호, 2.response.성명, 2.response.민원인주민번호, 2.response.민원인법정동코드]
-- 비교로직에 사용될 api response 정보
----------------------------------
1. TB_CAR_FFNLG_TRGT.검사일 기준 api 호출
2. tb_car_ffnlg_trgt.OWNR_NM like %상품용%
3. (갑부 상세(LedgerRecord) List.CHG_YMD between TB_CAR_FFNLG_TRGT.유효기간만료일 and TB_CAR_FFNLG_TRGT.검사종료일자) and (갑부 상세 List.CHANGE_JOB_SE_CODE = '11' --명의이전 코드)
4. TB_CAR_FFNLG_TRGT 비고 : 조건에 걸린 - "[상품용] 갑부정보"
-- 2. 이첩1, 2 병합로직
-- 부과기준일 구하는 부분만 다르고 나머지 법정도코드 비교로직은 동일, 대신 TB_CAR_FFNLG_TRGT 비고 컬럼에 각기 알맞는 value 값 넣어줘야함.
if(TB_CAR_FFNLG_TRGT.DAYCNT(textFile 일수) > 115){
부과기준일 = (TB_CAR_FFNLG_TRGT.검사종료일자 + 115일)
TB_CAR_FFNLG_TRGT 비고 : 조건에 걸린 - "전라남도 순천시 / 김정대, 115일 도래지, [2개의 api 법정동코드 및 법정동명]"
이첩-2
}else{
부과기준일 = (TB_CAR_FFNLG_TRGT.검사일자)
table 비고 : 조건에 걸린 - "서울시 용산구/ 이경호, 검사일사용본거지, [검사대상, 사용자 조직코드 앞 4자리 및 법정동명]"
이첩-1
}
아래는 이첩1,2 모두 공용
자동차기본정보 (부과기준일, 차량번호)api call,
// 법정동코드 유효성 검사
if (useStrnghldLegaldongCode == null || useStrnghldLegaldongCode.length() < 4) {
log.debug("[이첩][조건1] 법정동코드 없음. 차량번호: {}", vhclno);
return false;
}
// 사용자 정보 조회
SystemUserVO userInfo = userMapper.selectUser(userId);
if (userInfo == null || userInfo.getOrgCd() == null) {
log.debug("[이첩][조건1] 사용자 정보 없음. 사용자ID: {}", userId);
return false;
}
// 법정동코드 앞 4자리 vs 사용자 조직코드 앞 4자리 비교
String legalDong4 = useStrnghldLegaldongCode.substring(0, 4);
String userOrgCd = userInfo.getOrgCd();
String userOrg4 = userOrgCd.length() >= 4 ? userOrgCd.substring(0, 4) : userOrgCd;
if (legalDong4.equals(userOrg4)) {
log.debug("[이첩][조건1] 법정동코드 일치. 차량번호: {}, 법정동: {}, 조직: {}",
vhclno, legalDong4, userOrg4);
return false;
}
log.info("[이첩][조건1] 법정동코드 불일치! 차량번호: {}, 법정동: {}, 조직: {}",
vhclno, legalDong4, userOrg4);
return true;

Loading…
Cancel
Save