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"); // 조회페이지
List<NimsApiDto.MnfSeqInfo> list = new ArrayList<>();
boolean isPrdValidDe = !isEmpty(reqDto.getPrdValidDe());
while (true) {
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> 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<NimsApiDto.MnfSeqInfo> 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()))

@ -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;
/**

Loading…
Cancel
Save