feat: 일련번호 조회(seqinfo_pub) API 적용

제품조회 반영(업체의 제품 조회 되도록)
main
Jonguk. Lim 3 months ago
parent 9db90b9d82
commit 37052ea41c

@ -33,7 +33,7 @@ public interface BizNimsService {
List<NimsApiDto.BsshInfoSt> saveBsshInfoSt(final NimsApiRequest.BsshInfoReq dto);
List<NimsApiDto.ProductInfoKd> saveProductInfoKd(final NimsApiRequest.ProductInfoReq dto, boolean isMnfSeqInfo);
ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(final NimsApiRequest.MnfSeqInfoReq dto);
List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo2(final NimsApiRequest.MnfSeqInfoReq dto);
// List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo2(final NimsApiRequest.MnfSeqInfoReq dto);
List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(final NimsApiRequest.JurisdictionGovInfoReq dto);
List<NimsApiDto.DsuseRptInfo> getNimsDsuseRptInfo(final NimsApiRequest.DsuseRptInfoReq dto);

@ -149,20 +149,22 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
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;
}
}
////////////////////////////////////////////////////////////////////////////////////////
// TODO: API 적용후 DB 조회 skip 처리
// if("N".equals(reqDto.getDbSkipYn())) {
// list = bizNimsMapper.selectProductInfos(reqDto);
// if (!isEmpty(list)){
// if(isMnfSeqInfo){
// if(isEmpty(reqDto.getK())){
// productInfoaddMnfSeqs(list, reqDto.getBc(), getApiInfInfo(reqDto.getUserId()).get("apiKey"));
// }else {
// productInfoaddMnfSeqs(list, reqDto.getBc(), reqDto.getK());
// }
// }
// return list;
// }
// }
///////////////////////////////////////////////////////////////
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
@ -184,7 +186,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
}
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if(isMnfSeqInfo) productInfoaddMnfSeqs(curList, reqDto.getK());
if(isMnfSeqInfo) productInfoaddMnfSeqs(curList, reqDto.getBc(), reqDto.getK());
list.addAll(curList);
if(rslt.isEndYn()) break;
@ -201,24 +203,12 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
//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);
}
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> list = rslt.getResult();
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
if(!isEmpty(list) && (!isEmpty(reqDto.getT()) && !isEmpty(reqDto.getVd()))) {
list.sort((a, b) -> {
if (isEmpty(a.getPrdValidDe()) && isEmpty(b.getPrdValidDe()))
return 0;
@ -228,57 +218,13 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
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);
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
public List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(final NimsApiRequest.JurisdictionGovInfoReq reqDto) {
List<NimsApiDto.JurisdictionGovInfo> list = new ArrayList<>();
@ -443,7 +389,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
Map<String, String> map = new HashMap<>();
map.put("dscdmngId", dto.getDscdmngId());
List<BizNimsResponse.DsuseMgtDtlRes> dsuseRptInfoDtls = bizNimsMapper.selectDsuseMgtDtls(map);
if(isForDoc) setDsuseMgtDtlAddProductInfo(dsuseRptInfoDtls, reqDto.getUserId(), apiKey);
if(isForDoc) setDsuseMgtDtlAddProductInfo(dsuseRptInfoDtls, dto.getBsshCd(), reqDto.getUserId(), apiKey);
dto.getDsuseMgtDtls().addAll(dsuseRptInfoDtls);
}
@ -565,7 +511,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
.fg("1")
.pg("1")
.p(mnfSeqInfo.getPrductCd())
.dbSkipYn("N")
.userId(userId)
.build();
List<NimsApiDto.ProductInfoKd> productInfoKds = saveProductInfoKd(prdReq, false);
@ -610,7 +555,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param dtlList <NimsApiDto.DsuseRptInfoDtl>
* </pre>
*/
private void setDsuseMgtDtlAddProductInfo(List<BizNimsResponse.DsuseMgtDtlRes> dtlList, String userId, String apiKey) {
private void setDsuseMgtDtlAddProductInfo(List<BizNimsResponse.DsuseMgtDtlRes> dtlList, String bsshCd, String userId, String apiKey) {
for (BizNimsResponse.DsuseMgtDtlRes r : dtlList) {
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
if (isEmpty(r.getNrcdSeNm()) || isEmpty(r.getPrtmSeNm())) {
@ -899,7 +844,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param apiKey Api Key
* </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 = "";
try {
@ -913,6 +858,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
.fg("1")
.pg("1")
.p(d.getPrductCd())
.bc(bsshCd)
.userId("")
.build()
);
@ -997,4 +943,48 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return files.get(0).getId();
}
private 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.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;
}
}

@ -85,13 +85,13 @@ public class BizNimsController {
return bizNimsService.getMnfSeqInfo(dto);
}
@Operation(summary = "NIMS 제조 일련 번호 정보 조회", description = "제보 일련 번호 정보 조회<br>NIMS API 호출 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br>userId - 사용자ID", tags = { "NIMS API" })
@RequestMapping(value = "/getNimsMnfSeqInfo2", method = { RequestMethod.POST, RequestMethod.GET })
public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getNimsMnfSeqInfo2(
@ModelAttribute NimsApiRequest.MnfSeqInfoReq dto
) {
return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo2(dto));
}
// @Operation(summary = "NIMS 제조 일련 번호 정보 조회", description = "제보 일련 번호 정보 조회<br>NIMS API 호출 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br>userId - 사용자ID", tags = { "NIMS API" })
// @RequestMapping(value = "/getNimsMnfSeqInfo2", method = { RequestMethod.POST, RequestMethod.GET })
// public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getNimsMnfSeqInfo2(
// @ModelAttribute NimsApiRequest.MnfSeqInfoReq dto
// ) {
// return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo2(dto));
// }
@Operation(summary = "NIMS 관할 허가 관청 정보 조회", description = "관할 허가 관청 정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 결과 Return<br><br><strong>아래 항목만 set</strong><br>onm - 기관명<br>ocd - 기관코드<br>adr - 주소<br>dbSkipYn - N : db조회후 결과 없는경우만 API호출, Y : API 호출<br>userId - 사용자ID<br><strong>onm, ocd, adr중 하나는 필수</strong>", tags = { "NIMS API" })
@RequestMapping(value = "/getNimsJurisdictionGovInfo", method = { RequestMethod.POST, RequestMethod.GET })

@ -198,15 +198,11 @@ public class NimsApiRequest {
/**
* <pre>
* DB skip
* DB NIMS API
* true DB skip
*
*
* </pre>
*/
@Schema(title = "DB 조회 skip 여부", description = "DB 조회 skip 여부(DB 조회 없이 NIMS API호출 하려면 Y)", example = "N")
@Builder.Default
private String dbSkipYn = "N";
@Schema(title = "마약류취급자번호", description = "마약류취급자번호", example = " ")
private String bc;
/**
* <pre>
@ -384,11 +380,17 @@ public class NimsApiRequest {
@Pattern(regexp = "^$|[A-Z0-9]{1,}", message = "번호는 영숫자(A~Z, 0~9)만 입력가능합니다")
private String t = StringUtils.EMPTY;
/**
*
*/
@Schema(title = "마약류 취급자 식별 번호", description = "마약류 취급자 식별 번호", example = " ")
private String bc;
/**
*
*/
@Schema(title = "유효기간", description = "유효기간", example = " ")
private String prdValidDe;
private String vd;
/**
* <pre>

@ -57,7 +57,7 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
private String productinfoKd;
/**
* API URL
* API URL
*/
@Value("${app.inf.nims.api.seqinfo}")
private String seqinfo;
@ -95,18 +95,30 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
ApiUtil.validate(dto, null, validator);
if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);
String rslt = ApiUtil.callNimsApi(nimsUrl + productinfoKd, dto);
//FIXME: 운영기 반영 이후 주석 제거
//String rslt = ApiUtil.callNimsApi(nimsUrl + productinfoKd, dto);
dto.setK("998003699950fa950b798c9edea1b38f3cfbcf3b77e03e419");
String rslt = ApiUtil.callNimsApi("https://test.nims.or.kr" + productinfoKd, dto);
NimsApiResult<NimsApiDto.ProductInfoKd> result = json.parse(rslt, new TypeReference<>() {});
return result.getResponse();
}
/**
* API URL
* @param dto NimsApiRequest.MnfSeqInfoReq
* @return NimsApiResult.Response<NimsApiDto.MnfSeqInfo>
*/
@Override
//@TraceLogging
public NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoReq dto) {
ApiUtil.validate(dto, null, validator);
if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);
String rslt = ApiUtil.callNimsApi(nimsUrl + seqinfo, dto);
//FIXME: 운영기 반영 이후 주석 제거
//String rslt = ApiUtil.callNimsApi(nimsUrl + seqinfo, dto);
//dto.setK("1d6646562470902a61fc334c83a249cdcc5dc753426942138ee04342e66c8128");
dto.setK("998003699950fa950b798c9edea1b38f3cfbcf3b77e03e419");
dto.setBc("");
String rslt = ApiUtil.callNimsApi("https://test.nims.or.kr" + seqinfo, dto);
NimsApiResult<NimsApiDto.MnfSeqInfo> result = json.parse(rslt, new TypeReference<>() {});
return result.getResponse();
}

@ -52,7 +52,7 @@ public class InfNimsController {
return ApiBaseResponse.of(infNimsService.getProductInfoKd(dto));
}
@Operation(summary = "제조 일련 번호 정보 조회", description = "제조 일련 번호 정보 조회")
@Operation(summary = "제조 일련 번호 정보 조회(업체별)", description = "제조 일련 번호 정보 조회(업체별)")
@PostMapping("/getMnfSeqInfo")
public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
@RequestBody NimsApiRequest.MnfSeqInfoReq dto

@ -4,7 +4,7 @@ app:
api:
bsshinfoStV1: /api/bsshinfo_st_v1.do
productinfoKd: /api/productinfo_kd.do
seqinfo: /api/seqinfo.do
seqinfo: /api/seqinfo_pub.do
officeinfo: /api/officeinfo.do
placeinfoV1: /api/placeinfo_v1.do
dsuseresult: /api/dsuseresult.do

Loading…
Cancel
Save