From d0283ad45338caffde0e9b4c86e4f8c7472a3f2a Mon Sep 17 00:00:00 2001 From: ysCha Date: Thu, 5 Feb 2026 10:59:42 +0900 Subject: [PATCH] =?UTF-8?q?materialReader=20=ED=83=80=EC=9E=84=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EB=B0=9C=EC=83=9D=20-=20qsp.master-material-batch?= =?UTF-8?q?=20pagesize=20=EB=A1=9C=20=EB=B0=B0=EC=B9=98=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/master/MaterialConfiguration.java | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java b/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java index 25227bb3..b4e5ccb1 100644 --- a/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java +++ b/src/main/java/com/interplug/qcast/batch/master/MaterialConfiguration.java @@ -4,8 +4,11 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.interplug.qcast.biz.displayItem.DisplayItemService; import com.interplug.qcast.biz.displayItem.dto.ItemSyncResponse; import com.interplug.qcast.util.InterfaceQsp; +import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.springframework.batch.core.Job; import org.springframework.batch.core.JobExecutionListener; import org.springframework.batch.core.Step; @@ -34,6 +37,9 @@ public class MaterialConfiguration implements JobExecutionListener { @Value("${qsp.master-material-batch-url}") private String qspInterfaceUrl; + @Value("${qsp.master-material-batch-page-size:1000}") + private int pageSize; + public MaterialConfiguration(DisplayItemService displayItemService, InterfaceQsp interfaceQsp) { this.displayItemService = displayItemService; this.interfaceQsp = interfaceQsp; @@ -58,12 +64,32 @@ public class MaterialConfiguration implements JobExecutionListener { @Bean @StepScope public ListItemReader materialReader() throws Exception { - this.itemSyncList = - interfaceQsp.callApiData( - HttpMethod.GET, - qspInterfaceUrl + "?allYn=N", - null, - new TypeReference>() {}); + List aggregated = new ArrayList<>(); + int page = 1; + while (true) { + Map params = new HashMap<>(); + params.put("allYn", "N"); + params.put("page", page); + params.put("size", pageSize); + + List pageItems = + interfaceQsp.callApiData( + HttpMethod.GET, + qspInterfaceUrl, + params, + new TypeReference>() {}); + + if (pageItems == null || pageItems.isEmpty()) { + break; + } + + aggregated.addAll(pageItems); + if (pageItems.size() < pageSize) { + break; + } + page++; + } + this.itemSyncList = aggregated; return (itemSyncList != null) ? new ListItemReader<>(itemSyncList) : new ListItemReader<>(Collections.emptyList());