forked from kimhyungsik/ax_hub_mcp_tool
feat: add CommonCodeResolver, codes.csv and RecruitmentFeeDisclosureData companyCode mapping
All checks were successful
Deploy Tools / deploy (push) Successful in 1m24s
All checks were successful
Deploy Tools / deploy (push) Successful in 1m24s
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user