diff --git a/mens-batch/src/main/java/kr/xit/biz/cmm/util/CmmKakaoUtils.java b/mens-batch/src/main/java/kr/xit/biz/cmm/util/CmmKakaoUtils.java deleted file mode 100644 index 01e08ce..0000000 --- a/mens-batch/src/main/java/kr/xit/biz/cmm/util/CmmKakaoUtils.java +++ /dev/null @@ -1,47 +0,0 @@ -package kr.xit.biz.cmm.util; - -import egovframework.com.cmm.EgovMessageSource; -import kr.xit.biz.cmm.service.ICmmEnsCacheService; -import kr.xit.biz.ens.model.cmm.CmmEnsRlaybsnmDTO; -import kr.xit.core.exception.BizRuntimeException; -import kr.xit.core.spring.util.BatchSpringUtils; -import kr.xit.core.spring.util.CoreSpringUtils; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import org.apache.commons.lang3.ObjectUtils; - -/** - *
- * description : - * - * packageName : kr.xit.ens.kakao.cmm - * fileName : CmmKakaoUtils - * author : limju - * date : 2023-09-19 - * ====================================================================== - * 변경일 변경자 변경 내용 - * ---------------------------------------------------------------------- - * 2023-09-19 limju 최초 생성 - * - *- */ - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class CmmKakaoUtils { - private static final EgovMessageSource messageSource = CoreSpringUtils.getMessageSource(); - private static final ICmmEnsCacheService cacheService = BatchSpringUtils.getCmmEnsCacheService(); - - /** - * KT MMS 인증 정보 조회 - * @return - */ - public static CmmEnsRlaybsnmDTO getRlaybsnmInfo(final String signguCode, final String ffnlgCode) { - final CmmEnsRlaybsnmDTO dto = cacheService.getRlaybsnmInfoCache(signguCode, ffnlgCode); - if(ObjectUtils.isEmpty(dto)) throw BizRuntimeException.create(messageSource.getMessage("fail.api.rlaybsnm.info")); - cacheService.logCache(); - - return dto; - } - - -} diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchService.java b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchService.java index 6e4a60a..e4813b8 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchService.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchService.java @@ -1,15 +1,29 @@ package kr.xit.biz.ens.service; -import java.io.*; -import java.util.*; -import java.util.stream.Collectors; - import egovframework.com.cmm.util.EgovDateUtil; import egovframework.com.cmm.util.EgovStringUtil; -import kr.xit.biz.cmm.util.CmmKakaoUtils; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; import kr.xit.biz.common.ApiConstants; +import kr.xit.biz.ens.mapper.IEnsBatchMapper; +import kr.xit.biz.ens.model.CntcDTO; +import kr.xit.biz.ens.model.EnsDTO; import kr.xit.biz.ens.model.EnsDTO.SendKakaoTgt; import kr.xit.biz.ens.model.kakao.KkopayDocAttrDTO.Receiver; +import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO; import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkSendReq; import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkSendRequests; import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkSendResponses; @@ -17,33 +31,25 @@ import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatusRequests; import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatusResponses; import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.PropertyBulk; import kr.xit.biz.sms.service.ISmsMessageService; +import kr.xit.core.exception.BizRuntimeException; +import kr.xit.core.model.ApiResponseDTO; import kr.xit.core.spring.util.ApiWebClientUtil; +import kr.xit.core.support.utils.Checks; import kr.xit.core.support.utils.DateUtils; -import kr.xit.core.support.utils.JsonUtils; +import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; import org.egovframe.rte.fdl.cryptography.EgovPasswordEncoder; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import kr.xit.biz.ens.mapper.IEnsBatchMapper; -import kr.xit.biz.ens.model.CntcDTO; -import kr.xit.biz.ens.model.EnsDTO; -import kr.xit.core.exception.BizRuntimeException; -import kr.xit.core.model.ApiResponseDTO; -import kr.xit.core.support.utils.Checks; -import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO; -import lombok.RequiredArgsConstructor; - -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; - /** *
* description : 모바일 전자고지 배치 서비스 @@ -465,14 +471,16 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc List> apiResults = partitions.stream() .map(bulkSendList -> ApiResponseDTO.success( - apiWebClient.exchangeKko( + apiWebClient.exchange( url.toString(), HttpMethod.POST, - JsonUtils.toJson(BulkSendRequests.builder() + BulkSendRequests.builder() + .signguCode(tgtDTO.getSignguCode()) + .ffnlgCode(tgtDTO.getFfnlgCode()) .documents(bulkSendList) - .build()), + .build(), BulkSendResponses.class, - CmmKakaoUtils.getRlaybsnmInfo(tgtDTO.getSignguCode(), tgtDTO.getFfnlgCode()))) + getHeadeMap())) ) .collect(Collectors.toList()); @@ -865,14 +873,16 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc List > apiResults = partitions.stream() .map(uuids -> ApiResponseDTO.success( - apiWebClient.exchangeKko( + apiWebClient.exchange( url.toString(), HttpMethod.POST, - JsonUtils.toJson(BulkStatusRequests.builder() + BulkStatusRequests.builder() + .signguCode(reqDTO.getSignguCode()) + .ffnlgCode(reqDTO.getFfnlgCode()) .document_binder_uuids(uuids) - .build()), + .build(), BulkStatusResponses.class, - CmmKakaoUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode()))) + getHeadeMap())) ).collect(Collectors.toList()); @@ -968,4 +978,10 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc } + private Map getHeadeMap(){ + Map map = new HashMap<>(); + map.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); + //map.put(HttpHeaders.AUTHORIZATION, ""); + return map; + } } diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/epost/EPostDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/epost/EPostDTO.java new file mode 100644 index 0000000..89664f7 --- /dev/null +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/epost/EPostDTO.java @@ -0,0 +1,743 @@ +package kr.xit.biz.ens.model.epost; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import javax.validation.constraints.Size; +import kr.xit.biz.ens.model.cmm.CmmEnsRequestDTO; +import kr.xit.biz.ens.model.pplus.PplusDTO.PpAcceptRequest; +import kr.xit.biz.ens.model.pplus.PplusDTO.PpCommonResponse; +import kr.xit.core.model.IApiResponse; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.StringUtils; +import org.hibernate.validator.constraints.NotEmpty; +import org.springframework.web.multipart.MultipartFile; + +/** + * + * description : EPost DTO + * - 우편제작 접수 요청 + * Request : {@link PpAcceptRequest} + * Response : {@link PpCommonResponse} + * - 우편제작 상태 조회 + * Request : {@link PpStatusRequest} + * Response : {@link PpStatusResponse} + * packageName : kr.xit.biz.ens.model.epost + * fileName : EPostDTO + * author : limju + * date : 2023-10-04 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-10-04 limju 최초 생성 + * + *+ */ +public class EPostDTO { + /** + *+ * Postplus 우편제작 접수 요청 DTO + * Request: PpAcceptRequest + * Response: PpCommonResponse + *+ */ + @Schema(name = "EpostTraceRequest", description = "EPost 종적추적 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class EpostTraceRequest extends CmmEnsRequestDTO { + + /** + *+ * 공공데이터포털에서 발급받은 인증키(URL Encode) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "인증키", example = " ") + @Size(min = 30, max = 100, message = "apiKey는 필수 입니다.") + private String serviceKey; + + /** + *+ * 등기번호 - 13자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "등기번호", example = " ") + @Size(min = 13, max = 13, message = "등기번호는 필수 입니다(13자리)") + private MultipartFile rgist; + } + + /** + *+ * Postplus 우편제작 접수 요청 결과 DTO + * 성공 : 결과 - "OK" + *+ */ + @Schema(name = "EpostTraceResponse", description = "EPost 종적추적 요청 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class EpostTraceResponse implements IApiResponse { + + /** + *+ * API 요청 등기 번호 : 필수 - 13자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "등기번호") + private String requestRegiNo; + + /** + *+ * 응답시간 : 필수 - 20 자리 + * yyyy-mm-dd HH:mi:ss + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "응답시간") + private String responseTime; + + /** + *+ * 성공여부 : 필수 - Y|N + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "성공여부") + private String successYN; + + /** + *+ * 등기번호 : 필수 - 13자리 + * 조회된 등기번호 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "등기번호") + private String regiNo; + + /** + *+ * 보낸 사람 : 필수 - max 50 + * 발신인 명 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "보낸 사람") + private String senderName; + + /** + *+ * 보낸 날자 : 필수 - 10자리 + * 발신일자 yyyy-mm-dd + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "보낸 날자") + private String senderData; + + /** + *+ * 받는 사람 : 필수 - max 50 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "받는 사람") + private String receiveName; + + /** + *+ * 받은 날자 : 필수 - 10자리 + * 수신일자 yyyy-mm-dd + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "받은 날자") + private String receiveDate; + + /** + *+ * 배달상태: 필수 - max 10 + * 배달완로|미배달 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "배달 상태") + private String trackState; + + /** + *+ * 정렬순서 : 필수 - 1자리 + * 배송 진행 사항에 대한 정렬 순서 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "정렬 순서") + private String sortNo; + + /** + *+ * 처리일 : 필수 - 10자리 + * 배송진행 처리일 yyyy-mm-dd + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "처리일") + private String date; + + /** + *+ * 처리시간 : 필수 - 5자리 + * 배송진행 처리시간 mi:ss + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "처리 시간") + private String time; + + /** + *+ * 처리상태 : 필수 - max 10 + * 배송진행 처리상태 접수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "처리 상태") + private String status; + + + /** + *+ * 에러메세지 : max 100 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "에러메세지") + private String errorMessage; + } + + /** + *+ * Postplus 우편제작 접수 요청 Data Master DTO + *+ */ + @Schema(name = "PpAcceptReqDataMst", description = "Postplus 우편제작 접수 요청 Data master DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class PpAcceptReqDataMst { + //----------------------------------------------------------------------- + // 필수 + //----------------------------------------------------------------------- + /** + *+ * 버전 : v1.10 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "버전", example = "v1.10") + @NotEmpty(message = "버전은 필수 입니다") + private final String 버전 = "v1.10"; + + /** + *+ * 테스트여부 : default "N" - 인쇄 직전 단계까지 진행 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "테스트여부", example = "N") + @NotEmpty(message = "테스트여부는 필수 입니다(Y|N)") + private final String 테스트여부 = "N"; + + /** + *+ * 서비스 : PST - 우편, SMS - 문자, KKO - 카카오톡 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스", example = "PST") + @NotEmpty(message = "서비스 코드는 필수 입니다(PST)") + private final String 서비스 = "PST"; + + /** + *+ * 연계식별키 : 사용자 지정 unique key + * max : 40byte + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "연계식별키", example = " ") + @Size(min = 5, max = 40, message = "연계식별키는 필수입니다(max:40)") + private String 연계식별키; + + /** + *+ * 봉투 : 소봉투|대봉투|접착시|엽서 + * 소봉투/대봉투는 A4(210*297) 기준 + * 접착식이 첨부파일의 경우 주소가 포함되어야 하며 '주소페이지유무' 항목이 'Y여야 합니다. + * 접착식이 템플릿의 경우는 data에 주소가 명시되어야 합니다. + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "봉투", example = "소봉투") + @NotEmpty(message = "봉투는 필수입니다(소봉투|대봉투|접착시|엽서)") + private String 봉투; + + /** + *+ * 봉투창 : 이중창|단창|무창 + * 소봉투(이중창,무창) 대봉투(단창,무창) 접착식(공백), 엽서(공백) + * 무창은 사전협의가 필요합니다. + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "봉투창", example = "이중창") + @NotEmpty(message = "봉투창은 필수입니다(이중창|단창|무창)") + private String 봉투창; + + /** + *+ * 흑백칼라 : 흑백|칼라 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "흑백칼라", example = "흑백") + @NotEmpty(message = "흑백칼라는 필수입니다(흑백|칼라)") + private String 흑백칼라; + + /** + *+ * 단면양면 : 단면|양면 + * 접착식 경우 페이지수가 2매인 경우는 양면인쇄 됩니다. + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "단면양면", example = "단면") + @NotEmpty(message = "단면양면은 필수입니다(단면|양면)") + private String 단면양면; + + /** + *+ * 배달 : 일반|등기|준등기|악일특급|선택등기 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "배달", example = "일반") + @NotEmpty(message = "배달은 필수입니다(일반|등기|준등기|악일특급|선택등기)") + private String 배달; + + /** + *+ * 템플릿출력여부 : 템플릿코드 존재시 Y + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "템플릿코드", example = "N") + @NotEmpty(message = "템플릿출력여부는 필수입니다(Y|N)") + private final String 템플릿출력여부 = StringUtils.isEmpty(this.템플릿코드) ? "N" : "Y"; + + /** + *+ * 여백생성유무 + * Y: 첨부파일 내용문을 자동으로 축소 + * 소봉투는 봉입 바코드 추가위해 왼쪽 여백 필요 + * 프린터기를 이용하여 출력하므로 상하좌우의 margin이 필요 + * - 대봉투의 경우 상 8mm, 하좌우 5mm의 margin이 필요 + * - 소봉투의 경우 상 8mm, 하우 5mm, 좌 17mm의 margin이 필요 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "여백생성유무", example = "N") + @NotEmpty(message = "여백생성유무는 필수입니다(Y|N)") + private final String 여백생성유무 = "N"; + + /** + *+ * 주소페이지유무 + * 주소페이지가 첨부파일에 포함 되어있으면 Y + * 주소페이지 생성이 필요하면 N + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "여백생성유무", example = "N") + @NotEmpty(message = "주소페이지유무는 필수입니다(Y|N)") + private final String 주소페이지유무 = "N"; + + /** + *+ * 맞춤자제유무 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "맞춤자제유무", example = "N") + @NotEmpty(message = "맞춤자제유무는 필수입니다(Y|N)") + private final String 맞춤자제유무 = "N"; + + /** + *+ * 메일머지유무 + * Y 일경우 템플릿코드 필수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "메일머지유무", example = "N") + @NotEmpty(message = "메일머지유무는 필수입니다(Y|N)") + private final String 메일머지유무 = "N"; + + /** + *+ * 동봉물유무 + * Y 일경우 템플릿코드 필수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "동봉물유무", example = "N") + @NotEmpty(message = "동봉물유무는 필수입니다(Y|N)") + private final String 동봉물유무 = "N"; + + /** + *+ * 반송여부 + * 반송불필요: N + * 반송필요: Y (반송요금 별도 협의후 이용) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "반송여부유무", example = "N") + @NotEmpty(message = "반송여부는 필수입니다(Y|N)") + //private final String 반송여부 = "N"; + private final String[] 반송여부 = new String[]{"Y", "N"}; + + /** + *+ * 스테이플러유무 + * 협의 후 사용 가능합니다. + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "스테이플러유무", example = "N") + @NotEmpty(message = "스테이플러유무는 필수입니다(Y|N)") + private final String 스테이플러유무 = "N"; + + /** + *+ * 발송인명 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송인명", example = "포스토피아") + @NotEmpty(message = "발송인명은 필수입니다") + private String 발송인명; + + /** + *+ * 발송인우편번호 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송인우편번호", example = "05048") + @NotEmpty(message = "발송인우편번호는 필수입니다") + private String 발송인우편번호; + + /** + *+ * 발송인주소 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송인주소", example = "서울특별시 광진구 강변로역2") + @NotEmpty(message = "발송인주소는 필수입니다") + private String 발송인주소; + + /** + *+ * 발송인상세주소 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송인상세주소", example = "구의동, 서울광진우체국") + @NotEmpty(message = "발송인상세주소는 필수입니다") + private String 발송인상세주소; + //----------------------------------------------------------------------- + + /** + *+ * 템플릿코드 : 고객협의 후 포스토피아에서 템플릿 설정, 발급 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "템플릿코드", example = " ") + private String 템플릿코드; + + /** + *+ * 수취인수 + * 미입력시 주소록개수 참조 + * 입력시 주소록개수와 같을시만 발송 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수취인수", example = " ") + private Integer 수취인수; + + /** + *+ * 동봉물페이지수 + * 동봉물 존재시 동봉물의 페이지수 기재 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "동봉물페이지수", example = " ") + private Integer 동봉물페이지수; + + /** + *+ * 로고 파일 + * 미입력시 로고가 없거나 템플릿에 포함되어 있음 + * 협의 후 사용 가능합니다. + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "로고파일", example = " ") + private String 로고파일; + + /** + *+ * 발송인전화번호 + * 준등기/등기/익일특급/선택등기 발송시 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발송인전화번호", example = "010-XXXX-XXXX") + private String 발송인전화번호; + } + + /** + *+ * Postplus 우편제작 접수 요청 Data Detail DTO + *+ */ + @Schema(name = "PpAcceptReqDataDtl", description = "Postplus 우편제작 접수 요청 Data detail DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class PpAcceptReqDataDtl { + //----------------------------------------------------------------------- + // 필수 + //----------------------------------------------------------------------- + /** + *+ * 순번 : "1" 부터 시작 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "순번", example = "1") + @NotEmpty(message = "순번은 필수입니다") + private String 순번; + + /** + *+ * 이름 : 수취인명 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "이름", example = "홍길동") + @NotEmpty(message = "이름은 필수입니다") + private String 이름; + + /** + *+ * 우편번호 : 수취인 우편번호 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "우편번호", example = "05048") + @NotEmpty(message = "우편번호는 필수입니다") + private String 우편번호; + + /** + *+ * 주소 : 수취인 주소 + * 상세주소 포함 최대 200자 + * 상세주소를 포함하지 않는 경우 최대 100자 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "주소", example = "서울특별시 광진구 강변역로2") + @Size(min = 5, max = 200, message = "주소는 필수입니다(max:200)") + private String 주소; + + + //----------------------------------------------------------------------- + /** + *+ * 상세주소 : 수취인 주소 + * 주소에 포함된 경우 상세주소는 공백 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "상세주소", example = "서울광진우체국 B동 4층") + private String 상세주소; + + /** + *+ * 전화번호 : 수취인 전화번호(준등기/등기/익일특급/선택등기 발송시 필수) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "전화번호", example = " ") + private String 전화번호; + + /** + *+ * 첨부파일 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "첨부파일", example = " ") + private String 첨부파일; + + /** + *+ * 이미지갯수 : 수취인별 이미지파일의 개수 + * 오류시 정상 발송 불가 + * 여러 파일 첨부시 전체파일을 1개의 ZIP파일로 압축하여 pstFile로 전송 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "이미지갯수", example = " ") + private Integer 이미지갯수; + + /** + *+ * 이미지1 파일명 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "이미지1", example = " ") + private String 이미지1; + + /** + *+ * 이미지2 파일명 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "이미지2", example = " ") + private String 이미지2; + + /** + *+ * 이미지3 파일명 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "이미지3", example = " ") + private String 이미지3; + + /** + *+ * 가변 : 최대 200개 까지 + *+ */ + } + + /** + *+ * Postplus 우편제작 상태 조회 요청 DTO + * Request: PpStatusRequest + * Response: PpStatusResponse + *+ */ + @Schema(name = "PpStatusRequest", description = "Postplus 우편제작 상태 조회 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class PpStatusRequest extends CmmEnsRequestDTO { + + /** + *+ * apiKey + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "apiKey", example = " ") + @NotEmpty(message = "apiKey는 필수 입니다.") + private String apiKey; + + /** + *+ * 우편 제작 요청 연계 식별키 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "우편제작요청연계식별키", example = "TEST20230221_000001") + @NotEmpty(message = "우편 제작 요청 연계 식별키는 필수 입니다.") + private String inputCode; + } + + /** + *+ * Postplus 우편제작 상태 조회 결과 DTO + * 성공 : + *+ */ + @Schema(name = "PpStatusResponse", description = "Postplus 우편제작 상태 조회 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class PpStatusResponse extends PpCommonResponse { + //--------------------------------------------------------- + // 필수 + //--------------------------------------------------------- + /** + *+ * 신청일자 : YYYYMMDD0000 + * 우편 제작 요청 접수일 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 신청일자; + + /** + *+ * 봉투 : 소봉투|대봉투|접착시|엽서 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 봉투; + + /** + *+ * 배달 : 일반|등기|준등기|악일특급|선택등기 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 배달; + + /** + *+ * 흑백칼라 : 흑백|칼라 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 흑백칼라; + + /** + *+ * 단면양면 : 단면|양면 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 단면양면; + + /** + *+ * 발송건수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private Integer 발송건수; + + /** + *+ * 상태: 출력대기|출력|봉입|우체국접수중|제작발송완료|접수취소|확인불가 + * 확인불가 -> 일반 오류상태 msg + * 출력대기 -> 제작 전단계 + * 출력/봉입/우체국접수중 -> 제작 중 + * 제작발송완료 -> 제작 후 우체국접수, 후불결제시 과금대상 + * 접수취소 -> 제작 취소 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 상태; + + /** + *+ * 연계식별키 : 우편 제작 요청 연계 식별키 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + private String 연계식별키; + //--------------------------------------------------------- + + /** + *+ * 시작등기번호 : 등기의 경우 표기 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO) + private String 시작등기번호; + + /** + *+ * 종료등기번호 : 등기의 경우 표기 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO) + private String 종료등기번호; + } +}