feat: 폐기보고매핑 데이타 조회

dev
Jonguk. Lim 6 months ago
parent 9a9daadc23
commit 51c9524a32

@ -59,7 +59,9 @@ public interface BizNimsService {
void modifyPrgsSttsOfDsuseMgt(final BizNimsRequest.DsuseMgt dto);
NimsApiDto.ProductInfoKd getPrdMnfSeqInfoOfBarcode(final String barcodeStr);
// @Deprecated
List<NimsApiDto.DsuseRptInfo> getDsuseMgtMapping(final BizNimsRequest.DsuseMgt dto);
// @Deprecated
// List<BizNimsResponse.DsuseRptInfoResponse> saveDsuseMgts(List<BizNimsRequest.DsuseMgt> dtos);

@ -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<BizNimsResponse.DsuseMgtRes> 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<BizNimsResponse.DsuseMgtRes> 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<NimsApiDto.DsuseRptInfo> 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<NimsApiDto.DsuseRptInfo> rsltList = new ArrayList<>();
while(true) {
NimsApiResult.Response<NimsApiDto.DsuseRptInfo> rslt = infNimsService.getDsuseRptInfo(rptDto);
List<NimsApiDto.DsuseRptInfo> 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<NimsApiDto.DsuseRptInfo> workList = new ArrayList<>();
// 결과 return 작업 대상, 대상 데이타 List
List<NimsApiDto.DsuseRptInfo> rtnTmplist = new ArrayList<>();
List<NimsApiDto.DsuseRptInfo> rtnlist = new ArrayList<>();
for (NimsApiDto.DsuseRptInfo dto : rsltList) {
Map<String, String> 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<BizNimsResponse.DsuseMgtRes> 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<BizNimsResponse.DsuseMgtRes> 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
* </pre>
*/
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

@ -142,6 +142,14 @@ public class BizNimsController {
return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dto));
}
@Operation(summary = "폐기 관리 데이터 폐기보고 매핑 조회", description = "폐기 관리 데이터 폐기보고 매핑 조회<br><br>폐기 관리 데이터에 대한 폐기보고 매핑 대상 데이타 조회 return")
@PostMapping("/getDsuseMgtMapping")
public ApiBaseResponse<List<NimsApiDto.DsuseRptInfo>> getDsuseMgtMapping(
@RequestBody BizNimsRequest.DsuseMgt dto
) {
return ApiBaseResponse.of(bizNimsService.getDsuseMgtMapping(dto));
}
@Operation(summary = "사고 마약류 폐기 관리 목록 조회", description = "사고 마약류 폐기 관리 목록 조회<br><br>사고마약류 관리대장, 결과통보서, 폐기현황등에 필요한 내용 조회")
@PostMapping(value = "/getDsuseMgts")
public ApiBaseResponse<List<BizNimsResponse.DsuseMgtRes>> getDsuseMgts(

Loading…
Cancel
Save