@ -21,6 +21,7 @@ import cokr.xit.adds.biz.nims.model.BizNimsResponse;
import cokr.xit.adds.biz.nims.service.BizNimsService ;
import cokr.xit.adds.core.Constants ;
import cokr.xit.adds.core.Constants.RPT_TY_CD ;
import cokr.xit.adds.core.model.ApiBaseResponse ;
import cokr.xit.adds.core.spring.exception.ApiCustomException ;
import cokr.xit.adds.core.util.ApiUtil ;
import cokr.xit.adds.inf.nims.model.NimsApiDto ;
@ -193,13 +194,55 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
}
@Override
public List < NimsApiDto . MnfSeqInfo > getMnfSeqInfo ( NimsApiRequest . MnfSeqInfoReq reqDto ) {
public ApiBaseResponse < List < NimsApiDto . MnfSeqInfo > > getMnfSeqInfo ( NimsApiRequest . MnfSeqInfoReq reqDto ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
//reqDto.setPg("1"); // 조회페이지
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
boolean isPrdValidDe = ! isEmpty ( reqDto . getT ( ) ) & & ! isEmpty ( reqDto . getPrdValidDe ( ) ) ;
List < NimsApiDto . MnfSeqInfo > list = new ArrayList < > ( ) ;
//while (true) {
NimsApiResult . Response < NimsApiDto . MnfSeqInfo > rslt = infNimsService . getMnfSeqInfo ( reqDto ) ;
List < NimsApiDto . MnfSeqInfo > curList = rslt . getResult ( ) ;
if ( isPrdValidDe ) {
for ( NimsApiDto . MnfSeqInfo d : curList ) {
if ( ! isEmpty ( d . getPrdValidDe ( ) ) & & d . getPrdValidDe ( ) . contains ( reqDto . getPrdValidDe ( ) ) ) {
list . add ( d ) ;
}
}
} else {
list . addAll ( curList ) ;
list . sort ( ( a , b ) - > {
if ( isEmpty ( a . getPrdValidDe ( ) ) & & isEmpty ( b . getPrdValidDe ( ) ) )
return 0 ;
if ( isEmpty ( a . getPrdValidDe ( ) ) )
return - 1 ;
if ( isEmpty ( b . getPrdValidDe ( ) ) )
return 1 ;
return a . getPrdValidDe ( ) . compareTo ( b . getPrdValidDe ( ) ) ;
} ) ;
}
ApiBaseResponse < List < NimsApiDto . MnfSeqInfo > > res = ApiBaseResponse . of ( list ) ;
res . setTotalCount ( rslt . getBody ( ) . getTotalCount ( ) ) ;
return res ;
}
@Override
public List < NimsApiDto . MnfSeqInfo > getMnfSeqInfo2 ( NimsApiRequest . MnfSeqInfoReq reqDto ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
reqDto . setPg ( "1" ) ; // 조회페이지
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
boolean isPrdValidDe = ! isEmpty ( reqDto . getT ( ) ) & & ! isEmpty ( reqDto . getPrdValidDe ( ) ) ;
List < NimsApiDto . MnfSeqInfo > list = new ArrayList < > ( ) ;
while ( true ) {
NimsApiResult . Response < NimsApiDto . MnfSeqInfo > rslt = infNimsService . getMnfSeqInfo ( reqDto ) ;
@ -207,37 +250,31 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
List < NimsApiDto . MnfSeqInfo > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) ) break ;
list . addAll ( curList ) ;
if ( isPrdValidDe ) {
for ( NimsApiDto . MnfSeqInfo d : curList ) {
if ( ! isEmpty ( d . getPrdValidDe ( ) ) & & d . getPrdValidDe ( ) . contains ( reqDto . getPrdValidDe ( ) ) ) {
list . add ( d ) ;
}
}
} else {
list . addAll ( curList ) ;
// 올림 차순 정렬
list . sort ( ( a , b ) - > {
if ( isEmpty ( a . getPrdValidDe ( ) ) & & isEmpty ( b . getPrdValidDe ( ) ) )
return 0 ;
if ( isEmpty ( a . getPrdValidDe ( ) ) )
return - 1 ;
if ( isEmpty ( b . getPrdValidDe ( ) ) )
return 1 ;
return a . getPrdValidDe ( ) . compareTo ( b . getPrdValidDe ( ) ) ;
} ) ;
}
// 데이타 조회 결과 마지막 페이지 이거나 100건 이상인 경우 종료
if ( rslt . isEndYn ( ) | | list . size ( ) > = 200 ) break ;
if ( rslt . isEndYn ( ) | | list . size ( ) > 100 | | isPrdValidDe ) 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 ( ) ) )
return 0 ;
if ( isEmpty ( a . getPrdValidDe ( ) ) )
return - 1 ;
if ( isEmpty ( b . getPrdValidDe ( ) ) )
return 1 ;
return a . getPrdValidDe ( ) . compareTo ( b . getPrdValidDe ( ) ) ;
} ) ;
return list ;
}
@ -907,7 +944,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
for ( NimsApiDto . ProductInfoKd d : list ) {
productCd = d . getPrductCd ( ) ;
List < NimsApiDto . MnfSeqInfo > mnfList = getMnfSeqInfo (
List < NimsApiDto . MnfSeqInfo > mnfList = getMnfSeqInfo 2 (
NimsApiRequest . MnfSeqInfoReq . builder ( )
. k ( apiKey )
. fg ( "1" )