사전통지 발송 현황 - 우편통합 발송 수정.

main
jjh 12 months ago
parent 222f985f97
commit 89136bc622

@ -194,6 +194,6 @@ public interface EpostRcptRegMapper extends AbstractMapper {
* @param req
* @return
*/
DataObject getEpostPostInfo(String deptCd);
DataObject getDeptSggInfo(String deptCd);
}

@ -161,11 +161,11 @@ public class EpostRcptRegBean extends AbstractComponent {
}
/**
* @param req
* @return
* @param deptCd
* @return
*/
public DataObject getEpostPostInfo(String deptCd) {
return epostRcptRegMapper.getEpostPostInfo(deptCd);
public DataObject getDeptSggInfo(String deptCd) {
return epostRcptRegMapper.getDeptSggInfo(deptCd);
}

@ -118,25 +118,11 @@ public interface SndngMapper extends AbstractMapper {
/** .
/** ID .
* @param req
* @return
*/
List<DataObject> selectSndngTrgts(SndbQuery req);
default DataObject selectSndngTrgtInfo(String crdnId) {
List<DataObject> InfoSndngTrgt = selectSndngTrgts(new SndbQuery().setCrdnId(crdnId)
.setCrdnDelYn("N")
.setOrderBy("C.CRDN_ID DESC"));
return !InfoSndngTrgt.isEmpty() ? InfoSndngTrgt.get(0) : null;
}
/**
* @param req
* @return
*/
DataObject selectSndngDtlLevyInfo(String sndngDtlId);
List<DataObject> selectSndngTrgts(String sndngId);
/** , , .
* @param req
@ -150,6 +136,12 @@ public interface SndngMapper extends AbstractMapper {
return !InfoCrdnPayerTrgt.isEmpty() ? InfoCrdnPayerTrgt.get(0) : null;
}
/**
* @param req
* @return
*/
DataObject selectSndngDtlLevyInfo(String sndngDtlId);
/** 1 .
* @param req
* @return

@ -115,12 +115,6 @@ public interface SndngService {
*/
List<DataObject> getSndngList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngTrgts(SndbQuery req);
/** .
* @param req
* @return

@ -8,12 +8,14 @@ import org.springframework.stereotype.Component;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.base.user.service.bean.UserBean;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.VltnInfoQuery;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.cmmn.service.bean.VltnInfoBean;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.epst.EpostRcptDtl;
import cokr.xit.fims.epst.EpostRcptReg;
import cokr.xit.fims.epst.service.bean.EpostRcptRegBean;
@ -60,6 +62,10 @@ public class SndngBean extends AbstractComponent {
@Resource(name="userBean")
protected UserBean userBean;
/** 위반 정보 정보 Bean */
@Resource(name = "vltnInfoBean")
private VltnInfoBean vltnInfoBean;
/** 부과 대장 정보 Bean */
@Resource(name = "levyBean")
private LevyBean levyBean;
@ -68,9 +74,9 @@ public class SndngBean extends AbstractComponent {
@Resource(name = "epostRcptRegBean")
private EpostRcptRegBean epostRcptRegBean;
/** 위반 정보 정보 Bean */
@Resource(name = "vltnInfoBean")
private VltnInfoBean vltnInfoBean;
/** 파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** .
* @param req
@ -140,14 +146,6 @@ public class SndngBean extends AbstractComponent {
/** .
* @param req
* @return
*/
public List<DataObject> getSndngTrgts(SndbQuery req) {
return sndngMapper.selectSndngTrgts(req);
}
/** .
* @param req
* @return
@ -462,15 +460,15 @@ public class SndngBean extends AbstractComponent {
// 3. 사용자 정보
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 4. 등기우편 관련 자치단체 및 부서 정보
DataObject epostInfo = epostRcptRegBean.getEpostPostInfo(sndngInfo.string("DEPT_CD"));
// 4. 자치단체 및 부서 정보
DataObject deptSggInfo = epostRcptRegBean.getDeptSggInfo(sndngInfo.string("DEPT_CD"));
// 전자우편 접수 등록
EpostRcptReg epostRcptReg = new EpostRcptReg();
epostRcptReg.setConKey(conKey); // 외부연계식별키
epostRcptReg.setRceptId(epostInfo.string("RCEPT_ID")); // 접수우체국국기호
epostRcptReg.setDataCd("00"); // 접수코드
epostRcptReg.setConKey(conKey); // 외부연계식별키
epostRcptReg.setRceptId(deptSggInfo.string("RCEPT_ID")); // 접수우체국국기호
epostRcptReg.setDataCd("00"); // 접수코드
// 취급구분(DIV_KB) 000=일반 001=등기 201=선택등기
if (sndng.getPostSndngSeCd().equals("1")) {
@ -525,29 +523,29 @@ public class SndngBean extends AbstractComponent {
epostRcptReg.setMmYn("Y"); // 메일머지 플래그(MM_YN)
epostRcptReg.setDmCnt(0); // 동봉물 개수(DM_CNT)
epostRcptReg.setSbFg("Y"); // 반송불필요 여부(SB_FG)
epostRcptReg.setApvlNb(epostInfo.string("APVL_NB")); // 후납계약 승인번호(APVL_NB)
epostRcptReg.setApvlNb(deptSggInfo.string("APVL_NB")); // 후납계약 승인번호(APVL_NB)
epostRcptReg.setSendDate(sndngInfo.string("NOW").substring(0, 8)); // 신청 일자(SEND_DATE)
epostRcptReg.setSendTime(sndngInfo.string("NOW").substring(8)); // 전송 시간(SEND_TIME)
if ("420".equals(sndngInfo.string("DEPT_CD").substring(0, 3)) && (sndngInfo.string("TASK_SE_CD").equals("ECA"))) {
epostRcptReg.setRelorsectCd("4200999"); // 연계기관결제부서코드(RELORSECT_CD)
} else {
epostRcptReg.setRelorsectCd(epostInfo.string("DEPT_CD")); // 연계기관결제부서코드(RELORSECT_CD)
epostRcptReg.setRelorsectCd(deptSggInfo.string("DEPT_CD")); // 연계기관결제부서코드(RELORSECT_CD)
}
epostRcptReg.setRecevSenderOrgCode(epostInfo.string("DEPT_CD") + "0000"); // 발송기관코드(RECEV_SENDER_ORG_CODE)
epostRcptReg.setRecevSenderNm(epostInfo.string("INST_NM") + " " + epostInfo.string("DEPT_NM")); // 발송인명(SENDER_NM)
epostRcptReg.setRecevSenderZipcode(epostInfo.string("INST_ZIP")); // 우편번호(SENDER_ZIPCODE)
epostRcptReg.setRecevSenderAddr(epostInfo.string("INST_ADDR")); // 주소(SENDER_ADDR)
epostRcptReg.setRecevSenderDetailaddr(epostInfo.string("INST_DADDR")); // 상세주소(SENDER_DTAILADDR)
epostRcptReg.setRecevSenderDepartTel(epostInfo.string("DEPT_TELNO")); // 부과부서 전화번호(RECEV_SENDER_DEPART_TEL)
epostRcptReg.setRecevSenderDepartNm(epostInfo.string("DEPT_NM")); // 부과부서(RECEV_SENDER_DEPART_NM)
epostRcptReg.setRecevSenderOrgCode(deptSggInfo.string("DEPT_CD") + "0000"); // 발송기관코드(RECEV_SENDER_ORG_CODE)
epostRcptReg.setRecevSenderNm(deptSggInfo.string("INST_NM") + " " + deptSggInfo.string("DEPT_NM")); // 발송인명(SENDER_NM)
epostRcptReg.setRecevSenderZipcode(deptSggInfo.string("INST_ZIP")); // 우편번호(SENDER_ZIPCODE)
epostRcptReg.setRecevSenderAddr(deptSggInfo.string("INST_ADDR")); // 주소(SENDER_ADDR)
epostRcptReg.setRecevSenderDetailaddr(deptSggInfo.string("INST_DADDR")); // 상세주소(SENDER_DTAILADDR)
epostRcptReg.setRecevSenderDepartTel(deptSggInfo.string("DEPT_TELNO")); // 부과부서 전화번호(RECEV_SENDER_DEPART_TEL)
epostRcptReg.setRecevSenderDepartNm(deptSggInfo.string("DEPT_NM")); // 부과부서(RECEV_SENDER_DEPART_NM)
epostRcptReg.setRecevDivCd(sndng.getPostSndngSeCd()); // 등기구분(RECEV_DIV_CD)
epostRcptReg.setRecevPrintDt(sndngInfo.string("TODAY_MASK")); // 출력일자(RECEV_PRINT_DT)
epostRcptReg.setRecevPrintYear(sndngInfo.string("TODAY").substring(0, 4)); // 출력연도(RECEV_PRINT_YEAR)
epostRcptReg.setRecevPrintMonth(sndngInfo.string("TODAY").substring(4, 6)); // 출력월(RECEV_PRINT_MONTH)
epostRcptReg.setRecevPrintDay(sndngInfo.string("TODAY").substring(6, 8)); // 출력일(RECEV_PRINT_DAY)
epostRcptReg.setRecevSenderFax(epostInfo.string("DEPT_FXNO")); // 부과부서 팩스번호(RECEV_SENDER_FAX)
epostRcptReg.setRecevSenderFax(deptSggInfo.string("DEPT_FXNO")); // 부과부서 팩스번호(RECEV_SENDER_FAX)
epostRcptReg.setRecevSerderStaff(userInfo.string("USER_NM")); // 부과부서 담당자(RECEV_SERDER_STAFF)
epostRcptReg.setRecevSenderEmail(userInfo.string("EML_ADRS")); // 부과부서 이메일(RECEV_SENDER_EMAIL)
epostRcptReg.setJobCd(jobCd); // 작업 코드
@ -556,7 +554,7 @@ public class SndngBean extends AbstractComponent {
epostRcptReg.setRceptYmd(sndngInfo.string("TODAY")); // 접수 일자
epostRcptReg.setSndngId(sndngInfo.string("SNDNG_ID")); // 발송 ID
// 전자우편 접수 등록
// 5. 전자우편 접수 등록
retSuccess = epostRcptRegBean.createEpostRcptReg(epostRcptReg);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
@ -618,16 +616,17 @@ public class SndngBean extends AbstractComponent {
} else {
recevSubj2 = "가산금";
}
recevSubj3 = epostInfo.string("SGG_NM");
recevSubj3 = deptSggInfo.string("SGG_NM");
// 6. 전자우편 접수 상세 등록
List<DataObject> sndngTrgts = sndngMapper.selectSndngTrgts(sndng.getSndngId());
// 전자우편 접수 상세 등록
for (int iLoop = 0; iLoop < sndng.getSndngDtlIDs().length; iLoop++) {
for (int iLoop = 0; iLoop < sndngTrgts.size(); iLoop++) {
// 전자우편 접수 상세
EpostRcptDtl epostRcptDtl = new EpostRcptDtl();
// 발송 상세 및 부과 정보 조회
DataObject sndngDtlInfo = sndngMapper.selectSndngDtlLevyInfo(sndng.getSndngDtlIDs()[iLoop]);
// DataObject sndngDtlInfo = sndngMapper.selectSndngDtlInfo(sndng.getSndngDtlIDs()[iLoop]);
DataObject sndngDtlInfo = sndngMapper.selectSndngDtlLevyInfo(sndngTrgts.get(iLoop).string("SNDNG_DTL_ID"));
if (!sndngDtlInfo.string("SNDNG_DTL_STTS_CD").equals("02")) {
if (!retSuccess) {
@ -637,7 +636,7 @@ public class SndngBean extends AbstractComponent {
// 고지번호
String becevBillNumber = "";
if (sndngInfo.string("SNDNG_SE_CD").equals("01") || sndngInfo.string("SNDNG_SE_CD").equals("02")) {
if (sndngDtlInfo.string("SNDNG_SE_CD").equals("01") || sndngDtlInfo.string("SNDNG_SE_CD").equals("02")) {
becevBillNumber = "";
} else {
becevBillNumber = "고지번호:" + sndngDtlInfo.string("FYR") + "-" + sndngDtlInfo.string("LEVY_NO");
@ -661,7 +660,7 @@ public class SndngBean extends AbstractComponent {
int afterSumAmt = 0; // 납기후 합계 금액
// 계도장에는 최초 과태료 금액을 출력한다.
if (sndngInfo.string("SNDNG_SE_CD").equals("11") || sndngInfo.string("SNDNG_SE_CD").equals("12")) {
if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) {
pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액
adamt = 0; // 가산금 = 0
sumAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액
@ -692,7 +691,7 @@ public class SndngBean extends AbstractComponent {
String band5 = "";
String band6 = "";
if (sndngInfo.string("SNDNG_SE_CD").equals("11") || sndngInfo.string("SNDNG_SE_CD").equals("12")) { // 계도장
if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) { // 계도장
band1 = "";
band2 = "";
band3 = "";
@ -774,7 +773,7 @@ public class SndngBean extends AbstractComponent {
// 발송코드
epostRcptDtl.setRecevCode(sndngDtlInfo.string("SNDNG_DTL_ID"));
// 바코드
epostRcptDtl.setRecevBar1d(epostInfo.string("INST_CHIEF_NM"));
epostRcptDtl.setRecevBar1d(deptSggInfo.string("INST_CHIEF_NM"));
// 이차원바코드
epostRcptDtl.setRecevBar2d("");
// 고지번호
@ -897,25 +896,49 @@ public class SndngBean extends AbstractComponent {
epostRcptDtl.setRecevPhotoFilename4("");
// 계도장(10,11), 사전통지서(01,02)에는 사진을 출력한다.
if ("01,02,11,12".contains(sndngInfo.string("SNDNG_SE_CD"))) {
// cutFileName := FieldByName('MM_CODE').AsString;
// qryPutDetail.ParamByName('RECEV_PHOTO_CNT').AsString := FieldByName('MM_IMAGECNT').AsString;
// if FieldByName('MM_IMAGECNT').AsInteger > 0 then
// begin
// qryPutDetail.ParamByName('RECEV_PHOTO_FILE1').AsString := cutFileName + 'A.jpg';
// end;
// if FieldByName('MM_IMAGECNT').AsInteger > 1 then
// begin
// qryPutDetail.ParamByName('RECEV_PHOTO_FILE2').AsString := cutFileName + 'B.jpg';
// end;
// if FieldByName('MM_IMAGECNT').AsInteger > 2 then
// begin
// qryPutDetail.ParamByName('RECEV_PHOTO_FILE3').AsString := cutFileName + 'C.jpg';
// end;
// if FieldByName('MM_IMAGECNT').AsInteger > 3 then
// begin
// qryPutDetail.ParamByName('RECEV_PHOTO_FILE4').AsString := cutFileName + 'D.jpg';
// end;
if ("01,02,11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) {
// 단속 첨부 파일 조회
List<DataObject> fileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(sndngDtlInfo.string("CRDN_ID")));
if (fileList.size() > 0) {
epostRcptDtl.setRecevPhotoCnt(String.valueOf(fileList.size())); // 사진장수
// 사진파일명이 중복이 되면 안되다.. 중복을 피하기 위해 서버에 저장된 파일명으로 지정하였다.
for (int jLoop = 0; jLoop < fileList.size(); jLoop++) {
String strSeparator = "";
String fileName = "";
// 서버 OS에 따라.. separator 지정.
if (deptSggInfo.string("SRVR_OS").contains("Windows")) {
strSeparator = "\\";
} else {
strSeparator = "/";
}
if (jLoop == 0) {
fileName = fileList.get(jLoop).string("FILE_PATH");
fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1);
epostRcptDtl.setRecevPhotoFilename1(fileName); // 사진파일명1
} else if (jLoop == 1) {
fileName = fileList.get(jLoop).string("FILE_PATH");
fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1);
epostRcptDtl.setRecevPhotoFilename2(fileName); // 사진파일명2
} else if (jLoop == 2) {
fileName = fileList.get(jLoop).string("FILE_PATH");
fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1);
epostRcptDtl.setRecevPhotoFilename3(fileName); // 사진파일명3
} else if (jLoop == 3) {
fileName = fileList.get(jLoop).string("FILE_PATH");
fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1);
epostRcptDtl.setRecevPhotoFilename4(fileName); // 사진파일명4
}
}
}
}
// 전자우편 접수 상세

@ -105,11 +105,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getSndngList(req);
}
@Override
public List<DataObject> getSndngTrgts(SndbQuery req) {
return sndngBean.getSndngTrgts(req);
}
@Override
public List<DataObject> getSndngDtls(SndbQuery req) {
return sndngBean.getSndngDtls(req);

@ -676,7 +676,7 @@ UPDATE TB_EPOST_RCPT_DTL SET
AND USE_PSBLTY_PSTN = 'Y'
</select>
<select id="getEpostPostInfo" parameterType="String" resultType="dataobject">/* 전자우편 접수 상세 등기번호 조회(epostRcptRegMapper.getEpostPostInfo) */
<select id="getDeptSggInfo" parameterType="String" resultType="dataobject">/* 시군구 및 부서 정보 조회(epostRcptRegMapper.getDeptSggInfo) */
SELECT DI.DEPT_CD <!-- 부서 코드 -->
, DI.DEPT_NM <!-- 부서 명 -->
, DI.DEPT_TELNO <!-- 부서 전화번호 -->
@ -694,6 +694,7 @@ UPDATE TB_EPOST_RCPT_DTL SET
, DI.ENS_SOURCE_CD <!-- 세외수입 소스코드 -->
, DI.ENS_TARGET_CD <!-- 세외수입 타겟코드 -->
, DI.ENS_URL <!-- 세외수입 URL -->
, DI.SRVR_OS <!-- 서버 OS -->
, SI.SGG_CD <!-- 시군구 코드 -->
, SI.SGG_NM <!-- 시군구 명 -->
, SI.INST_SE_CD <!-- 기관 구분 코드 -->
@ -704,16 +705,17 @@ UPDATE TB_EPOST_RCPT_DTL SET
, SI.INST_ZIP <!-- 기관 우편번호 -->
, SI.UP_INST_CD <!-- 상위 기관 코드 -->
, SI.UP_INST_NM <!-- 상위 기관 명 -->
, CASE WHEN SI.INST_SE_CD = '01' THEN CONCAT(SI.SGG_NM,'장')
WHEN SI.INST_SE_CD = '02' THEN CONCAT(SI.SGG_NM,'청장')
WHEN SI.INST_SE_CD = '03' THEN CONCAT(SI.SGG_NM,'수')
WHEN SI.INST_SE_CD = '04' THEN CONCAT(SI.SGG_NM,'지사')
WHEN SI.INST_SE_CD = '05' THEN CONCAT(SI.SGG_NM,'장')
, CASE WHEN SI.INST_SE_CD = '01' THEN CONCAT(SI.SGG_NM, '장')
WHEN SI.INST_SE_CD = '02' THEN CONCAT(SI.SGG_NM, '청장')
WHEN SI.INST_SE_CD = '03' THEN CONCAT(SI.SGG_NM, '수')
WHEN SI.INST_SE_CD = '04' THEN CONCAT(SI.SGG_NM, '지사')
WHEN SI.INST_SE_CD = '05' THEN CONCAT(SI.SGG_NM, '장')
ELSE SI.SGG_NM
END AS INST_CHIEF_NM <!-- 기관 장 명 -->
END AS INST_CHIEF_NM <!-- 기관 장 명 -->
FROM TB_DEPT_INFO DI
INNER JOIN TB_SGG_INFO SI ON (DI.SGG_CD = SI.SGG_CD AND DI.INST_CD = SI.INST_CD)
WHERE DEPT_CD = #{deptCd}
AND USE_YN = 'Y'
</select>
</mapper>

@ -501,6 +501,14 @@
<include refid="utility.orderBy" />
</select>
<select id="selectSndngTrgts" parameterType="String" resultType="dataobject">/* 발송 대상 ID로 발송상세 객체 가져오기(sndngMapper.selectSndngTrgts) */
SELECT SNDNG_DTL_ID <!-- 발송 상세 ID -->
FROM TB_SNDNG_DTL
WHERE SNDNG_ID = #{sndngId} <!-- 발송 ID -->
AND DEL_YN = 'N'
ORDER BY SNDNG_DTL_ID
</select>
<sql id="selectSndngDtl">
SELECT SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
, SD.SVBTC_ID <!-- 공시송달 ID -->

@ -293,20 +293,15 @@
createSndngLink${pageName} = (obj) => {
let btnTitle = $("#btnCreateSndngLink--${pageName}").attr("title");
// 선택된 자료의 발송 상세 ID 추가
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
let info = {};
info.sndngDtlIDs = selected.join(","); // 발송 상세 IDs
info.sndngId = ${pageName}Control.dataset.getValue("SNDNG_ID"); // 발송 ID
info.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
info.taskSeCd = $("#taskSeCd--${pageName}").val(); // 업무 구분 코드
info.sndngSeCd = "02"; // 발송 구분 코드
info.sndngYmd = obj.sndngYmd; // 발송 일자
info.sndngEndYmd = obj.sndngEndYmd; // 발송 종료 일자
info.postSndngSeCd = obj.postSndngSeCd; // 우편 발송 구분 코드 0 일반, 1 등기
let info = {
sndngId : ${pageName}Control.dataset.getValue("SNDNG_ID") // 발송 ID
, sggCd : $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd : $("#taskSeCd--${pageName}").val() // 업무 구분 코드
, sndngSeCd : "02" // 발송 구분 코드
, sndngYmd : obj.sndngYmd // 발송 일자
, sndngEndYmd : obj.sndngEndYmd // 발송 종료 일자
, postSndngSeCd : obj.postSndngSeCd // 우편 발송 구분 코드 0 일반, 1 등기
};
ajax.post({
url : wctx.url("/" + info.taskSeCd + ${pageName}PrefixUrl + "/080/createSndngLink.do")

Loading…
Cancel
Save