feat: 폐기보고 - 보고정보 API 반영

dev
Jonguk. Lim 5 months ago
parent 3c05b805e7
commit 9ec067cc2a

@ -228,29 +228,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return list; return list;
} }
/**
* <pre>
* API DB
* orgUsrRptIdNo()
*
*
* 0. () (usrRptIdNo DB )
* 1. (rptTyCd : 0) - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
* - orgUsrRptIdNo() = (usrRptIdNo)
* 2. (rptTyCd : 1 - , 2 - )
* 2-1. refUsrRptIdNo
* 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
* 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
* => tb_dsuse_rpt_info 'N'
* @param reqDto NimsApiRequest.DsuseRptInfoRequest
* @return List<NimsApiDto.DsuseRptInfo>
* </pre>
*/
@Override @Override
public List<NimsApiDto.DsuseRptInfo> saveDsuseRptInfo(NimsApiRequest.DsuseRptInfoReq reqDto) { public List<NimsApiDto.DsuseRptInfo> saveDsuseRptInfo(NimsApiRequest.DsuseRptInfoReq reqDto) {
List<NimsApiDto.DsuseRptInfo> nimsList = new ArrayList<>(); List<NimsApiDto.DsuseRptInfo> nimsList = new ArrayList<>();
@ -259,147 +237,11 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
reqDto.setK(apiInfInfo.get("apiKey")); reqDto.setK(apiInfInfo.get("apiKey"));
reqDto.setGc(apiInfInfo.get("deptCd")); // 관할관청코드 reqDto.setGc(apiInfInfo.get("deptCd")); // 관할관청코드
while(true) { List<NimsApiDto.DsuseRptInfo> rtnList = saveFromfindDsuseRptDataByNimsApi(reqDto);
NimsApiResult.Response<NimsApiDto.DsuseRptInfo> rslt = infNimsService.getDsuseRptInfo(reqDto);
List<NimsApiDto.DsuseRptInfo> curList = rslt.getResultOrThrow();
if(isEmpty(curList)) break;
nimsList.addAll(curList);
if(rslt.isEndYn()) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
// FIXME: 미완료 보고관리-보고정보 매핑 처리
// 미완료(종료)된 폐기 관리 목록 조회
List<BizNimsResponse.DsuseMgtRes> dsuseMgts = getDsuseMgts(BizNimsRequest.DsuseMgtInq.builder()
.prgrsSttsCd(Constants.PRGRS_STTS_CD.COMPLETE.getCode())
.build(),
false);
//////////////////////////////////////////////////////////////////////////////
// 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. 조회(저장)한 데이타 대상 에서 제외 (usrRptIdNo가 DB에 저장된 경우)
// 작업대상 데이타 List
List<NimsApiDto.DsuseRptInfo> workList = new ArrayList<>();
// 결과 return 작업 대상, 대상 데이타 List
List<NimsApiDto.DsuseRptInfo> rtnTmplist = new ArrayList<>();
List<NimsApiDto.DsuseRptInfo> rtnlist = new ArrayList<>();
for (NimsApiDto.DsuseRptInfo nimsDto : nimsList) {
Map<String, String> map = new HashMap<>();
// FIXME: API 적용후 적용 내용 삭제 ///////////////////////
if("신규".equals(nimsDto.getRptTyCd())) {
nimsDto.setRptTyCd(RPT_TY_CD.NEW.getCode());
}else if("취소".equals(nimsDto.getRptTyCd())) {
nimsDto.setRptTyCd(RPT_TY_CD.CANCEL.getCode());
}else if("변경".equals(nimsDto.getRptTyCd())){
nimsDto.setRptTyCd(RPT_TY_CD.MODIFY.getCode());
}
/////////////////////////////////////////////////////////
map.put("usrRptIdNo", nimsDto.getUsrRptIdNo());
NimsApiDto.DsuseRptInfo infoDto = bizNimsMapper.selectDsuseRptInfoByUsrRptIdNo(map);
if(isEmpty(infoDto)){
workList.add(nimsDto);
}else{
// FIXME: API 적용 필요
// API 조회 반영된 사용여부가 'Y', 처리상태코드가 미완료인 경우는 return 대상
//if("Y".equals(infoDto.getUseYn()) && !"".equals(infoDto.getStatus())){
if("Y".equals(infoDto.getUseYn())){
rtnTmplist.add(nimsDto);
rtnlist.add(nimsDto);
}
};
}
// 1. 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
for (NimsApiDto.DsuseRptInfo dto : workList) {
// 신규가 아닌 경우 skip
if(!RPT_TY_CD.NEW.getCode().equals(dto.getRptTyCd())) continue;
// 폐기 보고 정보 데이타 생성
createDsuseRpt(dto, reqDto.getUserId());
rtnTmplist.add(dto);
rtnlist.add(dto);
// FIXME : 폐기 관리 데이타 매핑
// FIXME: 폐기 관리 데이타 폐기보고 매핑 대상 조회인 경우?
List<BizNimsResponse.DsuseMgtRes> newList = dto.mappingNewDsuseRptInfos(dsuseMgts);
if(newList.size() > 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]");
}
if(!newList.isEmpty() && bizNimsMapper.updateMappingDsuseMgt(newList.get(0)) == 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
};
}
// 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경)
String errMsg = null;
for (NimsApiDto.DsuseRptInfo dto : workList) {
dto.setRgtr(reqDto.getUserId());
// 신규인 경우 skip
if(RPT_TY_CD.NEW.getCode().equals(dto.getRptTyCd())) continue;
// 2-1. refUsrRptIdNo 필수 체크
if(isEmpty(dto.getRefUsrRptIdNo())){
throw ApiCustomException.create("데이타 오류[취소 및 변경인 경우 참조사용자식별번호(REF_USR_RPT_ID_NO) 필수]");
}
// 2-2. 폐기보고정보, 폐기관리 변경 // FIXME: API연계 데이타 확인후 매핑될 데이타가 최상단에 오도록 정렬기준 재정의 필요
// 1) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 사용여부 'N' update rtnList.sort((a, b) -> a.getUsrRptIdNo().compareTo(b.getUsrRptIdNo()));
// 2) tb_dsuse_mgt 변경 return rtnList;
// 조건 : 사용자보고식별번호 = 참조사용자보고식별번호
// => usr_rpt_id_no -> refUsrRptIdNo update
// => 취소인 경우 use_yn = 'N' update
updateDsuseRptAndDsuseMgt(dto, reqDto.getUserId());
// 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성)
createDsuseRpt(dto, reqDto.getUserId());
// 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(RPT_TY_CD.MODIFY.getCode())){
rtnlist.add(dto);
}
};
}
// FIXME : 폐기 관리 데이타 매핑
List<BizNimsResponse.DsuseMgtRes> newList = dto.mappingDsuseRptInfo(dsuseMgts);
if(newList.size() > 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]");
}
if(bizNimsMapper.updateMappingDsuseMgt(newList.get(0)) == 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
};
}
// return dtos;
return workList;
} }
//------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------
@ -526,21 +368,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/** /**
* <pre> * <pre>
* saveDsuseRptInfo - * saveDsuseRptInfo -
* 0. GET
* 1. GET - NIMS API
* 2. (DB ) return List(DB "Y")
* 3. ( '0') (DB ) & return List
* -> ( '0') -> ('2') ('1')
* 4. , (DB ) & return List
* -> 0)
* 1) =
* tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 'N' update
* 2) FIXME -
* -> / clear
* -> -> update
* 3) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
* -> tb_dsuse_rpt_info 'N'
* 5. return List NIMS
* 6. return List - * 6. return List -
* 7. FIXME : * 7. FIXME :
* 8. sort return * 8. sort return
@ -566,125 +394,30 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
NimsApiRequest.DsuseRptInfoReq rptDto = NimsApiRequest.DsuseRptInfoReq.builder() NimsApiRequest.DsuseRptInfoReq rptDto = NimsApiRequest.DsuseRptInfoReq.builder()
.k(apiInfInfo.get("apiKey")) .k(apiInfInfo.get("apiKey"))
.fg("2") // 조회기준일자 : 1-보고일자, 2-취급일자 .gc(apiInfInfo.get("deptCd"))
.pg("1")
.fg2("") // 보고 유형: ""- 전체, 0-신규, 1-취소, 2-변경
.se("AAR") // 보고구분: AAR-폐기 .se("AAR") // 보고구분: AAR-폐기
.pg("1") // 페이지번호
.fg("2") // 조회기준일자 : 1-보고일자, 2-취급일자
.fg2("0") // 보고 유형: ""- 전체, 0-신규, 1-취소, 2-변경
.ps("01") // "": 전체, 01: 확인, 02: 보류, 03: 정정, 04: 미처리
.sdt(dsuseMgtDto.getHdrDe()) .sdt(dsuseMgtDto.getHdrDe())
.edt(dsuseMgtDto.getHdrDe()) .edt(dsuseMgtDto.getHdrDe())
.bc(dsuseMgtDto.getBsshCd()) .bc(dsuseMgtDto.getBsshCd())
.gc(apiInfInfo.get("deptCd"))
.build(); .build();
// 1. GET 폐기보고 데이타 목록 - NIMS API 호출 List<NimsApiDto.DsuseRptInfo> rtnList = saveFromfindDsuseRptDataByNimsApi(rptDto);
List<NimsApiDto.DsuseRptInfo> nimsList = new ArrayList<>();
while(true) {
NimsApiResult.Response<NimsApiDto.DsuseRptInfo> rslt = infNimsService.getDsuseRptInfo(rptDto);
List<NimsApiDto.DsuseRptInfo> curList = rslt.getResultOrThrow();
if(isEmpty(curList)) break;
nimsList.addAll(curList);
if(rslt.isEndYn()) break;
rptDto.setPg(String.valueOf(Integer.parseInt(rptDto.getPg()) + 1));
}
// 신규 작업대상 데이타 List
List<NimsApiDto.DsuseRptInfo> newList = new ArrayList<>();
// 결과 return 작업 대상, 대상 데이타 List
List<NimsApiDto.DsuseRptInfo> rtnList = new ArrayList<>();
// 2. 신규 작업 대상(DB에 저장되지 않은 데이타) 및 결과 return 대상 List(DB데이타중 사용여부 "Y") 선별
for (NimsApiDto.DsuseRptInfo nimsDto : nimsList) {
Map<String, String> map = new HashMap<>();
map.put("usrRptIdNo", nimsDto.getUsrRptIdNo());
NimsApiDto.DsuseRptInfo infoDto = bizNimsMapper.selectDsuseRptInfoByUsrRptIdNo(map);
// 기조회(저장)한 데이타가 아니면 대상에 추가(usrRptIdNo가 DB에 저장되지 않은 경우)
if(isEmpty(infoDto)){
newList.add(nimsDto);
// 기조회(저장)한 데이타 && 마지막 데이타(사용여부 'Y')인 경우는 return 대상에 추가
// 사용자보고번호가 참조사용자보고번호로 들어오는 변경 및 취소건에 의해
// return 대상에서 제외될 수 있슴
}else{
// FIXME: API 연계 데이타 확인후 확정 필요
// API 조회 반영된 사용여부가 'Y', 처리상태코드가 미완료인 경우는 return 대상
//if("Y".equals(infoDto.getUseYn()) && !"".equals(infoDto.getStatus())){
if("Y".equals(infoDto.getUseYn())){
//rtnTmplist.add(nimsDto);
rtnList.add(nimsDto);
}
};
}
// 3. 신규 작업 대상중 신규(보고구분 '0')인 데이타 처리(DB 데이타 생성) & 결과 return 대상 List에 추가
// -> 신규(보고구분 '0')인 데이타 먼저 처리해야, 변경('2') 및 취소('1') 데이타 처리 가능
// 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
for (NimsApiDto.DsuseRptInfo dto : newList) {
// 신규가 아닌 경우 skip
if(!RPT_TY_CD.NEW.getCode().equals(dto.getRptTyCd())) continue;
// 폐기 보고 정보 데이타 생성 for(NimsApiDto.DsuseRptInfo dto : rtnList){
createDsuseRpt(dto, reqDto.getUserId()); // 7. FIXME : 폐기 관리 데이타와 매핑
// return List에 추가
rtnList.add(dto);
// FIXME : 폐기 관리 데이타 매핑
// FIXME: 폐기 관리 데이타 폐기보고 매핑 대상 조회인 경우?
BizNimsResponse.DsuseMgtRes dsuseMgtRes = dto.mappingNewDsuseRptInfo(dsuseMgtDto); BizNimsResponse.DsuseMgtRes dsuseMgtRes = dto.mappingNewDsuseRptInfo(dsuseMgtDto);
if(ObjectUtils.isNotEmpty(dsuseMgtRes)) { if(ObjectUtils.isNotEmpty(dsuseMgtRes)) {
if (bizNimsMapper.updateMappingDsuseMgt(dsuseMgtDto) == 1) { if (bizNimsMapper.updateMappingDsuseMgt(dsuseMgtDto) != 1) {
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]"); throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
} }
dto.setDscdmngId(dsuseMgtRes.getDscdmngId());
} }
} }
// 4. 신규 작업 대상중 취소,변경(보고구분 '1', '2')인 처리(DB 데이타 생성) & 결과 return 대상 List에 추가
String errMsg = null;
for (NimsApiDto.DsuseRptInfo dto : newList) {
// 신규인 경우 skip
if(RPT_TY_CD.NEW.getCode().equals(dto.getRptTyCd())) continue;
// 4-0) 참조사용자보고식별번호 필수 체크
if(isEmpty(dto.getRefUsrRptIdNo())){
throw ApiCustomException.create("데이타 오류[취소 및 변경인 경우 참조사용자식별번호(REF_USR_RPT_ID_NO) 필수]");
}
// 폐기관리 및 폐기보고 정보 변경
// 4-1) 사용자보고식별번호 = 참조사용자보고식별번호 인 데이타
// tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 사용여부 'N' update
// 4-2) 폐기 관리 테이블에 사용자보고식별번호 반영
// -> 취소인 경우는 사용자/원사용자 식별번호 clear
// -> 변경인 경우는 사용자보고식별번호 -> 참조사용자보고식별번호 update
updateDsuseRptAndDsuseMgt(dto, reqDto.getUserId());
// 4-3) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
// -> 취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성
createDsuseRpt(dto, reqDto.getUserId());
// FIXME : API 적용후 확인 필요
// 5. 결과 return 대상 데이타 List에서 NIMS 변경 데이타인 경우 대상에서 제외
for(NimsApiDto.DsuseRptInfo d : rtnList){
if(d.getOrgUsrRptIdNo().equals(dto.getOrgUsrRptIdNo())
&& d.getUsrRptIdNo().equals(dto.getRefUsrRptIdNo())){
rtnList.remove(d);
};
}
// 6. return List에 현재 데이타 추가 - 변경인 경우만 추가
if(dto.getRptTyCd().equals("2")){
rtnList.add(dto);
}
// 7. FIXME : 폐기 관리 데이타 매핑
BizNimsResponse.DsuseMgtRes dsuseMgtRes = dto.mappingNewDsuseRptInfo(dsuseMgtDto);
if(ObjectUtils.isNotEmpty(dsuseMgtRes)) {
if (bizNimsMapper.updateMappingDsuseMgt(dsuseMgtDto) == 1) {
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
}
}
}
// FIXME: API연계 데이타 확인후 매핑될 데이타가 최상단에 오도록 정렬기준 재정의 필요 // FIXME: API연계 데이타 확인후 매핑될 데이타가 최상단에 오도록 정렬기준 재정의 필요
rtnList.sort((a, b) -> a.getUsrRptIdNo().compareTo(b.getUsrRptIdNo())); rtnList.sort((a, b) -> a.getUsrRptIdNo().compareTo(b.getUsrRptIdNo()));
return rtnList; return rtnList;
@ -772,8 +505,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
); );
} }
/** /**
* <pre> * <pre>
* set * set
@ -783,7 +514,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* </pre> * </pre>
*/ */
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())) {
@ -818,6 +548,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
.fg("1") .fg("1")
.pg("1") .pg("1")
.bc(r.getBsshCd()) .bc(r.getBsshCd())
.userId(userId)
.build() .build()
); );
if (isEmpty(list)) { if (isEmpty(list)) {
@ -830,6 +561,128 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
} }
} }
/**
* <pre>
* NIMS API ,
* 1. GET - NIMS API
* 2. (DB ) return List(DB "Y")
* 3. ( '0') (DB ) & return List
* -> ( '0') -> ('2') ('1')
* 4. , (DB ) & return List
* -> 0)
* 1) =
* tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 'N' update
* 2) FIXME -
* -> / clear
* -> -> update
* 3) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
* -> tb_dsuse_rpt_info 'N'
* 5. return List NIMS
* 6. return List -
* @param reqDto NimsApiRequest.DsuseRptInfoReq
* @param List<NimsApiDto.DsuseRptInfo>
* </pre>
*/
private List<NimsApiDto.DsuseRptInfo> saveFromfindDsuseRptDataByNimsApi(NimsApiRequest.DsuseRptInfoReq reqDto) {
List<NimsApiDto.DsuseRptInfo> nimsList = new ArrayList<>();
while(true) {
NimsApiResult.Response<NimsApiDto.DsuseRptInfo> rslt = infNimsService.getDsuseRptInfo(reqDto);
List<NimsApiDto.DsuseRptInfo> curList = rslt.getResultOrThrow();
if(isEmpty(curList)) break;
nimsList.addAll(curList);
if(rslt.isEndYn()) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
// 신규 작업대상 데이타 List
List<NimsApiDto.DsuseRptInfo> newList = new ArrayList<>();
// 결과 return 작업 대상, 대상 데이타 List
List<NimsApiDto.DsuseRptInfo> rtnList = new ArrayList<>();
for (NimsApiDto.DsuseRptInfo nimsDto : nimsList) {
// FIXME: API 적용후 적용 내용 삭제 ///////////////////////
if("신규".equals(nimsDto.getRptTyCd())) {
nimsDto.setRptTyCd(RPT_TY_CD.NEW.getCode());
}else if("취소".equals(nimsDto.getRptTyCd())) {
nimsDto.setRptTyCd(RPT_TY_CD.CANCEL.getCode());
}else if("변경".equals(nimsDto.getRptTyCd())){
nimsDto.setRptTyCd(RPT_TY_CD.MODIFY.getCode());
}
///////////////////////////////////////////////////////// Map<String, String> map = new HashMap<>();
NimsApiDto.DsuseRptInfo savedMgtDto = bizNimsMapper.selectDsuseRptInfoByUsrRptIdNo(Map.of("usrRptIdNo", nimsDto.getUsrRptIdNo()));
if(isEmpty(savedMgtDto)){
newList.add(nimsDto);
}else{
// FIXME: API 적용 필요
// API 조회 반영된 사용여부가 'Y', 처리상태코드가 미완료인 경우는 return 대상
//if("Y".equals(infoDto.getUseYn()) && !"".equals(infoDto.getStatus())){
if("Y".equals(savedMgtDto.getUseYn())){
nimsDto.setOrgUsrRptIdNo(savedMgtDto.getOrgUsrRptIdNo());
rtnList.add(nimsDto);
}
};
}
// 3. 신규 작업 대상중 신규(보고구분 '0')인 데이타 처리(DB 데이타 생성) & 결과 return 대상 List에 추가
// -> 신규(보고구분 '0')인 데이타 먼저 처리해야, 변경('2') 및 취소('1') 데이타 처리 가능
// 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
for (NimsApiDto.DsuseRptInfo dto : newList) {
// 신규가 아닌 경우 skip
if(!RPT_TY_CD.NEW.getCode().equals(dto.getRptTyCd())) continue;
// 폐기 보고 정보 데이타 생성
createDsuseRpt(dto, reqDto.getUserId());
rtnList.add(dto);
}
// 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경)
String errMsg = null;
for (NimsApiDto.DsuseRptInfo dto : newList) {
dto.setRgtr(reqDto.getUserId());
// 신규인 경우 skip
if(RPT_TY_CD.NEW.getCode().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, reqDto.getUserId());
// 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성)
createDsuseRpt(dto, reqDto.getUserId());
// FIXME : API 적용 필요
// 결과 return 대상 데이타 List에서 조회한 변경 대상이 있는 경우 replace
// 결과 return 대상 데이타 List에서 조회한 취소 대상이 있는 경우 삭제
for(NimsApiDto.DsuseRptInfo d : rtnList){
if(d.getOrgUsrRptIdNo().equals(dto.getOrgUsrRptIdNo())
&& d.getUsrRptIdNo().equals(dto.getRefUsrRptIdNo())){
rtnList.remove(d);
if(dto.getRptTyCd().equals(RPT_TY_CD.MODIFY.getCode())){
rtnList.add(dto);
}
};
}
}
return rtnList;
}
/** /**
* <pre> * <pre>
* tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl * tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
@ -992,8 +845,8 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/** /**
* <pre> * <pre>
* file * file
* @param infoType : : Constants.FILE_INFO_TYPE * @param infType : : Constants.FILE_INFO_TYPE
* @param infoKey : - ID * @param infKey : - ID
* @param subType : * @param subType :
* -> : * -> :
* -> : * -> :

@ -191,7 +191,7 @@ public class BizNimsController {
// return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dto)); // return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dto));
// } // }
@Operation(summary = "폐기 보고 확인", description = "폐기 보고 확인<br><br>폐기 관리 데이터에 대한 폐기보고 매핑 대상 데이타 조회 return") @Operation(summary = "폐기 보고 확인(폐기관리 데이타에 대한 폐기보고 매핑)", description = "폐기 보고 확인(폐기관리 데이타에 대한 폐기보고 매핑)<br><br>폐기 관리 데이터에 대한 폐기보고 매핑 대상 데이타 조회 return")
@PostMapping("/getDsuseMgtMapping") @PostMapping("/getDsuseMgtMapping")
public ApiBaseResponse<List<NimsApiDto.DsuseRptInfo>> getDsuseMgtMapping( public ApiBaseResponse<List<NimsApiDto.DsuseRptInfo>> getDsuseMgtMapping(
@RequestBody BizNimsRequest.DsuseMgt dto @RequestBody BizNimsRequest.DsuseMgt dto

@ -18,6 +18,7 @@ import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory; import javax.xml.validation.SchemaFactory;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -132,6 +133,22 @@ public class ApiUtil {
return rslt.body(); return rslt.body();
} }
/**
* Object -> data
* @param request WebClient.Request
* @param obj Object
*/
public static void toData(final WebClient.Request request, final Object obj){
if(ObjectUtils.isEmpty(obj)) return;
JSONObject jsonObj = toObjByObj(obj, JSONObject.class);
for (Object key : jsonObj.keySet()) {
// API 호출 시 필요없는 파라메터 제외
if("userId".equals(key) || "dbSkipYn".equals(key)) continue;
request.data((String) key, ObjectUtils.isEmpty(jsonObj.get(key))? StringUtils.EMPTY: jsonObj.get(key));
}
}
/** /**
* Object -> class * Object -> class
* @param obj Object * @param obj Object
@ -146,6 +163,12 @@ public class ApiUtil {
} }
} }
/**
* Object -> TypeReference
* @param obj Object
* @param typeRef TypeReference
* @return T
*/
public static <T> T toObjByObj(final Object obj, final TypeReference<T> typeRef) { public static <T> T toObjByObj(final Object obj, final TypeReference<T> typeRef) {
try { try {
return ObjectUtils.isNotEmpty(obj)? new JSON().getObjectMapper().convertValue(obj, typeRef) : null; return ObjectUtils.isNotEmpty(obj)? new JSON().getObjectMapper().convertValue(obj, typeRef) : null;
@ -154,15 +177,12 @@ public class ApiUtil {
} }
} }
public static void toData(final WebClient.Request request, final Object obj){ /**
if(ObjectUtils.isEmpty(obj)) return; * XML
//MultiValueMap<String, String> formData = new LinkedMultiValueMap<>(); * @param xmlStr String
JSONObject jsonObj = toObjByObj(obj, JSONObject.class); * @param xsdFilePathName String
for (Object key : jsonObj.keySet()) { * @return boolean
request.data((String) key, (String) jsonObj.get(key)); */
}
}
public static boolean validateXml(final String xmlStr, final String xsdFilePathName) { public static boolean validateXml(final String xmlStr, final String xsdFilePathName) {
try { try {
FileInputStream fis = new FileInputStream(xsdFilePathName); FileInputStream fis = new FileInputStream(xsdFilePathName);
@ -178,6 +198,12 @@ public class ApiUtil {
} }
} }
/**
* XML
* @param xmlStr String
* @param xsdFilePath String
* @return boolean
*/
public static boolean validateXmlFromXmlStr(final String xmlStr, final String xsdFilePath) { public static boolean validateXmlFromXmlStr(final String xmlStr, final String xsdFilePath) {
try { try {
FileInputStream fis = new FileInputStream(xsdFilePath); FileInputStream fis = new FileInputStream(xsdFilePath);
@ -193,6 +219,12 @@ public class ApiUtil {
} }
} }
/**
* XML
* @param xmlFilePath String
* @param xsdFilePath String
* @return boolean
*/
public static boolean validateXmlFromFile(String xmlFilePath, final String xsdFilePath) { public static boolean validateXmlFromFile(String xmlFilePath, final String xsdFilePath) {
try (FileInputStream fileInputStream = new FileInputStream(xmlFilePath)) { try (FileInputStream fileInputStream = new FileInputStream(xmlFilePath)) {
byte[] bytes = fileInputStream.readAllBytes(); byte[] bytes = fileInputStream.readAllBytes();

@ -472,28 +472,32 @@ public class NimsApiDto {
@JsonIgnore @JsonIgnore
public BizNimsResponse.DsuseMgtRes mappingNewDsuseRptInfo(BizNimsResponse.DsuseMgtRes mgtDto) { public BizNimsResponse.DsuseMgtRes mappingNewDsuseRptInfo(BizNimsResponse.DsuseMgtRes mgtDto) {
// 폐기 신청서 접수 상태 데이타만 처리 // 폐기 신청서 접수 상태 데이타만 처리
if (Constants.PRGRS_STTS_CD.RECEIPT.getCode().equals(mgtDto.getPrgrsSttsCd())) { //if (Constants.PRGRS_STTS_CD.RECEIPT.getCode().equals(mgtDto.getPrgrsSttsCd())) {
String rptInfo = String.join("", String rptInfoStr = String.join("",
this.bsshCd, // 마약류취급자식별번호 this.bsshCd, // 마약류취급자식별번호
this.hdrDe, // 취급일자 this.hdrDe, // 취급일자
this.dsuseSeCd, // 폐기구분코드 // FIXME: API 적용 완료후 comment 제거 필요
this.dsusePrvCd, // 폐기사유코드 // this.dsuseSeCd, // 폐기구분코드
this.dsuseMthCd, // 폐기방법코드 // this.dsusePrvCd, // 폐기사유코드
// this.dsuseMthCd, // 폐기방법코드
/////////////////////////////////////////////////////////////////////
this.dsuseDe, // 폐기일자 this.dsuseDe, // 폐기일자
String.valueOf(this.rndDtlRptCnt) // 수불상세보고수 String.valueOf(this.rndDtlRptCnt) // 수불상세보고수
); );
String mgtInfo = String.join("", String mgtInfoStr = String.join("",
mgtDto.getBsshCd(), // 마약류취급자식별번호 mgtDto.getBsshCd(), // 마약류취급자식별번호
mgtDto.getHdrDe(), // 취급일자 mgtDto.getHdrDe(),
mgtDto.getDsuseSeCd(), // 폐기구분코드 // FIXME: API 적용 완료후 comment 제거 필요// 취급일자
mgtDto.getDsusePrvCd(), // 폐기사유코드 // mgtDto.getDsuseSeCd(), // 폐기구분코드
mgtDto.getDsuseMthCd(), // 폐기방법코드 // mgtDto.getDsusePrvCd(), // 폐기사유코드
// mgtDto.getDsuseMthCd(), // 폐기방법코드
/////////////////////////////////////////////////////////////////
mgtDto.getDsuseDe(), // 폐기일자 mgtDto.getDsuseDe(), // 폐기일자
String.valueOf(mgtDto.getRndDtlRptCnt()) // 수불상세보고수 String.valueOf(mgtDto.getRndDtlRptCnt()) // 수불상세보고수
); );
// FIXME: 폐기관리와 폐기보고의 상품정보 일치 여부 set - 비교 필드 확정 필요 // FIXME: 폐기관리와 폐기보고의 상품정보 일치 여부 set - 비교 필드 확정 필요
if (rptInfo.equals(mgtInfo)) { if (rptInfoStr.equals(mgtInfoStr)) {
if (this.listDtl.size() == mgtDto.getDsuseMgtDtls().size()) { if (this.listDtl.size() == mgtDto.getDsuseMgtDtls().size()) {
for (DsuseRptInfoDtl rptDtl : this.listDtl) { for (DsuseRptInfoDtl rptDtl : this.listDtl) {
for (BizNimsRequest.DsuseMgtDtl mgtDtl : mgtDto.getDsuseMgtDtls()) { for (BizNimsRequest.DsuseMgtDtl mgtDtl : mgtDto.getDsuseMgtDtls()) {
@ -516,7 +520,7 @@ public class NimsApiDto {
mgtDto.setRgtr(this.getRgtr()); mgtDto.setRgtr(this.getRgtr());
return mgtDto; return mgtDto;
} }
} //}
return null; return null;
} }

@ -306,7 +306,7 @@ public class NimsApiRequest {
/** /**
* *
* 01: , 02: , 03: , 04: * "": , 01: , 02: , 03: , 04:
*/ */
@Schema(title = "상태", description = "상태", example = "01", allowableValues = {"01", "02", "03", "04"}) @Schema(title = "상태", description = "상태", example = "01", allowableValues = {"01", "02", "03", "04"})
@Pattern(regexp = "^$|0[1-4]", message = "상태[폐기보고] 값을 확인해 주세요('': 전체, 01:확인, 02:보류, 03:정정, 04:미처리)") @Pattern(regexp = "^$|0[1-4]", message = "상태[폐기보고] 값을 확인해 주세요('': 전체, 01:확인, 02:보류, 03:정정, 04:미처리)")

@ -481,7 +481,7 @@
, usr_rpt_id_no = #{usrRptIdNo} , usr_rpt_id_no = #{usrRptIdNo}
, org_usr_rpt_id_no = #{orgUsrRptIdNo} , org_usr_rpt_id_no = #{orgUsrRptIdNo}
, rpt_ty_cd = #{rptTyCd} , rpt_ty_cd = #{rptTyCd}
, stts = #{status} , stts = #{stts}
, mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s') , mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s')
, mdfr = #{rgtr} , mdfr = #{rgtr}
WHERE dscdmng_id = #{dscdmngId} WHERE dscdmng_id = #{dscdmngId}

Loading…
Cancel
Save