From 2455ea05d2d8eb99eb8a9dfc76eb9e555097bbc5 Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Thu, 29 Feb 2024 17:19:39 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=95=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/interfaces/lntris/LntrisBean.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/cokr/xit/interfaces/lntris/LntrisBean.java b/src/main/java/cokr/xit/interfaces/lntris/LntrisBean.java index 962bf22..832f1d5 100644 --- a/src/main/java/cokr/xit/interfaces/lntris/LntrisBean.java +++ b/src/main/java/cokr/xit/interfaces/lntris/LntrisBean.java @@ -6,9 +6,23 @@ import java.util.function.Function; import cokr.xit.foundation.component.ScheduledBean; +/**연계 작업 Bean + * @author mjkhan + */ public abstract class LntrisBean extends ScheduledBean { + /**연계메시지 웹 요청자 */ protected Requestor requestor = new Requestor(); + /**상세응답 전체목록을 페이징하여 받기위한 요청을 실행한다. + * @param 요청 유형 + * @param 응답 유형 + * @param 연계메시지 유형 + * @param info 연계정보 + * @param getDetails 상세응답 목록 반환 function + * @param insertResps 상세응답 등록 function + * @param updateReq 다음 페이지에 대한 요청 수정 function + * @param start 시작 데이터 인덱스(0부터 시작) + */ protected > void pagingRequest( T info, Function> getDetails, @@ -16,13 +30,24 @@ public abstract class LntrisBean extends ScheduledBean { BiConsumer updateReq, int start ) { + R respBody = info.getTargetMessage().getBody(); + String rstCd = respBody.getLinkRstCd(), // 최초 또는 이전 조회결과 + rstMsg = respBody.getLinkRstMsg(); + log().debug("Result before request: {} {}", rstCd, rstMsg); + requestor.request(info); List details = getDetails.apply(info); int found = details.size(); boolean empty = found < 1; if (!empty) InterfaceConfig.databaseActive(() -> insertResps.accept(info, start)); - if (found < 100) return; // 페이징 사이즈 = 100 + if (found < 100) { // 페이징 사이즈 = 100 + if (empty && !isEmpty(rstCd)) { // 마지막 페이지의 조회결과가 없을 경우(전체 데이터 수 mod 페이징 사이즈 == 0 일 경우) 최초 조회결과를 설정 + respBody.setLinkRstCd(rstCd); + respBody.setLinkRstMsg(rstMsg); + } + return; + } updateReq.accept(info.getRequest(), details.get(found - 1));