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());