feat: add CommonCodeResolver, codes.csv and RecruitmentFeeDisclosureData companyCode mapping
All checks were successful
Deploy Tools / deploy (push) Successful in 1m24s

This commit is contained in:
jade
2026-09-17 08:53:30 +09:00
parent d2a82db6a4
commit ae8ab85016
7 changed files with 1941 additions and 284 deletions

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dat.mcc.biz.pro.converter;
import io.shinhanlife.dat.lib.util.CommonCodeResolver;
import io.shinhanlife.dat.mcc.biz.pro.dto.RecruitmentFeeDisclosureDataRequest;
import io.shinhanlife.dat.mcc.biz.pro.dto.RecruitmentFeeDisclosureDataResponse;
import io.shinhanlife.dat.mcc.infra.itrf.mci.nbt.i.io.ONBTI2370_I;
@@ -8,11 +9,30 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
/**
* @package io.shinhanlife.dat.mcc.biz.pro.converter
* @className RecruitmentFeeDisclosureDataConverter
* @description AX HUB 시스템 처리 클래스
* @author 0986406
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 0986406 최초생성
*
* </pre>
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface RecruitmentFeeDisclosureDataConverter {
// Field names differ? Add mappings like this before the method.
// @Mapping(source = "sourceField", target = "targetField")
@Mapping(target = "companyCode", expression = "java(toCompanyCode(request.getCompanyCode()))")
ONBTI2370_I toLegacyRequest(RecruitmentFeeDisclosureDataRequest request);
default String toCompanyCode(String company) {
return CommonCodeResolver.resolve("COMPANY", company);
}
RecruitmentFeeDisclosureDataRequest toRequest(ONBTI2370_I mciRequest);
RecruitmentFeeDisclosureDataResponse toResponse(ONBTI2370_O mciRes);
}

View File

@@ -6,11 +6,24 @@ import lombok.Data;
import jakarta.validation.constraints.Pattern;
/**
* @package io.shinhanlife.dat.mcc.biz.pro.dto
* @className RecruitmentFeeDisclosureDataRequest
* @description AX HUB 시스템 처리 클래스
* @author 0986406
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 0986406 최초생성
*
* </pre>
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RecruitmentFeeDisclosureDataRequest {
@Schema(description = "조회할 회사 코드 (형식: ^[0-9]{6}$) (예시: 005930, 035420)", example = "005930", requiredMode = Schema.RequiredMode.REQUIRED)
@Pattern(regexp = "^[0-9]{6}$")
@Schema(description = "조회할 회사 코드 또는 회사명 (예시: 005930, 삼성전자, NAVER, 카카오)", example = "삼성전자", requiredMode = Schema.RequiredMode.REQUIRED)
private String companyCode;
@Schema(description = "조회할 연도 (형식: ^[0-9]{4}$) (예시: 2023, 2024)", example = "2023", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@@ -0,0 +1,67 @@
package io.shinhanlife.dat.mcc.biz.pro.converter;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import io.shinhanlife.dat.mcc.biz.pro.dto.RecruitmentFeeDisclosureDataRequest;
import io.shinhanlife.dat.mcc.infra.itrf.mci.nbt.i.io.ONBTI2370_I;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
/**
* @package io.shinhanlife.dat.mcc.biz.pro.converter
* @className RecruitmentFeeDisclosureDataConverterTest
* @description AX HUB 시스템 처리 클래스
* @author 0986406
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 0986406 최초생성
*
* </pre>
*/
class RecruitmentFeeDisclosureDataConverterTest {
private final RecruitmentFeeDisclosureDataConverter converter =
Mappers.getMapper(RecruitmentFeeDisclosureDataConverter.class);
@Test
void mapsCompanyNameToLegacyCompanyCode() {
RecruitmentFeeDisclosureDataRequest request = new RecruitmentFeeDisclosureDataRequest();
request.setCompanyCode("삼성전자");
request.setYear("2024");
request.setQuarter("1");
ONBTI2370_I legacyReq = converter.toLegacyRequest(request);
assertNotNull(legacyReq);
assertEquals("005930", legacyReq.getCompanyCode());
assertEquals("2024", legacyReq.getYear());
assertEquals("1", legacyReq.getQuarter());
}
@Test
void preservesCompanyCodeWhenAlreadyNumericCode() {
RecruitmentFeeDisclosureDataRequest request = new RecruitmentFeeDisclosureDataRequest();
request.setCompanyCode("035420");
request.setYear("2024");
ONBTI2370_I legacyReq = converter.toLegacyRequest(request);
assertNotNull(legacyReq);
assertEquals("035420", legacyReq.getCompanyCode());
}
@Test
void mapsNaverAndKakao() {
RecruitmentFeeDisclosureDataRequest requestNaver = new RecruitmentFeeDisclosureDataRequest();
requestNaver.setCompanyCode("NAVER");
assertEquals("035420", converter.toLegacyRequest(requestNaver).getCompanyCode());
RecruitmentFeeDisclosureDataRequest requestKakao = new RecruitmentFeeDisclosureDataRequest();
requestKakao.setCompanyCode("카카오");
assertEquals("035720", converter.toLegacyRequest(requestKakao).getCompanyCode());
}
}