@ -1,41 +1,32 @@
package cokr.xit.adds.biz.nims.service.bean ;
package cokr.xit.adds.biz.nims.service.bean ;
import java.util.ArrayList ;
import java.util.* ;
import java.util.Collections ;
import java.util.concurrent.* ;
import java.util.HashMap ;
import java.util.List ;
import javax.validation.* ;
import java.util.Map ;
import java.util.concurrent.CopyOnWriteArrayList ;
import org.apache.commons.lang3.* ;
import org.springframework.stereotype.* ;
import javax.validation.Validation ;
import org.springframework.web.multipart.* ;
import javax.validation.Validator ;
import cokr.xit.adds.biz.nims.dao.* ;
import org.apache.commons.lang3.StringUtils ;
import cokr.xit.adds.biz.nims.model.* ;
import org.springframework.stereotype.Service ;
import cokr.xit.adds.biz.nims.service.* ;
import org.springframework.web.multipart.MultipartFile ;
import cokr.xit.adds.core.* ;
import cokr.xit.adds.core.Constants.* ;
import cokr.xit.adds.biz.nims.dao.BizNimsMapper ;
import cokr.xit.adds.core.model.* ;
import cokr.xit.adds.biz.nims.model.BizNimsDto ;
import cokr.xit.adds.core.spring.exception.* ;
import cokr.xit.adds.biz.nims.model.BizNimsRequest ;
import cokr.xit.adds.core.util.* ;
import cokr.xit.adds.biz.nims.model.BizNimsResponse ;
import cokr.xit.adds.inf.nims.model.* ;
import cokr.xit.adds.biz.nims.service.BizNimsService ;
import cokr.xit.adds.inf.nims.model.NimsApiDto.* ;
import cokr.xit.adds.core.Constants ;
import cokr.xit.adds.inf.nims.model.NimsApiRequest.* ;
import cokr.xit.adds.core.Constants.RPT_TY_CD ;
import cokr.xit.adds.inf.nims.service.* ;
import cokr.xit.adds.core.model.ApiBaseResponse ;
import cokr.xit.base.file.* ;
import cokr.xit.adds.core.spring.exception.ApiCustomException ;
import cokr.xit.base.file.service.* ;
import cokr.xit.adds.core.util.ApiUtil ;
import cokr.xit.base.file.web.* ;
import cokr.xit.adds.inf.nims.model.NimsApiDto ;
import cokr.xit.foundation.component.* ;
import cokr.xit.adds.inf.nims.model.NimsApiDto.BsshInfoSt ;
import lombok.* ;
import cokr.xit.adds.inf.nims.model.NimsApiRequest ;
import lombok.extern.slf4j.* ;
import cokr.xit.adds.inf.nims.model.NimsApiRequest.BsshInfoReq ;
import cokr.xit.adds.inf.nims.model.NimsApiResult ;
import cokr.xit.adds.inf.nims.service.InfNimsService ;
import cokr.xit.base.file.FileInfo ;
import cokr.xit.base.file.service.FileService ;
import cokr.xit.base.file.web.FileInfoFactory ;
import cokr.xit.foundation.component.AbstractServiceBean ;
import lombok.RequiredArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
/ * *
/ * *
* < pre >
* < pre >
@ -76,73 +67,56 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// DB 조회
// DB 조회
List < BsshInfoSt > list = new ArrayList < > ( ) ;
List < BsshInfoSt > list = new ArrayList < > ( ) ;
if ( "N" . equals ( reqDto . getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectBsshInfos ( reqDto ) ;
if ( ! isEmpty ( list ) ) {
//return list;
ApiBaseResponse < List < BsshInfoSt > > res = ApiBaseResponse . of ( list ) ;
res . setTotalCount ( list . size ( ) ) ;
return res ;
}
}
if ( isEmpty ( reqDto . getK ( ) ) ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
}
reqDto . setFg ( "1" ) ; // 조회범위(1-전체,2-내거래처)
reqDto . setFg ( "1" ) ; // 조회범위(1-전체,2-내거래처)
//reqDto.setPg("1"); // 조회페이지
reqDto . setFg2 ( "1" ) ; // 조회범위2(1:NK(취급승인)포함 - default, 2:NK(취급승인)제외)
reqDto . setFg2 ( "1" ) ; // 조회범위2(1:NK(취급승인)포함 - default, 2:NK(취급승인)제외)
boolean isRprsntvNm = ! isEmpty ( reqDto . getRprsntvNm ( ) ) ; //while(true) {
boolean isRprsntvNm = ! isEmpty ( reqDto . getRprsntvNm ( ) ) ; //while(true) {
int totalCount = 0 ;
do {
// 마약류취급자식별번호로 마약류취급자정보 조회
// 마약류취급자식별번호로 마약류취급자정보 조회
NimsApiResult . Response < BsshInfoSt > rslt = infNimsService . getBsshInfoSt ( reqDto ) ;
NimsApiResult . Response < BsshInfoSt > rslt = infNimsService . getBsshInfoSt ( reqDto ) ;
List < BsshInfoSt > curList = rslt . getResult ( ) ;
List < BsshInfoSt > curList = rslt . getResult ( ) ;
for ( BsshInfoSt d : curList ) {
if ( isEmpty ( d . getBsshCd ( ) ) ) continue ;
d . setRgtr ( reqDto . getUserId ( ) ) ;
bizNimsMapper . mergeBsshInfoSt ( d ) ;
// 대표자 검색조건이 있는 경우
if ( isRprsntvNm & & ! isEmpty ( d . getRprsntvNm ( ) ) & & d . getRprsntvNm ( ) . contains ( reqDto . getRprsntvNm ( ) ) ) {
list . add ( d ) ;
}
}
if ( ! isRprsntvNm ) {
if ( ! isRprsntvNm ) {
totalCount = rslt . getBody ( ) . getTotalCount ( ) ;
list . addAll ( curList ) ;
list . addAll ( curList ) ;
break ;
}
}
// 대표자 검색이 있는 경우 NIMS 데이타 전체 조회
list . addAll (
curList . stream ( )
. filter ( d - > ! isEmpty ( d . getRprsntvNm ( ) ) & & d . getRprsntvNm ( ) . contains ( reqDto . getRprsntvNm ( ) ) )
. toList ( ) ) ;
totalCount = list . size ( ) ;
if ( rslt . isEndYn ( ) ) break ;
reqDto . setPg ( String . valueOf ( Integer . parseInt ( reqDto . getPg ( ) ) + 1 ) ) ;
} while ( true ) ;
ApiBaseResponse < List < BsshInfoSt > > res = ApiBaseResponse . of ( list ) ;
ApiBaseResponse < List < BsshInfoSt > > res = ApiBaseResponse . of ( list ) ;
res . setTotalCount ( list . size ( ) ) ;
res . setTotalCount ( totalCount ) ;
return res ;
return res ;
}
}
/ * *
/ * *
* < pre >
* < pre >
* DB 에 서 먼 저 조 회 ( dbSkipYn = 'Y' 인 경 우 는 DB 조 회 skip )
* 업 체 정 보 를 업 체 코 드 로 조 회 후 DB 저 장
* - > 조 회 결 과 가 없 는 경 우 API 조 회
* 제 품 의 제 조 업 체 조 회 시 사 용 - 결 과 는 단 건
* 업 체 정 보 조 회 후 DB 저 장
* 조 회 건 수 를 제 한 하 기 위 해 조 회 조 건 강 제 - 업 체 명 ( 3 자 이 상 ) 필 수
* @param reqDto NimsApiRequest . BsshInfoRequest
* @param reqDto NimsApiRequest . BsshInfoRequest
* @return List < NimsApiDto . BsshInfoSt >
* @return List < NimsApiDto . BsshInfoSt >
* < / pre >
* < / pre >
* /
* /
@Override
@Override
public List < BsshInfoSt > saveBsshInfoSt ( BsshInfoReq reqDto ) {
public List < BsshInfoSt > saveBsshInfoSt QueryBsshInfoByBsshCd ( BsshInfoReq reqDto ) {
if ( isEmpty ( reqDto . getBc ( ) ) & & isEmpty ( reqDto . getBi ( ) ) & & isEmpty ( reqDto . getBn ( ) ) ) {
if ( isEmpty ( reqDto . getBc ( ) ) & & isEmpty ( reqDto . getBi ( ) ) & & isEmpty ( reqDto . getBn ( ) ) ) {
throw ApiCustomException . create ( "업체[사업자] 번호 또는 명, 사업자등록번호 중 하나는 필수 입니다" ) ;
throw ApiCustomException . create ( "업체[사업자] 번호 또는 명, 사업자등록번호 중 하나는 필수 입니다" ) ;
}
}
if ( ! isEmpty ( reqDto . getBn ( ) ) & & reqDto . getBn ( ) . length ( ) < 3 ) {
throw ApiCustomException . create ( "업체[사업자]명은 3자 이상 으로 조회해 주세요" ) ;
}
// DB 조회
List < BsshInfoSt > list = new ArrayList < > ( ) ;
if ( "N" . equals ( reqDto . getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectBsshInfos ( reqDto ) ;
if ( ! isEmpty ( list ) ) return list ;
}
if ( isEmpty ( reqDto . getK ( ) ) ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
@ -151,32 +125,44 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
reqDto . setPg ( "1" ) ; // 조회페이지
reqDto . setPg ( "1" ) ; // 조회페이지
reqDto . setFg2 ( "1" ) ; // 조회범위2(1:NK(취급승인)포함 - default, 2:NK(취급승인)제외)
reqDto . setFg2 ( "1" ) ; // 조회범위2(1:NK(취급승인)포함 - default, 2:NK(취급승인)제외)
boolean isRprsntvNm = ! isEmpty ( reqDto . getRprsntvNm ( ) ) ;
while ( true ) {
// 마약류취급자식별번호로 마약류취급자정보 조회
// 마약류취급자식별번호로 마약류취급자정보 조회
NimsApiResult . Response < BsshInfoSt > rslt = infNimsService . getBsshInfoSt ( reqDto ) ;
NimsApiResult . Response < BsshInfoSt > rslt = infNimsService . getBsshInfoSt ( reqDto ) ;
List < BsshInfoSt > curList = rslt . getResult ( ) ;
List < BsshInfoSt > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) )
break ;
for ( BsshInfoSt d : curList ) {
for ( BsshInfoSt d : curList ) {
if ( isEmpty ( d . getBsshCd ( ) ) ) continue ;
d . setRgtr ( reqDto . getUserId ( ) ) ;
d . setRgtr ( reqDto . getUserId ( ) ) ;
bizNimsMapper . mergeBsshInfoSt ( d ) ;
bizNimsMapper . mergeBsshInfoSt ( d ) ;
// 대표자 검색조건이 있는 경우
if ( isRprsntvNm & & ! isEmpty ( d . getRprsntvNm ( ) ) & & d . getRprsntvNm ( ) . contains ( reqDto . getRprsntvNm ( ) ) ) {
list . add ( d ) ;
}
}
return curList ;
}
}
if ( ! isRprsntvNm ) {
list . addAll ( curList ) ;
@Override
public ApiBaseResponse < List < NimsApiDto . ProductInfoKd > > getProductInfoKd ( NimsApiRequest . ProductInfoReq reqDto , boolean isMnfSeqInfo ) {
if ( isEmpty ( reqDto . getP ( ) ) & & isEmpty ( reqDto . getPn ( ) ) ) {
throw ApiCustomException . create ( "상품번호 또는 상품명중 하나는 필수 입니다" ) ;
}
}
if ( rslt . isEndYn ( ) ) break ;
if ( ! isEmpty ( reqDto . getPn ( ) ) & & reqDto . getPn ( ) . length ( ) < 2 ) {
reqDto . setPg ( String . valueOf ( Integer . parseInt ( reqDto . getPg ( ) ) + 1 ) ) ;
throw ApiCustomException . create ( "상품명은 2자 이상 으로 조회해 주세요" ) ;
}
}
return list ;
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
reqDto . setFg ( "1" ) ; // 조회범위(1-전체,2-내거래처품목,3-청구코드매핑)
reqDto . setFg2 ( "" ) ; // 중점일반구분(all, 1:중점, 2:일반)
// 제품코드로 제품정보 조회
NimsApiResult . Response < NimsApiDto . ProductInfoKd > rslt = infNimsService . getProductInfoKd ( reqDto ) ;
List < NimsApiDto . ProductInfoKd > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) ) return ApiBaseResponse . of ( curList ) ;
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if ( isMnfSeqInfo ) productInfoaddMnfSeqs ( curList , reqDto . getBc ( ) , reqDto . getK ( ) ) ;
ApiBaseResponse < List < ProductInfoKd > > res = ApiBaseResponse . of ( curList ) ;
res . setTotalCount ( rslt . getBody ( ) . getTotalCount ( ) ) ;
return res ;
}
}
/ * *
/ * *
@ -192,7 +178,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* < / pre >
* < / pre >
* /
* /
@Override
@Override
public List < NimsApiDto . ProductInfoKd > saveProductInfoK d( NimsApiRequest . ProductInfoReq reqDto , boolean isMnfSeqInfo ) {
public List < NimsApiDto . ProductInfoKd > saveProductInfoK dQueryProductByProductI d( NimsApiRequest . ProductInfoReq reqDto , boolean isMnfSeqInfo ) {
if ( isEmpty ( reqDto . getP ( ) ) & & isEmpty ( reqDto . getPn ( ) ) ) {
if ( isEmpty ( reqDto . getP ( ) ) & & isEmpty ( reqDto . getPn ( ) ) ) {
throw ApiCustomException . create ( "상품번호 또는 상품명중 하나는 필수 입니다" ) ;
throw ApiCustomException . create ( "상품번호 또는 상품명중 하나는 필수 입니다" ) ;
}
}
@ -201,50 +187,26 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
throw ApiCustomException . create ( "상품명은 2자 이상 으로 조회해 주세요" ) ;
throw ApiCustomException . create ( "상품명은 2자 이상 으로 조회해 주세요" ) ;
}
}
List < NimsApiDto . ProductInfoKd > list = new ArrayList < > ( ) ;
// DB 조회
if ( "N" . equals ( reqDto . getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectProductInfos ( reqDto ) ;
if ( ! isEmpty ( list ) ) {
if ( isMnfSeqInfo ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
productInfoaddMnfSeqs ( list , getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
} else {
productInfoaddMnfSeqs ( list , reqDto . getK ( ) ) ;
}
}
return list ;
}
}
if ( isEmpty ( reqDto . getK ( ) ) ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
}
reqDto . setFg ( "1" ) ; // 조회범위(1-전체,2-내거래처품목,3-청구코드매핑)
reqDto . setPg ( "1" ) ; // 조회페이지
reqDto . setFg2 ( "" ) ; // 중점일반구분(all, 1:중점, 2:일반)
reqDto . setFg2 ( "" ) ; // 중점일반구분(all, 1:중점, 2:일반)
while ( true ) {
// 제품코드로 제품정보 조회
// 제품코드로 제품정보 조회
NimsApiResult . Response < NimsApiDto . ProductInfoKd > rslt = infNimsService . getProductInfoKd ( reqDto ) ;
NimsApiResult . Response < NimsApiDto . ProductInfoKd > rslt = infNimsService . getProductInfoKd ( reqDto ) ;
List < NimsApiDto . ProductInfoKd > curList = rslt . getResult ( ) ;
List < NimsApiDto . ProductInfoKd > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) ) break ;
if ( isEmpty ( curList ) ) return curList ;
for ( NimsApiDto . ProductInfoKd d : curList ) {
//FIXME: 신규 API 적용 - 조회 결과 저장 skip
d . setRgtr ( reqDto . getUserId ( ) ) ;
// for (NimsApiDto.ProductInfoKd d : curList) {
bizNimsMapper . mergeProductInfoKd ( d ) ;
// d.setRgtr(reqDto.getUserId());
}
// bizNimsMapper.mergeProductInfoKd(d);
// }
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if ( isMnfSeqInfo ) productInfoaddMnfSeqs ( curList , reqDto . getK ( ) ) ;
if ( isMnfSeqInfo ) productInfoaddMnfSeqs ( curList , reqDto . getBc ( ) , reqDto . getK ( ) ) ;
list . addAll ( curList ) ;
return curList ;
if ( rslt . isEndYn ( ) ) break ;
reqDto . setPg ( String . valueOf ( Integer . parseInt ( reqDto . getPg ( ) ) + 1 ) ) ;
}
return list ;
}
}
@Override
@Override
@ -255,24 +217,12 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
//reqDto.setPg("1"); // 조회페이지
//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 ) {
NimsApiResult . Response < NimsApiDto . MnfSeqInfo > rslt = infNimsService . getMnfSeqInfo ( reqDto ) ;
for ( NimsApiDto . MnfSeqInfo d : curList ) {
List < NimsApiDto . MnfSeqInfo > list = rslt . getResult ( ) ;
if ( ! isEmpty ( d . getPrdValidDe ( ) ) & & d . getPrdValidDe ( ) . contains ( reqDto . getPrdValidDe ( ) ) ) {
list . add ( d ) ;
}
}
} else {
list . addAll ( curList ) ;
}
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
if ( ! isEmpty ( list ) & & ( ! isEmpty ( reqDto . getT ( ) ) & & ! isEmpty ( reqDto . getVd ( ) ) ) ) {
list . sort ( ( a , b ) - > {
list . sort ( ( a , b ) - > {
if ( isEmpty ( a . getPrdValidDe ( ) ) & & isEmpty ( b . getPrdValidDe ( ) ) )
if ( isEmpty ( a . getPrdValidDe ( ) ) & & isEmpty ( b . getPrdValidDe ( ) ) )
return 0 ;
return 0 ;
@ -282,57 +232,13 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return 1 ;
return 1 ;
return a . getPrdValidDe ( ) . compareTo ( b . getPrdValidDe ( ) ) ;
return a . getPrdValidDe ( ) . compareTo ( b . getPrdValidDe ( ) ) ;
} ) ;
} ) ;
}
ApiBaseResponse < List < NimsApiDto . MnfSeqInfo > > res = ApiBaseResponse . of ( list ) ;
ApiBaseResponse < List < NimsApiDto . MnfSeqInfo > > res = ApiBaseResponse . of ( list ) ;
res . setTotalCount ( rslt . getBody ( ) . getTotalCount ( ) ) ;
res . setTotalCount ( rslt . getBody ( ) . getTotalCount ( ) ) ;
return res ;
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 ) ;
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 . 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 ( ) > 100 | | isPrdValidDe ) break ;
reqDto . setPg ( String . valueOf ( Integer . parseInt ( reqDto . getPg ( ) ) + 1 ) ) ;
}
return list ;
}
@Override
@Override
public List < NimsApiDto . JurisdictionGovInfo > getJurisdictionGovInfo ( final NimsApiRequest . JurisdictionGovInfoReq reqDto ) {
public List < NimsApiDto . JurisdictionGovInfo > getJurisdictionGovInfo ( final NimsApiRequest . JurisdictionGovInfoReq reqDto ) {
List < NimsApiDto . JurisdictionGovInfo > list = new ArrayList < > ( ) ;
List < NimsApiDto . JurisdictionGovInfo > list = new ArrayList < > ( ) ;
@ -391,7 +297,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* < / pre >
* < / pre >
* /
* /
@Override
@Override
public BizNimsRequest . DsuseMgtReceiptReq saveDsuseMgtReceipt ( final BizNimsRequest . DsuseMgtReceiptReq reqDto , final List < BizNimsDto . DsuseMgtDtl > dtls , final List < MultipartFile > files ) {
public BizNimsRequest . DsuseMgtReceiptReq saveDsuseMgtReceipt ( final BizNimsRequest . DsuseMgtReceiptReq reqDto , final List < BizNimsDto . DsuseMgtDtl > dtls , final List < MultipartFile > files , final NimsApiDto . BsshInfoSt bsshInfoSt , final List < NimsApiDto . ProductInfoKdSaveDTO > prdList ) {
ApiUtil . validate ( reqDto , null , validator ) ;
ApiUtil . validate ( reqDto , null , validator ) ;
if ( reqDto . getRndDtlRptCnt ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 보고수 오류[폐기물 갯수 확인]" ) ;
if ( reqDto . getRndDtlRptCnt ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 보고수 오류[폐기물 갯수 확인]" ) ;
ApiUtil . validate ( dtls , null , validator ) ;
ApiUtil . validate ( dtls , null , validator ) ;
@ -399,6 +305,16 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if ( files . size ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 파일 갯수 오류[파일 갯수 확인]" ) ;
if ( files . size ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 파일 갯수 오류[파일 갯수 확인]" ) ;
// FIXME: 신규 API 적용 - 취급자 및 제품 정보 저장
bsshInfoSt . setRgtr ( reqDto . getUserId ( ) ) ;
bizNimsMapper . mergeBsshInfoSt ( bsshInfoSt ) ;
prdList . forEach (
d - > {
d . setRgtr ( reqDto . getUserId ( ) ) ;
bizNimsMapper . mergeProductInfoKd ( d ) ;
}
) ;
if ( isEmpty ( reqDto . getDscdmngId ( ) ) ) {
if ( isEmpty ( reqDto . getDscdmngId ( ) ) ) {
if ( bizNimsMapper . insertDsuseMgtReceipt ( reqDto ) = = 1 ) {
if ( bizNimsMapper . insertDsuseMgtReceipt ( reqDto ) = = 1 ) {
@ -444,6 +360,21 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
ApiUtil . validate ( reqDto , null , validator ) ;
ApiUtil . validate ( reqDto , null , validator ) ;
reqDto . setRgtr ( reqDto . getUserId ( ) ) ;
reqDto . setRgtr ( reqDto . getUserId ( ) ) ;
// ------------------------------------------------------------------------------------------------
// 폐기장소 변경 여부 체크 - 폐기 결과를 공유하는 데이타
// 폐기구분, 폐기일자, 폐기방법이 동일한 건에 대하여 폐기장소 일괄 변경
// ------------------------------------------------------------------------------------------------
// 폐기장소가 null인 경우 - request 데이타로 set
final String dsuseLoc = bizNimsMapper . selectCheckDsuseLocBydscdmngId ( reqDto . getDscdmngId ( ) )
. orElse ( reqDto . getDsuseLoc ( ) ) ;
// 1. 폐기장소가 null(또는 "")인 경우 - 신규 저장 -> 폐기장소 저장으로 이동
// 2. 1이 아니고, 저장된 폐기장소와 request 폐기장소가 다르면 해당 데이타를 공유하는 모든건 변경
if ( ! isEmpty ( dsuseLoc ) & & ! reqDto . getDsuseLoc ( ) . equals ( dsuseLoc ) ) {
bizNimsMapper . updateDsuseLocOfDsuseMgt ( reqDto ) ;
}
// ------------------------------------------------------------------------------------------------
if ( bizNimsMapper . updateDsuseMgtRslt ( reqDto ) = = 1 ) {
if ( bizNimsMapper . updateDsuseMgtRslt ( reqDto ) = = 1 ) {
if ( "Y" . equals ( fileChangeYn ) ) {
if ( "Y" . equals ( fileChangeYn ) ) {
Map < String , String > map = Map . of ( "infType" , Constants . FILE_INF_TYPE . DSUSE_IMG . getCode ( ) , "infKey" , reqDto . getDscdmngId ( ) ) ;
Map < String , String > map = Map . of ( "infType" , Constants . FILE_INF_TYPE . DSUSE_IMG . getCode ( ) , "infKey" , reqDto . getDscdmngId ( ) ) ;
@ -619,10 +550,9 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
. fg ( "1" )
. fg ( "1" )
. pg ( "1" )
. pg ( "1" )
. p ( mnfSeqInfo . getPrductCd ( ) )
. p ( mnfSeqInfo . getPrductCd ( ) )
. dbSkipYn ( "N" )
. userId ( userId )
. userId ( userId )
. build ( ) ;
. build ( ) ;
List < NimsApiDto . ProductInfoKd > productInfoKds = saveProductInfoK d( prdReq , false ) ;
List < NimsApiDto . ProductInfoKd > productInfoKds = saveProductInfoK dQueryProductByProductI d( prdReq , false ) ;
if ( productInfoKds . size ( ) ! = 1 ) {
if ( productInfoKds . size ( ) ! = 1 ) {
throw ApiCustomException . create ( String . format ( "제품정보 오류<br>[Barcode 제품[%s]의 정보가 NIMS에 등록되지 않은 데이타 입니다]" , mnfSeqInfo . getPrductCd ( ) ) ) ;
throw ApiCustomException . create ( String . format ( "제품정보 오류<br>[Barcode 제품[%s]의 정보가 NIMS에 등록되지 않은 데이타 입니다]" , mnfSeqInfo . getPrductCd ( ) ) ) ;
}
}
@ -666,11 +596,10 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* /
* /
private void setDsuseMgtDtlAddProductInfo ( List < BizNimsResponse . DsuseMgtDtlRes > dtlList , String userId , String apiKey ) {
private void setDsuseMgtDtlAddProductInfo ( List < BizNimsResponse . DsuseMgtDtlRes > dtlList , String userId , String apiKey ) {
for ( BizNimsResponse . DsuseMgtDtlRes r : dtlList ) {
for ( BizNimsResponse . DsuseMgtDtlRes r : dtlList ) {
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
if ( isEmpty ( r . getNrcdSeNm ( ) ) | | isEmpty ( r . getPrtmSeNm ( ) ) ) {
if ( isEmpty ( r . getNrcdSeNm ( ) ) | | isEmpty ( r . getPrtmSeNm ( ) ) ) {
//NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
List < NimsApiDto . ProductInfoKd > list = saveProductInfoKdQueryProductByProductId (
List < NimsApiDto . ProductInfoKd > list = saveProductInfoKd (
NimsApiRequest . ProductInfoReq . builder ( )
NimsApiRequest . ProductInfoReq . builder ( )
. k ( apiKey )
. k ( apiKey )
. fg ( "1" )
. fg ( "1" )
@ -691,7 +620,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 제조수입자명(bsshNm)
// 제조수입자명(bsshNm)
if ( isEmpty ( r . getBsshNm ( ) ) & & ! isEmpty ( r . getBsshCd ( ) ) ) {
if ( isEmpty ( r . getBsshNm ( ) ) & & ! isEmpty ( r . getBsshCd ( ) ) ) {
List < BsshInfoSt > list = saveBsshInfoSt (
List < BsshInfoSt > list = saveBsshInfoSt QueryBsshInfoByBsshCd (
BsshInfoReq . builder ( )
BsshInfoReq . builder ( )
. k ( apiKey )
. k ( apiKey )
. fg ( "1" )
. fg ( "1" )
@ -953,7 +882,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param apiKey Api Key
* @param apiKey Api Key
* < / pre >
* < / pre >
* /
* /
private void productInfoaddMnfSeqs ( final List < NimsApiDto . ProductInfoKd > list , final String apiKey ) {
private void productInfoaddMnfSeqs ( final List < NimsApiDto . ProductInfoKd > list , final String bsshCd , final String apiKey ) {
String productCd = "" ;
String productCd = "" ;
try {
try {
@ -961,12 +890,13 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
for ( NimsApiDto . ProductInfoKd d : list ) {
for ( NimsApiDto . ProductInfoKd d : list ) {
productCd = d . getPrductCd ( ) ;
productCd = d . getPrductCd ( ) ;
List < NimsApiDto . MnfSeqInfo > mnfList = getMnfSeqInfo 2 (
List < NimsApiDto . MnfSeqInfo > mnfList = getMnfSeqInfo All (
NimsApiRequest . MnfSeqInfoReq . builder ( )
NimsApiRequest . MnfSeqInfoReq . builder ( )
. k ( apiKey )
. k ( apiKey )
. fg ( "1" )
. fg ( "1" )
. pg ( "1" )
. pg ( "1" )
. p ( d . getPrductCd ( ) )
. p ( d . getPrductCd ( ) )
. bc ( bsshCd )
. userId ( "" )
. userId ( "" )
. build ( )
. build ( )
) ;
) ;
@ -1051,4 +981,48 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return files . get ( 0 ) . getId ( ) ;
return files . get ( 0 ) . getId ( ) ;
}
}
private List < NimsApiDto . MnfSeqInfo > getMnfSeqInfoAll ( 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 . getVd ( ) ) ;
List < NimsApiDto . MnfSeqInfo > list = new ArrayList < > ( ) ;
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 . getVd ( ) ) ) {
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 ( ) > 100 | | isPrdValidDe ) break ;
reqDto . setPg ( String . valueOf ( Integer . parseInt ( reqDto . getPg ( ) ) + 1 ) ) ;
}
return list ;
}
}
}