From 51c9524a32b040f3d219ac9c2acd5d80840dcfd6 Mon Sep 17 00:00:00 2001 From: "Jonguk. Lim" Date: Fri, 24 May 2024 13:34:04 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=8F=90=EA=B8=B0=EB=B3=B4=EA=B3=A0?= =?UTF-8?q?=EB=A7=A4=ED=95=91=20=EB=8D=B0=EC=9D=B4=ED=83=80=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C?= 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 | 190 ++++++++++++++++-- .../adds/biz/nims/web/BizNimsController.java | 8 + 3 files changed, 185 insertions(+), 17 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 18b6ed0..3e084d8 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 @@ -59,7 +59,9 @@ public interface BizNimsService { void modifyPrgsSttsOfDsuseMgt(final BizNimsRequest.DsuseMgt dto); NimsApiDto.ProductInfoKd getPrdMnfSeqInfoOfBarcode(final String barcodeStr); - // @Deprecated + List getDsuseMgtMapping(final BizNimsRequest.DsuseMgt dto); + + // @Deprecated // List saveDsuseMgts(List dtos); 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 d2a36ab..f3df58a 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 @@ -49,13 +49,10 @@ import lombok.extern.slf4j.Slf4j; @Service public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsService { /** - * 기관명 + * 관할군청코드 */ - @Value("${app.inf.nims.onm:}") - private String onm; - - @Value("${app.inf.nims.bssh-cd:}") - private String bsshCd; + @Value("${app.inf.nims.ofCd:}") + private String ofCd; private static final Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); private final InfNimsService infNimsService; @@ -218,7 +215,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1)); } - // TODO: 보고관리-보고정보 매핑 처리 + // FIXME: 미완료 보고관리-보고정보 매핑 처리 // 미완료(종료)된 폐기 관리 목록 조회 List dsuseMgts = getDsuseMgts(BizNimsRequest.DsuseMgtInq.builder() .prgrsSttsCd(Constants.PRGRS_STTS_CD.END.getCode()) @@ -265,11 +262,12 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe // 1. 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 for (NimsApiDto.DsuseRptInfo dto : workList) { + // 신규가 아닌 경우 skip + if(!"0".equals(dto.getRptTyCd())) continue; + dto.setOrgUsrRptIdNo(dto.getUsrRptIdNo()); dto.setRgtr(Constants.NIMS_API_USER_ID); - // 신규가 아닌 경우 skip - if(!"0".equals(dto.getRptTyCd())) continue; // 폐기 보고 정보 데이타 생성 createDsuseRpt(dto, true); @@ -277,6 +275,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe rtnlist.add(dto); // FIXME : 폐기 관리 데이타 매핑 + // FIXME: 폐기 관리 데이타 폐기보고 매핑 대상 조회인 경우? List newList = dto.mappingNewDsuseRptInfo(dsuseMgts); if(newList.size() > 1){ throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]"); @@ -286,8 +285,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe }; } - - // 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경) String errMsg = null; for (NimsApiDto.DsuseRptInfo dto : workList) { @@ -307,7 +304,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe // 조건 : 사용자보고식별번호 = 참조사용자보고식별번호 // => usr_rpt_id_no -> refUsrRptIdNo update // => 취소인 경우 use_yn = 'N' update - updateDsuseRpt(dto); + updateDsuseRptAndDsuseMgt(dto); // 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성) createDsuseRpt(dto, false); @@ -398,6 +395,165 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe return resList; } + // FIXME: API 적용 필요 - nims API 확정후 + // FIXME: saveDsuseRptInfo() 메소드를 활용할 수 있도록 구성 + @Override + public List getDsuseMgtMapping(BizNimsRequest.DsuseMgt reqDto) { + NimsApiRequest.DsuseRptInfoReq rptDto = NimsApiRequest.DsuseRptInfoReq.builder() + .fg("1") + .pg("1") + .fg2("2") + .se("AAR") + .fg3("1") + .sdt("20220101") + .edt("20220131") + .bc(reqDto.getBsshCd()) + .fg4(ofCd) + .build(); + + List rsltList = new ArrayList<>(); + while(true) { + NimsApiResult.Response rslt = infNimsService.getDsuseRptInfo(rptDto); + List curList = rslt.getResultOrThrow(); + + if(isEmpty(curList)) break; + + rsltList.addAll(curList); + + if(rslt.isEndYn()) break; + rptDto.setPg(String.valueOf(Integer.parseInt(rptDto.getPg()) + 1)); + } + + // GET 보고관리정보 + BizNimsResponse.DsuseMgtRes dsuseMgt = getDsuseMgts( + BizNimsRequest.DsuseMgtInq.builder() + .dscdmngIds(List.of(reqDto.getDscdmngId())) + .prgrsSttsCd(null) + .build()) + .get(0); + + ////////////////////////////////////////////////////////////////////////////// + // FIXME : 테스트를 위한 코드 + ////////////////////////////////////////////////////////////////////////////// + // for (NimsApiDto.DsuseRptInfo dto : rsltList) { + // // 폐기 관리 데이타 매핑 + // for(BizNimsResponse.DsuseMgtResponse mgtDto: dsuseMgts){ + // // 폐기 신청서 접수 상태 데이타만 처리 + // if(Constants.PRGRS_STTS_CD.RECEIPT.getCode().equals(mgtDto.getPrgrsSttsCd())){ + // dto.mappingDsuseRptInfo(mgtDto); + // }; + // } + // } + // if(true) return null; + ////////////////////////////////////////////////////////////////////////////// + + + // 0. 폐기보고 API 호출 결과 목록에서 기 조회(저장)한 데이타 대상 에서 제외 (usrRptIdNo가 DB에 저장된 경우) + // 작업대상 데이타 List + List workList = new ArrayList<>(); + // 결과 return 작업 대상, 대상 데이타 List + List rtnTmplist = new ArrayList<>(); + List rtnlist = new ArrayList<>(); + for (NimsApiDto.DsuseRptInfo dto : rsltList) { + Map map = new HashMap<>(); + map.put("usrRptIdNo", dto.getUsrRptIdNo()); + NimsApiDto.DsuseRptInfo infoDto = bizNimsMapper.selectDsuseRptInfoByUsrRptIdNo(map); + // 기조회(저장)한 데이타가 아니면 대상에 추가(usrRptIdNo가 DB에 저장되지 않은 경우) + if(isEmpty(infoDto)){ + + + + // 기조회(저장)한 데이타 && 마지막 데이타(사용여부 'Y')인 경우는 return 대상에 추가 + // 사용자보고번호가 참조사용자보고번호로 들어오는 변경 및 취소건에 의해 + // return 대상에서 제외될 수 있슴 + }else{ + // FIXME: API 적용 필요 + // API 조회 반영된 사용여부가 'Y', 처리상태코드가 미완료인 경우는 return 대상 + //if("Y".equals(infoDto.getUseYn()) && !"".equals(infoDto.getStatus())){ + if("Y".equals(infoDto.getUseYn())){ + rtnTmplist.add(dto); + rtnlist.add(dto); + } + }; + } + + // 1. 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 + for (NimsApiDto.DsuseRptInfo dto : workList) { + // 신규가 아닌 경우 skip + if(!"0".equals(dto.getRptTyCd())) continue; + + dto.setOrgUsrRptIdNo(dto.getUsrRptIdNo()); + dto.setRgtr(Constants.NIMS_API_USER_ID); + + + // 폐기 보고 정보 데이타 생성 + createDsuseRpt(dto, true); + rtnTmplist.add(dto); + rtnlist.add(dto); + + // FIXME : 폐기 관리 데이타 매핑 + // FIXME: 폐기 관리 데이타 폐기보고 매핑 대상 조회인 경우? + List newList = List.of();////dto.mappingNewDsuseRptInfo(dsuseMgts); + if(newList.size() > 1){ + throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]"); + } + if(bizNimsMapper.updateMappingDsuseMgt(newList.get(0)) == 1){ + throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]"); + }; + } + + // 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경) + String errMsg = null; + for (NimsApiDto.DsuseRptInfo dto : workList) { + dto.setRgtr(Constants.NIMS_API_USER_ID); + + // 신규인 경우 skip + if("0".equals(dto.getRptTyCd())) continue; + + // 2-1. refUsrRptIdNo 필수 체크 + if(isEmpty(dto.getRefUsrRptIdNo())){ + throw ApiCustomException.create("데이타 오류[취소 및 변경인 경우 참조사용자식별번호(REF_USR_RPT_ID_NO) 필수]"); + } + + // 2-2. 폐기보고정보, 폐기관리 변경 + // 1) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 사용여부 'N' update + // 2) tb_dsuse_mgt 변경 + // 조건 : 사용자보고식별번호 = 참조사용자보고식별번호 + // => usr_rpt_id_no -> refUsrRptIdNo update + // => 취소인 경우 use_yn = 'N' update + updateDsuseRptAndDsuseMgt(dto); + + // 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성) + createDsuseRpt(dto, false); + + // FIXME : API 적용 필요 + // 결과 return 대상 데이타 List에서 조회한 변경 대상이 있는 경우 replace + // 결과 return 대상 데이타 List에서 조회한 취소 대상이 있는 경우 삭제 + for(NimsApiDto.DsuseRptInfo d : rtnTmplist){ + if(d.getOrgUsrRptIdNo().equals(dto.getOrgUsrRptIdNo()) + && d.getUsrRptIdNo().equals(dto.getRefUsrRptIdNo())){ + rtnlist.remove(d); + + if(dto.getRptTyCd().equals("2")){ + rtnlist.add(dto); + } + }; + } + + // FIXME : 폐기 관리 데이타 매핑 + List newList = List.of(); ////dto.mappingDsuseRptInfo(dsuseMgts); + if(newList.size() > 1){ + throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]"); + } + if(bizNimsMapper.updateMappingDsuseMgt(newList.get(0)) == 1){ + throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]"); + }; + } + + // return dtos; + return workList; + } + @Override public void modifyPrgsSttsOfDsuseMgt(BizNimsRequest.DsuseMgt dto) { dto.setRgtr(dto.getUserId()); @@ -533,7 +689,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe dto.setDsusePrvCdNm(Constants.DSUSE_PRV_CD.getName(dto.getDsusePrvCd())); dto.setDsuseMthCdNm(Constants.DSUSE_MTH_CD.getName(dto.getDsuseMthCd())); - // TODO : 폐기 관리 테이블에 사용자보고식별번호 반영 + // FIXME : 폐기 관리 테이블에 사용자보고식별번호 반영 // 원 사용자 식별 번호 set - 변경/취소 인 경우 // 신규인 경우는 사용자보고식별번호로 설정 if(!isNew){ @@ -560,7 +716,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe } - // TODO : 폐기 관리 테이블에 사용자보고식별번호 반영 + // FIXME : 폐기 관리 테이블에 사용자보고식별번호 반영 if (bizNimsMapper.insertDsuseRptInfo(dto) == 1) { //취소인 경우 상세 데이타 등록 skip @@ -588,13 +744,15 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe * @param dto NimsApiDto.DsuseRptInfo * */ - private void updateDsuseRpt(NimsApiDto.DsuseRptInfo dto) { + private void updateDsuseRptAndDsuseMgt(NimsApiDto.DsuseRptInfo dto) { String errMsg; if ("1".equals(dto.getRptTyCd())) errMsg = "취소"; else errMsg = "변경"; if (bizNimsMapper.updateCancelDsuseRptInfo(dto) == 1) { - // TODO : 폐기 관리 테이블에 사용자보고식별번호 반영 + // FIXME : 폐기 관리 테이블에 사용자보고식별번호 반영 + // FIXME : 취소인 경우는 사용자/원사용자 식별번호 clear + // FIXME : 변경인 경우는 사용자식별번호 update // tb_dsuse_mgt // 조건 : 사용자보고식별번호 = 참조사용자보고식별번호 // => usr_rpt_id_no -> refUsrRptIdNo update 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 20d7977..c588fdd 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 @@ -142,6 +142,14 @@ public class BizNimsController { return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dto)); } + @Operation(summary = "폐기 관리 데이터 폐기보고 매핑 조회", description = "폐기 관리 데이터 폐기보고 매핑 조회

폐기 관리 데이터에 대한 폐기보고 매핑 대상 데이타 조회 return") + @PostMapping("/getDsuseMgtMapping") + public ApiBaseResponse> getDsuseMgtMapping( + @RequestBody BizNimsRequest.DsuseMgt dto + ) { + return ApiBaseResponse.of(bizNimsService.getDsuseMgtMapping(dto)); + } + @Operation(summary = "사고 마약류 폐기 관리 목록 조회", description = "사고 마약류 폐기 관리 목록 조회

사고마약류 관리대장, 결과통보서, 폐기현황등에 필요한 내용 조회") @PostMapping(value = "/getDsuseMgts") public ApiBaseResponse> getDsuseMgts(