From d59489a823be1ee55da67c54c3f56c3ba7edee18 Mon Sep 17 00:00:00 2001 From: "Jonguk. Lim" Date: Tue, 9 Jul 2024 12:41:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=8B=9C=EB=A6=AC=EC=96=BC=EB=B2=88?= =?UTF-8?q?=ED=98=B8=EA=B2=80=EC=83=89=20=ED=8E=98=EC=9D=B4=EC=A7=95=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adds/biz/nims/service/BizNimsService.java | 4 +- .../nims/service/bean/BizNimsServiceBean.java | 93 +++++++++++++------ .../adds/biz/nims/web/BizNimsController.java | 10 +- .../xit/adds/core/model/ApiBaseResponse.java | 19 +--- 4 files changed, 78 insertions(+), 48 deletions(-) diff --git a/src/main/java/cokr/xit/adds/biz/nims/service/BizNimsService.java b/src/main/java/cokr/xit/adds/biz/nims/service/BizNimsService.java index 3e873a0..2558601 100644 --- a/src/main/java/cokr/xit/adds/biz/nims/service/BizNimsService.java +++ b/src/main/java/cokr/xit/adds/biz/nims/service/BizNimsService.java @@ -7,6 +7,7 @@ import org.springframework.web.multipart.MultipartFile; import cokr.xit.adds.biz.nims.model.BizNimsDto; import cokr.xit.adds.biz.nims.model.BizNimsRequest; import cokr.xit.adds.biz.nims.model.BizNimsResponse; +import cokr.xit.adds.core.model.ApiBaseResponse; import cokr.xit.adds.inf.nims.model.NimsApiDto; import cokr.xit.adds.inf.nims.model.NimsApiRequest; @@ -31,7 +32,8 @@ public interface BizNimsService { //------------------------------------------------------------------------------------------------------ List saveBsshInfoSt(final NimsApiRequest.BsshInfoReq dto); List saveProductInfoKd(final NimsApiRequest.ProductInfoReq dto, boolean isMnfSeqInfo); - List getMnfSeqInfo(final NimsApiRequest.MnfSeqInfoReq dto); + ApiBaseResponse> getMnfSeqInfo(final NimsApiRequest.MnfSeqInfoReq dto); + List getMnfSeqInfo2(final NimsApiRequest.MnfSeqInfoReq dto); List getJurisdictionGovInfo(final NimsApiRequest.JurisdictionGovInfoReq dto); List getNimsDsuseRptInfo(final NimsApiRequest.DsuseRptInfoReq dto); diff --git a/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java b/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java index 6965790..681ebae 100644 --- a/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java +++ b/src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java @@ -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 getMnfSeqInfo(NimsApiRequest.MnfSeqInfoReq reqDto) { + public ApiBaseResponse> 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 list = new ArrayList<>(); + //while (true) { + NimsApiResult.Response rslt = infNimsService.getMnfSeqInfo(reqDto); + + List 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> res = ApiBaseResponse.of(list); + res.setTotalCount(rslt.getBody().getTotalCount()); + return res; + } + + @Override + public List 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 list = new ArrayList<>(); while (true) { NimsApiResult.Response rslt = infNimsService.getMnfSeqInfo(reqDto); @@ -207,37 +250,31 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe List 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 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 mnfList = getMnfSeqInfo( + List mnfList = getMnfSeqInfo2( NimsApiRequest.MnfSeqInfoReq.builder() .k(apiKey) .fg("1") diff --git a/src/main/java/cokr/xit/adds/biz/nims/web/BizNimsController.java b/src/main/java/cokr/xit/adds/biz/nims/web/BizNimsController.java index 6780c4c..e07bf29 100644 --- a/src/main/java/cokr/xit/adds/biz/nims/web/BizNimsController.java +++ b/src/main/java/cokr/xit/adds/biz/nims/web/BizNimsController.java @@ -82,7 +82,15 @@ public class BizNimsController { public ApiBaseResponse> getNimsMnfSeqInfo( @ModelAttribute NimsApiRequest.MnfSeqInfoReq dto ) { - return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo(dto)); + return bizNimsService.getMnfSeqInfo(dto); + } + + @Operation(summary = "NIMS 제조 일련 번호 정보 조회", description = "제보 일련 번호 정보 조회
NIMS API 호출 결과 Return

아래 항목만 set
p - 제품번호
userId - 사용자ID", tags = { "NIMS API" }) + @RequestMapping(value = "/getNimsMnfSeqInfo2", method = { RequestMethod.POST, RequestMethod.GET }) + public ApiBaseResponse> getNimsMnfSeqInfo2( + @ModelAttribute NimsApiRequest.MnfSeqInfoReq dto + ) { + return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo2(dto)); } @Operation(summary = "NIMS 관할 허가 관청 정보 조회", description = "관할 허가 관청 정보 조회

NIMS API 호출 결과를 DB에 저장후 결과 Return

아래 항목만 set
onm - 기관명
ocd - 기관코드
adr - 주소
dbSkipYn - N : db조회후 결과 없는경우만 API호출, Y : API 호출
userId - 사용자ID
onm, ocd, adr중 하나는 필수", tags = { "NIMS API" }) diff --git a/src/main/java/cokr/xit/adds/core/model/ApiBaseResponse.java b/src/main/java/cokr/xit/adds/core/model/ApiBaseResponse.java index 6684472..c27bf74 100644 --- a/src/main/java/cokr/xit/adds/core/model/ApiBaseResponse.java +++ b/src/main/java/cokr/xit/adds/core/model/ApiBaseResponse.java @@ -4,7 +4,6 @@ import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.*; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Collection; import java.util.Objects; import org.apache.commons.lang3.ObjectUtils; @@ -51,7 +50,7 @@ public class ApiBaseResponse { private T data; @Schema(requiredMode = REQUIRED, title = "실행 결과 건수", description = "실행 결과 건수", example = " ") - private int totalCount; + private int totalCount = 0; @Schema(requiredMode = REQUIRED, title = "API 실행 성공 or 실패", description = "API 실행 성공(true) or 실패(false)", example = " ") private Boolean success = Objects.equals(code, ResultCode.SUCCESS.getStatusCode()); @@ -102,20 +101,4 @@ public class ApiBaseResponse { this.message = message; this.data = data; } - - public int getTotalCount() { - if(data == null){ - this.totalCount = 0; - - }else { - - if (Collection.class.isAssignableFrom(data.getClass())) { - this.totalCount = ((Collection) data).size(); - - } else { - this.totalCount = 1; - } - } - return totalCount; - } }