### feat: 사용자 조직코드 기반 비교 로직 추가 및 세션 의존성 제거

- **사용자 조직코드 추가**
  - `ComparisonChecker` 및 `ComparisonOmChecker`의 `check` 메서드에 `userOrgCd` 매개변수 추가.
  - 세션에서 사용자 정보를 가져오던 방식 제거 후, 호출부에서 조직코드를 전달하도록 변경.

- **Checker 클래스 수정**
  - `ProductUseChecker`, `OwnerCloseWithin31Checker`, `OwnerLevyOver31Checker` 등 모든 `delay_checker` 및 `om_checker` 클래스에서 새로운 매개변수(`userOrgCd`)를 활용하는 방식으로 수정.
  - 사용자 조직코드 유효성 검사 추가.

- **세션 의존성 제거**
  - 불필요한 `SessionUtil` 및 `LoginUserVO` 관련 코드 삭제.
  - 사용자 정보의 외부 주입 방식을 통해 세션 로그인을 사용하지 않는 호출도 가능하도록 개선.

- **비교 서비스 로직 수정**
  - `ComparisonServiceImpl` 및 `ComparisonOmServiceImpl`에서 세션 기반 사용자 정보 조회 후 조직코드 추출 및 모든 관련 호출로 전달.
  - 비교 로직 유지보수성 강화.

- **기타**
  - 중복 코드 제거 및 코드 정리.
  - 주석 업데이트.
main
박성영 4 days ago
parent 9c6f16e4b2
commit edc0aa5e89

@ -1,8 +1,10 @@
package go.kr.project.carInspectionPenalty.registration.service.impl;
import egovframework.util.SessionUtil;
import go.kr.project.carInspectionPenalty.registration.model.CarFfnlgTrgtVO;
import go.kr.project.carInspectionPenalty.registration.service.ComparisonService;
import go.kr.project.carInspectionPenalty.registration.service.impl.delay_checker.*;
import go.kr.project.login.model.LoginUserVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
@ -49,50 +51,54 @@ public class ComparisonServiceImpl extends EgovAbstractServiceImpl implements Co
String vhclno = existingData.getVhclno();
log.info("========== 비교 로직 시작: {} ==========", vhclno);
// ========== 세션에서 사용자 정보 조회 ==========
LoginUserVO userInfo = SessionUtil.getLoginUser();
String userOrgCd = userInfo != null ? userInfo.getOrgCd() : null;
// ========== 1. 상품용 체크 - api-1번호출.소유자명.contains("상품용") ==========
String productUseResult = productUseChecker.check(existingData);
String productUseResult = productUseChecker.check(existingData, userOrgCd);
if (productUseResult != null) {
log.info("========== 비교 로직 종료 (상품용): {} ==========", vhclno);
return productUseResult;
}
// ========== 2. 상품용 체크 - api-1번호출.소유자명.contains("상품용-변경등록") ==========
String productUseChangeResult = productUseChnageChecker.check(existingData);
String productUseChangeResult = productUseChnageChecker.check(existingData, userOrgCd);
if (productUseChangeResult != null) {
log.info("========== 비교 로직 종료 (상품용-변경등록): {} ==========", vhclno);
return productUseChangeResult;
}
// ========== 3. 내사종결 체크 - 명의이전 이전소유자 상품용, 31일 이내 ==========
String investigationClosedByProductResult = productCloseWithin31Checker.check(existingData);
String investigationClosedByProductResult = productCloseWithin31Checker.check(existingData, userOrgCd);
if (investigationClosedByProductResult != null) {
log.info("========== 비교 로직 종료 (내사종결 - 명의이전 이전소유자 상품용, 31일 이내): {} ==========", vhclno);
return investigationClosedByProductResult;
}
// ========== 4. 내사종결 체크 - 명의이전, 31일 이내 ==========
String investigationClosedByOwnerChangeResult = ownerCloseWithin31Checker.check(existingData);
String investigationClosedByOwnerChangeResult = ownerCloseWithin31Checker.check(existingData, userOrgCd);
if (investigationClosedByOwnerChangeResult != null) {
log.info("========== 비교 로직 종료 (내사종결 - 명의이전, 31일 이내): {} ==========", vhclno);
return investigationClosedByOwnerChangeResult;
}
// ========== 5. 날짜 수정 후 부과 체크 - 명의이전 이전소유자 상품용, 31일 초과 ==========
String dateModifiedLevyByProductResult = productLevyOver31Checker.check(existingData);
String dateModifiedLevyByProductResult = productLevyOver31Checker.check(existingData, userOrgCd);
if (dateModifiedLevyByProductResult != null) {
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 - 명의이전 이전소유자, 31일 초과): {} ==========", vhclno);
return dateModifiedLevyByProductResult;
}
// ========== 6. 날짜 수정 후 부과 체크 - 명의이전, 31일 초과 ==========
String dateModifiedLevyByOwnerChangeOverResult = ownerLevyOver31Checker.check(existingData);
String dateModifiedLevyByOwnerChangeOverResult = ownerLevyOver31Checker.check(existingData, userOrgCd);
if (dateModifiedLevyByOwnerChangeOverResult != null) {
log.info("========== 비교 로직 종료 (날짜 수정 후 부과 - 명의이전, 31일 초과): {} ==========", vhclno);
return dateModifiedLevyByOwnerChangeOverResult;
}
// ========== 7. 이첩 체크 ==========
String transferResult = transferCase115DayChecker.check(existingData);
String transferResult = transferCase115DayChecker.check(existingData, userOrgCd);
if (transferResult != null) {
log.info("========== 비교 로직 종료 (이첩): {} ==========", vhclno);
return transferResult;

@ -13,7 +13,8 @@ public interface ComparisonChecker {
*
*
* @param existingData
* @param userOrgCd
* @return null ()
*/
String check(CarFfnlgTrgtVO existingData);
String check(CarFfnlgTrgtVO existingData, String userOrgCd);
}

@ -36,7 +36,7 @@ public class OwnerCloseWithin31Checker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();

@ -36,7 +36,7 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();

@ -36,7 +36,7 @@ public class ProductCloseWithin31Checker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();

@ -36,7 +36,7 @@ public class ProductLevyOver31Checker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();

@ -36,7 +36,7 @@ public class ProductUseChecker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();

@ -36,7 +36,7 @@ public class ProductUseChnageChecker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String inspYmd = existingData.getInspYmd();
String vldPrdExpryYmd = existingData.getVldPrdExpryYmd();

@ -3,7 +3,6 @@ package go.kr.project.carInspectionPenalty.registration.service.impl.delay_check
import egovframework.constant.TaskPrcsSttsConstants;
import egovframework.exception.MessageException;
import egovframework.util.DateUtil;
import egovframework.util.SessionUtil;
import go.kr.project.api.model.request.NewBasicRequest;
import go.kr.project.api.model.response.NewBasicResponse;
import go.kr.project.api.service.ExternalVehicleApiService;
@ -12,7 +11,6 @@ import go.kr.project.api.service.VmisCarLedgerFrmbkLogService;
import go.kr.project.carInspectionPenalty.registration.mapper.CarFfnlgTrgtMapper;
import go.kr.project.carInspectionPenalty.registration.model.CarFfnlgTrgtVO;
import go.kr.project.carInspectionPenalty.registration.service.impl.ComparisonRemarkBuilder;
import go.kr.project.login.model.LoginUserVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -35,7 +33,7 @@ public class TransferCase115DayChecker extends AbstractComparisonChecker {
}
@Override
public String check(CarFfnlgTrgtVO existingData) {
public String check(CarFfnlgTrgtVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
try {
@ -93,16 +91,14 @@ public class TransferCase115DayChecker extends AbstractComparisonChecker {
return null;
}
// 세션에서 사용자 정보 조회
LoginUserVO userInfo = SessionUtil.getLoginUser();
if (userInfo == null || userInfo.getOrgCd() == null) {
// 사용자 조직코드 유효성 검사
if (userOrgCd == null) {
log.debug("[{}] 사용자 정보 없음", transferType);
return null;
}
// 법정동코드 앞 4자리 vs 사용자 조직코드 앞 4자리 비교
String legalDong4 = usgsrhldStdgCd.substring(0, 4);
String userOrgCd = userInfo.getOrgCd();
String userOrg4 = userOrgCd.length() >= 4 ? userOrgCd.substring(0, 4) : userOrgCd;
if (legalDong4.equals(userOrg4)) {

@ -1,8 +1,10 @@
package go.kr.project.carInspectionPenalty.registrationOm.service.impl;
import egovframework.util.SessionUtil;
import go.kr.project.carInspectionPenalty.registrationOm.model.CarFfnlgTrgtIncmpVO;
import go.kr.project.carInspectionPenalty.registrationOm.service.ComparisonOmService;
import go.kr.project.carInspectionPenalty.registrationOm.service.impl.om_checker.*;
import go.kr.project.login.model.LoginUserVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
@ -35,22 +37,26 @@ public class ComparisonOmServiceImpl extends EgovAbstractServiceImpl implements
String levyCrtrYmd = existingData.getLevyCrtrYmd();
log.info("========== 미필 비교 로직 시작: {}, 부과일자: {} ==========", vhclno, levyCrtrYmd);
// ========== 세션에서 사용자 정보 조회 ==========
LoginUserVO userInfo = SessionUtil.getLoginUser();
String userOrgCd = userInfo != null ? userInfo.getOrgCd() : null;
// ========== 1. 상품용 체크 - api-1번호출.소유자명.contains("상품용") ==========
String productUseResult = productUseOmChecker.check(existingData);
String productUseResult = productUseOmChecker.check(existingData, userOrgCd);
if (productUseResult != null) {
log.info("========== 미필 비교 로직 종료 (상품용): {} ==========", vhclno);
return productUseResult;
}
// ========== 2. 명의이전 소유자 확인 (검사유효기간 종료일 이후 명의이전) ==========
String ownerTransferResult = ownerTransferOmChecker.check(existingData);
String ownerTransferResult = ownerTransferOmChecker.check(existingData, userOrgCd);
if (ownerTransferResult != null) {
log.info("========== 미필 비교 로직 종료 (명의이전 소유자 확인): {} ==========", vhclno);
return ownerTransferResult;
}
// ========== 3. 이첩 체크 ==========
String transferResult = transferOmChecker.check(existingData);
String transferResult = transferOmChecker.check(existingData, userOrgCd);
if (transferResult != null) {
log.info("========== 미필 비교 로직 종료 (이첩): {} ==========", vhclno);
return transferResult;

@ -14,7 +14,8 @@ public interface ComparisonOmChecker {
*
*
* @param existingData (levyCrtrYmd )
* @param userOrgCd
* @return null ()
*/
String check(CarFfnlgTrgtIncmpVO existingData);
String check(CarFfnlgTrgtIncmpVO existingData, String userOrgCd);
}

@ -52,7 +52,7 @@ public class OwnerTransferOmChecker extends AbstractComparisonOmChecker {
}
@Override
public String check(CarFfnlgTrgtIncmpVO existingData) {
public String check(CarFfnlgTrgtIncmpVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String levyCrtrYmd = existingData.getLevyCrtrYmd(); // 미필: 검사유효기간 종료일 + 146일
String inspVldPrd = existingData.getInspVldPrd(); // 검사유효기간

@ -53,7 +53,7 @@ public class ProductUseOmChecker extends AbstractComparisonOmChecker {
}
@Override
public String check(CarFfnlgTrgtIncmpVO existingData) {
public String check(CarFfnlgTrgtIncmpVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String levyCrtrYmd = existingData.getLevyCrtrYmd(); // 미필: 검사유효기간 종료일 + 146일
String inspVldPrd = existingData.getInspVldPrd(); // 검사유효기간

@ -3,7 +3,6 @@ package go.kr.project.carInspectionPenalty.registrationOm.service.impl.om_checke
import egovframework.constant.TaskPrcsSttsConstants;
import egovframework.exception.MessageException;
import egovframework.util.DateUtil;
import egovframework.util.SessionUtil;
import go.kr.project.api.model.request.NewBasicRequest;
import go.kr.project.api.model.response.NewBasicResponse;
import go.kr.project.api.service.ExternalVehicleApiService;
@ -12,7 +11,6 @@ import go.kr.project.api.service.VmisCarLedgerFrmbkLogService;
import go.kr.project.carInspectionPenalty.registrationOm.mapper.CarFfnlgTrgtIncmpMapper;
import go.kr.project.carInspectionPenalty.registrationOm.model.CarFfnlgTrgtIncmpVO;
import go.kr.project.carInspectionPenalty.registrationOm.service.impl.ComparisonOmRemarkBuilder;
import go.kr.project.login.model.LoginUserVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -46,7 +44,7 @@ public class TransferOmChecker extends AbstractComparisonOmChecker {
}
@Override
public String check(CarFfnlgTrgtIncmpVO existingData) {
public String check(CarFfnlgTrgtIncmpVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
try {
@ -150,16 +148,14 @@ public class TransferOmChecker extends AbstractComparisonOmChecker {
return null;
}
// 세션에서 사용자 정보 조회
LoginUserVO userInfo = SessionUtil.getLoginUser();
if (userInfo == null || userInfo.getOrgCd() == null) {
// 사용자 조직코드 유효성 검사
if (userOrgCd == null) {
log.info("[이첩-미필] 사용자 정보 없음");
return null;
}
// 법정동코드 앞 4자리 vs 사용자 조직코드 앞 4자리 비교
String legalDong4 = step1UsgsrhldStdgCd.substring(0, 4);
String userOrgCd = userInfo.getOrgCd();
String userOrg4 = userOrgCd.length() >= 4 ? userOrgCd.substring(0, 4) : userOrgCd;
if (legalDong4.equals(userOrg4)) {

Loading…
Cancel
Save