fix: 폐기보고 반영

- 취소 이면서 참조사용자보고식별ID가 null인 경우 존재
     - 최초 데이타 생성 기준을 보고유형코드에서 참조사용자보고식별ID 유무로 변경 처리
dev
Jonguk. Lim 5 months ago
parent 55ebf1c49d
commit 8bd4ff738d

@ -307,34 +307,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return reqDto;
}
/**
* <pre>
*
* @param reqDto BizNimsRequest.DsuseMgt
* @return BizNimsRequest.DsuseMgt
* </pre>
*/
// FIXME: 현재 미사용
// public BizNimsDto.DsuseMgt saveDsuseMgt(BizNimsDto.DsuseMgt reqDto) {
// ApiUtil.validate(reqDto, null, validator);
// if(reqDto.getRndDtlRptCnt() != reqDto.getDsuseMgtDtls().size()) throw ApiCustomException.create("폐기물 보고수 오류[폐기물 갯수 확인]");
// reqDto.setRgtr(reqDto.getUserId());
//
// if(bizNimsMapper.insertDsuseMgt(reqDto) == 1){
// int dtlCnt = 0;
// for (BizNimsDto.DsuseMgtDtl d : reqDto.getDsuseMgtDtls()) {
// d.setDscdmngId(reqDto.getDscdmngId());
// d.setDscdmngSn(StringUtils.leftPad(dtlCnt + 1 + "", 3, "0"));
// d.setRgtr(reqDto.getUserId());
// dtlCnt = dtlCnt + bizNimsMapper.insertDsuseMgtDtl(d);
// }
// if(reqDto.getDsuseMgtDtls().size() != dtlCnt) throw ApiCustomException.create("폐기 관리 상세 등록 실패");
// } else {
// throw ApiCustomException.create("폐기 관리 마스터 등록 실패");
// }
// return reqDto;
// }
/**
* <pre>
*
@ -434,14 +406,15 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
for(NimsApiDto.DsuseRptInfo dto : rtnList){
// 7. FIXME : 폐기 관리 데이타와 매핑
// FIXME: API 적용 필요 - 취소 데이타인 경우 확인 필요
if(RPT_TY_CD.CANCEL.getCode().equals(dto.getRptTyCd())){
updateDsuseMgtMappingData(dto, reqDto.getUserId());
continue;
}
// if(RPT_TY_CD.CANCEL.getCode().equals(dto.getRptTyCd())){
// updateDsuseMgtMappingData(dto, reqDto.getUserId());
// continue;
// }
////////////////////////////////////////////////////////////
BizNimsResponse.DsuseMgtRes dsuseMgtRes = dto.mappingNewDsuseRptInfo(dsuseMgtDto);
if(ObjectUtils.isNotEmpty(dsuseMgtRes)) {
dsuseMgtRes.setRgtr(reqDto.getUserId());
if (bizNimsMapper.updateMappingDsuseMgt(dsuseMgtDto) != 1) {
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
}
@ -489,36 +462,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return productInfoKds.get(0);
}
/**
* <pre>
*
* @param dtos List<BizNimsRequest.DsuseMgt>
* @return List<BizNimsResponse.DsuseRptInfoResponse>
* </pre>
*/
// @Deprecated
// @Override
// public List<BizNimsResponse.DsuseRptInfoResponse> saveDsuseMgts(List<BizNimsRequest.DsuseMgt> dtos) {
// for (BizNimsRequest.DsuseMgt dto : dtos) {
// ApiUtil.validate(dto, null, validator);
// }
//
// final List<String> dscdmngIds = new ArrayList<>();
// for (BizNimsRequest.DsuseMgt dto : dtos) {
// dto.setRgtr(Constants.NIMS_API_USER_ID);
//
// bizNimsMapper.insertDsuseMgt(dto);
// dscdmngIds.add(dto.getDscdmngId());
// }
// List<BizNimsResponse.DsuseRptInfoResponse> resList = bizNimsMapper.selectSavedDsuseMgts(dscdmngIds);
//
// // 마약류취급업체의 허가번호(prmisnNo), 대표자명(rprsntvNm) set
// setAddBsshInfo(resList);
//
// return resList;
// }
//------------------------------------------------------------------------------------------------------
// private method
//------------------------------------------------------------------------------------------------------
@ -645,7 +588,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
NimsApiDto.DsuseRptInfo savedMgtDto = bizNimsMapper.selectDsuseRptInfoByUsrRptIdNo(Map.of("usrRptIdNo", nimsDto.getUsrRptIdNo()));
if(isEmpty(savedMgtDto)){
// FIXME: API 적용후 적용 내용 삭제 : 취소 데이타가 비정상 적으로 내려오고 있어 skip 처리 ///////////////////////
if(!"1".equals(nimsDto.getRptTyCd()))
//if(!"1".equals(nimsDto.getRptTyCd()))
//////////////////////////////////////////////////////////////
newList.add(nimsDto);
}else{
@ -659,30 +602,27 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
};
}
// 3. 신규 작업 대상중 신규(보고구분 '0')인 데이타 처리(DB 데이타 생성) & 결과 return 대상 List에 추가
// -> 신규(보고구분 '0')인 데이타 먼저 처리해야, 변경('2') 및 취소('1') 데이타 처리 가능
// 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
// 3. 참조사용자보고번호가 없는 경우 처리(rptTyCd : 1 - 취소, 2 - 변경)
// -> 폐기보고 데이타 생성 & return List에 추가
// -> 신규(보고구분 '0' or '1')인 데이타 먼저 처리해야 변경('2') 및 취소('1') 데이타 처리 가능
// -> 취소이면서 참조사용자보고ID가 없는 경우가 있다
// 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;
// 참조사용자보고번호가 있으면 skip
if(!isEmpty(dto.getRefUsrRptIdNo())) continue;
// 폐기 보고 정보 데이타 생성
createDsuseRpt(dto, reqDto.getUserId());
rtnList.add(dto);
}
// 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경)
// 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) 필수]");
}
// 참조사용자보고번호가 없으면 skip
if(isEmpty(dto.getRefUsrRptIdNo())) continue;
// 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성)
createDsuseRpt(dto, reqDto.getUserId());
@ -691,21 +631,14 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 1) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 사용여부 'N' update
updateDsuseRptOfCancel(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);
}
};
}
}
@ -784,6 +717,9 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
curList = rslt.getResult();
if(!isEmpty(curList)) nimsList.addAll(curList);
//////////////////////////////////////////////////////////////////////////
nimsList.sort((a, b) -> a.getUsrRptIdNo().compareTo(b.getUsrRptIdNo()));
return nimsList;
}
@ -801,28 +737,21 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
private void createDsuseRpt(final NimsApiDto.DsuseRptInfo dto, String userId) {
dto.setRgtr(userId);
// FIXME: API 적용 완류후 command 제거
// dto.setRptTyCdNm(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()));
// dto.setRptTyNm(RPT_TY_CD.getName(dto.getRptTyCd()));
// dto.setDsuseSeNm(Constants.DSUSE_SE_CD.getName(dto.getDsuseSeCd()));
// dto.setDsusePrvNm(Constants.DSUSE_PRV_CD.getName(dto.getDsusePrvCd()));
// dto.setDsuseMthNm(Constants.DSUSE_MTH_CD.getName(dto.getDsuseMthCd()));
// 신규가 아닌 경우 : 원사용자보고식별번호 조회 & set
if(RPT_TY_CD.NEW.getCode().equals(dto.getRptTyCd())){
// 참조사용자보고번호가 없으면 -> 원사용자보고식별번호 = 사용자보고식별번호
if(isEmpty(dto.getRefUsrRptIdNo())){
dto.setOrgUsrRptIdNo(dto.getUsrRptIdNo());
}else{
// FIXME : 취소인 경우는 사용자/원사용자 식별번호 clear - API 취소 && 상태(미처리) 인 경우 제외되는지 확인후 제거 여부 결정
if(RPT_TY_CD.CANCEL.getCode().equals(dto.getRptTyCd())){
dto.setOrgUsrRptIdNo(dto.getUsrRptIdNo());
}else {
// 참조사용자보고번호가 있으면, 원사용자보고식별번호 조회
findRecusiveOrgUsrRptIdNo(dto);
}
}
if (bizNimsMapper.insertDsuseRptInfo(dto) == 1) {
//취소인 경우 상세 데이타 등록 skip
if(RPT_TY_CD.CANCEL.getCode().equals(dto.getRptTyCd())) return;
int dtlCnt = 0;
for (NimsApiDto.DsuseRptInfoDtl d : dto.getListDtl()) {
d.setRgtr(userId);
@ -853,7 +782,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
private void findRecusiveOrgUsrRptIdNo(NimsApiDto.DsuseRptInfo dto) {
// 원 사용자 식별 번호 set - 변경/취소 인 경우
// 신규인 경우는 사용자보고식별번호로 설정
String refUsrRptIdNo = dto.getRefUsrRptIdNo();
// 참조사용자보고식별번호로 원사용자보고식별번호조회
@ -863,17 +791,15 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
throw ApiCustomException.create("데이타 오류[참조사용자로 사용자보고식별번호 조회 실패 - 데이타 누락]");
}
// 참조사용자보고식별번호가 있으면 계속 조회
if(!isEmpty(map.get("refUsrRptIdNo"))){
refUsrRptIdNo = map.get("refUsrRptIdNo");
continue;
}
if(RPT_TY_CD.NEW.getCode().equals(map.get("rptTyCd"))){
// 참조사용자보고식별번호가 없으면 -> 원사용자보고식별번호 = 사용자보고식별번호로 설정
dto.setOrgUsrRptIdNo(map.get("usrRptIdNo"));
break;
} else {
throw ApiCustomException.create("데이타 오류[참조사용자로 사용자보고식별번호 조회 실패 - 신규보고 데이타 누락]");
}
}
}
@ -898,14 +824,6 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if (bizNimsMapper.updateCancelDsuseRptInfo(dto) == 1) {
int cnt = bizNimsMapper.updateCancelDsuseRptInfoDtl(dto);
// 취소인 경우 상세 데이타가 없을 수 있다
if(!RPT_TY_CD.CANCEL.getCode().equals(dto.getRptTyCd())) {
if (dto.getRndDtlRptCnt() != cnt) {
throw ApiCustomException.create(String.format("폐기 정보 상세 %s 실패", errMsg));
}
}
} else {
throw ApiCustomException.create(String.format("폐기 정보 %s 실패", errMsg));
}
@ -1023,8 +941,64 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/**
* <pre>
*
* @param dtos List<BizNimsRequest.DsuseMgt>
* @return List<BizNimsResponse.DsuseRptInfoResponse>
* </pre>
*/
// @Deprecated
// @Override
// public List<BizNimsResponse.DsuseRptInfoResponse> saveDsuseMgts(List<BizNimsRequest.DsuseMgt> dtos) {
// for (BizNimsRequest.DsuseMgt dto : dtos) {
// ApiUtil.validate(dto, null, validator);
// }
//
// final List<String> dscdmngIds = new ArrayList<>();
// for (BizNimsRequest.DsuseMgt dto : dtos) {
// dto.setRgtr(Constants.NIMS_API_USER_ID);
//
// bizNimsMapper.insertDsuseMgt(dto);
// dscdmngIds.add(dto.getDscdmngId());
// }
// List<BizNimsResponse.DsuseRptInfoResponse> resList = bizNimsMapper.selectSavedDsuseMgts(dscdmngIds);
//
// // 마약류취급업체의 허가번호(prmisnNo), 대표자명(rprsntvNm) set
// setAddBsshInfo(resList);
//
// return resList;
// }
/**
* <pre>
*
* @param reqDto BizNimsRequest.DsuseMgt
* @return BizNimsRequest.DsuseMgt
* </pre>
*/
// FIXME: 현재 미사용
// public BizNimsDto.DsuseMgt saveDsuseMgt(BizNimsDto.DsuseMgt reqDto) {
// ApiUtil.validate(reqDto, null, validator);
// if(reqDto.getRndDtlRptCnt() != reqDto.getDsuseMgtDtls().size()) throw ApiCustomException.create("폐기물 보고수 오류[폐기물 갯수 확인]");
// reqDto.setRgtr(reqDto.getUserId());
//
// if(bizNimsMapper.insertDsuseMgt(reqDto) == 1){
// int dtlCnt = 0;
// for (BizNimsDto.DsuseMgtDtl d : reqDto.getDsuseMgtDtls()) {
// d.setDscdmngId(reqDto.getDscdmngId());
// d.setDscdmngSn(StringUtils.leftPad(dtlCnt + 1 + "", 3, "0"));
// d.setRgtr(reqDto.getUserId());
// dtlCnt = dtlCnt + bizNimsMapper.insertDsuseMgtDtl(d);
// }
// if(reqDto.getDsuseMgtDtls().size() != dtlCnt) throw ApiCustomException.create("폐기 관리 상세 등록 실패");
// } else {
// throw ApiCustomException.create("폐기 관리 마스터 등록 실패");
// }
// return reqDto;
// }

Loading…
Cancel
Save