Compare commits

...

2 Commits

Author SHA1 Message Date
Kurt92 7ce76093c0 feat : 개발시 연계테스트를 위한 테스트 api
1. readme 추가
1 week ago
Kurt92 1346cbfdc2 feat : 개발시 연계테스트를 위한 테스트 api
1. 사전부과 테스트 api 추가
2. 컬럼 너무 많아서 맵스트럭쳐 추가
1 week ago

@ -0,0 +1,119 @@
# API-TEST
외부 연계 (차적(자망), 표지, 세외수입(부과, 수납)) 을 테스트 하기위한 모킹 프로젝트
각 연계에 대한 모킹데이터 인서트와 조회기능이 있다.
개발시 해당 프로젝트를 호출하여 비즈니스 로직을 테스트 하면 된다.
gpki라던지 헤더의 정보들은 추후에 업데이트 하도록 한다.
- 인서트 > 포스트맨으로 요청한다.
- 조회 > 개발시 local 프로퍼티에 해당 프로젝트 엔트포인트를 설정한다.
1. 차적(자망)
```
추가
[post] 211.119.124.122:8440/api/test/coverInfo/insert
body
{
["11가1111","11가2222"]
}
```
```
조회
[post] 211.119.124.122:8440/api/test/carInfo/basic
body
{
"data": [
{
"INFO_SYS_ID": "12-345",
"CHARGER_NM": "test",
"CHARGER_ID": "test",
"INFO_SYS_IP": "1.1.1.1",
"SIGUNGU_CODE": "12345",
"CNTC_INFO_CODE": "AC1_F000_76",
"CHARGER_IP": "2.2.2.2",
"record": [
{"LEVY_STDDE": "20240412",
"INQIRE_SE_CODE": "3",
"VHRNO": "12가3251",
"VIN": "string"
}
]
}
]
}
```
2. 표지
- Rest 가 아니라 Soup xml 방식이다.
```
추가
[post] 211.119.124.122:8440/api/test/coverInfo/insert
body
{
["11가1111","11가2222"]
}
// 추가의 경우 Y로 인서트한다.
// 없는경우는 주차가능대상이 아닌걸로 판단한다.
```
```
조회
[post] 211.119.124.122:8440/api/test/coverInfo
body
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<Header>
<commonHeader xmlns="http://ccais.mopas.go.kr/dh/rid/services/swsdn/DisabledParkingYn/types">
<serviceName>DisabledParkingYnService</serviceName>
<useSystemCode>ESBTEST</useSystemCode>
<certServerId>SVR1311000030</certServerId>
<transactionUniqueId>2010111020382700773722611</transactionUniqueId>
<userDeptCode>1234567</userDeptCode>
<userName>김공무</userName>
</commonHeader>
</Header>
<Body>
<getDisabledParkingYn xmlns="http://ccais.mopas.go.kr/dh/rid/services/swsdn/DisabledParkingYn/types">
<ReqOrgCd>사회보장정보원에서 발급된 코드</ReqOrgCd>
<ReqBizCd>사회보장정보원에서 발급된 코드</ReqBizCd>
<CARS_NO>11가1111</CARS_NO>
</getDisabledParkingYn>
</Body>
</Envelope>
```
3. 세외수입
세외수입의 경우 비즈니스 로직과 병행하여 업데이트를 진행하여야 할것같다.
```
사전부과 처리
[post] 211.119.124.122:8440/api/test/preLavy
TaxelseDto.Response.PreLavyBody 참고
```

@ -40,6 +40,10 @@ dependencies {
// === DB Driver ===
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
// === QueryDSL ( ) ===
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'

@ -5,6 +5,7 @@ import org.api.test.biz.taxelse.dto.TaxelseDto;
import org.api.test.biz.taxelse.service.TaxelseService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@ -16,26 +17,17 @@ public class TaxelseController {
// 사전부과
@PostMapping("/api/test/lavy")
public ResponseEntity<TaxelseDto.Response> preNoticeInsert() {
@PostMapping("/api/test/preLavy")
public ResponseEntity<TaxelseDto.Response> preNoticeInsert(@RequestBody TaxelseDto.Request.PreLavyBody req) {
TaxelseDto.Response.ResultSunapBody resultBody = TaxelseDto.Response.ResultSunapBody.builder()
.build();
TaxelseDto.Response response = TaxelseDto.Response.builder()
.state("0000")
.code("성공")
.result("정상 처리되었습니다.")
.body(resultBody)
.build();
TaxelseDto.Response res = taxelseService.preNoticeInsert(req);
return ResponseEntity.ok(response);
return ResponseEntity.ok(res);
}
// 매치정보(가상계좌)
@PostMapping("/api/test/lavy/match")
@PostMapping("/api/test/match")
public ResponseEntity<TaxelseDto.Response> matchInfoReturn() {
TaxelseDto.Response.ResultSunapBody resultBody = TaxelseDto.Response.ResultSunapBody.builder()
@ -43,10 +35,7 @@ public class TaxelseController {
.build();
TaxelseDto.Response response = TaxelseDto.Response.builder()
.state("0000")
.code("성공")
.result("정상 처리되었습니다.")
.body(resultBody)
.build();
@ -55,7 +44,7 @@ public class TaxelseController {
// 수납정보
@PostMapping("api/test/sunap")
@PostMapping("/api/test/sunap")
public ResponseEntity<TaxelseDto.Response> taxSunapInfoReturn() {
TaxelseDto.Response.ResultSunapBody resultBody = TaxelseDto.Response.ResultSunapBody.builder()
@ -63,10 +52,7 @@ public class TaxelseController {
.build();
TaxelseDto.Response response = TaxelseDto.Response.builder()
.state("0000")
.code("성공")
.result("정상 처리되었습니다.")
.body(resultBody)
.build();

@ -11,9 +11,9 @@ public class TaxelseDto {
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class RecvReq {
public static class RecvReq<T> {
private Header header;
private Body body;
private T body;
}
@Getter
@ -38,17 +38,113 @@ public class TaxelseDto {
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Body {
private String dmndSeCd;
public static class PreLavyBody {
private String linkTrgtCd; // 연계대상코드 (15)
private String sgbCd; // 자치단체코드 (7)
private String linkMngKey; // 연계관리키 (50)
private String dptCd; // 부서코드 (7)
private String rcptYr; // 접수연도 (4)
private String spacBizCd; // 특별회계사업코드 (4)
private String actSeCd; // 회계구분코드 (2)
private String rprsTxmCd; // 대표세입과목코드 (6)
private String operItemCd; // 운영항목코드 (3)
private String finScrgSeCd; // 과태료과금구분코드 (2)
private String pyrSeCd; // 납부자구분코드 (2)
private String pyrNo; // 납부자번호 (13)
private String pyrNm; // 납부자명 (200)
private String rprsPyrNo; // 대표납부자번호 (13)
private String rprsPyrNm; // 대표납부자명 (200)
private String pyrTelno; // 납부자전화번호 (30)
private String pyrMblTelno; // 납부자휴대전화번호 (30)
private String pyrEmlAddr; // 납부자이메일주소 (320)
private String pyrSttCd; // 납부자상태코드 (2)
private String pyrLotnoRoadAddrSeCd; // 납부자도로주소구분코드 (2)
private String pyrZip; // 납부자우편번호 (6)
private String pyrRoadNmCd; // 납부자도로명코드 (12)
private String pyrAddrUndgYn; // 납부자주소지하여부 (1)
private String pyrBmno; // 납부자건물본번 (5)
private String pyrBsno; // 납부자건물부번 (5)
private String pyrDongCd; // 납부자행정동코드 (10)
private String pyrMtnSeCd; // 납부자산구분코드 (2)
private String pyrBldgMngNo; // 납부자건물관리번호 (25)
private String pyrBldgNm; // 납부자건물명 (100)
private String pyrMno; // 납부자번 (4)
private String pyrSno; // 납부자후 (4)
private String pyrSpclDg; // 납부자특수동 (30)
private String pyrSpclHo; // 납부자특수호 (15)
private String pyrTong; // 납부자동 (3)
private String pyrBan; // 납부자반 (3)
private String pyrSpclAddr; // 납부자특수주소 (450)
private String pyrRoadNmAddr; // 납부자도로명주소 (300)
private String pyrRoadNmDaddr; // 납부자도로명상세주소 (300)
private String pyrRoadNmAlAddr; // 납부자도로명전체주소 (500)
private String glNm; // 물건지명 (750)
private String glLotnoRoadAddrSeCd; // 물건지도로주소구분코드 (2)
private String glZip; // 물건지우편번호 (6)
private String glRoadNmCd; // 물건지도로명코드 (12)
private String glAddrUndgYn; // 물건지주소지하여부 (1)
private String glBmno; // 물건지건물본번 (5)
private String glBsno; // 물건지건물부번 (5)
private String glStdgCd; // 물건지행정동코드 (10)
private String glDongCd; // 물건지법정동코드 (10)
private String glMtnSeCd; // 물건지산구분코드 (2)
private String glMno; // 물건지본번 (4)
private String glSno; // 물건지부번 (4)
private String glSpclDg; // 물건지특수동 (30)
private String glSpclHo; // 물건지특수호 (15)
private String glSpclAddr; // 물건지특수주소 (450)
private String glRoadNmAddr; // 물건지도로운명주소 (300)
private String glRoadNmDaddr; // 물건지도로운명상세주소 (300)
private String glRoadNmAlAddr; // 물건지도로운명전체주소 (750)
private String glLotnoAddr; // 물건지지번기본주소 (200)
private String glLotnoDaddr; // 물건지지번상세주소 (300)
private String glLotnoAlAddr; // 물건지지번전체주소 (750)
private String ivyTrgtSeCd; // 부과대상구분코드 (2)
private String regYmd; // 등록일자 (8)
private String finScrgAmt; // 과태료과징금액 (15)
private String fcltSeCd; // 시설구분코드 (5)
private String regSeCd; // 등록구분코드 (2)
private String rdtnRsnSeCd; // 감경사유구분코드 (4)
private String vhrno; // 자동차등록번호 (30)
private String mclncLabBssNm; // 조례법근거명 (450)
private String mngItemCn1; // 관리항목1 (200)
private String mngItemCn2; // 관리항목2 (200)
private String mngItemCn3; // 관리항목3 (200)
private String mngItemCn4; // 관리항목4 (200)
private String mngItemCn5; // 관리항목5 (200)
private String mngItemCn6; // 관리항목6 (200)
private String rmCn; // 비고내용 (4000)
private String rsvItem1; // 예비항목1 (200)
private String rsvItem2; // 예비항목2 (200)
private String rsvItem3; // 예비항목3 (200)
private String rsvItem4; // 예비항목4 (200)
private String rsvItem5; // 예비항목5 (200)
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class MatchBody {
private String sgbCd;
private String dptCd;
private String spacBizCd;
private String fyr;
private String actSeCd;
private String rprsTxmCd;
private String lvyNo;
private String itmSn;
private String linkTrgtCd;
private String linkMngKey;
private String finScrgAcbKey;
}
}
@ -60,21 +156,53 @@ public class TaxelseDto {
@AllArgsConstructor
@Builder
public static class Response<T> {
private String state;
private String code;
private String result;
private T body;
private Body body;
private T resVo1;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Body {
private String linkRstCd;
private String linkRstMsg;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class ResultMatchBody {
public static class LavyBody {
private String aaa;
private String sgbCd;
private String linkTrgtCd;
private String linkMngKey;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class MatchBody {
private String sgbCd;
}

@ -1,12 +1,73 @@
package org.api.test.biz.taxelse.service;
import lombok.RequiredArgsConstructor;
import org.api.test.biz.taxelse.dto.TaxelseDto;
import org.api.test.domain.Lavy;
import org.api.test.domain.LavyRepository;
import org.api.test.domain.mapper.EntityMapper;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class TaxelseService {
private final LavyRepository lavyRepository;
private final EntityMapper entityMapper;
// 사전부과
public TaxelseDto.Response preNoticeInsert(TaxelseDto.Request.PreLavyBody req) {
try {
Lavy lavy = entityMapper.toEntity(req);
lavyRepository.save(lavy);
return TaxelseDto.Response.builder()
.resVo1(
TaxelseDto.Response.LavyBody.builder()
.sgbCd(req.getSgbCd())
.linkTrgtCd(req.getLinkTrgtCd())
.linkMngKey(req.getLinkMngKey())
.build()
)
.body(
TaxelseDto.Response.Body.builder()
.linkRstCd("0000")
.linkRstMsg("정상 처리되었습니다.")
.build()
)
.build();
} catch (Exception e) {
return TaxelseDto.Response.builder()
.resVo1(
TaxelseDto.Response.LavyBody.builder()
.sgbCd(req.getSgbCd())
.linkTrgtCd(req.getLinkTrgtCd())
.linkMngKey(req.getLinkMngKey())
.build()
)
.body(
TaxelseDto.Response.Body.builder()
.linkRstCd("9999")
.linkRstMsg("부과 실패")
.build()
)
.build();
}
}
// 매치정보 조회
public void matchInfoReturn() {
}
// 수납 인서트
public void insertSunap() {

@ -0,0 +1,342 @@
package org.api.test.domain;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Comment;
@Entity
@Table(name = "LAVY")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Comment("세외수입 부과 테이블")
public class Lavy {
@Id
@Column(name = "LINK_MNG_KEY", length = 50, nullable = false)
@Comment("연계관리키")
private String linkMngKey;
@Column(name = "SGB_CD", length = 7)
@Comment("자치단체코드")
private String sgbCd;
@Column(name = "LINK_TRGT_CD", length = 15)
@Comment("연계대상코드")
private String linkTrgtCd;
@Column(name = "DPT_CD", length = 7)
@Comment("부서코드")
private String dptCd;
@Column(name = "RCPT_YR", length = 4)
@Comment("접수연도")
private String rcptYr;
@Column(name = "SPAC_BIZ_CD", length = 4)
@Comment("특별회계사업코드")
private String spacBizCd;
@Column(name = "ACT_SE_CD", length = 2)
@Comment("회계구분코드")
private String actSeCd;
@Column(name = "RPRS_TXM_CD", length = 6)
@Comment("대표세입과목코드")
private String rprsTxmCd;
@Column(name = "OPER_ITEM_CD", length = 3)
@Comment("운영항목코드")
private String operItemCd;
@Column(name = "FIN_SCRG_SE_CD", length = 2)
@Comment("과태료과금구분코드")
private String finScrgSeCd;
@Column(name = "PYR_SE_CD", length = 2)
@Comment("납부자구분코드")
private String pyrSeCd;
@Column(name = "PYR_NO", length = 13)
@Comment("납부자번호")
private String pyrNo;
@Column(name = "PYR_NM", length = 200)
@Comment("납부자명")
private String pyrNm;
@Column(name = "RPRS_PYR_NO", length = 13)
@Comment("대표납부자번호")
private String rprsPyrNo;
@Column(name = "RPRS_PYR_NM", length = 200)
@Comment("대표납부자명")
private String rprsPyrNm;
@Column(name = "PYR_TELNO", length = 30)
@Comment("납부자전화번호")
private String pyrTelno;
@Column(name = "PYR_MBL_TELNO", length = 30)
@Comment("납부자휴대전화번호")
private String pyrMblTelno;
@Column(name = "PYR_EML_ADDR", length = 320)
@Comment("납부자이메일주소")
private String pyrEmlAddr;
@Column(name = "PYR_STT_CD", length = 2)
@Comment("납부자상태코드")
private String pyrSttCd;
@Column(name = "PYR_LOTNO_ROAD_ADDR_SE_CD", length = 2)
@Comment("납부자도로주소구분코드")
private String pyrLotnoRoadAddrSeCd;
@Column(name = "PYR_ZIP", length = 6)
@Comment("납부자우편번호")
private String pyrZip;
@Column(name = "PYR_ROAD_NM_CD", length = 12)
@Comment("납부자도로명코드")
private String pyrRoadNmCd;
@Column(name = "PYR_ADDR_UNDG_YN", length = 1)
@Comment("납부자주소지하여부")
private String pyrAddrUndgYn;
@Column(name = "PYR_BMNO", length = 5)
@Comment("납부자건물본번")
private String pyrBmno;
@Column(name = "PYR_BSNO", length = 5)
@Comment("납부자건물부번")
private String pyrBsno;
@Column(name = "PYR_DONG_CD", length = 10)
@Comment("납부자행정동코드")
private String pyrDongCd;
@Column(name = "PYR_MTN_SE_CD", length = 2)
@Comment("납부자산구분코드")
private String pyrMtnSeCd;
@Column(name = "PYR_BLDG_MNG_NO", length = 25)
@Comment("납부자건물관리번호")
private String pyrBldgMngNo;
@Column(name = "PYR_BLDG_NM", length = 100)
@Comment("납부자건물명")
private String pyrBldgNm;
@Column(name = "PYR_MNO", length = 4)
@Comment("납부자번")
private String pyrMno;
@Column(name = "PYR_SNO", length = 4)
@Comment("납부자후")
private String pyrSno;
@Column(name = "PYR_SPCL_DG", length = 30)
@Comment("납부자특수동")
private String pyrSpclDg;
@Column(name = "PYR_SPCL_HO", length = 15)
@Comment("납부자특수호")
private String pyrSpclHo;
@Column(name = "PYR_TONG", length = 3)
@Comment("납부자동")
private String pyrTong;
@Column(name = "PYR_BAN", length = 3)
@Comment("납부자반")
private String pyrBan;
@Column(name = "PYR_SPCL_ADDR", length = 450)
@Comment("납부자특수주소")
private String pyrSpclAddr;
@Column(name = "PYR_ROAD_NM_ADDR", length = 300)
@Comment("납부자도로명주소")
private String pyrRoadNmAddr;
@Column(name = "PYR_ROAD_NM_DADDR", length = 300)
@Comment("납부자도로명상세주소")
private String pyrRoadNmDaddr;
@Column(name = "PYR_ROAD_NM_AL_ADDR", length = 500)
@Comment("납부자도로명전체주소")
private String pyrRoadNmAlAddr;
@Column(name = "GL_NM", length = 750)
@Comment("물건지명")
private String glNm;
@Column(name = "GL_LOTNO_ROAD_ADDR_SE_CD", length = 2)
@Comment("물건지도로주소구분코드")
private String glLotnoRoadAddrSeCd;
@Column(name = "GL_ZIP", length = 6)
@Comment("물건지우편번호")
private String glZip;
@Column(name = "GL_ROAD_NM_CD", length = 12)
@Comment("물건지도로명코드")
private String glRoadNmCd;
@Column(name = "GL_ADDR_UNDG_YN", length = 1)
@Comment("물건지주소지하여부")
private String glAddrUndgYn;
@Column(name = "GL_BMNO", length = 5)
@Comment("물건지건물본번")
private String glBmno;
@Column(name = "GL_BSNO", length = 5)
@Comment("물건지건물부번")
private String glBsno;
@Column(name = "GL_STDG_CD", length = 10)
@Comment("물건지행정동코드")
private String glStdgCd;
@Column(name = "GL_DONG_CD", length = 10)
@Comment("물건지법정동코드")
private String glDongCd;
@Column(name = "GL_MTN_SE_CD", length = 2)
@Comment("물건지산구분코드")
private String glMtnSeCd;
@Column(name = "GL_MNO", length = 4)
@Comment("물건지본번")
private String glMno;
@Column(name = "GL_SNO", length = 4)
@Comment("물건지부번")
private String glSno;
@Column(name = "GL_SPCL_DG", length = 30)
@Comment("물건지특수동")
private String glSpclDg;
@Column(name = "GL_SPCL_HO", length = 15)
@Comment("물건지특수호")
private String glSpclHo;
@Column(name = "GL_SPCL_ADDR", length = 450)
@Comment("물건지특수주소")
private String glSpclAddr;
@Column(name = "GL_ROAD_NM_ADDR", length = 300)
@Comment("물건지도로운명주소")
private String glRoadNmAddr;
@Column(name = "GL_ROAD_NM_DADDR", length = 300)
@Comment("물건지도로운명상세주소")
private String glRoadNmDaddr;
@Column(name = "GL_ROAD_NM_AL_ADDR", length = 750)
@Comment("물건지도로운명전체주소")
private String glRoadNmAlAddr;
@Column(name = "GL_LOTNO_ADDR", length = 200)
@Comment("물건지지번기본주소")
private String glLotnoAddr;
@Column(name = "GL_LOTNO_DADDR", length = 300)
@Comment("물건지지번상세주소")
private String glLotnoDaddr;
@Column(name = "GL_LOTNO_AL_ADDR", length = 750)
@Comment("물건지지번전체주소")
private String glLotnoAlAddr;
@Column(name = "IVY_TRGT_SE_CD", length = 2)
@Comment("부과대상구분코드")
private String ivyTrgtSeCd;
@Column(name = "REG_YMD", length = 8)
@Comment("등록일자")
private String regYmd;
@Column(name = "FIN_SCRG_AMT", length = 15)
@Comment("과태료과징금액")
private String finScrgAmt;
@Column(name = "FCLT_SE_CD", length = 5)
@Comment("시설구분코드")
private String fcltSeCd;
@Column(name = "REG_SE_CD", length = 2)
@Comment("등록구분코드")
private String regSeCd;
@Column(name = "RDTN_RSN_SE_CD", length = 4)
@Comment("감경사유구분코드")
private String rdtnRsnSeCd;
@Column(name = "VHRNO", length = 30)
@Comment("자동차등록번호")
private String vhrno;
@Column(name = "MCLNC_LAB_BSS_NM", length = 450)
@Comment("조례법근거명")
private String mclncLabBssNm;
@Column(name = "MNG_ITEM_CN1", length = 200)
@Comment("관리항목1")
private String mngItemCn1;
@Column(name = "MNG_ITEM_CN2", length = 200)
@Comment("관리항목2")
private String mngItemCn2;
@Column(name = "MNG_ITEM_CN3", length = 200)
@Comment("관리항목3")
private String mngItemCn3;
@Column(name = "MNG_ITEM_CN4", length = 200)
@Comment("관리항목4")
private String mngItemCn4;
@Column(name = "MNG_ITEM_CN5", length = 200)
@Comment("관리항목5")
private String mngItemCn5;
@Column(name = "MNG_ITEM_CN6", length = 200)
@Comment("관리항목6")
private String mngItemCn6;
@Column(name = "RM_CN", length = 4000)
@Comment("비고내용")
private String rmCn;
@Column(name = "RSV_ITEM1", length = 200)
@Comment("예비항목1")
private String rsvItem1;
@Column(name = "RSV_ITEM2", length = 200)
@Comment("예비항목2")
private String rsvItem2;
@Column(name = "RSV_ITEM3", length = 200)
@Comment("예비항목3")
private String rsvItem3;
@Column(name = "RSV_ITEM4", length = 200)
@Comment("예비항목4")
private String rsvItem4;
@Column(name = "RSV_ITEM5", length = 200)
@Comment("예비항목5")
private String rsvItem5;
}

@ -0,0 +1,6 @@
package org.api.test.domain;
import org.springframework.data.jpa.repository.JpaRepository;
public interface LavyRepository extends JpaRepository<Lavy, String> {
}

@ -0,0 +1,6 @@
package org.api.test.domain;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SunapRepository extends JpaRepository<Sunap, String> {
}

@ -0,0 +1,17 @@
package org.api.test.domain.mapper;
import org.api.test.biz.taxelse.dto.TaxelseDto;
import org.api.test.domain.Lavy;
import org.mapstruct.Mapper;
@Mapper(
componentModel = "spring"
// unmappedTargetPolicy = ReportingPolicy.ERROR // 누락 시 컴파일 에러
)
public interface EntityMapper {
// ===== LAVY =====
Lavy toEntity(TaxelseDto.Request.PreLavyBody req);
}
Loading…
Cancel
Save