단속조회 수정, postplus 지원 추가(작업중)

main
mjkhan21 4 months ago
parent fbf2f795b8
commit 04177d94fb

@ -176,6 +176,13 @@
<version>23.04.01-SNAPSHOT</version>
</dependency>
<!-- 포스트플러스 연계 -->
<dependency>
<groupId>cokr.xit.interfaces</groupId>
<artifactId>xit-postplus</artifactId>
<version>23.04.01-SNAPSHOT</version>
</dependency>
<!-- PDF 라이브러리 -->
<dependency>
<groupId>org.apache.pdfbox</groupId>

@ -22,7 +22,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("vltnMapper")
public interface VltnMapper extends AbstractMapper {
/** .<br />
* @param req
* @return

@ -217,7 +217,7 @@ public class SnisBean extends AbstractBean {
prenotice.setJukbalYm(crdnYmdhms.substring(0, 6)); // 적발년월
prenotice.setJukbalYmdHs(crdnYmdhms.substring(0, 12)); // 위반일시
prenotice.setNapId(crdnInfo.string("RTPYR_NO")); // 납세자 주민번호
prenotice.setNapId(blankIfEmpty(crdnInfo.string("RTPYR_NO")).replace("-", ""));// 납세자 주민번호
prenotice.setNapNm(crdnInfo.string("RTPYR_NM")); // 납세자 이름
prenotice.setNapMobilNo(crdnInfo.string("RTPYR_MBL_TELNO")); // 납세자 휴대폰 번호
prenotice.setNapTelNo(crdnInfo.string("RTPYR_TELNO")); // 납세자 전화번호

@ -4,10 +4,10 @@ import java.util.List;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
/** DAO
*
@ -21,7 +21,6 @@ import cokr.xit.fims.sndb.Sndng;
*/
@Mapper("sndngMapper")
public interface SndngMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
@ -36,16 +35,13 @@ public interface SndngMapper extends AbstractMapper {
default DataObject selectSndngInfo(SndbQuery req) {
// 삭제여부
if (req.getDelYn() == null) {
if (req.getDelYn() == null)
req.setDelYn("N");
}
// 기본 정렬
if (req.getOrderBy() == null) {
if (req.getOrderBy() == null)
req.setOrderBy("S.SNDNG_ID DESC");
}
List<DataObject> sndngs = selectSndngs(req);
return !sndngs.isEmpty() ? sndngs.get(0) : null;
}
@ -62,9 +58,11 @@ public interface SndngMapper extends AbstractMapper {
List<DataObject> selectWrngTrgts(SndbQuery req);
default DataObject selectWrngTrgtInfo(String crdnId) {
List<DataObject> wrngTrgtInfo = selectWrngTrgts(new SndbQuery().setCrdnId(crdnId)
.setDelYn("N"));
List<DataObject> wrngTrgtInfo = selectWrngTrgts(
new SndbQuery()
.setCrdnId(crdnId)
.setDelYn("N")
);
return !wrngTrgtInfo.isEmpty() ? wrngTrgtInfo.get(0) : null;
}
@ -87,9 +85,11 @@ public interface SndngMapper extends AbstractMapper {
List<DataObject> selectAdvntceTrgts(SndbQuery req);
default DataObject selectAdvntceTrgtInfo(String crdnId) {
List<DataObject> advntceTrgtInfo = selectAdvntceTrgts(new SndbQuery().setCrdnId(crdnId)
.setDelYn("N"));
List<DataObject> advntceTrgtInfo = selectAdvntceTrgts(
new SndbQuery()
.setCrdnId(crdnId)
.setDelYn("N")
);
return !advntceTrgtInfo.isEmpty() ? advntceTrgtInfo.get(0) : null;
}
@ -124,9 +124,11 @@ public interface SndngMapper extends AbstractMapper {
List<DataObject> selectNhtTrgts(SndbQuery req);
default DataObject selectNhtTrgtInfo(String crdnId) {
List<DataObject> nhtTrgtInfo = selectNhtTrgts(new SndbQuery().setCrdnId(crdnId)
.setDelYn("N"));
List<DataObject> nhtTrgtInfo = selectNhtTrgts(
new SndbQuery()
.setCrdnId(crdnId)
.setDelYn("N")
);
return !nhtTrgtInfo.isEmpty() ? nhtTrgtInfo.get(0) : null;
}
@ -180,5 +182,4 @@ public interface SndngMapper extends AbstractMapper {
* @return
*/
int updateEPostSndng(Sndng sndng);
}
}

@ -0,0 +1,302 @@
package cokr.xit.fims.sndb.service.bean;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.base.FimsUser;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.dao.CrdnListMapper;
import cokr.xit.fims.mngt.dao.VltnMapper;
import cokr.xit.fims.mngt.service.bean.TaskProcessor;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
import cokr.xit.fims.sndb.dao.SndngMapper;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.interfaces.postplus.post.PostResponse;
import cokr.xit.interfaces.postplus.post.PostplusRequest;
import cokr.xit.interfaces.postplus.post.PstMsr;
import cokr.xit.interfaces.postplus.post.PstTemplate;
import cokr.xit.interfaces.postplus.post.service.PostplusService;
@Component("postplusBean")
public class PostplusBean extends AbstractBean {
/** 파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** 위반 정보 정보 DAO */
@Resource(name = "vltnMapper")
private VltnMapper vltnMapper;
@Resource(name = "crdnListMapper")
private CrdnListMapper crdnListMapper;
/** 발송 대장 정보 DAO */
@Resource(name = "sndngMapper")
private SndngMapper sndngMapper;
/** 발송 상세 정보 DAO */
@Resource(name = "sndngDtlMapper")
private SndngDtlMapper sndngDtlMapper;
@Resource(name = "postplusService")
private PostplusService postplusService;
public String requestProduction(Sndng sndng) {
PstMsr.Master master = getMaster(sndng);
List<DataObject> sndngDtlList = sndngDtlMapper.selectSndngDtlList(
new SndbQuery()
.setSndngId(sndng.getSndngId())
.setDelYn("N")
);
List<String> crdnIDs = sndngDtlList.stream()
.map(row -> row.string("CRDN_ID"))
.toList();
String[] crdnIds = crdnIDs.toArray(new String[crdnIDs.size()]);
// 발송상세의 단속목록 조회
Map<String, DataObject> crdns = crdnListMapper.selectCrackdownList(new CrdnQuery().setCrdnIds(crdnIds)).stream()
.collect(Collectors.toMap(row -> row.string("CRDN_ID"), row -> row));
// 단속정보별 첨부파일 조회
Map<String, List<FileInfo>> fileInfos = fileBean.getFilesOf(Crdn.INF_TYPE, crdnIds).stream()
.collect(Collectors.groupingBy(FileInfo::getInfoKey));
List<PstMsr.Detail> details = getDetails(sndngDtlList, crdns, fileInfos);
// 제작신청 전송
PstMsr pstMsr = new PstMsr()
.setMaster(master)
.setDetails(details)
.setAttachmentPaths(
fileInfos.values().stream()
.flatMap(infos -> infos.stream().map(FileInfo::getPath))
.toList()
);
PostResponse presp = postplusService.requestProduction(pstMsr);
if (!presp.success())
return "[F] " + presp.getRemark();
// 발송 업데이트
Sndng updtSndng = new Sndng();
updtSndng.setConKey(master.getIntfID()); // 외부연계식별키
updtSndng.setDivKb(master.getDelivery()); // 취급 구분
updtSndng.setSndngSttsCd("01"); // 발송 상태 코드(FIM049) - 01 발송 대기
updtSndng.setSndngId(sndng.getSndngId()); // 발송 ID
sndngMapper.updateEPostSndng(updtSndng); // 전자우편 발송 내역 수정
// 발송상세 업데이트
for (PstMsr.Detail detail: details) {
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setConKey(detail.getIntfID()); // 외부연계식별키
sndngDtl.setRgNo(detail.getRegNo()); // 등기 번호
sndngDtl.setSndngDtlSttsCd("03"); // 발송 상세 상태 코드(FIM050) - 03 발송
sndngDtl.setSndngDtlId(detail.getSndngDtlId());
sndngDtlMapper.updateSndngDtlEPost(sndngDtl);
}
return "[S] 우편발송 요청이 등록됐습니다";
}
private PstMsr.Master getMaster(Sndng sndng) {
DataObject sndngInfo = sndngMapper.selectSndngInfo(
new SndbQuery()
.setSndngId(sndng.getSndngId())
.setDelYn("N")
);
List<PstTemplate> templates = postplusService.getTemplates(
new PostplusRequest()
.setSggCd(sndng.getSggCd())
.setTaskSeCd(sndng.getTaskSeCd())
.setVltnId(sndngInfo.string("VLTN_ID"))
.setNoticeGb(sndngInfo.string("SNDNG_SE_CD"))
);
if (templates.isEmpty())
throw new RuntimeException("우편발송 기본설정을 찾지 못했습니다.");
FimsUser user = (FimsUser)currentUser().getUser();
return templates.get(0).setInfo(new PstMsr.Master())
.setSndngId(sndngInfo.string("SNDNG_ID"))
.setRecipientCount(sndngInfo.string("TNOCS"))
.setDelivery(sndng.getPostSndngSeCd())
.setSenderName(user.getName())
.setSenderSigungu(sndng.getSggCd())
.setSenderZipcode(user.getZipCode())
.setSenderAddress(user.getAddress())
.setSenderDetailAddress(user.getAddressDetail())
.setSenderDeptCd(user.getDeptCode())
.setSenderPhoneNo(user.getPhoneNo())
.setSenderEmail(user.getEmailAddress());
}
private List<PstMsr.Detail> getDetails(List<DataObject> sndngDtlList, Map<String, DataObject> crdns, Map<String, List<FileInfo>> fileInfos) {
TaskProcessor taskProcessor = TaskProcessor.get();
return sndngDtlList.stream()
.map(dtlInfo -> {
String crdnId = dtlInfo.string("CRDN_ID");
DataObject crdn = crdns.get(crdnId);
List<FileInfo> files = fileInfos.get(crdnId);
PstMsr.Detail detail = new PstMsr.Detail()
.setSndngDtlId(dtlInfo.string("SNDNG_DTL_ID")) // 발송상세ID
.setName(dtlInfo.string("RCPN_NM")) // 이름
.setZipcode(dtlInfo.string("RCPN_ZIP")) // 우편번호
.setAddress(dtlInfo.string("RCPN_ADDR")) // 주소
.setDetailAddress(dtlInfo.string("RCPN_DTL_ADDR")) // 상세주소
.setPhoneNo(dtlInfo.string("RTPYR_TELNO")) // 전화번호
.setMobileNo(dtlInfo.string("RTPYR_MBL_TELNO")) // 휴대전화번호
// .setEmail(dtlInfo.string("")) // 이메일주소
.setRegGb(null) // 등기구분
.setRegNo(null) // 등기번호
.setRegNoDatetime(null) // 등기번호 등록일시
.setSerNo(null) // 일련번호
.setDeliveryCd(null) // 발송코드
.setBar1D(null) // 바코드 1D
.setBar2D(null) // 바코드 2D
.setNoticeNo(crdn.string("GOJI_NO")); // 고지서번호
String sndngSeCd = dtlInfo.string("SNDNG_SE_CD");
DataObject recevDoc = taskProcessor.getRecevDocCd(
new DataObject()
.set("taskSeCd", dtlInfo.get("TASK_SE_CD"))
.set("taskSeNm", dtlInfo.get("TASK_SE_NM"))
.set("infoSndngSeNm", dtlInfo.get("SNDNG_SE_NM"))
.set("vltn", dtlInfo.get("VLTN_ARTCL"))
.set("taxItem", "TODO: 세목")
);
detail
.setDocCd1(recevDoc.string("docCd1")) // 문서종류1
.setDocCd2(recevDoc.string("docCd2")) // 문서종류2
.setDocCd3(recevDoc.string("docCd3")) // 문서종류3
.setDocCd4(recevDoc.string("docCd4")) // 문서종류4
.setDocCd5(recevDoc.string("docCd5")) // 문서종류5
.setSubject1(null) // 과목명1
.setSubject2(null) // 과목명2
.setSubject3(null) // 과목명3
.setViolationDatetime(dtlInfo.string("CRDN_DT")) // 위반일시
.setViolationDong(dtlInfo.string("CRDN_STDG_NM")) // 위반동
.setViolationLocation(dtlInfo.string("CRDN_PLC")) // 위반장소
.setLegalBasis(crdn.string("VLTN_ARTCL")) // 법조항
.setPaymentNo1(null) // 납부번호1
.setPaymentNo2(null) // 납부번호2
.setEpaymentNo(dtlInfo.string("EPAYNO")) // 전자납부번호
.setVaccountNo(dtlInfo.string("BANK_NM") + " " + dtlInfo.string("VRACTNO")); // 가상계좌번호
long pcptax = 0, // 본세
adamt = 0, // 가산금
lastAmt = 0, // 최종 금액
dudtAftrPcptax = 0, // 납기후 본세
dudtAftrAdamt = 0, // 납기후 가산금
dudtAftrAmt = 0; // 납기후 합계 금액
// 계고장에는 최초 과태료 금액을 출력한다.
boolean warning = "01,11,12".contains(sndngSeCd); // 계고장 여부
if (warning) {
pcptax = toLong(dtlInfo.get("FFNLG_AMT")); // 본세 = 과태료 단속 금액
lastAmt = pcptax; // 합계 금액 = 과태료 단속 금액
adamt = dudtAftrPcptax = dudtAftrAdamt = dudtAftrAmt = 0;
} else {
pcptax = toLong(dtlInfo.get("PCPTAX")); // 본세
adamt = toLong(dtlInfo.get("ADAMT")); // 가산금
lastAmt = toLong(dtlInfo.get("LAST_AMT")); // 최종 금액
if (dtlInfo.string("SGG_CD").equals("50110")) {
dudtAftrPcptax = dudtAftrAdamt = dudtAftrAmt = 0;
} else {
dudtAftrAmt = toLong(dtlInfo.get("DUDT_AFTR_AMT")); // 납기후 금액
if (dudtAftrAmt == 0) {
dudtAftrPcptax = dudtAftrAdamt = dudtAftrAmt = 0;
} else {
dudtAftrPcptax = toLong(dtlInfo.get("PCPTAX")); // 납기후 본세
if (dudtAftrAmt > dudtAftrPcptax) { // 납기후 금액이 본세보다 크다면..
dudtAftrAdamt = toLong(dtlInfo.get("DUDT_AFTR_AMT")) - toLong(dtlInfo.get("PCPTAX"));
} else if (dudtAftrAmt < dudtAftrPcptax) { // 납기후 금액이 본세보다 작다면 오류..
throw new RuntimeException("우편통합 발송 작업중 납기후 금액이 본세보다 작은 자료가 발견되었습니다.");
} else {
dudtAftrAdamt = 0;
}
}
}
}
detail.setFineAmt(toLong(dtlInfo.get("FFLNG_AMT"))) // 과태료
.setPaymentAmt(lastAmt) // 납부금액
.setDueDate(dtlInfo.string("DUDT_YMD_MASK")) // 납부기한
.setInDueDate(dtlInfo.string("DUDT_YMD_MASK")) // 납기내기한
.setInDueAmt(lastAmt) // 납기내금액
.setInDueAddedAmt(adamt) // 납기내가산금
.setInDueChenapAmt(0) // 납기내체납처분비
.setOverdueDate(dtlInfo.string("DUDT_AFTR_YMD_MASK")) // 납기후기한
.setOverdueAmt(dudtAftrAmt) // 납기후금액
.setOverdueAddedAmt(dudtAftrAdamt) // 납기후가산금
.setOverdueChenapAmt(0); // 납기후체납처분금
if (!warning) { // 계고장이 아닐 경우
// TAX_NO = 부서코드(7) + 특별회계사업코드(4) + 회계연도(4) + 회계구분(2) + 세목코드(6) + 고지번호(6) + 분납순번(2)
String ocr0 = dtlInfo.string("TAX_NO") + CmmnUtil.getOcrVrfcCode("12357", dtlInfo.string("TAX_NO"), 31);
String ocr1 = CmmnUtil.getOcrband2(ocr0, dtlInfo.string("LEVY_SE_CD"), (int)lastAmt, dtlInfo.string("DUDT_YMD"));
detail.setOcr0(ocr0)
.setOcr1(ocr1)
.setOcr2(CmmnUtil.getOcrband3(ocr1, (int)lastAmt, dtlInfo.string("DUDT_YMD"), (int)dudtAftrAmt));
}
detail.setVhrno(dtlInfo.string("VHRNO")) // 차량번호
.setBirthday(dtlInfo.string("RCPN_BRDT")) // 생년월일
.setPrintDate(null) // 출력일자
.setPrintYear(null) // 출력년도
.setPrintMonth(null) // 출력월
.setPrintDay(null) // 출력일
.setEvidenceNo(null); // 증거번호
int fileCount = files.size();
detail.setAttachmentCount(fileCount); // 첨부파일수
for (int i = 0; i < Math.min(fileCount, 4); ++i) {
FileInfo fileInfo = files.get(i);
String filename = FileInfo.name(fileInfo.getPath());
switch (i) {
case 0: detail.setAttachment1(filename); break; // 첨부파일1
case 1: detail.setAttachment2(filename); break; // 첨부파일2
case 2: detail.setAttachment3(filename); break; // 첨부파일3
case 3: detail.setAttachment4(filename); break; // 첨부파일4
default: break;
}
}
return detail
.setVariableTitle(null) // 가변제목
.setVariableContent1(null) // 가변1
.setVariableContent2(null) // 가변2
.setVariableContent3(null) // 가변3
.setVariableContent4(null) // 가변4
.setVaccountNo2(dtlInfo.string("BANK_NM2") + " " + dtlInfo.string("VRACTNO2")) // 가상계좌번호2
.setVaccountNo3(dtlInfo.string("BANK_NM3") + " " + dtlInfo.string("VRACTNO3")) // 가상계좌번호3
.setVaccountNo4(dtlInfo.string("BANK_NM4") + " " + dtlInfo.string("VRACTNO4")) // 가상계좌번호4
.setVaccountNo5(dtlInfo.string("BANK_NM5") + " " + dtlInfo.string("VRACTNO5")) // 가상계좌번호5
.setVaccountNo6(dtlInfo.string("BANK_NM6") + " " + dtlInfo.string("VRACTNO6")) // 가상계좌번호6
.setVaccountNo7(dtlInfo.string("BANK_NM7") + " " + dtlInfo.string("VRACTNO7")) // 가상계좌번호7
.setVaccountNo8(dtlInfo.string("BANK_NM8") + " " + dtlInfo.string("VRACTNO8")); // 가상계좌번호8
})
.toList();
}
public void updateProductionStatus(String intfID) {
postplusService.updateProductionStatus(null, List.of(intfID));
}
}

@ -215,8 +215,8 @@ public class SndngBean extends AbstractBean {
throw new RuntimeException("계고장 발송 등록 작업에 실패하였습니다.");
// 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
for (int i = 0; i < trgtList.size(); i++) {
String rtnMsg = createWrngSndngDtl(sndng, trgtList.get(i).string("CRDN_ID"));
for (DataObject trgt: trgtList) {
String rtnMsg = createWrngSndngDtl(sndng, trgt.string("CRDN_ID"));
if (!rtnMsg.contains("[S]"))
throw new RuntimeException(rtnMsg.replace("[F]", ""));
}
@ -780,10 +780,10 @@ public class SndngBean extends AbstractBean {
int seqNo = 0;
String postSndngSeCd = sndng.getPostSndngSeCd();
if ("0".equals(postSndngSeCd))
seqNo = epostRcptDtlBean.getEpostSenderDetailSeq(sndngInfo.string("TODAY"));
// 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO)
// 예시: 20170719-40504370000-003-1001
String conKey = sndngInfo.string("TODAY") + "-" + sndngInfo.string("DEPT_CD") + "0000" + "-" + epostSenderRegSeq;
seqNo = epostRcptDtlBean.getEpostSenderDetailSeq(sndngInfo.string("TODAY"));
// 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO)
// 예시: 20170719-40504370000-003-1001
String conKey = sndngInfo.string("TODAY") + "-" + sndngInfo.string("DEPT_CD") + "0000" + "-" + epostSenderRegSeq;
// 5. 전자우편 접수 내역을 등록한다.
EpostRcptReg epostRcptReg = new EpostRcptReg();
@ -794,7 +794,7 @@ public class SndngBean extends AbstractBean {
// 취급구분(DIV_KB) 000=일반 001=등기 201=선택등기
if ("1".equals(postSndngSeCd)) {
if (sggCd.equals("11500")) {
if ("11500".equals(sggCd)) {
epostRcptReg.setDivKb("00" + postSndngSeCd);
epostRcptReg.setSealCd("1" + "2" + sealCd3);
} else {
@ -841,7 +841,7 @@ public class SndngBean extends AbstractBean {
epostRcptReg.setApvlNb(deptSggInfo.string("EGP_APVL_NB")); // 후납계약 승인번호(APVL_NB)
epostRcptReg.setSendDate(sndngInfo.string("NOW").substring(0, 8)); // 신청 일자(SEND_DATE)
epostRcptReg.setSendTime(sndngInfo.string("NOW").substring(8)); // 전송 시간(SEND_TIME)
String relorsectCd = taskProcessor.getRelorsectCd( // 연계기관결제부서코드(RELORSECT_CD)
String relorsectCd = taskProcessor.getRelorsectCd( // 연계기관결제부서코드(RELORSECT_CD)
new DataObject()
.set("taskSeCd", taskSeCd)
.set("sndngDept", sndngInfo.get("DEPT_CD"))
@ -928,7 +928,7 @@ public class SndngBean extends AbstractBean {
// DataObject sndngDtlInfo = sndngDtlMapper.selectSndngDtlInfo(new SndbQuery().setSndngDtlId(sndngTrgt.string("SNDNG_DTL_ID")));
// 가상계좌취득 자료가 아니면 다음 자료로..
if (!sndngDtlInfo.string("SNDNG_DTL_STTS_CD").equals("02")) {
if (!"02".equals(sndngDtlInfo.string("SNDNG_DTL_STTS_CD"))) {
// continue;
throw new RuntimeException("우편통합 발송 작업중 발송상세 상태코드가 가상계좌취득이 아닌 자료를 발견되었습니다.");
}
@ -969,7 +969,7 @@ public class SndngBean extends AbstractBean {
dudtAftrAmt = 0; // 납기후 합계 금액
} else {
dudtAftrAmt = toInt(sndngDtlInfo.get("DUDT_AFTR_AMT")); // 납기후 금액
if (dudtAftrAmt == 0) { // 납기후 금액이 0 이라면..
if (dudtAftrAmt == 0) {
dudtAftrPcptax = 0; // 납기후 본세
dudtAftrAdamt = 0; // 납기후 가산금
dudtAftrAmt = 0; // 납기후 금액
@ -1046,8 +1046,8 @@ public class SndngBean extends AbstractBean {
epostRcptDtl.setRecevOcr1(ocr1);
epostRcptDtl.setRecevOcr2(ocr2);
epostRcptDtl.setRecevOnlinePayNumber(sndngDtlInfo.string("EPAYNO")); // 전자 납부번호
// 가상계좌
// 가상계좌
epostRcptDtl.setVractno(seoul ? sndngDtlInfo.string("VR_ACTNO") : sndngDtlInfo.string("BANK_NM") + " " + sndngDtlInfo.string("VR_ACTNO"));
epostRcptDtl.setVractno2(seoul ? sndngDtlInfo.string("VR_ACTNO2") : sndngDtlInfo.string("BANK_NM2") + " " + sndngDtlInfo.string("VR_ACTNO2"));
epostRcptDtl.setVractno3(seoul ? sndngDtlInfo.string("VR_ACTNO3") : sndngDtlInfo.string("BANK_NM3") + " " + sndngDtlInfo.string("VR_ACTNO3"));

@ -31,6 +31,8 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
/** 발송 상세 정보 Bean */
@Resource(name = "sndngDtlBean")
private SndngDtlBean sndngDtlBean;
@Resource(name = "postplusBean")
private PostplusBean postplusBean;
@Override
public List<DataObject> getWrngTrgtList(SndbQuery req) {
@ -117,8 +119,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
String delivery = TaskProcessor.get().getNoticeDelivery(sndng.getTaskSeCd());
return switch (delivery) {
case "eGreen" -> sndngBean.createEPost(sndng);
case "postplus" -> sndngBean.createEPost(sndng);
// case "postplus" -> postplusBean.requestProduction(sndng);
case "postplus" -> postplusBean.requestProduction(sndng);
default -> "[F] Unknown notice delivery: " + delivery;
};
}

@ -7,13 +7,13 @@
<include refid="utility.paging-prefix"/>
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, (SELECT SGG_NM FROM TB_SGG WHERE SGG_CD = C.SGG_CD) AS SGG_NM
, S.SGG_NM
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM
, CD1.CODE_VAL TASK_SE_NM
, C.CRDN_REG_SE_CD <!-- 단속 등록 구분 코드 -->
, GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) AS CRDN_REG_SE_NM
, CD2.CODE_VAL CRDN_REG_SE_NM
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM
, CD3.CODE_VAL CRDN_INPT_SE_NM
, C.CVLCPT_LINK_TBL_NM <!-- 민원 연계 테이블 명 -->
, C.RTPYR_ID <!-- 납부자 ID -->
, C.CRDN_YMD <!-- 단속 일자 -->
@ -25,7 +25,7 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.VLTN_ID <!-- 위반 ID -->
, (SELECT VLTN_ARTCL FROM TB_VLTN WHERE VLTN_ID = C.VLTN_ID) AS VLTN_ARTCL
, VLTN_ARTCL
, C.GPS_X <!-- GPS X -->
, C.GPS_Y <!-- GPS Y -->
, C.ATCH_FILE_CNT <!-- 첨부 파일 수 -->
@ -48,19 +48,19 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, L.DUDT_YMD
, L.RCVMT_YMD
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM
, CD4.CODE_VAL CRDN_STTS_NM
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, C.ADTN_AMT <!-- 가산 금액 -->
, C.MINUS_AMT <!-- 감경 금액 -->
, C.RCVMT_AMT <!-- 수납 금액 -->
, C.BFR_CRDN_ID <!-- 이전 단속 ID -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, GET_CODE_NM('FIM002', CA.CRDN_SE_CD) AS CRDN_SE_NM
, CD5.CODE_VAL CRDN_SE_NM
, CA.DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CA.TEAM_ID <!-- 조 ID -->
, T.TEAM_NM <!-- 조 명 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM
, CD6.CODE_VAL CRDN_SPAREA_NM
, CA.CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CA.CRDN_END_TM <!-- 단속 종료 시간 -->
, CA.CRDN_SN <!-- 단속 일련번호 -->
@ -70,7 +70,7 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, CA.USE_FUEL_CD <!-- 사용 연료 코드 -->
, CA.FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, CA.PRK_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM034', CA.PRK_PSBLTY_RSLT_CD) FROM DUAL) AS PRK_PSBLTY_RSLT_NM
, CD7.CODE_VAL PRK_PSBLTY_RSLT_NM
, CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTM_YN <!-- 시간외 여부 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
@ -91,7 +91,7 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, CC.CVLCPT_TRSM_DT <!-- 민원 전송 일시 -->
, CC.CVLCPT_TRSM_CD <!-- 민원 전송 코드 -->
, LE.LEVY_EXCL_RSN_CD <!-- 부과 제외 사유 코드 -->
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM
, CD8.CODE_VAL LEVY_EXCL_RSN_NM
, LE.LEVY_EXCL_YMD <!-- 부과 제외 일자 -->
, LE.ETC_CN AS LEVY_EXCL_ETC_CN <!-- 부과 제외 기타 내용 -->
, P.RTPYR_NM <!-- 납부자명 -->
@ -108,44 +108,40 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, C.MDFCN_DT
, C.DLTR
, C.DEL_DT
FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_TEAM T ON (CA.TEAM_ID = T.TEAM_ID)
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.CVLCPT_LINK_YN = 'Y' AND C.CVLCPT_LINK_ID = CC.CVLCPT_LINK_ID)
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN)
WHERE C.DEL_YN = 'N'
<if test="sggCd != null">
AND C.SGG_CD = #{sggCd}
</if>
<if test="crdnId != null">AND C.CRDN_ID = #{crdnId}</if>
<if test="crdnIds != null">
AND C.CRDN_ID IN (<foreach collection="crdnIds" item="CRDN_ID" separator=",">#{CRDN_ID}</foreach>)
</if>
<if test="taskSeCd != null">AND C.TASK_SE_CD = #{taskSeCd}</if>
<if test="vhrno != null">AND C.VHRNO LIKE CONCAT('%', #{vhrno}, '%')</if>
<if test="crdnInptSeCd != null">AND C.CRDN_INPT_SE_CD = #{crdnInptSeCd}</if>
FROM TB_CRDN C
INNER JOIN TB_SGG S ON (C.SGG_CD = S.SGG_CD)
INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_TEAM T ON (CA.TEAM_ID = T.TEAM_ID)
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.CVLCPT_LINK_YN = 'Y' AND C.CVLCPT_LINK_ID = CC.CVLCPT_LINK_ID)
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN)
INNER JOIN TB_CMN_CODE CD1 ON (CD1.GRP_ID = 'FIM054' AND CD1.CODE = C.TASK_SE_CD)
INNER JOIN TB_CMN_CODE CD2 ON (CD2.GRP_ID = 'FIM026' AND CD2.CODE = C.CRDN_REG_SE_CD)
INNER JOIN TB_CMN_CODE CD3 ON (CD3.GRP_ID = 'FIM003' AND CD3.CODE = C.CRDN_INPT_SE_CD)
INNER JOIN TB_CMN_CODE CD4 ON (CD4.GRP_ID = 'FIM010' AND CD4.CODE = C.CRDN_STTS_CD)
LEFT OUTER JOIN TB_CMN_CODE CD5 ON (CD5.GRP_ID = 'FIM002' AND CD5.CODE = CA.CRDN_SE_CD)
LEFT OUTER JOIN TB_CMN_CODE CD6 ON (CD6.GRP_ID = 'FIM007' AND CD6.CODE = CA.CRDN_SPAREA_CD)
LEFT OUTER JOIN TB_CMN_CODE CD7 ON (CD7.GRP_ID = 'FIM034' AND CD7.CODE = CA.PRK_PSBLTY_RSLT_CD)
LEFT OUTER JOIN TB_CMN_CODE CD8 ON (CD8.GRP_ID = 'FIM022' AND CD8.CODE = LE.LEVY_EXCL_RSN_CD)
<where>
<if test="sggCd != null"> AND C.SGG_CD = #{sggCd}</if>
<if test="crdnId != null"> AND C.CRDN_ID = #{crdnId}</if>
<if test="crdnIds != null"> AND C.CRDN_ID IN (<foreach collection="crdnIds" item="CRDN_ID" separator=",">#{CRDN_ID}</foreach>)</if>
<if test="taskSeCd != null"> AND C.TASK_SE_CD = #{taskSeCd}</if>
<if test="vhrno != null"> AND C.VHRNO LIKE CONCAT('%', #{vhrno}, '%')</if>
<if test="crdnInptSeCd != null"> AND C.CRDN_INPT_SE_CD = #{crdnInptSeCd}</if>
<if test="schCrdnYmdFrom != null or schCrdnYmdTo != null">
<if test="schCrdnYmdFrom != null">AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} </if>
<if test="schCrdnYmdTo != null">AND C.CRDN_YMD <![CDATA[ <= ]]> #{schCrdnYmdTo} </if>
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(crdnSttsCd)">
AND C.CRDN_STTS_CD = #{crdnSttsCd}
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(towngYn)">
AND CA.TOWNG_YN = #{towngYn}
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(epayno)">
AND L.EPAYNO = #{epayno}
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(crdnYmd)">
AND C.CRDN_YMD = #{crdnYmd}
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(crdnTm)">
AND C.CRDN_TM = #{crdnTm}
<if test="schCrdnYmdFrom != null">AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} </if>
<if test="schCrdnYmdTo != null">AND C.CRDN_YMD <![CDATA[ <= ]]> #{schCrdnYmdTo} </if>
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(crdnSttsCd)"> AND C.CRDN_STTS_CD = #{crdnSttsCd}</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(towngYn)"> AND CA.TOWNG_YN = #{towngYn}</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(epayno)"> AND L.EPAYNO = #{epayno}</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(crdnYmd)"> AND C.CRDN_YMD = #{crdnYmd}</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(crdnTm)"> AND C.CRDN_TM = #{crdnTm}</if>
<if test="schRegDateFrom != null or schRegDateTo != null">
<if test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null"> AND C.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') </if>
@ -198,6 +194,8 @@ AND C.CRDN_TM = #{crdnTm}
</otherwise>
</choose>
</if>
AND C.DEL_YN = 'N'
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix"/>
</select>

@ -415,9 +415,9 @@
, #{jobCd} <!-- 작업 코드 -->
, #{postPrcsSttsCd} <!-- 우편 처리 상태 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
,<include refid="utility.now" /> <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
,<include refid="utility.now" /> <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
@ -467,7 +467,7 @@
, REG_VAR_DATA5 = #{regVarData5} <!-- 추가 데이터5 -->
, JOB_CD = #{jobCd} <!-- 작업 코드 -->
, POST_PRCS_STTS_CD = #{postPrcsSttsCd} <!-- 우편 처리 상태 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFCN_DT =<include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE CON_KEY = #{conKey}
AND DEL_YN = 'N'

@ -745,7 +745,7 @@
, SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
, CON_KEY = #{conKey} <!-- 외부연계식별키 -->
, RG_NO = #{rgNo} <!-- 등기 번호 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFCN_DT =<include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE SNDNG_DTL_ID = #{sndngDtlId} <!-- 발송 상세 ID -->
AND DEL_YN = 'N'

@ -0,0 +1,730 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.interfaces.postplus.post.dao.PostplusMapper">
<!-- 포스트플러스 우편제작 신청
========== 변경 이력 ==========
2023-09-05 mjkhan 최초 작성
============================ -->
<resultMap id="templateRow" type="cokr.xit.interfaces.postplus.post.PstTemplate"><!-- 제작신청 템플릿 설정 -->
<result property="id" column="TMPLT_ID" /> <!-- 템플릿아이디 -->
<result property="sggCd" column="SGG_CD" /> <!-- 시군구코드 -->
<result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무구분코드 -->
<result property="vltnId" column="VLTN_ID" /> <!-- 법령ID -->
<result property="noticeGb" column="NOTICE_GB" /> <!-- 고지서구분 -->
<result property="code" column="TMPLT_CD" /> <!-- 템플릿코드 -->
<result property="envelop" column="NVLP" /> <!-- 봉투 -->
<result property="envelopWindow" column="NVLP_WND" /> <!-- 봉투창 -->
<result property="bwColor" column="BW_COLOR" /> <!-- 흑백칼라 -->
<result property="faceType" column="FACE_TYPE" /> <!-- 단면양면 -->
<result property="delivery" column="DLVR_TYPE" /> <!-- 배달(일반, 등기, 선택등기) -->
<result property="templatePrint" column="TMPLT_PRINT_YN" /> <!-- 템플릿출력여부 -->
<result property="marginYN" column="MARGIN_YN" /> <!-- 여백생성유무 -->
<result property="addressPageYN" column="ADDR_PAGE_YN" /> <!-- 주소페이지유무 -->
<result property="alignYN" column="ALIGN_YN" /> <!-- 맞춤자제유무 -->
<result property="mailMergeYN" column="MAIL_MERGE_YN" /> <!-- 메일머지유무 -->
<result property="enclosureYN" column="ENCL_YN" /> <!-- 동봉물유무 -->
<result property="returnYN" column="RETURN_YN" /> <!-- 반송여부 -->
<result property="staplerYN" column="STAPLER_YN" /> <!-- 스테이플러유무 -->
<result property="logoFile" column="LOGO_FILE" /> <!-- 로고파일 -->
<result property="createdAt" column="REG_DT" /> <!-- 제작상태 -->
<result property="creadedBy" column="RGTR" /> <!-- 제작상태 확인일시 -->
<result property="useYn" column="USE_YN" /> <!-- 사용여부 -->
</resultMap>
<sql id="selectTmpls">
SELECT TMPLT_ID <!-- 템플릿아이디 -->
, SGG_CD <!-- 시군구코드 -->
, TASK_SE_CD <!-- 업무구분코드 -->
, VLTN_ID <!-- 법령ID -->
, NOTICE_GB <!-- 고지서구분 -->
, TMPLT_CD <!-- 템플릿코드 -->
, NVLP <!-- 봉투 -->
, NVLP_WND <!-- 봉투창 -->
, BW_COLOR <!-- 흑백칼라 -->
, FACE_TYPE <!-- 단면양면 -->
, DLVR_TYPE <!-- 배달(일반, 등기, 선택등기) -->
, TMPLT_PRINT_YN <!-- 템플릿출력여부 -->
, MARGIN_YN <!-- 여백생성유무 -->
, ADDR_PAGE_YN <!-- 주소페이지유무 -->
, ALIGN_YN <!-- 맞춤자제유무 -->
, MAIL_MERGE_YN <!-- 메일머지유무 -->
, ENCL_YN <!-- 동봉물유무 -->
, RETURN_YN <!-- 반송여부 -->
, STAPLER_YN <!-- 스테이플러유무 -->
, LOGO_FILE <!-- 로고파일 -->
, REG_DT <!-- 등록일시 -->
, RGTR <!-- 등록사용자 -->
, USE_YN <!-- 사용여부 -->
FROM TB_PST_TMPLT
<where><if test='templateIDs != null'>AND TMPLT_ID IN (<foreach collection="templateIDs" item="id" separator=",">#{id}</foreach>)</if>
<if test='sggCd != null'>AND SGG_CD = #{sggCd}</if>
<if test='taskSeCd != null'>AND TASK_SE_CD = #{taskSeCd}</if>
<if test='vltnId != null'>AND VLTN_ID = #{vltnId}</if>
<if test='noticeGb != null'>AND NOTICE_GB = #{noticeGb}</if>
AND USE_YN = 'Y'
</where></sql>
<select id="selectTemplateList" parameterType="map" resultType="dataobject">/* 제작신청 템플릿정보 목록 조회(PostplusMapper.selectTemplateList) */
<include refid="utility.paging-prefix"/>
<include refid="selectTmpls" />
<include refid="utility.orderBy"/>
<include refid="utility.paging-suffix"/></select>
<select id="selectTemplates" parameterType="map" resultMap="templateRow">/* 제작신청 템플릿객체 조회(PostplusMapper.selectTemplates) */
<include refid="selectTmpls" /></select>
<insert id="insertTemlate" parameterType="map">/* 제작신청 템플릿 등록(PostplusMapper.insertTemplate) */
INSERT INTO TB_PST_TMPLT (
TMPLT_ID <!-- 템플릿아이디 -->
, SGG_CD <!-- 시군구코드 -->
, TASK_SE_CD <!-- 업무구분코드 -->
, VLTN_ID <!-- 법령ID -->
, NOTICE_GB <!-- 고지서구분 -->
, TMPLT_CD <!-- 템플릿코드 -->
, NVLP <!-- 봉투 -->
, NVLP_WND <!-- 봉투창 -->
, BW_COLOR <!-- 흑백칼라 -->
, FACE_TYPE <!-- 단면양면 -->
, DLVR_TYPE <!-- 배달(일반, 등기, 선택등기) -->
, TMPLT_PRINT_YN <!-- 템플릿출력여부 -->
, MARGIN_YN <!-- 여백생성유무 -->
, ADDR_PAGE_YN <!-- 주소페이지유무 -->
, ALIGN_YN <!-- 맞춤자제유무 -->
, MAIL_MERGE_YN <!-- 메일머지유무 -->
, ENCL_YN <!-- 동봉물유무 -->
, RETURN_YN <!-- 반송여부 -->
, STAPLER_YN <!-- 스테이플러유무 -->
, LOGO_FILE <!-- 로고파일 -->
, REG_DT <!-- 등록일시 -->
, RGTR <!-- 등록사용자 -->
, USE_YN <!-- 사용여부 -->
) VALUES (
#{tmplt.id} <!-- 템플릿아이디 -->
, #{tmplt.sggCd} <!-- 시군구코드 -->
, #{tmplt.taskSeCd} <!-- 업무구분코드 -->
, #{tmplt.vltnId} <!-- 법령ID -->
, #{tmplt.noticeGb} <!-- 고지서구분 -->
, #{tmplt.code} <!-- 템플릿코드 -->
, #{tmplt.envelop} <!-- 봉투 -->
, #{tmplt.envelopWindow} <!-- 봉투창 -->
, #{tmplt.bwColor} <!-- 흑백칼라 -->
, #{tmplt.faceType} <!-- 단면양면 -->
, #{tmplt.delivery} <!-- 배달(일반, 등기, 선택등기) -->
, #{tmplt.templatePrint} <!-- 템플릿출력여부 -->
, #{tmplt.marginYN} <!-- 여백생성유무 -->
, #{tmplt.addressPageYN} <!-- 주소페이지유무 -->
, #{tmplt.alignYN} <!-- 맞춤자제유무 -->
, #{tmplt.mailMergeYN} <!-- 메일머지유무 -->
, #{tmplt.enclosureYN} <!-- 동봉물유무 -->
, #{tmplt.returnYN} <!-- 반송여부 -->
, #{tmplt.staplerYN} <!-- 스테이플러유무 -->
, #{tmplt.logoFile} <!-- 로고파일 -->
,<include refid="utility.now" /><!-- 등록일시 -->
, #{currentUser.id} <!-- 등록사용자 -->
, 'Y' <!-- 사용여부 -->
)</insert>
<update id="updateTemplate" parameterType="map">/* 제작신청 템플릿 수정(PostplusMapper.updateTemplate) */
UPDATE TB_PST_TMPLT
SET SGG_CD = #{sggCd}
, TASK_SE_CD = #{taskSeCd}
, VLTN_ID = #{vltnId}
, NOTICE_GB = {#noticeGb} <!--고지서구분 -->
, TMPLT_CD = #{code}
, NVLP = {#envelop} <!--봉투 -->
, NVLP_WND = {#envelopWindow} <!--봉투창 -->
, BW_COLOR = {#bwColor} <!--흑백칼라 -->
, FACE_TYPE = {#faceType} <!--단면양면 -->
, DLVR_TYPE = {#delivery} <!--배달(일반, 등기, 선택등기) -->
, TMPLT_PRINT_YN = {#templatePrint} <!--템플릿출력여부 -->
, MARGIN_YN = {#marginYN} <!--여백생성유무 -->
, ADDR_PAGE_YN = {#addressPageYN} <!--주소페이지유무 -->
, ALIGN_YN = {#alignYN} <!--맞춤자제유무 -->
, MAIL_MERGE_YN = {#mailMergeYN} <!--메일머지유무 -->
, ENCL_YN = {#enclosureYN} <!--동봉물유무 -->
, RETURN_YN = {#returnYN} <!--반송여부 -->
, STAPLER_YN = {#staplerYN} <!--스테이플러유무 -->
, LOGO_FILE = {#logoFile} <!--로고파일 -->
WHERE TMPLT_ID = {#id}</update>
<update id="removeTemplates" parameterType="list">/* 제작신청 템플릿 제거(PostplusMapper.removeTemplates) */
UPDATE TB_PST_TMPLT
SET USE_YN = 'N'
WHERE TMPLT_CD IN (<foreach collection="list" item="id" separator=",">#{id}</foreach>)
AND USE_YN != 'N'</update>
<resultMap id="masterRow" type="cokr.xit.interfaces.postplus.post.PstMsr$Master"><!-- 제작신청 마스터 -->
<result property="intfID" column="INTF_ID" /> <!-- 연계식별키 -->
<result property="version" column="VERSION" /> <!-- 버전 -->
<result property="testYN" column="TEST_YN" /> <!-- 테스트여부 -->
<result property="service" column="SERVICE" /> <!-- 서비스 -->
<result property="systemCd" column="SYSTEM_CD" /> <!-- 시스템구분 -->
<result property="sndngId" column="SNDNG_ID" /> <!-- 발송ID -->
<result property="noticeGb" column="NOTICE_GB" /> <!-- 고지서구분 -->
<result property="envelop" column="NVLP" /> <!-- 봉투 -->
<result property="envelopWindow" column="NVLP_WND" /> <!-- 봉투창 -->
<result property="bwColor" column="BW_COLOR" /> <!-- 흑백칼라 -->
<result property="faceType" column="FACE_TYPE" /> <!-- 단면양면 -->
<result property="delivery" column="DLVR_TYPE" /> <!-- 배달(일반, 등기, 선택등기) -->
<result property="templateCode" column="TMPLT_CD" /> <!-- 템플릿코드 -->
<result property="templatePrint" column="TMPLT_PRINT_YN" /> <!-- 템플릿출력여부 -->
<result property="recipientCount" column="RCPNT_CNT" /> <!-- 수취인수 -->
<result property="marginYN" column="MARGIN_YN" /> <!-- 여백생성유무 -->
<result property="addressPageYN" column="ADDR_PAGE_YN" /> <!-- 주소페이지유무 -->
<result property="alignYN" column="ALIGN_YN" /> <!-- 맞춤자제유무 -->
<result property="mailMergeYN" column="MAIL_MERGE_YN" /> <!-- 메일머지유무 -->
<result property="enclosureYN" column="ENCL_YN" /> <!-- 동봉물유무 -->
<result property="returnYN" column="RETURN_YN" /> <!-- 반송여부 -->
<result property="staplerYN" column="STAPLER_YN" /> <!-- 스테이플러유무 -->
<result property="logoFile" column="LOGO_FILE" /> <!-- 로고파일 -->
<result property="senderName" column="SENDER_NM" /> <!-- 발송인명 -->
<result property="senderSigungu" column="SENDER_SGG" /> <!-- 발송인시군구명 -->
<result property="senderDeptCd" column="SENDER_DEPT" /> <!-- 발송부서코드 -->
<result property="senderZipcode" column="SENDER_ZIPCODE" /> <!-- 발송인우편번호 -->
<result property="senderAddress" column="SENDER_ADDR" /> <!-- 발송인주소 -->
<result property="senderDetailAddress" column="SENDER_DTL_ADDR" /> <!-- 발송인상세주소 -->
<result property="senderPhoneNo" column="SENDER_TELNO" /> <!-- 발송인전화번호 -->
<result property="senderEmail" column="SENDER_EMAIL" /> <!-- 발송인이메일 -->
<result property="status" column="STATUS" /> <!-- 진행상태 -->
<result property="postProgress" column="POST_PRGRS" /> <!-- 제작상태 -->
<result property="statusCheckDate" column="STAT_CHECK_DT" /> <!-- 제작상태 확인일시 -->
</resultMap>
<select id="selectMasters" parameterType="list" resultMap="masterRow">/* 우편제작 신청마스터 조회(PostplusMapper.selectMasters) */
SELECT INTF_ID <!-- 연계식별키 -->
, VERSION <!-- 버전 -->
, TEST_YN <!-- 테스트여부 -->
, SERVICE <!-- 서비스 -->
, SYSTEM_CD <!-- 시스템구분 -->
, SNDNG_ID <!-- 발송ID -->
, NOTICE_GB <!-- 고지서구분 -->
, NVLP <!-- 봉투 -->
, NVLP_WND <!-- 봉투창 -->
, BW_COLOR <!-- 흑백칼라 -->
, FACE_TYPE <!-- 단면양면 -->
, DLVR_TYPE <!-- 배달(일반, 등기, 선택등기) -->
, TMPLT_CD <!-- 템플릿코드 -->
, TMPLT_PRINT_YN <!-- 템플릿출력여부 -->
, RCPNT_CNT <!-- 수취인수 -->
, MARGIN_YN <!-- 여백생성유무 -->
, ADDR_PAGE_YN <!-- 주소페이지유무 -->
, ALIGN_YN <!-- 맞춤자제유무 -->
, MAIL_MERGE_YN <!-- 메일머지유무 -->
, ENCL_YN <!-- 동봉물유무 -->
, RETURN_YN <!-- 반송여부 -->
, STAPLER_YN <!-- 스테이플러유무 -->
, LOGO_FILE <!-- 로고파일 -->
, SENDER_NM <!-- 발송인명 -->
, SENDER_SGG <!-- 발송인시군구명 -->
, SENDER_DEPT <!-- 발송부서코드 -->
, SENDER_ZIPCODE <!-- 발송인우편번호 -->
, SENDER_ADDR <!-- 발송인주소 -->
, SENDER_DTL_ADDR <!-- 발송인상세주소 -->
, SENDER_TELNO <!-- 발송인전화번호 -->
, SENDER_EMAIL <!-- 발송인이메일 -->
, REG_DT <!-- 등록일시 -->
, RGTR <!-- 등록사용자 -->
, STATUS <!-- 진행상태 -->
, RESULT_CD <!-- 연계 결과 코드 -->
, RESULT_MSG <!-- 연계 결과 메세지 -->
, POST_PRGRS <!-- 제작상태 -->
, STAT_CHECK_DT <!-- 제작상태 확인일시 -->
FROM TB_PST_MASTER
WHERE INTF_ID IN (<foreach collection="list" item="intfID" separator=",">#{intfID}</foreach>)</select>
<select id="selectNewIntfID" parameterType="map" resultType="dataobject">/* 우편제작 신청 연계ID 생성(PostplusMapper.selectNewIntfID) */
SELECT CONCAT(PREFIX, LPAD(NVL(REPLACE(MAX(B.INTF_ID), PREFIX, '') + 1, '1'), 5, '0')) NEW_ID
FROM (SELECT <include refid="utility.today" /> PREFIX FROM DUAL) A
<!-- FROM (SELECT CONCAT(<include refid="utility.today" />, '-', #{currentUser.orgID}, '-', #{currentUser.deptCode}, '-') PREFIX FROM DUAL) A -->
LEFT OUTER JOIN TB_PST_MASTER B ON B.INTF_ID LIKE CONCAT(A.PREFIX, '%')
</select>
<insert id="insertMaster" parameterType="map">/* 우편제작 신청 마스터 등록(PostplusMapper.insertMaster) */
INSERT INTO TB_PST_MASTER (
INTF_ID <!-- 연계식별키 -->
, VERSION <!-- 버전 -->
, TEST_YN <!-- 테스트여부 -->
, SERVICE <!-- 서비스 -->
, SYSTEM_CD <!-- 시스템구분 -->
, SNDNG_ID <!-- 발송ID -->
, NOTICE_GB <!-- 고지서구분 -->
, NVLP <!-- 봉투 -->
, NVLP_WND <!-- 봉투창 -->
, BW_COLOR <!-- 흑백칼라 -->
, FACE_TYPE <!-- 단면양면 -->
, DLVR_TYPE <!-- 배달(일반, 등기, 선택등기) -->
, TMPLT_CD <!-- 템플릿코드 -->
, TMPLT_PRINT_YN <!-- 템플릿출력여부 -->
, RCPNT_CNT <!-- 수취인수 -->
, MARGIN_YN <!-- 여백생성유무 -->
, ADDR_PAGE_YN <!-- 주소페이지유무 -->
, ALIGN_YN <!-- 맞춤자제유무 -->
, MAIL_MERGE_YN <!-- 메일머지유무 -->
, ENCL_YN <!-- 동봉물유무 -->
, RETURN_YN <!-- 반송여부 -->
, STAPLER_YN <!-- 스테이플러유무 -->
, LOGO_FILE <!-- 로고파일 -->
, SENDER_NM <!-- 발송인명 -->
, SENDER_SGG <!-- 발송인시군구명 -->
, SENDER_DEPT <!-- 발송부서코드 -->
, SENDER_ZIPCODE <!-- 발송인우편번호 -->
, SENDER_ADDR <!-- 발송인주소 -->
, SENDER_DTL_ADDR <!-- 발송인상세주소 -->
, SENDER_TELNO <!-- 발송인전화번호 -->
, SENDER_EMAIL <!-- 발송인이메일 -->
, REG_DT <!-- 등록일시 -->
, RGTR <!-- 등록사용자 -->
, STATUS <!-- 진행상태 -->
, RESULT_CD <!-- 연계 결과 코드 -->
, RESULT_MSG <!-- 연계 결과 메세지 -->
, POST_PRGRS <!-- 제작상태 -->
, STAT_CHECK_DT <!-- 제작상태 확인일시 -->
) VALUES (
#{mst.intfID} <!-- 연계식별키 -->
, #{mst.version} <!-- 버전 -->
, #{mst.testYN} <!-- 테스트여부 -->
, #{mst.service} <!-- 서비스 -->
, #{mst.systemCd} <!-- 시스템구분 -->
, #{mst.sndngId} <!-- 발송ID -->
, #{mst.noticeGb} <!-- 고지서구분 -->
, #{mst.envelop} <!-- 봉투 -->
, #{mst.envelopWindow} <!-- 봉투창 -->
, #{mst.bwColor} <!-- 흑백칼라 -->
, #{mst.faceType} <!-- 단면양면 -->
, #{mst.delivery} <!-- 배달(일반, 등기, 선택등기) -->
, #{mst.templateCode} <!-- 템플릿코드 -->
, #{mst.templatePrint} <!-- 템플릿출력여부 -->
, #{mst.recipientCount} <!-- 수취인수 -->
, #{mst.marginYN} <!-- 여백생성유무 -->
, #{mst.addressPageYN} <!-- 주소페이지유무 -->
, #{mst.alignYN} <!-- 맞춤자제유무 -->
, #{mst.mailMergeYN} <!-- 메일머지유무 -->
, #{mst.enclosureYN} <!-- 동봉물유무 -->
, #{mst.returnYN} <!-- 반송여부 -->
, #{mst.staplerYN} <!-- 스테이플러유무 -->
, #{mst.logoFile} <!-- 로고파일 -->
, #{mst.senderName} <!-- 발송인명 -->
, #{mst.senderSigungu} <!-- 발송부서코드 -->
, #{mst.senderDeptCd} <!-- 발송부서코드 -->
, #{mst.senderZipcode} <!-- 발송인우편번호 -->
, #{mst.senderAddress} <!-- 발송인주소 -->
, #{mst.senderDetailAddress} <!-- 발송인상세주소 -->
, #{mst.senderPhoneNo} <!-- 발송인전화번호 -->
, #{mst.senderEmail} <!-- 발송인메일주소 -->
,<include refid="utility.now" />
, #{currentUser.id} <!-- 등록사용자 -->
, #{mst.status} <!-- 진행상태 -->
, #{result.result} <!-- 연계결과 코드 -->
, #{result.remark} <!-- 연계결과 메세지 -->
, #{mst.postProgress} <!-- 제작상태 -->
, #{mst.statusCheckDate} <!-- 제작상태 확인일시 -->
)</insert>
<update id="updateMaster" parameterType="map">/* 우편제작 신청 마스터 수정(PostplusMapper.updateMaster) */
UPDATE TB_PST_MASTER
SET NVLP = #{mst.envelop} <!-- 봉투 -->
, NVLP_WND = #{mst.envelopWindow} <!-- 봉투창 -->
, BW_COLOR = #{mst.bwColor} <!-- 흑백칼라 -->
, FACE_TYPE = #{mst.faceType} <!-- 단면양면 -->
, DLVR_TYPE = #{mst.delivery} <!-- 배달(일반, 등기, 선택등기) -->
, TMPLT_PRINT_YN = #{mst.templatePrint} <!-- 템플릿출력여부 -->
, RCPNT_CNT = #{mst.recipientCount} <!-- 수취인수 -->
, MARGIN_YN = #{mst.marginYN} <!-- 여백생성유무 -->
, ADDR_PAGE_YN = #{mst.addressPageYN} <!-- 주소페이지유무 -->
, ALIGN_YN = #{mst.alignYN} <!-- 맞춤자제유무 -->
, MAIL_MERGE_YN = #{mst.mailMergeYN} <!-- 메일머지유무 -->
, ENCL_YN = #{mst.enclosureYN} <!-- 동봉물유무 -->
, RETURN_YN = #{mst.returnYN} <!-- 반송여부 -->
, STAPLER_YN = #{mst.staplerYN} <!-- 스테이플러유무 -->
, LOGO_FILE = #{mst.logoFile} <!-- 로고파일 -->
, SENDER_NM = #{mst.senderName} <!-- 발송인명 -->
, SENDER_SGG = #{mst.senderSigungu} <!-- 발송부서코드 -->
, SENDER_DEPT = #{mst.senderDeptCd} <!-- 발송부서코드 -->
, SENDER_ZIPCODE = #{mst.senderZipcode} <!-- 발송인우편번호 -->
, SENDER_ADDR = #{mst.senderAddress} <!-- 발송인주소 -->
, SENDER_DTL_ADDR = #{mst.senderDetailAddress} <!-- 발송인상세주소 -->
, SENDER_TELNO = #{mst.senderPhoneNo} <!-- 발송인전화번호 -->
, SENDER_EMAIL = #{mst.senderEmail} <!-- 발송인메일주소 -->
, STATUS = #{mst.status} <!-- 진행상태 -->
, RESULT_CD = #{result.result} <!-- 연계결과 코드 -->
, RESULT_MSG = #{result.remark} <!-- 연계결과 메세지 -->
, POST_PRGRS = #{mst.postProgress} <!-- 제작상태 -->
, STAT_CHECK_DT =<include refid="utility.now" /><!-- 제작상태 확인일시 -->
WHERE INTF_ID = #{mst.intfID}</update>
<delete id="deleteMasters" parameterType="list">/* 우편제작 신청마스터 삭제(PostplusMapper.deleteMasters) */
DELETE FROM TB_PST_MASTER
WHERE INTF_ID IN (<foreach collection="list" item="intfID" separator=",">#{intfID}</foreach>)</delete>
<resultMap id="detailRow" type="cokr.xit.interfaces.postplus.post.PstMsr$Detail"><!-- 제작신청 상세 -->
<result property="intfID" column="INTF_ID" /> <!-- 연계식별키 -->
<result property="seq" column="SEQ" /> <!-- 순번 -->
<result property="sndngDtlId" column="SNDNG_DTL_ID" /> <!-- 발송상세ID -->
<result property="name" column="OWNER_NM" /> <!-- 이름 -->
<result property="zipcode" column="OWNER_ZIPCODE" /> <!-- 우편번호 -->
<result property="address" column="OWNER_ADDR" /> <!-- 주소 -->
<result property="detailAddress" column="OWNER_DTL_ADDR" /> <!-- 상세주소 -->
<result property="phoneNo" column="OWNER_TELNO" /> <!-- 전화번호 -->
<result property="regGb" column="REG_GB" /> <!-- 등기구분 -->
<result property="regNo" column="REG_NO" /> <!-- 등기번호 -->
<result property="regNoDatetime" column="REG_NO_REG_DT" /> <!-- 등기번호 등록일시 -->
<result property="serNo" column="SRL_NO" /> <!-- 일련번호 -->
<result property="deliveryCd" column="DLV_CD" /> <!-- 발송코드 -->
<result property="bar1D" column="BAR1D" /> <!-- 바코드1 -->
<result property="bar2D" column="BAR2D" /> <!-- 바코드2 -->
<result property="noticeNo" column="NTC_NO" /> <!-- 고지번호 -->
<result property="docCd1" column="DOC_CD1" /> <!-- 문서종류1 -->
<result property="docCd2" column="DOC_CD2" /> <!-- 문서종류2 -->
<result property="docCd3" column="DOC_CD3" /> <!-- 문서종류3 -->
<result property="docCd4" column="DOC_CD4" /> <!-- 문서종류4 -->
<result property="docCd5" column="DOC_CD5" /> <!-- 문서종류5 -->
<result property="subject1" column="SUBJ1" /> <!-- 과목명1 -->
<result property="subject2" column="SUBJ2" /> <!-- 과목명2 -->
<result property="subject3" column="SUBJ3" /> <!-- 과목명3 -->
<result property="violationDatetime" column="VLTN_DT" /> <!-- 위반일시 -->
<result property="violationDong" column="VLTN_DONG" /> <!-- 위반동 -->
<result property="violationLocation" column="VLTN_LOC" /> <!-- 위반장소 -->
<result property="legalBasis" column="LEGAL_BASIS" /> <!-- 법조항 -->
<result property="paymentNo1" column="PAYMENT_NO1" /> <!-- 납부번호1 -->
<result property="paymentNo2" column="PAYMENT_NO2" /> <!-- 납부번호2 -->
<result property="ocr0" column="OCR0" /> <!-- OCR0 -->
<result property="ocr1" column="OCR1" /> <!-- OCR1 -->
<result property="ocr2" column="OCR2" /> <!-- OCR2 -->
<result property="epaymentNo" column="EPAYMENT_NO" /> <!-- 전자납부번호 -->
<result property="vaccountNo" column="VACNT_NO" /> <!-- 가상계좌번호 -->
<result property="fineAmt" column="FINE_AMT" /> <!-- 과태료 -->
<result property="paymentAmt" column="PAYMENT_AMT" /> <!-- 납부금액 -->
<result property="dueDate" column="PAYMENT_DUE_DT" /> <!-- 납부기한 -->
<result property="inDueDate" column="PAYMENT_IN_DATE" /> <!-- 납기내기한 -->
<result property="inDueAmt" column="PAYMENT_IN_AMT" /> <!-- 납기내금액 -->
<result property="inDueAddedAmt" column="PAYMENT_IN_ADD_AMT" /> <!-- 납기내가산금 -->
<result property="inDueChenapAmt" column="PAYMENT_IN_DEFAULT_AMT" /> <!-- 납기내체납처분비 -->
<result property="overdueDate" column="PAYMENT_OUT_DATE" /> <!-- 납기후기한 -->
<result property="overdueAmt" column="PAYMENT_OUT_AMT" /> <!-- 납기후금액 -->
<result property="overdueAddedAmt" column="PAYMENT_OUT_ADD_AMT" /> <!-- 납기후가산금 -->
<result property="overdueChenapAmt" column="PAYMENT_OUT_DEFAULT_AMT" /> <!-- 납기후체납처분비 -->
<result property="vhrno" column="VHRNO" /> <!-- 차량번호 -->
<result property="birthday" column="OWNER_BDT" /> <!-- 주민번호 -->
<result property="printDate" column="PRINT_DT" /> <!-- 출력일자 -->
<result property="printYear" column="PRINT_YEAR" /> <!-- 출력년도 -->
<result property="printMonth" column="PRINT_MONTH" /> <!-- 출력월 -->
<result property="printDay" column="PRINT_DAY" /> <!-- 출력일 -->
<result property="evidenceNo" column="EVDNC_NO" /> <!-- 증거번호 -->
<result property="attachmentCount" column="PHOTO_CNT" /> <!-- 사진장수 -->
<result property="attachment1" column="PHOTO_FILENAME1" /> <!-- 사진파일명1 -->
<result property="attachment2" column="PHOTO_FILENAME2" /> <!-- 사진파일명2 -->
<result property="attachment3" column="PHOTO_FILENAME3" /> <!-- 사진파일명3 -->
<result property="attachment4" column="PHOTO_FILENAME4" /> <!-- 사진파일명4 -->
<result property="variableTitle" column="VAR_TITLE" /> <!-- 가변제목 -->
<result property="variableContent1" column="VAR_CONT1" /> <!-- 가변내용1 -->
<result property="variableContent2" column="VAR_CONT2" /> <!-- 가변내용2 -->
<result property="variableContent3" column="VAR_CONT3" /> <!-- 가변내용3 -->
<result property="variableContent4" column="VAR_CONT4" /> <!-- 가변내용4 -->
<result property="vaccountNo2" column="VACNT_NO2" /> <!-- 가상계좌번호2 -->
<result property="vaccountNo3" column="VACNT_NO3" /> <!-- 가상계좌번호3 -->
<result property="vaccountNo4" column="VACNT_NO4" /> <!-- 가상계좌번호4 -->
<result property="vaccountNo5" column="VACNT_NO5" /> <!-- 가상계좌번호5 -->
<result property="vaccountNo6" column="VACNT_NO6" /> <!-- 가상계좌번호6 -->
<result property="vaccountNo7" column="VACNT_NO7" /> <!-- 가상계좌번호7 -->
<result property="vaccountNo8" column="VACNT_NO8" /> <!-- 가상계좌번호8 -->
</resultMap>
<select id="selectDetails" parameterType="list" resultMap="detailRow">/* 우편제작 신청상세 조회(PostplusMapper.selectDetails) */
SELECT INTF_ID <!-- 연계식별키 -->
, SEQ <!-- 순번 -->
, SNDNG_DTL_ID <!-- 발송상세ID -->
, OWNER_NM <!-- 이름 -->
, OWNER_ZIPCODE <!-- 우편번호 -->
, OWNER_ADDR <!-- 주소 -->
, OWNER_DTL_ADDR <!-- 상세주소 -->
, OWNER_TELNO <!-- 전화번호 -->
, REG_GB <!-- 등기구분 -->
, REG_NO <!-- 등기번호 -->
, REG_NO_REG_DT <!-- 등기번호 등록일시 -->
, SRL_NO <!-- 일련번호 -->
, DLV_CD <!-- 발송코드 -->
, BAR1D <!-- 바코드1 -->
, BAR2D <!-- 바코드2 -->
, NTC_NO <!-- 고지번호 -->
, DOC_CD1 <!-- 문서종류1 -->
, DOC_CD2 <!-- 문서종류2 -->
, DOC_CD3 <!-- 문서종류3 -->
, DOC_CD4 <!-- 문서종류4 -->
, DOC_CD5 <!-- 문서종류5 -->
, SUBJ1 <!-- 과목명1 -->
, SUBJ2 <!-- 과목명2 -->
, SUBJ3 <!-- 과목명3 -->
, VLTN_DT <!-- 위반일시 -->
, VLTN_DONG <!-- 위반동 -->
, VLTN_LOC <!-- 위반장소 -->
, LEGAL_BASIS <!-- 법조항 -->
, PAYMENT_NO1 <!-- 납부번호1 -->
, PAYMENT_NO2 <!-- 납부번호2 -->
, OCR0 <!-- OCR0 -->
, OCR1 <!-- OCR1 -->
, OCR2 <!-- OCR2 -->
, EPAYMENT_NO <!-- 전자납부번호 -->
, VACNT_NO <!-- 가상계좌번호 -->
, FINE_AMT <!-- 과태료 -->
, PAYMENT_AMT <!-- 납부금액 -->
, PAYMENT_DUE_DT <!-- 납부기한 -->
, PAYMENT_IN_DATE <!-- 납기내기한 -->
, PAYMENT_IN_AMT <!-- 납기내금액 -->
, PAYMENT_IN_ADD_AMT <!-- 납기내가산금 -->
, PAYMENT_IN_DEFAULT_AMT <!-- 납기내체납처분비 -->
, PAYMENT_OUT_DATE <!-- 납기후기한 -->
, PAYMENT_OUT_AMT <!-- 납기후금액 -->
, PAYMENT_OUT_ADD_AMT <!-- 납기후가산금 -->
, PAYMENT_OUT_DEFAULT_AMT <!-- 납기후체납처분비 -->
, VHRNO <!-- 차량번호 -->
, OWNER_BDT <!-- 주민번호 -->
, PRINT_DT <!-- 출력일자 -->
, PRINT_YEAR <!-- 출력년도 -->
, PRINT_MONTH <!-- 출력월 -->
, PRINT_DAY <!-- 출력일 -->
, EVDNC_NO <!-- 증거번호 -->
, PHOTO_CNT <!-- 사진장수 -->
, PHOTO_FILENAME1 <!-- 사진파일명1 -->
, PHOTO_FILENAME2 <!-- 사진파일명2 -->
, PHOTO_FILENAME3 <!-- 사진파일명3 -->
, PHOTO_FILENAME4 <!-- 사진파일명4 -->
, VAR_TITLE <!-- 가변제목 -->
, VAR_CONT1 <!-- 가변내용1 -->
, VAR_CONT2 <!-- 가변내용2 -->
, VAR_CONT3 <!-- 가변내용3 -->
, VAR_CONT4 <!-- 가변내용4 -->
, VACNT_NO2 <!-- 가상계좌번호2 -->
, VACNT_NO3 <!-- 가상계좌번호3 -->
, VACNT_NO4 <!-- 가상계좌번호4 -->
, VACNT_NO5 <!-- 가상계좌번호5 -->
, VACNT_NO6 <!-- 가상계좌번호6 -->
, VACNT_NO7 <!-- 가상계좌번호7 -->
, VACNT_NO8 <!-- 가상계좌번호8 -->
FROM TB_PST_DETAIL
WHERE INTF_ID IN (<foreach collection="list" item="intfID" separator=",">#{intfID}</foreach>)
ORDER BY INTF_ID, SEQ</select>
<insert id="insertDetail" parameterType="map">/* 우편제작 신청상세 등록(PostplusMapper.insertDetail) */
INSERT INTO TB_PST_DETAIL (
INTF_ID <!-- 연계식별키 -->
, SEQ <!-- 순번 -->
, SNDNG_DTL_ID <!-- 발송상세ID -->
, OWNER_NM <!-- 이름 -->
, OWNER_ZIPCODE <!-- 우편번호 -->
, OWNER_ADDR <!-- 주소 -->
, OWNER_DTL_ADDR <!-- 상세주소 -->
, OWNER_TELNO <!-- 전화번호 -->
, REG_GB <!-- 등기구분 -->
, REG_NO <!-- 등기번호 -->
, REG_NO_REG_DT <!-- 등기번호 등록일시 -->
, SRL_NO <!-- 일련번호 -->
, DLV_CD <!-- 발송코드 -->
, BAR1D <!-- 바코드1 -->
, BAR2D <!-- 바코드2 -->
, NTC_NO <!-- 고지번호 -->
, DOC_CD1 <!-- 문서종류1 -->
, DOC_CD2 <!-- 문서종류2 -->
, DOC_CD3 <!-- 문서종류3 -->
, DOC_CD4 <!-- 문서종류4 -->
, DOC_CD5 <!-- 문서종류5 -->
, SUBJ1 <!-- 과목명1 -->
, SUBJ2 <!-- 과목명2 -->
, SUBJ3 <!-- 과목명3 -->
, VLTN_DT <!-- 위반일시 -->
, VLTN_DONG <!-- 위반동 -->
, VLTN_LOC <!-- 위반장소 -->
, LEGAL_BASIS <!-- 법조항 -->
, PAYMENT_NO1 <!-- 납부번호1 -->
, PAYMENT_NO2 <!-- 납부번호2 -->
, OCR0 <!-- OCR0 -->
, OCR1 <!-- OCR1 -->
, OCR2 <!-- OCR2 -->
, EPAYMENT_NO <!-- 전자납부번호 -->
, VACNT_NO <!-- 가상계좌번호 -->
, FINE_AMT <!-- 과태료 -->
, PAYMENT_AMT <!-- 납부금액 -->
, PAYMENT_DUE_DT <!-- 납부기한 -->
, PAYMENT_IN_DATE <!-- 납기내기한 -->
, PAYMENT_IN_AMT <!-- 납기내금액 -->
, PAYMENT_IN_ADD_AMT <!-- 납기내가산금 -->
, PAYMENT_IN_DEFAULT_AMT <!-- 납기내체납처분비 -->
, PAYMENT_OUT_DATE <!-- 납기후기한 -->
, PAYMENT_OUT_AMT <!-- 납기후금액 -->
, PAYMENT_OUT_ADD_AMT <!-- 납기후가산금 -->
, PAYMENT_OUT_DEFAULT_AMT <!-- 납기후체납처분비 -->
, VHRNO <!-- 차량번호 -->
, OWNER_BDT <!-- 주민번호 -->
, PRINT_DT <!-- 출력일자 -->
, PRINT_YEAR <!-- 출력년도 -->
, PRINT_MONTH <!-- 출력월 -->
, PRINT_DAY <!-- 출력일 -->
, EVDNC_NO <!-- 증거번호 -->
, PHOTO_CNT <!-- 사진장수 -->
, PHOTO_FILENAME1 <!-- 사진파일명1 -->
, PHOTO_FILENAME2 <!-- 사진파일명2 -->
, PHOTO_FILENAME3 <!-- 사진파일명3 -->
, PHOTO_FILENAME4 <!-- 사진파일명4 -->
, VAR_TITLE <!-- 가변제목 -->
, VAR_CONT1 <!-- 가변내용1 -->
, VAR_CONT2 <!-- 가변내용2 -->
, VAR_CONT3 <!-- 가변내용3 -->
, VAR_CONT4 <!-- 가변내용4 -->
, VACNT_NO2 <!-- 가상계좌번호2 -->
, VACNT_NO3 <!-- 가상계좌번호3 -->
, VACNT_NO4 <!-- 가상계좌번호4 -->
, VACNT_NO5 <!-- 가상계좌번호5 -->
, VACNT_NO6 <!-- 가상계좌번호6 -->
, VACNT_NO7 <!-- 가상계좌번호7 -->
, VACNT_NO8 <!-- 가상계좌번호8 -->
) VALUES (
#{intfID} <!-- 연계식별키 -->
, #{seq} <!-- 순번 -->
, #{sndngDtlId} <!-- 발송상세ID -->
, #{name} <!-- 이름 -->
, #{zipcode} <!-- 우편번호 -->
, #{address} <!-- 주소 -->
, #{detailAddress} <!-- 상세주소 -->
, #{phoneNo} <!-- 전화번호 -->
, #{regGb} <!-- 등기구분 -->
, #{regNo} <!-- 등기번호 -->
, #{regNoDatetime} <!-- 등기번호 등록일시 -->
, #{serNo} <!-- 일련번호 -->
, #{deliveryCd} <!-- 발송코드 -->
, #{bar1D} <!-- 바코드1 -->
, #{bar2D} <!-- 바코드2 -->
, #{noticeNo} <!-- 고지번호 -->
, #{docCd1} <!-- 문서종류1 -->
, #{docCd2} <!-- 문서종류2 -->
, #{docCd3} <!-- 문서종류3 -->
, #{docCd4} <!-- 문서종류4 -->
, #{docCd5} <!-- 문서종류5 -->
, #{subject1} <!-- 과목명1 -->
, #{subject2} <!-- 과목명2 -->
, #{subject3} <!-- 과목명3 -->
, #{violationDatetime} <!-- 위반일시 -->
, #{violationDong} <!-- 위반동 -->
, #{violationLocation} <!-- 위반장소 -->
, #{legalBasis} <!-- 법조항 -->
, #{paymentNo1} <!-- 납부번호1 -->
, #{paymentNo2} <!-- 납부번호2 -->
, #{ocr0} <!-- OCR0 -->
, #{ocr1} <!-- OCR1 -->
, #{ocr2} <!-- OCR2 -->
, #{epaymentNo} <!-- 전자납부번호 -->
, #{vaccountNo} <!-- 가상계좌번호 -->
, #{fineAmt} <!-- 과태료 -->
, #{paymentAmt} <!-- 납부금액 -->
, #{dueDate} <!-- 납부기한 -->
, #{inDueDate} <!-- 납기내기한 -->
, #{inDueAmt} <!-- 납기내금액 -->
, #{inDueAddedAmt} <!-- 납기내가산금 -->
, #{inDueChenapAmt} <!-- 납기내체납처분비 -->
, #{overdueDate} <!-- 납기후기한 -->
, #{overdueAmt} <!-- 납기후금액 -->
, #{overdueAddedAmt} <!-- 납기후가산금 -->
, #{overdueChenapAmt} <!-- 납기후체납처분비 -->
, #{vhrno} <!-- 차량번호 -->
, #{birthday} <!-- 주민번호 -->
, #{printDate} <!-- 출력일자 -->
, #{printYear} <!-- 출력년도 -->
, #{printMonth} <!-- 출력월 -->
, #{printDay} <!-- 출력일 -->
, #{evidenceNo} <!-- 증거번호 -->
, #{attachmentCount} <!-- 사진장수 -->
, #{attachment1} <!-- 사진파일명1 -->
, #{attachment2} <!-- 사진파일명2 -->
, #{attachment3} <!-- 사진파일명3 -->
, #{attachment4} <!-- 사진파일명4 -->
, #{variableTitle} <!-- 가변제목 -->
, #{variableContent1} <!-- 가변내용1 -->
, #{variableContent2} <!-- 가변내용2 -->
, #{variableContent3} <!-- 가변내용3 -->
, #{variableContent4} <!-- 가변내용4 -->
, #{vaccountNo2} <!-- 가상계좌번호2 -->
, #{vaccountNo3} <!-- 가상계좌번호3 -->
, #{vaccountNo4} <!-- 가상계좌번호4 -->
, #{vaccountNo5} <!-- 가상계좌번호5 -->
, #{vaccountNo6} <!-- 가상계좌번호6 -->
, #{vaccountNo7} <!-- 가상계좌번호7 -->
, #{vaccountNo8} <!-- 가상계좌번호8 -->
)</insert>
<update id="updateDetail" parameterType="map">/* 우편제작 신청상세 수정(PostplusMapper.updateDetail) */
UPDATE TB_PST_DETAIL
SET OWNER_NM = #{name} <!-- 이름 -->
, OWNER_ZIPCODE = #{zipcode} <!-- 우편번호 -->
, OWNER_ADDR = #{address} <!-- 주소 -->
, OWNER_DTL_ADDR = #{detailAddress} <!-- 상세주소 -->
, OWNER_TELNO = #{phoneNo} <!-- 전화번호 -->
, REG_GB = #{regGb} <!-- 등기구분 -->
, REG_NO = #{regNo} <!-- 등기번호 -->
, REG_NO_REG_DT = #{regNoDatetime} <!-- 등기번호 등록일시 -->
, SRL_NO = #{serNo} <!-- 일련번호 -->
, DLV_CD = #{deliveryCd} <!-- 발송코드 -->
, BAR1D = #{bar1D} <!-- 바코드1 -->
, BAR2D = #{bar2D} <!-- 바코드2 -->
, NTC_NO = #{noticeNo} <!-- 고지번호 -->
, DOC_CD1 = #{docCd1} <!-- 문서종류1 -->
, DOC_CD2 = #{docCd2} <!-- 문서종류2 -->
, DOC_CD3 = #{docCd3} <!-- 문서종류3 -->
, DOC_CD4 = #{docCd4} <!-- 문서종류4 -->
, DOC_CD5 = #{docCd5} <!-- 문서종류5 -->
, SUBJ1 = #{subject1} <!-- 과목명1 -->
, SUBJ2 = #{subject2} <!-- 과목명2 -->
, SUBJ3 = #{subject3} <!-- 과목명3 -->
, VLTN_DT = #{violationDatetime} <!-- 위반일시 -->
, VLTN_DONG = #{violationDong} <!-- 위반동 -->
, VLTN_LOC = #{violationLocation} <!-- 위반장소 -->
, LEGAL_BASIS = #{legalBasis} <!-- 법조항 -->
, PAYMENT_NO1 = #{paymentNo1} <!-- 납부번호1 -->
, PAYMENT_NO2 = #{paymentNo2} <!-- 납부번호2 -->
, OCR0 = #{ocr0} <!-- OCR0 -->
, OCR1 = #{ocr1} <!-- OCR1 -->
, OCR2 = #{ocr2} <!-- OCR2 -->
, EPAYMENT_NO = #{epaymentNo} <!-- 전자납부번호 -->
, VACNT_NO = #{vaccountNo} <!-- 가상계좌번호 -->
, FINE_AMT = #{fineAmt} <!-- 과태료 -->
, PAYMENT_AMT = #{paymentAmt} <!-- 납부금액 -->
, PAYMENT_DUE_DT = #{dueDate} <!-- 납부기한 -->
, PAYMENT_IN_DATE = #{inDueDate} <!-- 납기내기한 -->
, PAYMENT_IN_AMT = #{inDueAmt} <!-- 납기내금액 -->
, PAYMENT_IN_ADD_AMT = #{inDueAddedAmt} <!-- 납기내가산금 -->
, PAYMENT_IN_DEFAULT_AMT = #{inDueChenapAmt} <!-- 납기내체납처분비 -->
, PAYMENT_OUT_DATE = #{overdueDate} <!-- 납기후기한 -->
, PAYMENT_OUT_AMT = #{overdueAmt} <!-- 납기후금액 -->
, PAYMENT_OUT_ADD_AMT = #{overdueAddedAmt} <!-- 납기후가산금 -->
, PAYMENT_OUT_DEFAULT_AMT = #{overdueChenapAmt} <!-- 납기후체납처분비 -->
, VHRNO = #{vhrno} <!-- 차량번호 -->
, OWNER_BDT = #{birthday} <!-- 주민번호 -->
, PRINT_DT = #{printDate} <!-- 출력일자 -->
, PRINT_YEAR = #{printYear} <!-- 출력년도 -->
, PRINT_MONTH = #{printMonth} <!-- 출력월 -->
, PRINT_DAY = #{printDay} <!-- 출력일 -->
, EVDNC_NO = #{evidenceNo} <!-- 증거번호 -->
, PHOTO_CNT = #{attachmentCount} <!-- 사진장수 -->
, PHOTO_FILENAME1 = #{attachment1} <!-- 사진파일명1 -->
, PHOTO_FILENAME2 = #{attachment2} <!-- 사진파일명2 -->
, PHOTO_FILENAME3 = #{attachment3} <!-- 사진파일명3 -->
, PHOTO_FILENAME4 = #{attachment4} <!-- 사진파일명4 -->
, VAR_TITLE = #{variableTitle} <!-- 가변제목 -->
, VAR_CONT1 = #{variableContent1} <!-- 가변내용1 -->
, VAR_CONT2 = #{variableContent2} <!-- 가변내용2 -->
, VAR_CONT3 = #{variableContent3} <!-- 가변내용3 -->
, VAR_CONT4 = #{variableContent4} <!-- 가변내용4 -->
, VACNT_NO2 = #{vaccountNo2} <!-- 가상계좌번호2 -->
, VACNT_NO3 = #{vaccountNo3} <!-- 가상계좌번호3 -->
, VACNT_NO4 = #{vaccountNo4} <!-- 가상계좌번호4 -->
, VACNT_NO5 = #{vaccountNo5} <!-- 가상계좌번호5 -->
, VACNT_NO6 = #{vaccountNo6} <!-- 가상계좌번호6 -->
, VACNT_NO7 = #{vaccountNo7} <!-- 가상계좌번호7 -->
, VACNT_NO8 = #{vaccountNo8} <!-- 가상계좌번호8 -->
WHERE INTF_ID = #{intfID}
AND SEQ = #{seq}</update>
<delete id="deleteDetails" parameterType="list">/* 우편제작 신청상세 삭제(PostplusMapper.deleteDetails) */
DELETE FROM TB_PST_DETAIL
WHERE INTF_ID IN (<foreach collection="list" item="intfID" separator=",">#{intfID}</foreach>)</delete>
</mapper>

@ -0,0 +1,45 @@
package cokr.xit.fims.nxrp.service.bean;
import javax.annotation.Resource;
import org.junit.jupiter.api.Test;
import cokr.xit.foundation.test.TestSupport;
import cokr.xit.interfaces.sntris.prenotice.Bu18WebReturnInfoDTO;
public class SnisBeanTest extends TestSupport {
@Resource(name = "snisBean")
private SnisBean snisBean;
@Test
void update() {
String str = """
{
"buAfk": "1600090184",
"enapbuNo": "1111023025500003463",
"etcColmn1": "",
"etcColmn2": "",
"etcColmn3": "",
"etcColmn4": "",
"etcColmn5": "",
"noticeAk": "1921813",
"returnCode": "0",
"returnMsg": "정상처리 되었습니다.",
"paccountNo": "911004-80-021014",
"qaccountNo": "700-0200-062-2785",
"saccountNo": "562-050-02542555",
"success": true,
"waccountNo": "100-103415-65-254",
"taccountNo": "171-50-030920-5",
"kaccountNo": "4114-92-0268491-3",
"oaccountNo": "9102-00-0622796",
"naccountNo": "790-0748-5755-311",
"caccountNo": "433-00845-92-8-65",
"faccountNo": "085-40-000649719",
"haccountNo": "120-812796-87237",
"iaccountNo": "601-002684-97-915"
}""";
Bu18WebReturnInfoDTO obj = json.parse(str, Bu18WebReturnInfoDTO.class);
System.out.println(json.stringify(obj, true));
}
}
Loading…
Cancel
Save