fix: 제품시리얼 번호검색

-> 제조번호 or 시리얼번호 검색(0 ~ 299개 까지)
     -> 위 조건내에서 유효기간 조회
dev
Jonguk. Lim 4 months ago
parent 2abdd36280
commit 97b8e131fe

@ -201,29 +201,33 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
reqDto.setPg("1"); // 조회페이지 reqDto.setPg("1"); // 조회페이지
List<NimsApiDto.MnfSeqInfo> list = new ArrayList<>(); List<NimsApiDto.MnfSeqInfo> list = new ArrayList<>();
boolean isPrdValidDe = !isEmpty(reqDto.getPrdValidDe());
while (true) { while (true) {
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto); NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> curList = rslt.getResult(); List<NimsApiDto.MnfSeqInfo> curList = rslt.getResult();
if (isEmpty(curList)) break; if (isEmpty(curList)) break;
list.addAll(curList);
// 데이타 조회 결과 마지막 페이지 이거나 100건 이상인 경우 종료
if(rslt.isEndYn() || list.size() >= 200) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
// 유효기간을 기준으로 검색하면 시리얼조회건수가 많아(10000건이상인 경우등) 무한루프가 도는 것처럼 보여짐
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
boolean isPrdValidDe = !isEmpty(reqDto.getPrdValidDe());
if(isPrdValidDe) { if(isPrdValidDe) {
for (NimsApiDto.MnfSeqInfo d : curList) { List<NimsApiDto.MnfSeqInfo> tempList = new ArrayList<>();
for (NimsApiDto.MnfSeqInfo d : list) {
if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getPrdValidDe())){ if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getPrdValidDe())){
list.add(d); tempList.add(d);
} }
} }
}else{ return tempList;
list.addAll(curList);
} }
// 데이타 조회 결과 마지막 페이지 이거나 100건 이상인 경우 종료
if(rslt.isEndYn() || list.size() >= 100) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
// 올림 차순 정렬 // 올림 차순 정렬
list.sort((a, b) -> { list.sort((a, b) -> {
if (isEmpty(a.getPrdValidDe()) && isEmpty(b.getPrdValidDe())) if (isEmpty(a.getPrdValidDe()) && isEmpty(b.getPrdValidDe()))

@ -374,7 +374,7 @@ public class NimsApiRequest {
* yyyyMMdd * yyyyMMdd
*/ */
@Schema(title = "기준일자(yyyyMMdd-이후일자)", description = "기준일자(yyyyMMdd-이후일자)", example = " ") @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; private String ymd;
/** /**

Loading…
Cancel
Save