@ -11,7 +11,6 @@ import javax.validation.Validator;
import org.apache.commons.lang3.ObjectUtils ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.beans.factory.annotation.Value ;
import org.springframework.stereotype.Service ;
import org.springframework.web.multipart.MultipartFile ;
@ -54,23 +53,6 @@ import lombok.extern.slf4j.Slf4j;
@RequiredArgsConstructor
@Service
public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsService {
/ * *
* 보 고 서 저 장 경 로
* /
@Value ( "${app.file.rpt.path:}" )
private String rptPath ;
/ * *
* 폐 기 이 미 지 저 장 경 로
* /
@Value ( "${app.file.img.path:d:/data/adds-api/img}" )
private String dsuseImgPath ;
/ * *
* 관 할 군 청 코 드
* /
@Value ( "${app.inf.nims.ofCd:}" )
private String ofCd ;
private static final Validator validator = Validation . buildDefaultValidatorFactory ( ) . getValidator ( ) ;
private final InfNimsService infNimsService ;
@ -86,38 +68,42 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* - > 조 회 결 과 가 없 는 경 우 API 조 회
* 업 체 정 보 조 회 후 DB 저 장
* 조 회 건 수 를 제 한 하 기 위 해 조 회 조 건 강 제 - 업 체 명 ( 3 자 이 상 ) 필 수
* @param d to NimsApiRequest . BsshInfoRequest
* @param reqD to NimsApiRequest . BsshInfoRequest
* @return List < NimsApiDto . BsshInfoSt >
* < / pre >
* /
@Override
public List < BsshInfoSt > saveBsshInfoSt ( BsshInfoReq d to) {
if ( ! isEmpty ( dto. getBn ( ) ) & & d to. getBn ( ) . length ( ) < 3 ) {
public List < BsshInfoSt > saveBsshInfoSt ( BsshInfoReq reqD to) {
if ( ! isEmpty ( reqDto. getBn ( ) ) & & reqD to. getBn ( ) . length ( ) < 3 ) {
throw ApiCustomException . create ( "업체[사업자]명은 3자 이상 으로 조회해 주세요" ) ;
}
// DB 조회
List < BsshInfoSt > list = new ArrayList < > ( ) ;
if ( "N" . equals ( d to. getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectBsshInfos ( d to) ;
if ( "N" . equals ( reqD to. getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectBsshInfos ( reqD to) ;
if ( ! isEmpty ( list ) ) return list ;
}
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
while ( true ) {
// 마약류취급자식별번호로 마약류취급자정보 조회
NimsApiResult . Response < BsshInfoSt > rslt = infNimsService . getBsshInfoSt ( dto ) ;
NimsApiResult . Response < BsshInfoSt > rslt = infNimsService . getBsshInfoSt ( reqD to) ;
List < BsshInfoSt > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) ) break ;
for ( BsshInfoSt d : curList ) {
d . setRgtr ( Constants. NIMS_API_USER_ID ) ;
d . setRgtr ( reqDto. getUserId ( ) ) ;
bizNimsMapper . mergeBsshInfoSt ( d ) ;
}
list . addAll ( curList ) ;
if ( rslt . isEndYn ( ) ) break ;
d to. setPg ( String . valueOf ( Integer . parseInt ( d to. getPg ( ) ) + 1 ) ) ;
reqD to. setPg ( String . valueOf ( Integer . parseInt ( reqD to. getPg ( ) ) + 1 ) ) ;
}
return list ;
@ -130,71 +116,117 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* 상 품 정 보 조 회 후 DB 저 장
* 제 조 번 호 조 회 여 부 에 따 라 제 조 번 호 , 일 련 번 호 , 유 효 기 간 정 보 목 록 추 가
* 조 회 건 수 를 제 한 하 기 위 해 조 회 조 건 강 제 - 상 품 번 호 또 는 상 품 명 ( 2 자 이 상 ) 필 수
* @param d to NimsApiRequest . ProductInfoRequest
* @param reqD to NimsApiRequest . ProductInfoRequest
* @param isMnfSeqInfo 제 조 번 호 조 회 여 부
* @return
* < / pre >
* /
@Override
public List < NimsApiDto . ProductInfoKd > saveProductInfoKd ( NimsApiRequest . ProductInfoReq d to, boolean isMnfSeqInfo ) {
if ( isEmpty ( d to. getP ( ) ) & & isEmpty ( d to. getPn ( ) ) ) {
public List < NimsApiDto . ProductInfoKd > saveProductInfoKd ( NimsApiRequest . ProductInfoReq reqD to, boolean isMnfSeqInfo ) {
if ( isEmpty ( reqD to. getP ( ) ) & & isEmpty ( reqD to. getPn ( ) ) ) {
throw ApiCustomException . create ( "상품번호 또는 상품명은 필수 입니다" ) ;
}
if ( ! isEmpty ( dto. getPn ( ) ) & & d to. getPn ( ) . length ( ) < 2 ) {
if ( ! isEmpty ( reqDto. getPn ( ) ) & & reqD to. getPn ( ) . length ( ) < 2 ) {
throw ApiCustomException . create ( "상품명은 2자 이상 으로 조회해 주세요" ) ;
}
List < NimsApiDto . ProductInfoKd > list = new ArrayList < > ( ) ;
// DB 조회
if ( "N" . equals ( d to. getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectProductInfos ( d to) ;
if ( "N" . equals ( reqD to. getDbSkipYn ( ) ) ) {
list = bizNimsMapper . selectProductInfos ( reqD to) ;
if ( ! isEmpty ( list ) ) {
if ( isMnfSeqInfo ) productInfoaddMnfSeqs ( 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 ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
while ( true ) {
// 제품코드로 제품정보 조회
NimsApiResult . Response < NimsApiDto . ProductInfoKd > rslt = infNimsService . getProductInfoKd ( dto ) ;
NimsApiResult . Response < NimsApiDto . ProductInfoKd > rslt = infNimsService . getProductInfoKd ( reqD to) ;
List < NimsApiDto . ProductInfoKd > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) ) break ;
for ( NimsApiDto . ProductInfoKd d : curList ) {
d . setRgtr ( Constants. NIMS_API_USER_ID ) ;
d . setRgtr ( reqDto. getUserId ( ) ) ;
bizNimsMapper . mergeProductInfoKd ( d ) ;
}
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if ( isMnfSeqInfo ) productInfoaddMnfSeqs ( curList );
if ( isMnfSeqInfo ) productInfoaddMnfSeqs ( curList , reqDto . getK ( ) );
list . addAll ( curList ) ;
if ( rslt . isEndYn ( ) ) break ;
d to. setPg ( String . valueOf ( Integer . parseInt ( d to. getPg ( ) ) + 1 ) ) ;
reqD to. setPg ( String . valueOf ( Integer . parseInt ( reqD to. getPg ( ) ) + 1 ) ) ;
}
return list ;
}
@Override
public List < NimsApiDto . MnfSeqInfo > getMnfSeqInfo ( NimsApiRequest . MnfSeqInfoReq dto ) {
NimsApiResult . Response < NimsApiDto . MnfSeqInfo > response = infNimsService . getMnfSeqInfo ( dto ) ;
public List < NimsApiDto . MnfSeqInfo > getMnfSeqInfo ( NimsApiRequest . MnfSeqInfoReq reqDto ) {
if ( isEmpty ( reqDto . getK ( ) ) ) {
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
}
NimsApiResult . Response < NimsApiDto . MnfSeqInfo > response = infNimsService . getMnfSeqInfo ( reqDto ) ;
List < NimsApiDto . MnfSeqInfo > results = response . getResultOrThrow ( ) ;
// FIXME: 내림 차순 정렬
// 올 림 차순 정렬
results . 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 b . getPrdValidDe ( ) . compareTo ( a . getPrdValidDe ( ) ) ;
if ( isEmpty ( b . getPrdValidDe ( ) ) )
return 1 ;
return a . getPrdValidDe ( ) . compareTo ( b . getPrdValidDe ( ) ) ;
} ) ;
return results ;
}
@Override
public List < NimsApiDto . JurisdictionGovInfo > getJurisdictionGovInfo ( final NimsApiRequest . JurisdictionGovInfoReq reqDto ) {
List < NimsApiDto . JurisdictionGovInfo > list = new ArrayList < > ( ) ;
// DB 조회 : 주소검색이면 DB 조회 skip
if ( "N" . equals ( reqDto . getDbSkipYn ( ) ) & & isEmpty ( reqDto . getAdr ( ) ) ) {
list = bizNimsMapper . selectJurisdictionGovInfos ( reqDto ) ;
if ( ! isEmpty ( list ) ) {
return list ;
}
}
reqDto . setK ( getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ) ;
while ( true ) {
// 기관정보 조회
NimsApiResult . Response < NimsApiDto . JurisdictionGovInfo > rslt = infNimsService . getJurisdictionGovInfo ( reqDto ) ;
List < NimsApiDto . JurisdictionGovInfo > curList = rslt . getResult ( ) ;
if ( isEmpty ( curList ) ) break ;
for ( NimsApiDto . JurisdictionGovInfo d : curList ) {
d . setRgtr ( reqDto . getUserId ( ) ) ;
bizNimsMapper . mergeJurisdictionGovInfo ( d ) ;
}
list . addAll ( curList ) ;
if ( rslt . isEndYn ( ) ) break ;
reqDto . setPg ( String . valueOf ( Integer . parseInt ( reqDto . getPg ( ) ) + 1 ) ) ;
}
return list ;
}
/ * *
* < pre >
* 폐 기 연 계 보 고 데 이 타 를 API 에 서 조 회 후 DB 저 장
@ -222,6 +254,10 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
public List < NimsApiDto . DsuseRptInfo > saveDsuseRptInfo ( NimsApiRequest . DsuseRptInfoReq reqDto ) {
List < NimsApiDto . DsuseRptInfo > nimsList = new ArrayList < > ( ) ;
Map < String , String > apiInfInfo = getApiInfInfo ( reqDto . getUserId ( ) ) ;
reqDto . setK ( apiInfInfo . get ( "apiKey" ) ) ;
reqDto . setFg4 ( apiInfInfo . get ( "deptCd" ) ) ; // 관할관청코드
while ( true ) {
NimsApiResult . Response < NimsApiDto . DsuseRptInfo > rslt = infNimsService . getDsuseRptInfo ( reqDto ) ;
List < NimsApiDto . DsuseRptInfo > curList = rslt . getResultOrThrow ( ) ;
@ -238,7 +274,8 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 미완료(종료)된 폐기 관리 목록 조회
List < BizNimsResponse . DsuseMgtRes > dsuseMgts = getDsuseMgts ( BizNimsRequest . DsuseMgtInq . builder ( )
. prgrsSttsCd ( Constants . PRGRS_STTS_CD . COMPLETE . getCode ( ) )
. build ( ) ) ;
. build ( ) ,
apiInfInfo . get ( "apiKey" ) ) ;
//////////////////////////////////////////////////////////////////////////////
// FIXME : 테스트를 위한 코드
@ -286,7 +323,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 폐기 보고 정보 데이타 생성
createDsuseRpt ( dto );
createDsuseRpt ( dto , reqDto . getUserId ( ) );
rtnTmplist . add ( dto ) ;
rtnlist . add ( dto ) ;
@ -304,7 +341,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경)
String errMsg = null ;
for ( NimsApiDto . DsuseRptInfo dto : workList ) {
dto . setRgtr ( Constants. NIMS_API_USER_ID ) ;
dto . setRgtr ( reqDto. getUserId ( ) ) ;
// 신규인 경우 skip
if ( "0" . equals ( dto . getRptTyCd ( ) ) ) continue ;
@ -320,10 +357,10 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 조건 : 사용자보고식별번호 = 참조사용자보고식별번호
// => usr_rpt_id_no -> refUsrRptIdNo update
// => 취소인 경우 use_yn = 'N' update
updateDsuseRptAndDsuseMgt ( dto );
updateDsuseRptAndDsuseMgt ( dto , reqDto . getUserId ( ) );
// 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성)
createDsuseRpt ( dto );
createDsuseRpt ( dto , reqDto . getUserId ( ) );
// FIXME : API 적용 필요
// 결과 return 대상 데이타 List에서 조회한 변경 대상이 있는 경우 replace
@ -359,109 +396,110 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/ * *
* < pre >
* 사 고 마 약 류 폐 기 신 청 접 수
* @param d to BizNimsRequest . DsuseMgtReceipt
* @param reqD to BizNimsRequest . DsuseMgtReceipt
* @return BizNimsRequest . DsuseMgt 생 성 된 폐 기 관 리 정 보
* < / pre >
* /
public BizNimsRequest . DsuseMgtReceipt saveDsuseMgtReceipt ( final BizNimsRequest . DsuseMgtReceipt d to, final List < BizNimsRequest . DsuseMgtDtl > dtls , final List < MultipartFile > files ) {
ApiUtil . validate ( d to, null , validator ) ;
if ( d to. getRndDtlRptCnt ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 보고수 오류[폐기물 갯수 확인]" ) ;
public BizNimsRequest . DsuseMgtReceipt saveDsuseMgtReceipt ( final BizNimsRequest . DsuseMgtReceipt reqD to, final List < BizNimsRequest . DsuseMgtDtl > dtls , final List < MultipartFile > files ) {
ApiUtil . validate ( reqD to, null , validator ) ;
if ( reqD to. getRndDtlRptCnt ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 보고수 오류[폐기물 갯수 확인]" ) ;
ApiUtil . validate ( dtls , null , validator ) ;
dto. setRgtr ( d to. getUserId ( ) ) ;
reqDto. setRgtr ( reqD to. getUserId ( ) ) ;
if ( files . size ( ) ! = dtls . size ( ) ) throw ApiCustomException . create ( "폐기물 파일 갯수 오류[파일 갯수 확인]" ) ;
if ( bizNimsMapper . insertDsuseMgtReceipt ( d to) = = 1 ) {
if ( bizNimsMapper . insertDsuseMgtReceipt ( reqD to) = = 1 ) {
int dtlCnt = 0 ;
for ( BizNimsRequest . DsuseMgtDtl d : dtls ) {
String sn = StringUtils . leftPad ( dtlCnt + 1 + "" , 3 , "0" ) ;
d . setDscdmngId ( d to. getDscdmngId ( ) ) ;
d . setDscdmngId ( reqD to. getDscdmngId ( ) ) ;
d . setDscdmngSn ( sn ) ;
d . setRgtr ( d to. getUserId ( ) ) ;
d . setRgtr ( reqD to. getUserId ( ) ) ;
dtlCnt = dtlCnt + bizNimsMapper . insertDsuseMgtDtl ( d ) ;
d . setFileId ( uploadFileAndSave ( Constants . FILE_INF_TYPE . DSUSE_PRD_IMG . getCode ( ) , d to. getDscdmngId ( ) , sn , files . get ( dtlCnt - 1 ) ) ) ;
d . setFileId ( uploadFileAndSave ( Constants . FILE_INF_TYPE . DSUSE_PRD_IMG . getCode ( ) , reqD to. getDscdmngId ( ) , sn , files . get ( dtlCnt - 1 ) ) ) ;
}
if ( dtls . size ( ) ! = dtlCnt ) throw ApiCustomException . create ( "폐기 관리 상세 등록 실패" ) ;
} else {
throw ApiCustomException . create ( "폐기 관리 마스터 등록 실패" ) ;
}
return d to;
return reqD to;
}
/ * *
* < pre >
* 사 고 마 약 류 폐 기 통 보 [ 결 과 ] 처 리
* @param d to BizNimsRequest . DsuseMgtReceipt
* @param reqD to BizNimsRequest . DsuseMgtReceipt
* @return BizNimsRequest . DsuseMgt 생 성 된 폐 기 관 리 정 보
* < / pre >
* /
public BizNimsRequest . DsuseMgtRslt saveDsuseMgtRslt ( final BizNimsRequest . DsuseMgtRslt d to, final List < MultipartFile > files ) {
ApiUtil . validate ( d to, null , validator ) ;
dto. setRgtr ( d to. getUserId ( ) ) ;
public BizNimsRequest . DsuseMgtRslt saveDsuseMgtRslt ( final BizNimsRequest . DsuseMgtRslt reqD to, final List < MultipartFile > files ) {
ApiUtil . validate ( reqD to, null , validator ) ;
reqDto. setRgtr ( reqD to. getUserId ( ) ) ;
if ( bizNimsMapper . updateDsuseMgtRslt ( d to) = = 1 ) {
if ( bizNimsMapper . updateDsuseMgtRslt ( reqD to) = = 1 ) {
int idx = 1 ;
for ( MultipartFile mf : files ) {
uploadFileAndSave ( Constants . FILE_INF_TYPE . DSUSE_IMG . getCode ( ) , d to. getDscdmngId ( ) , String . valueOf ( idx ) , mf ) ;
uploadFileAndSave ( Constants . FILE_INF_TYPE . DSUSE_IMG . getCode ( ) , reqD to. getDscdmngId ( ) , String . valueOf ( idx ) , mf ) ;
idx + + ;
}
} else {
throw ApiCustomException . create ( "폐기 관리 정보 변경[통보(결과) 처리] 실패" ) ;
}
return d to;
return reqD to;
}
/ * *
* < pre >
* 사 고 마 약 류 폐 기 관 리 생 성
* @param d to BizNimsRequest . DsuseMgt
* @param reqD to BizNimsRequest . DsuseMgt
* @return BizNimsRequest . DsuseMgt 생 성 된 폐 기 관 리 정 보
* < / pre >
* /
public BizNimsRequest . DsuseMgt saveDsuseMgt ( BizNimsRequest . DsuseMgt d to) {
ApiUtil . validate ( d to, null , validator ) ;
if ( dto. getRndDtlRptCnt ( ) ! = d to. getDsuseMgtDtls ( ) . size ( ) ) throw ApiCustomException . create ( "폐기물 보고수 오류[폐기물 갯수 확인]" ) ;
dto. setRgtr ( d to. getUserId ( ) ) ;
public BizNimsRequest . DsuseMgt saveDsuseMgt ( BizNimsRequest . DsuseMgt reqD to) {
ApiUtil . validate ( reqD to, null , validator ) ;
if ( reqDto. getRndDtlRptCnt ( ) ! = reqD to. getDsuseMgtDtls ( ) . size ( ) ) throw ApiCustomException . create ( "폐기물 보고수 오류[폐기물 갯수 확인]" ) ;
reqDto. setRgtr ( reqD to. getUserId ( ) ) ;
if ( bizNimsMapper . insertDsuseMgt ( d to) = = 1 ) {
if ( bizNimsMapper . insertDsuseMgt ( reqD to) = = 1 ) {
int dtlCnt = 0 ;
for ( BizNimsRequest . DsuseMgtDtl d : d to. getDsuseMgtDtls ( ) ) {
d . setDscdmngId ( d to. getDscdmngId ( ) ) ;
for ( BizNimsRequest . DsuseMgtDtl d : reqD to. getDsuseMgtDtls ( ) ) {
d . setDscdmngId ( reqD to. getDscdmngId ( ) ) ;
d . setDscdmngSn ( StringUtils . leftPad ( dtlCnt + 1 + "" , 3 , "0" ) ) ;
d . setRgtr ( d to. getUserId ( ) ) ;
d . setRgtr ( reqD to. getUserId ( ) ) ;
dtlCnt = dtlCnt + bizNimsMapper . insertDsuseMgtDtl ( d ) ;
}
if ( d to. getDsuseMgtDtls ( ) . size ( ) ! = dtlCnt ) throw ApiCustomException . create ( "폐기 관리 상세 등록 실패" ) ;
if ( reqD to. getDsuseMgtDtls ( ) . size ( ) ! = dtlCnt ) throw ApiCustomException . create ( "폐기 관리 상세 등록 실패" ) ;
} else {
throw ApiCustomException . create ( "폐기 관리 마스터 등록 실패" ) ;
}
return d to;
return reqD to;
}
/ * *
* < pre >
* 폐 기 관 리 목 록 조 회
* @param d to BizNimsRequest . DsuseMgtInq
* @param reqD to BizNimsRequest . DsuseMgtInq
* @return List < BizNimsResponse . DsuseMgtResponse > 조 회 된 폐 기 관 리 목 록
* < / pre >
* /
@Override
public List < BizNimsResponse . DsuseMgtRes > getDsuseMgts ( BizNimsRequest . DsuseMgtInq dto ) {
List < BizNimsResponse . DsuseMgtRes > resList = bizNimsMapper . selectDsuseMgts ( dto ) ;
public List < BizNimsResponse . DsuseMgtRes > getDsuseMgts ( final BizNimsRequest . DsuseMgtInq reqDto , String apiKey ) {
List < BizNimsResponse . DsuseMgtRes > resList = bizNimsMapper . selectDsuseMgts ( reqDto ) ;
if ( isEmpty ( apiKey ) ) apiKey = getApiInfInfo ( reqDto . getUserId ( ) ) . get ( "apiKey" ) ;
for ( BizNimsResponse . DsuseMgtRes r : resList ) {
r . setRptTyCdNm ( Constants . RPT_TY_CD . getName ( r . getRptTyCd ( ) ) ) ;
r . setDsuseSeCdNm ( Constants . DSUSE_SE_CD . getName ( r . getDsuseSeCd ( ) ) ) ;
r . setDsusePrvCdNm ( Constants . DSUSE_PRV_CD . getName ( r . getDsusePrvCd ( ) ) ) ;
r . setDsuseMthCdNm ( Constants . DSUSE_MTH_CD . getName ( r . getDsuseMthCd ( ) ) ) ;
for ( BizNimsResponse . DsuseMgtRes dto : resList ) {
dto . setRptTyCdNm ( Constants . RPT_TY_CD . getName ( dto . getRptTyCd ( ) ) ) ;
dto . setDsuseSeCdNm ( Constants . DSUSE_SE_CD . getName ( dto . getDsuseSeCd ( ) ) ) ;
dto . setDsusePrvCdNm ( Constants . DSUSE_PRV_CD . getName ( dto . getDsusePrvCd ( ) ) ) ;
dto . setDsuseMthCdNm ( Constants . DSUSE_MTH_CD . getName ( dto . getDsuseMthCd ( ) ) ) ;
Map < String , String > map = new HashMap < > ( ) ;
map . put ( "dscdmngId" , r . getDscdmngId ( ) ) ;
map . put ( "dscdmngId" , dto . getDscdmngId ( ) ) ;
List < BizNimsResponse . DsuseMgtDtlRes > dsuseRptInfoDtls = bizNimsMapper . selectDsuseMgtDtls ( map ) ;
setDsuseMgtDtlAddProductInfo ( dsuseRptInfoDtls );
r . getDsuseMgtDtls ( ) . addAll ( dsuseRptInfoDtls ) ;
setDsuseMgtDtlAddProductInfo ( dsuseRptInfoDtls , reqDto . getUserId ( ) , apiKey );
dto . getDsuseMgtDtls ( ) . addAll ( dsuseRptInfoDtls ) ;
}
return resList ;
@ -496,16 +534,20 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// FIXME: saveDsuseRptInfo() 메소드를 활용할 수 있도록 구성
@Override
public List < NimsApiDto . DsuseRptInfo > getDsuseMgtMapping ( BizNimsRequest . DsuseMgt reqDto ) {
Map < String , String > apiInfInfo = getApiInfInfo ( reqDto . getUserId ( ) ) ;
// 0. GET 폐기관리 데이타 정보
BizNimsResponse . DsuseMgtRes dsuseMgtDto = getDsuseMgts (
BizNimsRequest . DsuseMgtInq . builder ( )
. dscdmngIds ( List . of ( reqDto . getDscdmngId ( ) ) )
. deptCd ( apiInfInfo . get ( "deptCd" ) )
. prgrsSttsCd ( null )
. build ( ) )
. build ( ) ,
apiInfInfo . get ( "apiKey" ) )
. get ( 0 ) ;
NimsApiRequest . DsuseRptInfoReq rptDto = NimsApiRequest . DsuseRptInfoReq . builder ( )
. k ( apiInfInfo . get ( "apiKey" ) )
. fg ( "1" )
. pg ( "1" )
. fg2 ( "2" )
@ -514,7 +556,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
. sdt ( "20220101" )
. edt ( "20220131" )
. bc ( reqDto . getBsshCd ( ) )
. fg4 ( ofCd )
. fg4 ( apiInfInfo. get ( "deptCd" ) )
. build ( ) ;
// 1. GET 폐기보고 데이타 목록 - NIMS API 호출
@ -567,7 +609,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if ( ! "0" . equals ( dto . getRptTyCd ( ) ) ) continue ;
// 폐기 보고 정보 데이타 생성
createDsuseRpt ( dto );
createDsuseRpt ( dto , reqDto . getUserId ( ) );
// return List에 추가
rtnList . add ( dto ) ;
@ -598,11 +640,11 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 4-2) 폐기 관리 테이블에 사용자보고식별번호 반영
// -> 취소인 경우는 사용자/원사용자 식별번호 clear
// -> 변경인 경우는 사용자보고식별번호 -> 참조사용자보고식별번호 update
updateDsuseRptAndDsuseMgt ( dto );
updateDsuseRptAndDsuseMgt ( dto , reqDto . getUserId ( ) );
// 4-3) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
// -> 취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성
createDsuseRpt ( dto );
createDsuseRpt ( dto , reqDto . getUserId ( ) );
// FIXME : API 적용후 확인 필요
// 5. 결과 return 대상 데이타 List에서 NIMS 변경 데이타인 경우 대상에서 제외
@ -649,7 +691,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
. p ( mnfSeqInfo . getPrductCd ( ) )
. dbSkipYn ( "N" )
. build ( ) ;
List < NimsApiDto . ProductInfoKd > productInfoKds = saveProductInfoKd ( prdReq , false ) ;
List < NimsApiDto . ProductInfoKd > productInfoKds = saveProductInfoKd ( prdReq , false ) ;
if ( productInfoKds . size ( ) ! = 1 ) {
throw ApiCustomException . create ( String . format ( "제품정보 오류[Barcode 상품[%s] 데이타 확인이 필요 합니다.]" , mnfSeqInfo . getPrductCd ( ) ) ) ;
}
@ -692,6 +734,29 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
//------------------------------------------------------------------------------------------------------
// private method
//------------------------------------------------------------------------------------------------------
/ * *
* < pre >
* 사 용 자 ID 로 API KEY 정 보 조 회 ( profile 별 )
* - apiKey
* - 관 할 관 청 코 드 : deptCd - OF_CD
* @param userId
* @return Map < String , String > API KEY 정 보 , 관 할 청 코 드
* < / pre >
* /
private Map < String , String > getApiInfInfo ( String userId ) {
if ( isEmpty ( userId ) ) {
throw ApiCustomException . create ( "API 연계를 위한 정보를 찾기위해 사용자 아이디(userId)는 필수입니다" ) ;
}
return bizNimsMapper . selectApiInfInfoByUserId (
Map . of ( "userId" , userId , "profile" , Constants . PROFILE )
) . orElseThrow (
( ) - > ApiCustomException . create ( String . format ( "사용자[%s]의 API KEY 정보가 존재하지 않습니다" , userId ) )
) ;
}
/ * *
* < pre >
* 제 품 추 가 정 보 set
@ -700,18 +765,20 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param dtlList < NimsApiDto . DsuseRptInfoDtl >
* < / pre >
* /
private void setDsuseMgtDtlAddProductInfo ( List < BizNimsResponse . DsuseMgtDtlRes > dtlList ) {
private void setDsuseMgtDtlAddProductInfo ( List < BizNimsResponse . DsuseMgtDtlRes > dtlList , String userId , String apiKey ) {
for ( BizNimsResponse . DsuseMgtDtlRes r : dtlList ) { //if()
for ( BizNimsResponse . DsuseMgtDtlRes r : dtlList ) {
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
if ( isEmpty ( r . getNrcdSeNm ( ) ) | | isEmpty ( r . getPrtmSeNm ( ) ) ) {
//NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
List < NimsApiDto . ProductInfoKd > list = saveProductInfoKd (
NimsApiRequest . ProductInfoReq . builder ( )
. k ( apiKey )
. fg ( "1" )
. pg ( "1" )
. p ( r . getPrductCd ( ) )
. userId ( userId )
. build ( ) ,
false
) ;
@ -730,6 +797,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if ( isEmpty ( r . getBsshNm ( ) ) & & ! isEmpty ( r . getBsshCd ( ) ) ) {
List < BsshInfoSt > list = saveBsshInfoSt (
BsshInfoReq . builder ( )
. k ( apiKey )
. fg ( "1" )
. pg ( "1" )
. bc ( r . getBsshCd ( ) )
@ -756,8 +824,8 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param dto NimsApiDto . DsuseRptInfo
* < / pre >
* /
private void createDsuseRpt ( NimsApiDto . DsuseRptInfo dto ) {
dto . setRgtr ( Constants. NIMS_API_USER_ID ) ;
private void createDsuseRpt ( final NimsApiDto . DsuseRptInfo dto , String userId ) {
dto . setRgtr ( userId ) ;
dto . setRptTyCdNm ( Constants . RPT_TY_CD . getName ( dto . getRptTyCd ( ) ) ) ;
dto . setDsuseSeCdNm ( Constants . DSUSE_SE_CD . getName ( dto . getDsuseSeCd ( ) ) ) ;
dto . setDsusePrvCdNm ( Constants . DSUSE_PRV_CD . getName ( dto . getDsusePrvCd ( ) ) ) ;
@ -834,8 +902,8 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param dto NimsApiDto . DsuseRptInfo
* < / pre >
* /
private void updateDsuseRptAndDsuseMgt ( NimsApiDto . DsuseRptInfo dto ) {
dto . setRgtr ( Constants. NIMS_API_USER_ID ) ;
private void updateDsuseRptAndDsuseMgt ( NimsApiDto . DsuseRptInfo dto , String userId ) {
dto . setRgtr ( userId ) ;
String errMsg ;
if ( "1" . equals ( dto . getRptTyCd ( ) ) ) errMsg = "취소" ;
else errMsg = "변경" ;
@ -869,9 +937,10 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* < pre >
* 상 품 정 보 에 제 조 번 호 목 록 추 가
* @param list List < NimsApiDto . ProductInfoKd >
* @param apiKey Api Key
* < / pre >
* /
private void productInfoaddMnfSeqs ( List < NimsApiDto . ProductInfoKd > list ) {
private void productInfoaddMnfSeqs ( final List < NimsApiDto . ProductInfoKd > list , final String apiKey ) {
String productCd = "" ;
try {
@ -881,9 +950,11 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
List < NimsApiDto . MnfSeqInfo > mnfList = getMnfSeqInfo (
NimsApiRequest . MnfSeqInfoReq . builder ( )
. k ( apiKey )
. fg ( "1" )
. pg ( "1" )
. p ( d . getPrductCd ( ) )
. userId ( "" )
. build ( )
) ;
d . getMnfSeqInfos ( ) . addAll ( mnfList ) ;
@ -935,98 +1006,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/ * *
* < pre >
* 마 약 류 취 급 자 업 체 추 가 정 보 set
* 허 가 번 호 ( prmisnNo ) , 대 표 자 명 ( rprsntvNm ) set
* @param resList List < BizNimsResponse . DsuseMgtResponse >
* < / pre >
* /
private void setAddBsshInfo ( List < BizNimsResponse . DsuseRptInfoRes > resList ) {
for ( BizNimsResponse . DsuseRptInfoRes r : resList ) {
r . setRptTyCdNm ( Constants . RPT_TY_CD . getName ( r . getRptTyCd ( ) ) ) ;
r . setDsuseSeCdNm ( Constants . DSUSE_SE_CD . getName ( r . getDsuseSeCd ( ) ) ) ;
r . setDsusePrvCdNm ( Constants . DSUSE_PRV_CD . getName ( r . getDsusePrvCd ( ) ) ) ;
r . setDsuseMthCdNm ( Constants . DSUSE_MTH_CD . getName ( r . getDsuseMthCd ( ) ) ) ;
if ( isEmpty ( r . getPrmisnNo ( ) ) ) {
List < BsshInfoSt > list = saveBsshInfoSt (
BsshInfoReq . builder ( )
. fg ( "1" )
. pg ( "1" )
. bc ( r . getBsshCd ( ) )
. build ( )
) ;
if ( isEmpty ( list ) ) {
// FIXME : 데이타 정상 흐름 확인후 comment 제거
continue ;
//throw ApiCustomException.create(String.format("데이타 오류(마약류취급자식별번호[%s]에 해당하는 데이타가 없습니다)", r.getBsshCd()));
}
r . setPrmisnNo ( list . get ( 0 ) . getPrmisnNo ( ) ) ;
r . setRprsntvNm ( list . get ( 0 ) . getRprsntvNm ( ) ) ;
}
}
}
/ * *
* < pre >
* 제 품 추 가 정 보 set
* 마 약 항 정 구 분 ( nrcdSeNm ) , 중 점 일 반 구 분 ( prtmSenm ) , 제 조 수 입 자 명 ( bsshNm )
* 제 품 최 소 유 통 단 위 ( stdPackngStleNm ) , 제 품 낱 개 단 위 명 ( pceCoUnitNm ) set
* @param dtlList < NimsApiDto . DsuseRptInfoDtl >
* < / pre >
* /
private void setAddProductInfo ( List < NimsApiDto . DsuseRptInfoDtl > dtlList ) {
for ( NimsApiDto . DsuseRptInfoDtl r : dtlList ) { //if()
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
if ( isEmpty ( r . getNrcdSeNm ( ) ) | | isEmpty ( r . getPrtmSeNm ( ) ) ) {
//NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
List < NimsApiDto . ProductInfoKd > list = saveProductInfoKd (
NimsApiRequest . ProductInfoReq . builder ( )
. fg ( "1" )
. pg ( "1" )
. p ( r . getPrductCd ( ) )
. build ( ) ,
false
) ;
if ( isEmpty ( list ) ) {
// FIXME : 데이타 정상 흐름 확인후 comment 제거
continue ;
//throw ApiCustomException.create(String.format("데이타 오류(제품코드[%s]에 해당하는 데이타가 없습니다)", r.getPrductCd()));
}
r . setNrcdSeNm ( list . get ( 0 ) . getNrcdSeNm ( ) ) ;
r . setPrtmSeNm ( list . get ( 0 ) . getPrtmSeNm ( ) ) ;
r . setStdPackngStleNm ( list . get ( 0 ) . getStdPackngStleNm ( ) ) ;
r . setPceCoUnitNm ( list . get ( 0 ) . getPceCoUnitNm ( ) ) ;
}
// 제조수입자명(bsshNm)
if ( isEmpty ( r . getBsshNm ( ) ) & & ! isEmpty ( r . getBsshCd ( ) ) ) {
List < BsshInfoSt > list = saveBsshInfoSt (
BsshInfoReq . builder ( )
. fg ( "1" )
. pg ( "1" )
. bc ( r . getBsshCd ( ) )
. build ( )
) ;
if ( isEmpty ( list ) ) {
// FIXME : 데이타 정상 흐름 확인후 comment 제거
continue ;
//throw ApiCustomException.create(String.format("데이타 오류(마약류취급자식별번호[%s]에 해당하는 데이타가 없습니다)", r.getBsshCd()));
}
r . setBsshNm ( list . get ( 0 ) . getBsshNm ( ) ) ;
}
}
}
// @Override
// public List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo> result = infNimsService.getJurisdictionGovInfo(dto);
// return result.getResultOrThrow();
// }
//
// @Override
// public List<NimsApiDto.StorageInfo> saveStorageInfo(NimsApiRequest.StorageInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.StorageInfo> result = infNimsService.getStorageInfo(dto);
@ -1040,6 +1019,100 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// }
// /**
// * <pre>
// * 마약류 취급자 업체 추가 정보 set
// * 허가번호(prmisnNo), 대표자명(rprsntvNm) set
// * @param resList List<BizNimsResponse.DsuseMgtResponse>
// * </pre>
// */
// private void setAddBsshInfo(List<BizNimsResponse.DsuseRptInfoRes> resList) {
// for (BizNimsResponse.DsuseRptInfoRes r : resList) {
// r.setRptTyCdNm(Constants.RPT_TY_CD.getName(r.getRptTyCd()));
// r.setDsuseSeCdNm(Constants.DSUSE_SE_CD.getName(r.getDsuseSeCd()));
// r.setDsusePrvCdNm(Constants.DSUSE_PRV_CD.getName(r.getDsusePrvCd()));
// r.setDsuseMthCdNm(Constants.DSUSE_MTH_CD.getName(r.getDsuseMthCd()));
//
// if (isEmpty(r.getPrmisnNo())) {
// List<BsshInfoSt> list = saveBsshInfoSt(
// BsshInfoReq.builder()
// .fg("1")
// .pg("1")
// .bc(r.getBsshCd())
// .build()
// );
// if (isEmpty(list)) {
// // FIXME : 데이타 정상 흐름 확인후 comment 제거
// continue;
// //throw ApiCustomException.create(String.format("데이타 오류(마약류취급자식별번호[%s]에 해당하는 데이타가 없습니다)", r.getBsshCd()));
// }
// r.setPrmisnNo(list.get(0).getPrmisnNo());
// r.setRprsntvNm(list.get(0).getRprsntvNm());
// }
// }
// }
//
// /**
// * <pre>
// * 제품 추가 정보 set
// * 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm), 제조수입자명(bsshNm)
// * 제품최소유통단위(stdPackngStleNm), 제품낱개단위명(pceCoUnitNm) set
// * @param dtlList <NimsApiDto.DsuseRptInfoDtl>
// * </pre>
// */
// private void setAddProductInfo(List<NimsApiDto.DsuseRptInfoDtl> dtlList) {
//
// for (NimsApiDto.DsuseRptInfoDtl r : dtlList) {//if()
// // 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
// if (isEmpty(r.getNrcdSeNm()) || isEmpty(r.getPrtmSeNm())) {
// //NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
//
// List<NimsApiDto.ProductInfoKd> list = saveProductInfoKd(
// NimsApiRequest.ProductInfoReq.builder()
// .fg("1")
// .pg("1")
// .p(r.getPrductCd())
// .build(),
// false
// );
// if (isEmpty(list)) {
// // FIXME : 데이타 정상 흐름 확인후 comment 제거
// continue;
// //throw ApiCustomException.create(String.format("데이타 오류(제품코드[%s]에 해당하는 데이타가 없습니다)", r.getPrductCd()));
// }
// r.setNrcdSeNm(list.get(0).getNrcdSeNm());
// r.setPrtmSeNm(list.get(0).getPrtmSeNm());
// r.setStdPackngStleNm(list.get(0).getStdPackngStleNm());
// r.setPceCoUnitNm(list.get(0).getPceCoUnitNm());
// }
//
// // 제조수입자명(bsshNm)
// if (isEmpty(r.getBsshNm()) && !isEmpty(r.getBsshCd())) {
// List<BsshInfoSt> list = saveBsshInfoSt(
// BsshInfoReq.builder()
// .fg("1")
// .pg("1")
// .bc(r.getBsshCd())
// .build()
// );
// if (isEmpty(list)) {
// // FIXME : 데이타 정상 흐름 확인후 comment 제거
// continue;
// //throw ApiCustomException.create(String.format("데이타 오류(마약류취급자식별번호[%s]에 해당하는 데이타가 없습니다)", r.getBsshCd()));
// }
// r.setBsshNm(list.get(0).getBsshNm());
// }
// }
// }
/ *
@Override
public BizNimsAarDto . AarHeader getTgtDsuseRptData ( BizNimsRequest . DsuseMgt dto ) {