diff --git a/pom.xml b/pom.xml index 186a67f3..e883a3b7 100644 --- a/pom.xml +++ b/pom.xml @@ -176,6 +176,13 @@ 23.04.01-SNAPSHOT + + + cokr.xit.interfaces + xit-postplus + 23.04.01-SNAPSHOT + + org.apache.pdfbox diff --git a/src/main/java/cokr/xit/fims/mngt/dao/VltnMapper.java b/src/main/java/cokr/xit/fims/mngt/dao/VltnMapper.java index 3a2927cd..af4aab58 100644 --- a/src/main/java/cokr/xit/fims/mngt/dao/VltnMapper.java +++ b/src/main/java/cokr/xit/fims/mngt/dao/VltnMapper.java @@ -22,7 +22,6 @@ import cokr.xit.foundation.data.DataObject; */ @Mapper("vltnMapper") public interface VltnMapper extends AbstractMapper { - /**지정한 조건에 따라 위반 정보 목록을 조회하여 반환한다.
* @param req 위반 정보 조회 조건 * @return 위반 정보 목록 diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java index ced48f8e..946fa849 100644 --- a/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java @@ -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")); // 납세자 전화번호 diff --git a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java index 54148a8d..1b8f4857 100644 --- a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java +++ b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java @@ -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 { - /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다.
* @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 sndngs = selectSndngs(req); - return !sndngs.isEmpty() ? sndngs.get(0) : null; } @@ -62,9 +58,11 @@ public interface SndngMapper extends AbstractMapper { List selectWrngTrgts(SndbQuery req); default DataObject selectWrngTrgtInfo(String crdnId) { - List wrngTrgtInfo = selectWrngTrgts(new SndbQuery().setCrdnId(crdnId) - .setDelYn("N")); - + List 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 selectAdvntceTrgts(SndbQuery req); default DataObject selectAdvntceTrgtInfo(String crdnId) { - List advntceTrgtInfo = selectAdvntceTrgts(new SndbQuery().setCrdnId(crdnId) - .setDelYn("N")); - + List 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 selectNhtTrgts(SndbQuery req); default DataObject selectNhtTrgtInfo(String crdnId) { - List nhtTrgtInfo = selectNhtTrgts(new SndbQuery().setCrdnId(crdnId) - .setDelYn("N")); - + List 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); - -} +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/PostplusBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/PostplusBean.java new file mode 100644 index 00000000..b1ae107e --- /dev/null +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/PostplusBean.java @@ -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 sndngDtlList = sndngDtlMapper.selectSndngDtlList( + new SndbQuery() + .setSndngId(sndng.getSndngId()) + .setDelYn("N") + ); + + List crdnIDs = sndngDtlList.stream() + .map(row -> row.string("CRDN_ID")) + .toList(); + String[] crdnIds = crdnIDs.toArray(new String[crdnIDs.size()]); + // 발송상세의 단속목록 조회 + Map crdns = crdnListMapper.selectCrackdownList(new CrdnQuery().setCrdnIds(crdnIds)).stream() + .collect(Collectors.toMap(row -> row.string("CRDN_ID"), row -> row)); + // 단속정보별 첨부파일 조회 + Map> fileInfos = fileBean.getFilesOf(Crdn.INF_TYPE, crdnIds).stream() + .collect(Collectors.groupingBy(FileInfo::getInfoKey)); + + List 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 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 getDetails(List sndngDtlList, Map crdns, Map> fileInfos) { + TaskProcessor taskProcessor = TaskProcessor.get(); + return sndngDtlList.stream() + .map(dtlInfo -> { + String crdnId = dtlInfo.string("CRDN_ID"); + DataObject crdn = crdns.get(crdnId); + List 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)); + } +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 83ee0cfb..1a250b6d 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -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")); diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java index 35427ae8..4435b186 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java @@ -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 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; }; } diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml index fd4ad1bb..5fda96e8 100644 --- a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml @@ -7,13 +7,13 @@ SELECT C.CRDN_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 , C.CRDN_YMD @@ -25,7 +25,7 @@ SELECT C.CRDN_ID , C.CRDN_ROAD_NM , C.CRDN_PLC , C.VLTN_ID - , (SELECT VLTN_ARTCL FROM TB_VLTN WHERE VLTN_ID = C.VLTN_ID) AS VLTN_ARTCL + , VLTN_ARTCL , C.GPS_X , C.GPS_Y , C.ATCH_FILE_CNT @@ -48,19 +48,19 @@ SELECT C.CRDN_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 , 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 , 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 , 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 @@ -91,7 +91,7 @@ SELECT C.CRDN_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 , 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' - - AND C.SGG_CD = #{sggCd} - -AND C.CRDN_ID = #{crdnId} - - AND C.CRDN_ID IN (#{CRDN_ID}) - -AND C.TASK_SE_CD = #{taskSeCd} -AND C.VHRNO LIKE CONCAT('%', #{vhrno}, '%') -AND C.CRDN_INPT_SE_CD = #{crdnInptSeCd} + 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) + + AND C.SGG_CD = #{sggCd} + AND C.CRDN_ID = #{crdnId} + AND C.CRDN_ID IN (#{CRDN_ID}) + AND C.TASK_SE_CD = #{taskSeCd} + AND C.VHRNO LIKE CONCAT('%', #{vhrno}, '%') + AND C.CRDN_INPT_SE_CD = #{crdnInptSeCd} - AND C.CRDN_YMD = ]]> #{schCrdnYmdFrom} - AND C.CRDN_YMD #{schCrdnYmdTo} - - -AND C.CRDN_STTS_CD = #{crdnSttsCd} - - -AND CA.TOWNG_YN = #{towngYn} - - -AND L.EPAYNO = #{epayno} - - -AND C.CRDN_YMD = #{crdnYmd} - - -AND C.CRDN_TM = #{crdnTm} + AND C.CRDN_YMD = ]]> #{schCrdnYmdFrom} + AND C.CRDN_YMD #{schCrdnYmdTo} + AND C.CRDN_STTS_CD = #{crdnSttsCd} + AND CA.TOWNG_YN = #{towngYn} + AND L.EPAYNO = #{epayno} + AND C.CRDN_YMD = #{crdnYmd} + AND C.CRDN_TM = #{crdnTm} AND C.REG_DT =]]> CONCAT(#{schRegDateFrom},'000000') @@ -198,6 +194,8 @@ AND C.CRDN_TM = #{crdnTm} + AND C.DEL_YN = 'N' + diff --git a/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml b/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml index d2e8ab48..c8df9822 100644 --- a/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml +++ b/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml @@ -415,9 +415,9 @@ , #{jobCd} , #{postPrcsSttsCd} , 'N' - , + , , #{createdBy} - , + , , #{modifiedBy} ) @@ -467,7 +467,7 @@ , REG_VAR_DATA5 = #{regVarData5} , JOB_CD = #{jobCd} , POST_PRCS_STTS_CD = #{postPrcsSttsCd} - , MDFCN_DT = + , MDFCN_DT = , MDFR = #{modifiedBy} WHERE CON_KEY = #{conKey} AND DEL_YN = 'N' diff --git a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml index 00208549..bc04cf1c 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -745,7 +745,7 @@ , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} , CON_KEY = #{conKey} , RG_NO = #{rgNo} - , MDFCN_DT = + , MDFCN_DT = , MDFR = #{modifiedBy} WHERE SNDNG_DTL_ID = #{sndngDtlId} AND DEL_YN = 'N' diff --git a/src/main/resources/sql/mapper/interfaces/postplus-mapper.xml b/src/main/resources/sql/mapper/interfaces/postplus-mapper.xml new file mode 100644 index 00000000..5886d852 --- /dev/null +++ b/src/main/resources/sql/mapper/interfaces/postplus-mapper.xml @@ -0,0 +1,730 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SELECT TMPLT_ID + , SGG_CD + , TASK_SE_CD + , VLTN_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 + AND TMPLT_ID IN (#{id}) + AND SGG_CD = #{sggCd} + AND TASK_SE_CD = #{taskSeCd} + AND VLTN_ID = #{vltnId} + AND NOTICE_GB = #{noticeGb} + AND USE_YN = 'Y' + + + + + + +/* 제작신청 템플릿 등록(PostplusMapper.insertTemplate) */ +INSERT INTO TB_PST_TMPLT ( + TMPLT_ID + , SGG_CD + , TASK_SE_CD + , VLTN_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} + , #{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} + , + , #{currentUser.id} + , 'Y' +) + +/* 제작신청 템플릿 수정(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} + +/* 제작신청 템플릿 제거(PostplusMapper.removeTemplates) */ +UPDATE TB_PST_TMPLT + SET USE_YN = 'N' + WHERE TMPLT_CD IN (#{id}) + AND USE_YN != 'N' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/* 우편제작 신청 마스터 등록(PostplusMapper.insertMaster) */ +INSERT INTO TB_PST_MASTER ( + INTF_ID + , VERSION + , TEST_YN + , SERVICE + , SYSTEM_CD + , SNDNG_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} + , #{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} + , + , #{currentUser.id} + , #{mst.status} + , #{result.result} + , #{result.remark} + , #{mst.postProgress} + , #{mst.statusCheckDate} +) + +/* 우편제작 신청 마스터 수정(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 = + WHERE INTF_ID = #{mst.intfID} + +/* 우편제작 신청마스터 삭제(PostplusMapper.deleteMasters) */ +DELETE FROM TB_PST_MASTER + WHERE INTF_ID IN (#{intfID}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/* 우편제작 신청상세 등록(PostplusMapper.insertDetail) */ +INSERT INTO TB_PST_DETAIL ( + INTF_ID + , SEQ + , SNDNG_DTL_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 + , BAR2D + , NTC_NO + , DOC_CD1 + , DOC_CD2 + , DOC_CD3 + , DOC_CD4 + , DOC_CD5 + , SUBJ1 + , SUBJ2 + , SUBJ3 + , VLTN_DT + , VLTN_DONG + , VLTN_LOC + , LEGAL_BASIS + , PAYMENT_NO1 + , PAYMENT_NO2 + , OCR0 + , OCR1 + , 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 + , PHOTO_FILENAME2 + , PHOTO_FILENAME3 + , PHOTO_FILENAME4 + , VAR_TITLE + , VAR_CONT1 + , VAR_CONT2 + , VAR_CONT3 + , VAR_CONT4 + , VACNT_NO2 + , VACNT_NO3 + , VACNT_NO4 + , VACNT_NO5 + , VACNT_NO6 + , VACNT_NO7 + , VACNT_NO8 +) VALUES ( + #{intfID} + , #{seq} + , #{sndngDtlId} + , #{name} + , #{zipcode} + , #{address} + , #{detailAddress} + , #{phoneNo} + , #{regGb} + , #{regNo} + , #{regNoDatetime} + , #{serNo} + , #{deliveryCd} + , #{bar1D} + , #{bar2D} + , #{noticeNo} + , #{docCd1} + , #{docCd2} + , #{docCd3} + , #{docCd4} + , #{docCd5} + , #{subject1} + , #{subject2} + , #{subject3} + , #{violationDatetime} + , #{violationDong} + , #{violationLocation} + , #{legalBasis} + , #{paymentNo1} + , #{paymentNo2} + , #{ocr0} + , #{ocr1} + , #{ocr2} + , #{epaymentNo} + , #{vaccountNo} + , #{fineAmt} + , #{paymentAmt} + , #{dueDate} + , #{inDueDate} + , #{inDueAmt} + , #{inDueAddedAmt} + , #{inDueChenapAmt} + , #{overdueDate} + , #{overdueAmt} + , #{overdueAddedAmt} + , #{overdueChenapAmt} + , #{vhrno} + , #{birthday} + , #{printDate} + , #{printYear} + , #{printMonth} + , #{printDay} + , #{evidenceNo} + , #{attachmentCount} + , #{attachment1} + , #{attachment2} + , #{attachment3} + , #{attachment4} + , #{variableTitle} + , #{variableContent1} + , #{variableContent2} + , #{variableContent3} + , #{variableContent4} + , #{vaccountNo2} + , #{vaccountNo3} + , #{vaccountNo4} + , #{vaccountNo5} + , #{vaccountNo6} + , #{vaccountNo7} + , #{vaccountNo8} +) + +/* 우편제작 신청상세 수정(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} + , BAR2D = #{bar2D} + , NTC_NO = #{noticeNo} + , DOC_CD1 = #{docCd1} + , DOC_CD2 = #{docCd2} + , DOC_CD3 = #{docCd3} + , DOC_CD4 = #{docCd4} + , DOC_CD5 = #{docCd5} + , SUBJ1 = #{subject1} + , SUBJ2 = #{subject2} + , SUBJ3 = #{subject3} + , VLTN_DT = #{violationDatetime} + , VLTN_DONG = #{violationDong} + , VLTN_LOC = #{violationLocation} + , LEGAL_BASIS = #{legalBasis} + , PAYMENT_NO1 = #{paymentNo1} + , PAYMENT_NO2 = #{paymentNo2} + , OCR0 = #{ocr0} + , OCR1 = #{ocr1} + , 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} + , PHOTO_FILENAME2 = #{attachment2} + , PHOTO_FILENAME3 = #{attachment3} + , PHOTO_FILENAME4 = #{attachment4} + , VAR_TITLE = #{variableTitle} + , VAR_CONT1 = #{variableContent1} + , VAR_CONT2 = #{variableContent2} + , VAR_CONT3 = #{variableContent3} + , VAR_CONT4 = #{variableContent4} + , VACNT_NO2 = #{vaccountNo2} + , VACNT_NO3 = #{vaccountNo3} + , VACNT_NO4 = #{vaccountNo4} + , VACNT_NO5 = #{vaccountNo5} + , VACNT_NO6 = #{vaccountNo6} + , VACNT_NO7 = #{vaccountNo7} + , VACNT_NO8 = #{vaccountNo8} + WHERE INTF_ID = #{intfID} + AND SEQ = #{seq} + +/* 우편제작 신청상세 삭제(PostplusMapper.deleteDetails) */ +DELETE FROM TB_PST_DETAIL + WHERE INTF_ID IN (#{intfID}) + + \ No newline at end of file diff --git a/src/test/java/cokr/xit/fims/nxrp/service/bean/SnisBeanTest.java b/src/test/java/cokr/xit/fims/nxrp/service/bean/SnisBeanTest.java new file mode 100644 index 00000000..11f3017a --- /dev/null +++ b/src/test/java/cokr/xit/fims/nxrp/service/bean/SnisBeanTest.java @@ -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)); + } +} \ No newline at end of file