diff --git a/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java b/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java index 0f3b585..6965790 100644 --- a/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java +++ b/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java @@ -201,29 +201,33 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe reqDto.setPg("1"); // 조회페이지 List list = new ArrayList<>(); - boolean isPrdValidDe = !isEmpty(reqDto.getPrdValidDe()); while (true) { NimsApiResult.Response rslt = infNimsService.getMnfSeqInfo(reqDto); List curList = rslt.getResult(); if (isEmpty(curList)) break; - - if(isPrdValidDe) { - for (NimsApiDto.MnfSeqInfo d : curList) { - if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getPrdValidDe())){ - list.add(d); - } - } - }else{ - list.addAll(curList); - } + list.addAll(curList); // 데이타 조회 결과 마지막 페이지 이거나 100건 이상인 경우 종료 - if(rslt.isEndYn() || list.size() >= 100) break; + if(rslt.isEndYn() || list.size() >= 200) break; reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1)); } + + // 유효기간을 기준으로 검색하면 시리얼조회건수가 많아(10000건이상인 경우등) 무한루프가 도는 것처럼 보여짐 + // 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리 + boolean isPrdValidDe = !isEmpty(reqDto.getPrdValidDe()); + if(isPrdValidDe) { + List tempList = new ArrayList<>(); + for (NimsApiDto.MnfSeqInfo d : list) { + if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getPrdValidDe())){ + tempList.add(d); + } + } + return tempList; + } + // 올림 차순 정렬 list.sort((a, b) -> { if (isEmpty(a.getPrdValidDe()) && isEmpty(b.getPrdValidDe())) diff --git a/src/main/java/cokr/xit/adds/inf/nims/model/NimsApiRequest.java b/src/main/java/cokr/xit/adds/inf/nims/model/NimsApiRequest.java index bd10753..0cd22ba 100644 --- a/src/main/java/cokr/xit/adds/inf/nims/model/NimsApiRequest.java +++ b/src/main/java/cokr/xit/adds/inf/nims/model/NimsApiRequest.java @@ -374,7 +374,7 @@ public class NimsApiRequest { * yyyyMMdd */ @Schema(title = "기준일자(yyyyMMdd-이후일자)", description = "기준일자(yyyyMMdd-이후일자)", example = " ") - @Pattern(regexp = "^$|"+Constants.DATE_REGX, message = "기준 일자는 8자리 입니다(yyyyMMdd)") + @Pattern(regexp = "^$|^\\d{4}((0[1-9])|(1[0-2]))(0[1-9]|[12]\\d|3[01])$", message = "기준 일자는 8자리 입니다(yyyyMMdd)") private String ymd; /**