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

dev
Jonguk. Lim 6 months ago
parent 51c9524a32
commit 27625123ab

@ -8,6 +8,7 @@ import java.util.Map;
import javax.validation.Validation;
import javax.validation.Validator;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -201,7 +202,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
*/
@Override
public List<NimsApiDto.DsuseRptInfo> saveDsuseRptInfo(NimsApiRequest.DsuseRptInfoReq reqDto) {
List<NimsApiDto.DsuseRptInfo> rsltList = new ArrayList<>();
List<NimsApiDto.DsuseRptInfo> nimsList = new ArrayList<>();
while(true) {
NimsApiResult.Response<NimsApiDto.DsuseRptInfo> rslt = infNimsService.getDsuseRptInfo(reqDto);
@ -209,7 +210,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if(isEmpty(curList)) break;
rsltList.addAll(curList);
nimsList.addAll(curList);
if(rslt.isEndYn()) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
@ -243,19 +244,19 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 결과 return 작업 대상, 대상 데이타 List
List<NimsApiDto.DsuseRptInfo> rtnTmplist = new ArrayList<>();
List<NimsApiDto.DsuseRptInfo> rtnlist = new ArrayList<>();
for (NimsApiDto.DsuseRptInfo dto : rsltList) {
for (NimsApiDto.DsuseRptInfo nimsDto : nimsList) {
Map<String, String> map = new HashMap<>();
map.put("usrRptIdNo", dto.getUsrRptIdNo());
map.put("usrRptIdNo", nimsDto.getUsrRptIdNo());
NimsApiDto.DsuseRptInfo infoDto = bizNimsMapper.selectDsuseRptInfoByUsrRptIdNo(map);
if(isEmpty(infoDto)){
workList.add(dto);
workList.add(nimsDto);
}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);
rtnTmplist.add(nimsDto);
rtnlist.add(nimsDto);
}
};
}
@ -265,18 +266,15 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 신규가 아닌 경우 skip
if(!"0".equals(dto.getRptTyCd())) continue;
dto.setOrgUsrRptIdNo(dto.getUsrRptIdNo());
dto.setRgtr(Constants.NIMS_API_USER_ID);
// 폐기 보고 정보 데이타 생성
createDsuseRpt(dto, true);
createDsuseRpt(dto);
rtnTmplist.add(dto);
rtnlist.add(dto);
// FIXME : 폐기 관리 데이타 매핑
// FIXME: 폐기 관리 데이타 폐기보고 매핑 대상 조회인 경우?
List<BizNimsResponse.DsuseMgtRes> newList = dto.mappingNewDsuseRptInfo(dsuseMgts);
List<BizNimsResponse.DsuseMgtRes> newList = dto.mappingNewDsuseRptInfos(dsuseMgts);
if(newList.size() > 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]");
}
@ -307,7 +305,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
updateDsuseRptAndDsuseMgt(dto);
// 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성)
createDsuseRpt(dto, false);
createDsuseRpt(dto);
// FIXME : API 적용 필요
// 결과 return 대상 데이타 List에서 조회한 변경 대상이 있는 경우 replace
@ -395,163 +393,168 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return resList;
}
/**
* <pre>
* 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 -
* 7. FIXME :
* 8. sort return
* @param reqDto
* @return
* </pre>
*/
// FIXME: API 적용 필요 - nims API 확정후
// FIXME: saveDsuseRptInfo() 메소드를 활용할 수 있도록 구성
@Override
public List<NimsApiDto.DsuseRptInfo> getDsuseMgtMapping(BizNimsRequest.DsuseMgt reqDto) {
// 0. GET 폐기관리 데이타 정보
BizNimsResponse.DsuseMgtRes dsuseMgtDto = getDsuseMgts(
BizNimsRequest.DsuseMgtInq.builder()
.dscdmngIds(List.of(reqDto.getDscdmngId()))
.prgrsSttsCd(null)
.build())
.get(0);
NimsApiRequest.DsuseRptInfoReq rptDto = NimsApiRequest.DsuseRptInfoReq.builder()
.fg("1")
.pg("1")
.fg2("2")
.se("AAR")
.fg3("1")
.fg3("1") // 조회기준일자 : 1-보고일자, 2-취급일자
.sdt("20220101")
.edt("20220131")
.bc(reqDto.getBsshCd())
.fg4(ofCd)
.build();
List<NimsApiDto.DsuseRptInfo> rsltList = new ArrayList<>();
// 1. GET 폐기보고 데이타 목록 - NIMS API 호출
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;
rsltList.addAll(curList);
nimsList.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<>();
// 신규 작업대상 데이타 List
List<NimsApiDto.DsuseRptInfo> newList = new ArrayList<>();
// 결과 return 작업 대상, 대상 데이타 List
List<NimsApiDto.DsuseRptInfo> rtnTmplist = new ArrayList<>();
List<NimsApiDto.DsuseRptInfo> rtnlist = new ArrayList<>();
for (NimsApiDto.DsuseRptInfo dto : rsltList) {
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", dto.getUsrRptIdNo());
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 적용 필요
// FIXME: API 연계 데이타 확인후 확정 필요
// API 조회 반영된 사용여부가 'Y', 처리상태코드가 미완료인 경우는 return 대상
//if("Y".equals(infoDto.getUseYn()) && !"".equals(infoDto.getStatus())){
if("Y".equals(infoDto.getUseYn())){
rtnTmplist.add(dto);
rtnlist.add(dto);
//rtnTmplist.add(nimsDto);
rtnList.add(nimsDto);
}
};
}
// 1. 신규(rptTyCd : 0) 저장 - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
for (NimsApiDto.DsuseRptInfo dto : workList) {
// 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(!"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);
createDsuseRpt(dto);
// return List에 추가
rtnList.add(dto);
// FIXME : 폐기 관리 데이타 매핑
// FIXME: 폐기 관리 데이타 폐기보고 매핑 대상 조회인 경우?
List<BizNimsResponse.DsuseMgtRes> newList = List.of();////dto.mappingNewDsuseRptInfo(dsuseMgts);
if(newList.size() > 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]");
BizNimsResponse.DsuseMgtRes dsuseMgtRes = dto.mappingNewDsuseRptInfo(dsuseMgtDto);
if(ObjectUtils.isNotEmpty(dsuseMgtRes)) {
if (bizNimsMapper.updateMappingDsuseMgt(dsuseMgtDto) == 1) {
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
}
}
if(bizNimsMapper.updateMappingDsuseMgt(newList.get(0)) == 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
};
}
// 2. 신규 외의 경우(rptTyCd : 1 - 취소, 2 - 변경)
// 4. 신규 작업 대상중 취소,변경(보고구분 '1', '2')인 처리(DB 데이타 생성) & 결과 return 대상 List에 추가
String errMsg = null;
for (NimsApiDto.DsuseRptInfo dto : workList) {
dto.setRgtr(Constants.NIMS_API_USER_ID);
for (NimsApiDto.DsuseRptInfo dto : newList) {
// 신규인 경우 skip
if("0".equals(dto.getRptTyCd())) continue;
// 2-1. refUsrRptIdNo 필수 체크
// 4-0) 참조사용자보고식별번호 필수 체크
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
// 폐기관리 및 폐기보고 정보 변경
// 4-1) 사용자보고식별번호 = 참조사용자보고식별번호 인 데이타
// tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 사용여부 'N' update
// 4-2) 폐기 관리 테이블에 사용자보고식별번호 반영
// -> 취소인 경우는 사용자/원사용자 식별번호 clear
// -> 변경인 경우는 사용자보고식별번호 -> 참조사용자보고식별번호 update
updateDsuseRptAndDsuseMgt(dto);
// 2-3. tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성 (취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성)
createDsuseRpt(dto, false);
// 4-3) tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 생성
// -> 취소인 경우는 tb_dsuse_rpt_info의 사용 여부 'N'으로 생성
createDsuseRpt(dto);
// FIXME : API 적용 필요
// 결과 return 대상 데이타 List에서 조회한 변경 대상이 있는 경우 replace
// 결과 return 대상 데이타 List에서 조회한 취소 대상이 있는 경우 삭제
for(NimsApiDto.DsuseRptInfo d : rtnTmplist){
// 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);
if(dto.getRptTyCd().equals("2")){
rtnlist.add(dto);
}
rtnList.remove(d);
};
}
// 6. return List에 현재 데이타 추가 - 변경인 경우만 추가
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("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 중복]");
// 7. FIXME : 폐기 관리 데이타 매핑
BizNimsResponse.DsuseMgtRes dsuseMgtRes = dto.mappingNewDsuseRptInfo(dsuseMgtDto);
if(ObjectUtils.isNotEmpty(dsuseMgtRes)) {
if (bizNimsMapper.updateMappingDsuseMgt(dsuseMgtDto) == 1) {
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
}
}
if(bizNimsMapper.updateMappingDsuseMgt(newList.get(0)) == 1){
throw ApiCustomException.create("폐기 관리 데이타 매핑 오류[폐기 관리 데이타 매핑 실패]");
};
}
// return dtos;
return workList;
// FIXME: API연계 데이타 확인후 매핑될 데이타가 최상단에 오도록 정렬기준 재정의 필요
rtnList.sort((a, b) -> a.getUsrRptIdNo().compareTo(b.getUsrRptIdNo()));
return rtnList;
}
@Override
@ -671,52 +674,28 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/**
* <pre>
* tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
* => tb_dsuse_rpt_info 'N'
* 0) set
* 1) set
* 2)
* - tb_dsuse_rpt_info 'N'
*
*
* 1. (rptTyCd : 0) -
* 2. (rptTyCd : 1, 2) -
* => =
* => ((rptTyCd : 0) )
* =>
* @param dto NimsApiDto.DsuseRptInfo
* @param isNew boolean
* </pre>
*/
private void createDsuseRpt(NimsApiDto.DsuseRptInfo dto, boolean isNew) {
private void createDsuseRpt(NimsApiDto.DsuseRptInfo dto) {
dto.setRgtr(Constants.NIMS_API_USER_ID);
dto.setRptTyCdNm(Constants.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()));
// FIXME : 폐기 관리 테이블에 사용자보고식별번호 반영
// 원 사용자 식별 번호 set - 변경/취소 인 경우
// 신규인 경우는 사용자보고식별번호로 설정
if(!isNew){
String refUsrRptIdNo = dto.getRefUsrRptIdNo();
// 참조사용자보고식별번호로 원사용자보고식별번호조회
while(true) {
Map<String, String> map = bizNimsMapper.recusiveRefUsrRptIdNo(refUsrRptIdNo);
if(map == null) throw ApiCustomException.create("데이타 오류[참조사용자로 사용자보고식별번호 조회 실패 - 데이타 누락]");
if(!isEmpty(map.get("refUsrRptIdNo"))){
refUsrRptIdNo = map.get("refUsrRptIdNo");
continue;
}
if("0".equals(map.get("rptTyCd"))){
dto.setOrgUsrRptIdNo(map.get("usrRptIdNo"));
break;
} else {
throw ApiCustomException.create("데이타 오류[참조사용자로 사용자보고식별번호 조회 실패 - 신규보고 데이타 누락]");
}
}
// 신규가 아닌 경우 : 원사용자보고식별번호 조회 & set
if("0".equals(dto.getRptTyCd())){
dto.setOrgUsrRptIdNo(dto.getUsrRptIdNo());
}else{
setOrgUsrRptIdNo(dto);
}
// FIXME : 폐기 관리 테이블에 사용자보고식별번호 반영
if (bizNimsMapper.insertDsuseRptInfo(dto) == 1) {
//취소인 경우 상세 데이타 등록 skip
@ -736,15 +715,53 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/**
* <pre>
* tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 'N' update
* tb_dsuse_mgt
* : =
* => usr_rpt_id_no -> refUsrRptIdNo update
* => use_yn = 'N' update
* (rptTyCd : 1, 2)
*
* => =
* => ((rptTyCd : 0) )
* =>
* @param dto NIMS (NimsApiDto.DsuseRptInfo)
* </pre>
*/
private void setOrgUsrRptIdNo(NimsApiDto.DsuseRptInfo dto) {
// 원 사용자 식별 번호 set - 변경/취소 인 경우
// 신규인 경우는 사용자보고식별번호로 설정
String refUsrRptIdNo = dto.getRefUsrRptIdNo();
// 참조사용자보고식별번호로 원사용자보고식별번호조회
while(true) {
Map<String, String> map = bizNimsMapper.recusiveRefUsrRptIdNo(refUsrRptIdNo);
if(map == null) throw ApiCustomException.create("데이타 오류[참조사용자로 사용자보고식별번호 조회 실패 - 데이타 누락]");
if(!isEmpty(map.get("refUsrRptIdNo"))){
refUsrRptIdNo = map.get("refUsrRptIdNo");
continue;
}
if("0".equals(map.get("rptTyCd"))){
dto.setOrgUsrRptIdNo(map.get("usrRptIdNo"));
break;
} else {
throw ApiCustomException.create("데이타 오류[참조사용자로 사용자보고식별번호 조회 실패 - 신규보고 데이타 누락]");
}
}
}
/**
* <pre>
* - tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl
* =
* => tb_dsuse_rpt_info, tb_dsuse_rpt_info_dtl 'N' update
* - tb_dsuse_mgt
*
* => / clear
* => -> update
* @param dto NimsApiDto.DsuseRptInfo
* </pre>
*/
private void updateDsuseRptAndDsuseMgt(NimsApiDto.DsuseRptInfo dto) {
dto.setRgtr(Constants.NIMS_API_USER_ID);
String errMsg;
if ("1".equals(dto.getRptTyCd())) errMsg = "취소";
else errMsg = "변경";
@ -765,9 +782,9 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if(cnt == 0) throw ApiCustomException.create(String.format("폐기 정보 상세 %s 실패", errMsg));
// 변경인 경우 상세 데이타 건수와 일치 하지 않는 경우 오류 처리
if ("2".equals(dto.getRptTyCd()) && dto.getRndDtlRptCnt() != cnt) {
throw ApiCustomException.create(String.format("폐기 정보 상세 %s 실패", errMsg));
}
// if ("2".equals(dto.getRptTyCd()) && dto.getRndDtlRptCnt() != cnt) {
// throw ApiCustomException.create(String.format("폐기 정보 상세 %s 실패", errMsg));
// }
} else {
throw ApiCustomException.create(String.format("폐기 정보 %s 실패", errMsg));

@ -170,7 +170,8 @@ public class InfMoisServiceBean extends AbstractServiceBean implements InfMoisSe
public void saveResultExchange() {
File dirPath = new File(dataRootPath + receiveTemp);
List<File> files = listFilesUsingDirectoryStream(dataRootPath + receiveTemp);
files.sort((a, b) -> b.getName().compareTo(a.getName()));
// 올림차순 정렬
files.sort((a, b) -> a.getName().compareTo(b.getName()));
List<Map<String, String>> rcvTgtFiles = new ArrayList<>();
List<PackDto.MoisPackRes> dtoList = new ArrayList<>();

@ -6,6 +6,7 @@ import java.util.List;
import javax.validation.Valid;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.annotation.JsonAlias;
@ -436,63 +437,85 @@ public class NimsApiDto {
* </pre>
*/
@JsonIgnore
public List<BizNimsResponse.DsuseMgtRes> mappingNewDsuseRptInfo(List<BizNimsResponse.DsuseMgtRes> dsuseMgts){
public List<BizNimsResponse.DsuseMgtRes> mappingNewDsuseRptInfos(List<BizNimsResponse.DsuseMgtRes> dsuseMgts){
List<BizNimsResponse.DsuseMgtRes> newList = new ArrayList<>();
for(BizNimsResponse.DsuseMgtRes mgtDto: dsuseMgts) {
// 폐기 신청서 접수 상태 데이타만 처리
if (Constants.PRGRS_STTS_CD.RECEIPT.getCode().equals(mgtDto.getPrgrsSttsCd())) {
String rptInfo = String.join("",
this.bsshCd, // 마약류취급자식별번호
this.hdrDe, // 취급일자
this.rptDe, // 보고일자
this.dsuseSeCd, // 폐기구분코드
this.dsusePrvCd, // 폐기사유코드
this.dsuseMthCd, // 폐기방법코드
this.dsuseDe, // 폐기일자
String.valueOf(this.rndDtlRptCnt) // 수불상세보고수
);
String mgtInfo = String.join("",
mgtDto.getBsshCd(), // 마약류취급자식별번호
mgtDto.getHdrDe(), // 취급일자
mgtDto.getRptDe(), // 보고일자
mgtDto.getDsuseSeCd(), // 폐기구분코드
mgtDto.getDsusePrvCd(), // 폐기사유코드
mgtDto.getDsuseMthCd(), // 폐기방법코드
mgtDto.getDsuseDe(), // 폐기일자
String.valueOf(mgtDto.getRndDtlRptCnt()) // 수불상세보고수
);
// FIXME: 폐기관리와 폐기보고의 상품정보 일치 여부 set - 비교 필드 확정 필요
if (rptInfo.equals(mgtInfo)) {
if (this.dsuseRptInfoDtls.size() == mgtDto.getDsuseMgtDtls().size()) {
for (DsuseRptInfoDtl rptDtl : this.dsuseRptInfoDtls) {
for (BizNimsRequest.DsuseMgtDtl mgtDtl : mgtDto.getDsuseMgtDtls()) {
if (rptDtl.getPrductCd().equals(mgtDtl.getPrductCd())
// && rptDtl.getMnfNo().equals(mgtDtl.getMnfNo())
// && rptDtl.getPrdValidDe().equals(mgtDtl.getPrdValidDe())
// && rptDtl.getMnfSeq().equals(mgtDtl.getMnfSeq())
&& rptDtl.getDsuseQy().equals(mgtDtl.getDsuseQy())) {
mgtDtl.setValidYn("Y");
break;
}
BizNimsResponse.DsuseMgtRes dsuseMgtRes = mappingNewDsuseRptInfo(mgtDto);
if(ObjectUtils.isNotEmpty(dsuseMgtRes)) {
newList.add(dsuseMgtRes);
}
}
return newList;
}
/**
* <pre>
*
* -> -
* ->
*
* 1.
* 2. set
* -> - (02) set
* -> , , , set
* @param mgtDto BizNimsResponse.DsuseMgtRes
* @return BizNimsResponse.DsuseMgtRes
* </pre>
*/
@JsonIgnore
public BizNimsResponse.DsuseMgtRes mappingNewDsuseRptInfo(BizNimsResponse.DsuseMgtRes mgtDto) {
// 폐기 신청서 접수 상태 데이타만 처리
if (Constants.PRGRS_STTS_CD.RECEIPT.getCode().equals(mgtDto.getPrgrsSttsCd())) {
String rptInfo = String.join("",
this.bsshCd, // 마약류취급자식별번호
this.hdrDe, // 취급일자
this.rptDe, // 보고일자
this.dsuseSeCd, // 폐기구분코드
this.dsusePrvCd, // 폐기사유코드
this.dsuseMthCd, // 폐기방법코드
this.dsuseDe, // 폐기일자
String.valueOf(this.rndDtlRptCnt) // 수불상세보고수
);
String mgtInfo = String.join("",
mgtDto.getBsshCd(), // 마약류취급자식별번호
mgtDto.getHdrDe(), // 취급일자
mgtDto.getRptDe(), // 보고일자
mgtDto.getDsuseSeCd(), // 폐기구분코드
mgtDto.getDsusePrvCd(), // 폐기사유코드
mgtDto.getDsuseMthCd(), // 폐기방법코드
mgtDto.getDsuseDe(), // 폐기일자
String.valueOf(mgtDto.getRndDtlRptCnt()) // 수불상세보고수
);
// FIXME: 폐기관리와 폐기보고의 상품정보 일치 여부 set - 비교 필드 확정 필요
if (rptInfo.equals(mgtInfo)) {
if (this.dsuseRptInfoDtls.size() == mgtDto.getDsuseMgtDtls().size()) {
for (DsuseRptInfoDtl rptDtl : this.dsuseRptInfoDtls) {
for (BizNimsRequest.DsuseMgtDtl mgtDtl : mgtDto.getDsuseMgtDtls()) {
if (rptDtl.getPrductCd().equals(mgtDtl.getPrductCd())
// && rptDtl.getMnfNo().equals(mgtDtl.getMnfNo())
// && rptDtl.getPrdValidDe().equals(mgtDtl.getPrdValidDe())
// && rptDtl.getMnfSeq().equals(mgtDtl.getMnfSeq())
&& rptDtl.getDsuseQy().equals(mgtDtl.getDsuseQy())) {
mgtDtl.setValidYn("Y");
break;
}
}
}
mgtDto.setUsrRptIdNo(this.usrRptIdNo);
mgtDto.setOrgUsrRptIdNo(this.orgUsrRptIdNo);
mgtDto.setRptTyCd(this.rptTyCd);
mgtDto.setStts(this.status);
mgtDto.setPrgrsSttsCd(Constants.PRGRS_STTS_CD.MAPPING.getCode());
mgtDto.setRgtr(this.getRgtr());
newList.add(mgtDto);
}
mgtDto.setUsrRptIdNo(this.usrRptIdNo);
mgtDto.setOrgUsrRptIdNo(this.orgUsrRptIdNo);
mgtDto.setRptTyCd(this.rptTyCd);
mgtDto.setStts(this.status);
mgtDto.setPrgrsSttsCd(Constants.PRGRS_STTS_CD.MAPPING.getCode());
mgtDto.setRgtr(this.getRgtr());
return mgtDto;
}
}
return newList;
return null;
}
/**
* <pre>
*

@ -270,6 +270,12 @@
</where>
</select>
<select id="selectDsuseMgt" parameterType="string" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtRes">
/** nims-mysql-mapper|selectDsuseMgt-폐기관리 정보 조회|julim */
<include refid="sqlDsuseMgt"/>
WHERE tdm.dscdmng_id = #{dscdmngId}
</select>
<sql id="sqlDsuseMgt">
SELECT tdm.dscdmng_id, /** 폐기관리ID */
tdm.user_id, /** 사용자ID */
@ -362,6 +368,12 @@
WHERE dscdmng_id = #{dscdmngId}
</update>
<select id="selectDscdmngIdByOrgUsrRptIdNo" parameterType="string" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtRes">
/** nims-mysql-mapper|selectDscdmngIdByOrgUsrRptIdNo-폐기관리ID 조회(원사용자보고식별번호로)|julim */
<include refid="sqlDsuseMgt"/>
WHERE tdm.dscdmng_id = #{dscdmngId}
</select>
<!-- ========================== -->
<!-- 폐기 관리 업무 테이블 end -->
<!-- ========================== -->
@ -529,7 +541,7 @@
, mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s')
, mdfr = #{rgtr}
WHERE usr_rpt_id_no = #{refUsrRptIdNo}
AND use_yn = 'Y'
-- AND use_yn = 'Y'
</update>
<update id="updateCancelDsuseRptInfoDtl" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">

Loading…
Cancel
Save