|
|
|
@ -16,12 +16,9 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.ResourceUtils;
|
|
|
|
|
|
|
|
|
|
import cokr.xit.base.file.FileInfo;
|
|
|
|
|
import cokr.xit.base.file.FileInfo.Relation;
|
|
|
|
|
import cokr.xit.base.file.service.FileQuery;
|
|
|
|
|
import cokr.xit.base.file.service.bean.FileBean;
|
|
|
|
|
import cokr.xit.base.file.web.FileInfoFactory;
|
|
|
|
|
import cokr.xit.fims.cmmn.CmmnUtil;
|
|
|
|
|
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
|
|
|
|
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
|
|
|
|
import cokr.xit.fims.cmmn.dao.CrdnPayerHstryMapper;
|
|
|
|
|
import cokr.xit.fims.cmmn.dao.CrdnSttsHstryMapper;
|
|
|
|
@ -39,7 +36,6 @@ import cokr.xit.fims.cvlc.CrdnCvlcpt;
|
|
|
|
|
import cokr.xit.fims.cvlc.dao.AnswerWordsMapper;
|
|
|
|
|
import cokr.xit.fims.cvlc.dao.CrdnCvlcptMapper;
|
|
|
|
|
import cokr.xit.fims.cvlc.service.CrdnCvlcptService;
|
|
|
|
|
import cokr.xit.fims.excl.LevyExcl;
|
|
|
|
|
import cokr.xit.fims.excl.dao.LevyExclMapper;
|
|
|
|
|
import cokr.xit.fims.excl.service.bean.Excl01Bean;
|
|
|
|
|
import cokr.xit.fims.sprt.Sprt;
|
|
|
|
@ -308,40 +304,9 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
|
|
|
|
|
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdnId);
|
|
|
|
|
|
|
|
|
|
//부과제외 대장을 등록 한다.
|
|
|
|
|
LevyExcl excl01 = new LevyExcl();
|
|
|
|
|
excl01.setSggCd(crdnInfo.string("SGG_CD"));
|
|
|
|
|
excl01.setTaskSeCd(crdnInfo.string("TASK_SE_CD"));
|
|
|
|
|
excl01.setCrdnId(crdnInfo.string("CRDN_ID"));
|
|
|
|
|
excl01.setLevyExclYmd((new SimpleDateFormat("yyyyMMdd")).format(new Date()));
|
|
|
|
|
excl01.setLevyExclSeCd("1");
|
|
|
|
|
excl01.setLevyExclRsnCd("191");
|
|
|
|
|
excl01.setEtcCn("이송(이첩)");
|
|
|
|
|
saved = levyExclMapper.insert(excl01);
|
|
|
|
|
if (!saved) {
|
|
|
|
|
throw new RuntimeException("반송처리 중 부과제외 대장 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속상태를 변경한다.
|
|
|
|
|
Crdn crdn = new Crdn();
|
|
|
|
|
crdn.setCrdnId(crdnId);
|
|
|
|
|
crdn.setCrdnSttsCd("81");
|
|
|
|
|
saved = crdnUpdtMapper.updateCrdnStatus(crdn) == 1 ? true : false;
|
|
|
|
|
if (!saved) {
|
|
|
|
|
throw new RuntimeException("반송처리 중 단속상태변경에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속상태 변경 이력 기록
|
|
|
|
|
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
|
|
|
|
crdnSttsHstry.setCrdnId(crdnId);
|
|
|
|
|
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
|
|
|
|
|
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
|
|
|
|
|
crdnSttsHstry.setCrdnSttsCd("81");
|
|
|
|
|
crdnSttsHstry.setTaskDtlId(excl01.getLevyExclId());
|
|
|
|
|
crdnSttsHstry.setEtcCn("이송(이첩)");
|
|
|
|
|
saved = crdnSttsHstryMapper.insert(crdnSttsHstry);
|
|
|
|
|
if (!saved) {
|
|
|
|
|
throw new RuntimeException("반송 처리 중 단속상태이력 등록에 실패하였습니다.");
|
|
|
|
|
saved = crdnCvlcptSubBean.executelevyExcl("sendBack", crdnId);
|
|
|
|
|
if(!saved) {
|
|
|
|
|
throw new RuntimeException("반송 처리 중 서손처리에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean isFirstBorn = crdnInfo.string("CRDN_REG_SE_CD").equals("02");
|
|
|
|
@ -370,136 +335,17 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean updateCvlcptPrcsSe(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn, List<FileInfo> newFileInfoList) {
|
|
|
|
|
public boolean updateCvlcptProcessSection(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn, List<FileInfo> newFileInfoList) {
|
|
|
|
|
boolean saved = false;
|
|
|
|
|
|
|
|
|
|
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId());
|
|
|
|
|
|
|
|
|
|
crdnCvlcpt.setCvlcptLinkId(crdnInfo.string("CVLCPT_LINK_ID"));
|
|
|
|
|
|
|
|
|
|
String acceptType = (String)ifEmpty(nonQueryRequest.get("acceptType"), "");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//첨수파일 수 변경
|
|
|
|
|
int fileInsertCnt = 0;
|
|
|
|
|
int fileDeleteCnt = 0;
|
|
|
|
|
if(newFileInfoList != null && !newFileInfoList.isEmpty()) {
|
|
|
|
|
fileInsertCnt = newFileInfoList.size();
|
|
|
|
|
}
|
|
|
|
|
String[] deleteFileKeyList = (String[])ifEmpty(nonQueryRequest.get("deleteFileKeyList"), new String[] {});
|
|
|
|
|
if(deleteFileKeyList.length > 0) {
|
|
|
|
|
fileDeleteCnt = deleteFileKeyList.length;
|
|
|
|
|
}
|
|
|
|
|
int changeFileCnt = (fileInsertCnt - fileDeleteCnt);
|
|
|
|
|
nonQueryRequest.put("changeFileCnt", changeFileCnt);
|
|
|
|
|
|
|
|
|
|
//금액 변경
|
|
|
|
|
if(crdnInfo.string("TASK_SE_CD").equals("PVS") && "Y".equals(crdnInfo.string("OVTIME_PRTTN_YN"))) {
|
|
|
|
|
nonQueryRequest.put("changeAmountYn","N");
|
|
|
|
|
} else {
|
|
|
|
|
int[] basicAmt = crdnStngBean.getBasicAmt(crdn);
|
|
|
|
|
int ffnlgCrdnAmt = crdnInfo.number("FFNLG_CRDN_AMT").intValue();
|
|
|
|
|
if(ffnlgCrdnAmt != basicAmt[0]){
|
|
|
|
|
nonQueryRequest.put("changeAmountYn","Y");
|
|
|
|
|
crdn.setFfnlgCrdnAmt(basicAmt[0]);
|
|
|
|
|
crdn.setFfnlgAmt(basicAmt[0]);
|
|
|
|
|
crdn.setAdvntceAmt(basicAmt[1]);
|
|
|
|
|
crdn.setFfnlgRductRt("0");
|
|
|
|
|
} else {
|
|
|
|
|
nonQueryRequest.put("changeAmountYn","N");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//납부자 변경
|
|
|
|
|
if(!crdnInfo.string("RTPYR_ID").equals(crdn.getRtpyrId())) {
|
|
|
|
|
nonQueryRequest.put("changePayerYn","Y");
|
|
|
|
|
} else {
|
|
|
|
|
nonQueryRequest.put("changePayerYn","N");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속상태값 변경
|
|
|
|
|
nonQueryRequest.put("changeStatusYn","Y");
|
|
|
|
|
if(acceptType.equals("accept")) {
|
|
|
|
|
if(!crdnInfo.string("CRDN_REG_SE_CD").equals("02")
|
|
|
|
|
|| Arrays.asList(new String[]{"04","05","06"}).contains(crdnInfo.string("CVLCPT_TRSM_CD"))) {
|
|
|
|
|
crdn.setCrdnSttsCd("22");
|
|
|
|
|
} else {
|
|
|
|
|
crdn.setCrdnSttsCd("21");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else if(acceptType.equals("someAccept")){
|
|
|
|
|
crdn.setCrdnSttsCd("83");
|
|
|
|
|
} else if(acceptType.equals("nonAccept")) {
|
|
|
|
|
crdn.setCrdnSttsCd("81");
|
|
|
|
|
} else {
|
|
|
|
|
throw new RuntimeException("단속민원답변 수정에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//부과 제외 대장 등록
|
|
|
|
|
String dtlTaskId = "";
|
|
|
|
|
if(acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
|
|
|
|
|
boolean retSuccess = false;
|
|
|
|
|
LevyExcl excl01 = new LevyExcl();
|
|
|
|
|
excl01.setCrdnId(crdn.getCrdnId());
|
|
|
|
|
excl01.setSggCd(crdn.getSggCd());
|
|
|
|
|
excl01.setTaskSeCd(crdn.getTaskSeCd());
|
|
|
|
|
excl01.setLevyExclYmd(crdn.getLevyExclYmd());
|
|
|
|
|
excl01.setLevyExclSeCd(crdn.getLevyExclSeCd());
|
|
|
|
|
excl01.setLevyExclRsnCd(crdn.getLevyExclRsnCd());
|
|
|
|
|
excl01.setEtcCn(crdn.getEtcCn());
|
|
|
|
|
|
|
|
|
|
retSuccess = levyExclMapper.insert(excl01);
|
|
|
|
|
if (!retSuccess) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("부과제외 대장 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dtlTaskId = excl01.getLevyExclId();
|
|
|
|
|
} else {
|
|
|
|
|
dtlTaskId = crdn.getCrdnId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속정보변경
|
|
|
|
|
saved = crdnCvlcptSubBean.updateCrdn(nonQueryRequest, crdn);
|
|
|
|
|
saved = crdnCvlcptSubBean.updateSubInfo(nonQueryRequest, crdn, newFileInfoList);
|
|
|
|
|
if(!saved) {
|
|
|
|
|
throw new RuntimeException("단속민원답변 수정 중 단속정보변경에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//단속 납부자 변경 이력 등록
|
|
|
|
|
if(((String)nonQueryRequest.get("changePayerYn")).equals("Y")) {
|
|
|
|
|
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
|
|
|
|
|
|
|
|
|
|
crdnPayerHstry.setCrdnId(crdn.getCrdnId());
|
|
|
|
|
crdnPayerHstry.setRtpyrId(crdn.getRtpyrId());
|
|
|
|
|
|
|
|
|
|
boolean retSuccess = crdnPayerHstryMapper.insert(crdnPayerHstry);
|
|
|
|
|
if(!retSuccess) {
|
|
|
|
|
throw new RuntimeException("단속민원답변 수정 중 단속납부자변경 이력 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속상태 변경 이력 등록
|
|
|
|
|
if(((String)nonQueryRequest.get("changeStatusYn")).equals("Y")) {
|
|
|
|
|
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
|
|
|
|
|
|
|
|
|
crdnSttsHstry.setCrdnId(crdn.getCrdnId());
|
|
|
|
|
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
|
|
|
|
|
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
|
|
|
|
|
crdnSttsHstry.setCrdnSttsCd(crdn.getCrdnSttsCd());
|
|
|
|
|
crdnSttsHstry.setTaskDtlId(dtlTaskId);
|
|
|
|
|
if(crdn.getCrdnSttsCd().equals("81") || crdn.getCrdnSttsCd().equals("83")) {
|
|
|
|
|
crdnSttsHstry.setEtcCn("부과제외 대장 등록");
|
|
|
|
|
} else {
|
|
|
|
|
crdnSttsHstry.setEtcCn("민원 요청 수용");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean retSuccess = crdnSttsHstryMapper.insert(crdnSttsHstry);
|
|
|
|
|
if(!retSuccess) {
|
|
|
|
|
throw new RuntimeException("단속민원답변 수정 중 단속상태변경 이력 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
throw new RuntimeException("민원자료 저장 중 오류가 발생하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
crdnCvlcpt.setCvlcptLinkId(crdnInfo.string("CVLCPT_LINK_ID"));
|
|
|
|
|
|
|
|
|
|
boolean isFirstBorn = crdnInfo.string("CRDN_REG_SE_CD").equals("02");
|
|
|
|
|
boolean isNotYetTransmit = !Arrays.asList(new String[]{"04","05","06"}).contains(crdnInfo.string("CVLCPT_TRSM_CD"));
|
|
|
|
@ -569,58 +415,12 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//파일 처리
|
|
|
|
|
if(newFileInfoList != null && !newFileInfoList.isEmpty()) {
|
|
|
|
|
int fileInsertEffected = fileBean.create(newFileInfoList);
|
|
|
|
|
if(fileInsertCnt != fileInsertEffected) {
|
|
|
|
|
throw new RuntimeException("단속민원답변 수정 중 파일 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(deleteFileKeyList.length > 0) {
|
|
|
|
|
int fileDeleteEffected = fileBean.remove((String[])nonQueryRequest.get("deleteFileKeyList"));
|
|
|
|
|
if(fileDeleteCnt != fileDeleteEffected) {
|
|
|
|
|
throw new RuntimeException("단속민원답변 수정 중 파일 삭제에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return saved;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean copyCvlcptCrdnInfo(String crdnId) {
|
|
|
|
|
|
|
|
|
|
FileQuery fileQuery = new FileQuery().setInfoType(Crdn.INF_TYPE).setInfoKeys(crdnId);
|
|
|
|
|
List<DataObject> orgnlCrdnFileList = fileBean.getFileList(fileQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String newCrdnId = crdnCvlcptSubBean.insertCrdnFromSelect(crdnId);
|
|
|
|
|
if(ifEmpty(newCrdnId, () -> "").equals("")) {
|
|
|
|
|
throw new RuntimeException("단속민원 복사 등록 중 단속대장 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!orgnlCrdnFileList.isEmpty() && orgnlCrdnFileList.size() > 0) {
|
|
|
|
|
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
|
|
|
|
|
|
|
|
|
|
List<File> files = new ArrayList<>();
|
|
|
|
|
for (int iLoop = 0; iLoop < orgnlCrdnFileList.size(); iLoop++) {
|
|
|
|
|
files.add(new File(orgnlCrdnFileList.get(iLoop).string("FILE_PATH")));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Relation relation = new Relation();
|
|
|
|
|
relation.setInfoType(Crdn.INF_TYPE);
|
|
|
|
|
relation.setInfoKey(newCrdnId);
|
|
|
|
|
fileInfoList = new FileInfoFactory().createFileInfos(relation, files);
|
|
|
|
|
for (int iLoop = 0; iLoop < fileInfoList.size(); iLoop++) {
|
|
|
|
|
fileInfoList.get(iLoop).setName(orgnlCrdnFileList.get(iLoop).string("FILE_NM"));
|
|
|
|
|
}
|
|
|
|
|
int effected = fileBean.create(fileInfoList);
|
|
|
|
|
if(effected == 0) {
|
|
|
|
|
throw new RuntimeException("단속민원 복사 등록 중 파일복사에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
return crdnCvlcptSubBean.copyCvlcptCrdnInfo(crdnId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -656,11 +456,6 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int effected = crdnCvlcptMapper.updateAnswerTargetTransmitStatus(crdnCvlcpt);
|
|
|
|
|
if(effected != 1) {
|
|
|
|
|
throw new RuntimeException("민원 전송 상태 변경 중 오류가 발생하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속상태 변경(차적조회완료 -> 부과대상)
|
|
|
|
|
if(targetDataList.get(i).string("CRDN_STTS_CD").equals("21")) {
|
|
|
|
|
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
|
|
|
@ -676,6 +471,10 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int effected = crdnCvlcptMapper.updateAnswerTargetTransmitStatus(crdnCvlcpt);
|
|
|
|
|
if(effected != 1) {
|
|
|
|
|
throw new RuntimeException("민원 전송 상태 변경 중 오류가 발생하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(processType.equals("answerExecute")) {
|
|
|
|
|
boolean result = crdnCvlcptMainBean.insertTransmitInfo(false, targetDataList.get(i).string("CVLCPT_LINK_ID"));
|
|
|
|
@ -781,40 +580,9 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
boolean result = vehicleResultMap.get(vhrno);
|
|
|
|
|
if(result) {
|
|
|
|
|
|
|
|
|
|
//부과제외 대장을 등록 한다.
|
|
|
|
|
LevyExcl excl01 = new LevyExcl();
|
|
|
|
|
excl01.setSggCd(crdnInfo.string("SGG_CD"));
|
|
|
|
|
excl01.setTaskSeCd(crdnInfo.string("TASK_SE_CD"));
|
|
|
|
|
excl01.setCrdnId(crdnInfo.string("CRDN_ID"));
|
|
|
|
|
excl01.setLevyExclYmd((new SimpleDateFormat("yyyyMMdd")).format(new Date()));
|
|
|
|
|
excl01.setLevyExclSeCd("1");
|
|
|
|
|
excl01.setLevyExclRsnCd("103");
|
|
|
|
|
excl01.setEtcCn("표지조회실행");
|
|
|
|
|
boolean saved = levyExclMapper.insert(excl01);
|
|
|
|
|
if (!saved) {
|
|
|
|
|
throw new RuntimeException("서손처리 중 부과제외 대장 등록에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속자료 변경
|
|
|
|
|
Crdn crdn = new Crdn();
|
|
|
|
|
crdn.setCrdnId(crdnInfo.string("CRDN_ID"));
|
|
|
|
|
crdn.setCrdnSttsCd("81");
|
|
|
|
|
saved = crdnUpdtMapper.updateCrdnStatus(crdn) == 1 ? true : false;
|
|
|
|
|
if (!saved) {
|
|
|
|
|
throw new RuntimeException("서손처리 중 단속상태변경에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//단속상태 변경 이력 기록
|
|
|
|
|
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
|
|
|
|
crdnSttsHstry.setCrdnId(crdn.getCrdnId());
|
|
|
|
|
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
|
|
|
|
|
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
|
|
|
|
|
crdnSttsHstry.setCrdnSttsCd("81");
|
|
|
|
|
crdnSttsHstry.setTaskDtlId(excl01.getLevyExclId());
|
|
|
|
|
crdnSttsHstry.setEtcCn("표지조회실행");
|
|
|
|
|
saved = crdnSttsHstryMapper.insert(crdnSttsHstry);
|
|
|
|
|
if (!saved) {
|
|
|
|
|
throw new RuntimeException("서손처리 중 단속상태이력 등록에 실패하였습니다.");
|
|
|
|
|
boolean saved = crdnCvlcptSubBean.executelevyExcl("inquireTag", crdnInfo.string("CRDN_ID"));
|
|
|
|
|
if(!saved) {
|
|
|
|
|
throw new RuntimeException("서손처리에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean isFirstBorn = crdnInfo.string("CRDN_REG_SE_CD").equals("02");
|
|
|
|
@ -850,7 +618,6 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
Crdn crdn = new Crdn();
|
|
|
|
|
crdn.setCrdnId(crdnInfo.string("CRDN_ID"));
|
|
|
|
|