발송반송 - 계고장 발송 수정중.

main
jjh 11 months ago
parent 039b2605db
commit 07e52b70a3

@ -253,7 +253,7 @@ public class LevyBean extends AbstractComponent {
// 조회 건수와 등록 대상 건수 확인
if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) {
rtnMsg = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다.";
rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
return rtnMsg;
}

@ -12,6 +12,7 @@ import cokr.xit.fims.nxrp.dao.NxrpMtchgMapper;
import cokr.xit.fims.nxrp.NxrpMtchg;
import cokr.xit.fims.nxrp.NxrpMtchgQuery;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
import cokr.xit.fims.sndb.dao.SndngMapper;
/** Bean
@ -35,6 +36,10 @@ public class NxrpMtchgBean extends AbstractComponent {
@Resource(name = "sndngMapper")
private SndngMapper sndngMapper;
/** 발송 대장 정보 DAO */
@Resource(name = "sndngDtlMapper")
private SndngDtlMapper sndngDtlMapper;
/** .
* @param req
* @return
@ -124,7 +129,7 @@ public class NxrpMtchgBean extends AbstractComponent {
sndngDtl.setSndngDtlSttsCd("01"); // FIM050(발송 상세 상태 코드) - 01 세외수입부과
sndngDtl.setSndngDtlId(req.getSndngDtlIDs()[iLoop]);
retSuccess = sndngMapper.updateSndngDtlSttsCd(sndngDtl);
retSuccess = sndngDtlMapper.updateSndngDtlSttsCd(sndngDtl);
if (!retSuccess) {
throw new RuntimeException("세외수입 매칭 정보를 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}

@ -61,9 +61,8 @@ public class SndbQuery extends CmmnQuery {
private String rcpnRelNm4;
// ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delYn; // 삭제 여부
private String delRsn; // 삭제 사유
private String crdnDelYn; // 단속 삭제 여부
private String crdnDelYN; // 단속 삭제 여부
public String[] getCrdnIDs() {
return ifEmpty(crdnIDs, () -> null);
@ -427,15 +426,6 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public String getDelYn() {
return ifEmpty(delYn, () -> null);
}
public <T extends SndbQuery> T setDelYn(String delYn) {
this.delYn = delYn;
return self();
}
public String getDelRsn() {
return ifEmpty(delRsn, () -> null);
}
@ -445,12 +435,12 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public String getCrdnDelYn() {
return ifEmpty(crdnDelYn, () -> null);
public String getCrdnDelYN() {
return ifEmpty(crdnDelYN, () -> null);
}
public <T extends SndbQuery> T setCrdnDelYn(String crdnDelYn) {
this.crdnDelYn = crdnDelYn;
public <T extends SndbQuery> T setCrdnDelYN(String crdnDelYN) {
this.crdnDelYN = crdnDelYN;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////

@ -120,12 +120,12 @@ public class Sndng extends AbstractEntity {
/**
*
*/
private String resndYn;
private String resndYN;
/**
*
*/
private String delYn;
private String delYN;
/**
*

@ -340,7 +340,7 @@ public class SndngDtl extends AbstractEntity {
/**
*
*/
private String delYn;
private String delYN;
/**
*

@ -0,0 +1,138 @@
package cokr.xit.fims.sndb.dao;
import java.util.List;
import java.util.Map;
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.SndngDtl;
import cokr.xit.fims.sndb.SndbQuery;
/** DAO
*
* <p> :
*
* <pre>
* ============ ============
* 2023-12-27 mjkhan
* ================================
* </pre>
*/
@Mapper("sndngDtlMapper")
public interface SndngDtlMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectSndngDtlList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> selectSndngDtls(SndbQuery req);
default DataObject selectSndngDtlInfo(String sndngDtlId) {
List<DataObject> sndngDtlInfo = selectSndngDtls(new SndbQuery().setSndngDtlId(sndngDtlId)
.setDelYN("N")
.setOrderBy("SD.SNDNG_DTL_ID DESC"));
return !sndngDtlInfo.isEmpty() ? sndngDtlInfo.get(0) : null;
}
/**
* @param req
* @return
*/
DataObject selectSndngDtlLevyInfo(String sndngDtlId);
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertSndngDtl(Map<String, Object> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(SndngDtl sndngDtl) {
return sndngDtl != null && insertSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtl(Map<String, Object> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlSttsCd(Map<String, Object> params);
default boolean updateSndngDtlSttsCd(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlSttsCd(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlEPost(Map<String, Object> params);
default boolean updateSndngDtlEPost(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlEPost(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int deleteSndngDtl(Map<String, ?> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(SndngDtl sndngDtl) {
return sndngDtl != null && deleteSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
}

@ -43,6 +43,24 @@ public interface SndngMapper extends AbstractMapper {
return !wrngTrgtInfo.isEmpty() ? wrngTrgtInfo.get(0) : null;
}
/** .<br />
* @param req
* @return
*/
List<DataObject> selectAdvntceTrgtList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> selectAdvntceTrgts(SndbQuery req);
default DataObject selectAdvntceTrgtInfo(String crdnId) {
List<DataObject> InfoSndngTrgt = selectAdvntceTrgts(new SndbQuery().setCrdnId(crdnId));
return !InfoSndngTrgt.isEmpty() ? InfoSndngTrgt.get(0) : null;
}
/** .<br />
* @param req
* @return
@ -57,50 +75,95 @@ public interface SndngMapper extends AbstractMapper {
default DataObject selectSndngInfo(String sndngId) {
List<DataObject> InfoSndng = selectSndngs(new SndbQuery().setSndngId(sndngId)
.setDelYn("N")
.setDelYN("N")
.setOrderBy("S.SNDNG_ID DESC"));
return !InfoSndng.isEmpty() ? InfoSndng.get(0) : null;
}
/** .<br />
* @param req
* @return
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
List<DataObject> selectSndngDtlList(SndbQuery req);
int insertSndng(Map<String, Object> params);
/** .
* @param req
* @return
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
List<DataObject> selectSndngDtls(SndbQuery req);
default boolean insert(Sndng sndng) {
return sndng != null && insertSndng(params().set("sndng", sndng)) == 1;
}
default DataObject selectSndngDtlInfo(String sndngDtlId) {
List<DataObject> sndngDtlInfo = selectSndngDtls(new SndbQuery().setSndngDtlId(sndngDtlId)
.setDelYn("N")
.setOrderBy("SD.SNDNG_DTL_ID DESC"));
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndng(Map<String, Object> params);
return !sndngDtlInfo.isEmpty() ? sndngDtlInfo.get(0) : null;
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(Sndng sndng) {
return sndng != null && updateSndng(params().set("sndng", sndng)) == 1;
}
/** .<br />
* @param req
* @return
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
List<DataObject> selectAdvntceTrgtList(SndbQuery req);
int deleteSndng(Map<String, ?> params);
/** .
* @param req
* @return
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
List<DataObject> selectAdvntceTrgts(SndbQuery req);
default boolean delete(Sndng sndng) {
return sndng != null && deleteSndng(params().set("sndng", sndng)) == 1;
}
default DataObject selectAdvntceTrgtInfo(String crdnId) {
List<DataObject> InfoSndngTrgt = selectAdvntceTrgts(new SndbQuery().setCrdnId(crdnId));
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngSttsCd(Map<String, Object> params);
return !InfoSndngTrgt.isEmpty() ? InfoSndngTrgt.get(0) : null;
default boolean updateSndngSttsCd(Sndng sndng) {
return sndng != null && updateSndngSttsCd(params().set("sndng", sndng)) == 1;
}
/** ID .
* @param req
* @return
@ -121,11 +184,6 @@ public interface SndngMapper extends AbstractMapper {
/**
* @param req
* @return
*/
DataObject selectSndngDtlLevyInfo(String sndngDtlId);
@ -189,142 +247,7 @@ public interface SndngMapper extends AbstractMapper {
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertSndng(Map<String, Object> params);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertSndng(Sndng sndng) {
return sndng != null && insertSndng(params().set("sndng", sndng)) == 1;
}
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndng(Map<String, Object> params);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean updateSndng(Sndng sndng) {
return sndng != null && updateSndng(params().set("sndng", sndng)) == 1;
}
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngSttsCd(Map<String, Object> params);
default boolean updateSndngSttsCd(Sndng sndng) {
return sndng != null && updateSndngSttsCd(params().set("sndng", sndng)) == 1;
}
/** .
* @param params
* <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int deleteSndng(Map<String, ?> params);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean deleteSndng(Sndng sndng) {
return sndng != null && deleteSndng(params().set("sndng", sndng)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertSndngDtl(Map<String, Object> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertSndngDtl(SndngDtl sndngDtl) {
return sndngDtl != null && insertSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtl(Map<String, Object> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean updateSndngDtl(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int deleteSndngDtl(Map<String, ?> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean deleteSndngDtl(SndngDtl sndngDtl) {
return sndngDtl != null && deleteSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** ID
* @param svbtcId ID
@ -345,31 +268,6 @@ public interface SndngMapper extends AbstractMapper {
return sndng != null && updateEPostSndng(params().set("sndng", sndng)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateEPostSndngDtl(Map<String, Object> params);
default boolean updateEPostSndngDtl(SndngDtl sndngDtl) {
return sndngDtl != null && updateEPostSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlSttsCd(Map<String, Object> params);
default boolean updateSndngDtlSttsCd(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlSttsCd(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params

@ -0,0 +1,61 @@
package cokr.xit.fims.sndb.service;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.SndbQuery;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2023-12-27 JoJH
* ================================
* </pre>
*/
public interface SndngDtlService {
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtlList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtls(SndbQuery req);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean create(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean update(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean remove(SndngDtl sndngDtl);
}

@ -32,14 +32,14 @@ public interface SndngService {
*/
List<DataObject> getWrngTrgts(SndbQuery req);
/** .
* @param sndng
/** .
* @param req , sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createWrngSndng(Sndng sndng);
String createWrngSndngList(SndbQuery req, Sndng sndng);
/** .
* @param req
@ -86,10 +86,6 @@ public interface SndngService {
*/
List<DataObject> getAdvntceSndngDtls(SndbQuery req);
/** .
* @param sndng
* @return
@ -153,11 +149,6 @@ public interface SndngService {
*/
List<DataObject> getSndngList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtls(SndbQuery req);
/** .
* @param req
@ -183,33 +174,6 @@ public interface SndngService {
*/
List<DataObject> getSvbtcDtls(SndbQuery req);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean createSndngDtl(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean updateSndngDtl(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean removeSndngDtl(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
@ -294,9 +258,4 @@ public interface SndngService {
*/
List<DataObject> getSndngs(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtlList(SndbQuery req);
}

@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
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.CmmnUtil;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.VltnQuery;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
@ -25,6 +26,7 @@ import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
import cokr.xit.fims.sndb.dao.SndngMapper;
import cokr.xit.fims.sndb.dao.SvbtcMapper;
import cokr.xit.foundation.AbstractComponent;
@ -47,6 +49,10 @@ public class SndngBean extends AbstractComponent {
@Resource(name = "sndngMapper")
private SndngMapper sndngMapper;
/** 발송 상세 정보 DAO */
@Resource(name = "sndngDtlMapper")
private SndngDtlMapper sndngDtlMapper;
/** 공시송달 대장 정보 DAO */
@Resource(name = "svbtcMapper")
private SvbtcMapper svbtcMapper;
@ -88,6 +94,19 @@ public class SndngBean extends AbstractComponent {
* @return
*/
public List<DataObject> getWrngTrgtList(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
if (req.getBy() == null) {
req.setOrderBy("REG_DT");
} else {
req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
}
}
return sndngMapper.selectWrngTrgtList(req);
}
@ -96,6 +115,10 @@ public class SndngBean extends AbstractComponent {
* @return
*/
public List<DataObject> getWrngTrgts(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
if (req.getOrderBy() == null) {
req.setOrderBy("CRDN_YMD_TM");
}
@ -103,27 +126,361 @@ public class SndngBean extends AbstractComponent {
return sndngMapper.selectWrngTrgts(req);
}
/** .
* @param req
* @return
/** .
* @param req , sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public List<DataObject> getSndngList(SndbQuery req) {
return sndngMapper.selectSndngList(req);
public String createWrngSndngList(SndbQuery req, Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 첫번째 페이지 확인
req.setPageNum(1);
List<DataObject> wrngTrgtList = sndngMapper.selectWrngTrgtList(req);
// 조회 건수 확인
if (wrngTrgtList == null || wrngTrgtList.size() < 1) {
rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다.";
return rtnMsg;
}
if (sndng.getTnocs() != wrngTrgtList.get(0).number("TOT_CNT").intValue()) {
rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
return rtnMsg;
}
// 총 페이지 건수 확인
int totalPageCnt = wrngTrgtList.get(0).number("TOT_CNT").intValue() / req.getFetchSize() + ((wrngTrgtList.get(0).number("TOT_CNT").intValue() % req.getFetchSize() == 0) ? 0 : 1);
// 페이지 건수 + 1 만큼 반복문 실행..
for (int iLoop = 1; iLoop <= totalPageCnt; iLoop++) {
if (iLoop == 1) {
// 발송(TB_SNDNG) 대장에 등록한다.
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setSndngEndYmd(null); // 발송 종료 일자
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYN() == null) {
sndng.setResndYN("N"); // 재발송 여부
}
if (sndng.getDelYN() == null) {
sndng.setDelYN("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("계도장 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
req.setPageNum(iLoop);
wrngTrgtList = sndngMapper.selectWrngTrgtList(req);
// 조회 건수 확인
if (wrngTrgtList == null || wrngTrgtList.size() < 1) {
throw new RuntimeException("계도장 발송 등록 작업 중 대상 자료가 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 발송 상세(TB_SNDNG_DTL) 대장에 등록한다.
for (int jLoop = 0; jLoop < wrngTrgtList.size(); jLoop++) {
String newCrdnSttsCd = "84"; // 단속 상태 코드 - 84 계고장 출력 완료
Integer ffnlgAmt = wrngTrgtList.get(jLoop).number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
Integer pcptax = wrngTrgtList.get(jLoop).number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
Integer adamt = 0;
Integer sumAmt = 0;
SndngDtl sndngDtl = new SndngDtl();
/** .
* @param req
* @return
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(wrngTrgtList.get(jLoop).string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRtpyrNm(wrngTrgtList.get(jLoop).string("RTPYR_NM")); // 납부자 명
sndngDtl.setRtpyrBrdt(wrngTrgtList.get(jLoop).string("RTPYR_BRDT")); // 납부자 생년월일
sndngDtl.setRtpyrAddr(wrngTrgtList.get(jLoop).string("ADDR")); // 납부자 주소
sndngDtl.setRtpyrDtlAddr(wrngTrgtList.get(jLoop).string("DTL_ADDR")); // 납부자 상세 주소
sndngDtl.setRtpyrZip(wrngTrgtList.get(jLoop).string("ZIP")); // 납부자 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(wrngTrgtList.get(jLoop).string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(wrngTrgtList.get(jLoop).string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(wrngTrgtList.get(jLoop).string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(wrngTrgtList.get(jLoop).string("CRDN_PLC")); // 단속 장소
sndngDtl.setFfnlgAmt(ffnlgAmt); // 과태료 금액
sndngDtl.setPcptax(pcptax); // 본세
sndngDtl.setAdamt(adamt); // 가산금
sndngDtl.setSumAmt(sumAmt); // 합계 금액
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setDelYN("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 코드를 수정한다.
if (!newCrdnSttsCd.equals("")) {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(wrngTrgtList.get(jLoop).string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(wrngTrgtList.get(jLoop).string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(wrngTrgtList.get(jLoop).string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public List<DataObject> getSndngDtls(SndbQuery req) {
return sndngMapper.selectSndngDtls(req);
public String createWrngSndngDtl(Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 단속 상태 코드
int ffnlgAmt = 0; // 과태료 금액
int pcptax = 0; // 본세
int adamt = 0; // 가산금
int sumAmt = 0; // 합계 금액
// 사용자 정보
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
if (sndng.getSndngSeCd().equals("11") || sndng.getSndngSeCd().equals("12")) { // 계고장
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setSndngEndYmd(null); // 발송 종료 일자
newCrdnSttsCd = "84"; // 단속 상태 코드 - 84 계고장 출력 완료
} else if (sndng.getSndngSeCd().equals("01") || sndng.getSndngSeCd().equals("02")) { // 사전통지
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
newCrdnSttsCd = "42"; // 단속 상태 코드 - 42 사전통지 발송
} else {
newCrdnSttsCd = "";
}
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYN() == null) {
sndng.setResndYN("N"); // 재발송 여부
}
if (sndng.getDelYN() == null) {
sndng.setDelYN("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
for (int iLoop = 0; iLoop < sndng.getCrdnIDs().length; iLoop++) {
// 단속, 납부자 정보 조회
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]);
if (crdnPayerInfo == null) {
throw new RuntimeException("발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + "<p>단속ID : " + sndng.getCrdnIDs()[iLoop]); // 예외를 발생시켜서 DB Rollback
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + "<p>차량번호 : " + crdnPayerInfo.string("VHRNO")); // 예외를 발생시켜서 DB Rollback
}
if (sndng.getSndngSeCd().equals("11") || sndng.getSndngSeCd().equals("12")) { // 계고장
ffnlgAmt = crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
pcptax = crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
adamt = 0;
sumAmt = 0;
} else if (sndng.getSndngSeCd().equals("01") || sndng.getSndngSeCd().equals("02")) { // 사전통지
// 부과 ID가 없다면 부과대장 등록
if (crdnPayerInfo.string("LEVY_ID").equals("")) {
Levy levy = new Levy();
levy.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
rtnMsg = levyBean.createRductLevy(levy);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException("발송 상세 등록 작업중 부과대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속, 납부자 정보 재조회 /////////////////////////////////////////
crdnPayerInfo = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]);
} else {
if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) {
// 부과일자, 최초납기일자, 납기일자를 변경한다.
Levy levy = new Levy();
levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액
levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
rtnMsg = levyBean.updateRductLevyYmd(levy);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException("발송 상세 등록 작업중 부과대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
ffnlgAmt = crdnPayerInfo.number("FFNLG_AMT").intValue(); // 과태료 금액
pcptax = crdnPayerInfo.number("PCPTAX").intValue(); // 부과 본세
adamt = 0; // 부과 가산금
sumAmt = crdnPayerInfo.number("SUM_AMT").intValue(); // 부과 합계 금액
} else {
ffnlgAmt = crdnPayerInfo.number("FFNLG_AMT").intValue(); // 과태료 금액
pcptax = crdnPayerInfo.number("PCPTAX").intValue(); // 부과본세 - 수납본세 - 감액본세
adamt = crdnPayerInfo.number("ADAMT").intValue(); // 부과가산금 - 수납가산금 - 감액가산금
sumAmt = crdnPayerInfo.number("SUM_AMT").intValue(); // 합계 금액
}
// 발송 상세(TB_SNDNG_DTL) 대장에 등록한다.
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRtpyrNm(crdnPayerInfo.string("RTPYR_NM")); // 납부자 명
sndngDtl.setRtpyrBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 납부자 생년월일
sndngDtl.setRtpyrAddr(crdnPayerInfo.string("ADDR")); // 납부자 주소
sndngDtl.setRtpyrDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 납부자 상세 주소
sndngDtl.setRtpyrZip(crdnPayerInfo.string("ZIP")); // 납부자 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자
sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자
sndngDtl.setFfnlgAmt(ffnlgAmt); // 과태료 금액
sndngDtl.setPcptax(pcptax); // 본세
sndngDtl.setAdamt(adamt); // 가산금
sndngDtl.setSumAmt(sumAmt); // 합계 금액
sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setDelYN("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 코드를 수정한다.
if (!newCrdnSttsCd.equals("")) {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param req
* @return
*/
public List<DataObject> getAdvntceTrgtList(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
if (req.getBy() == null) {
req.setOrderBy("REG_DT");
} else {
req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
}
}
return sndngMapper.selectAdvntceTrgtList(req);
}
@ -132,6 +489,10 @@ public class SndngBean extends AbstractComponent {
* @return
*/
public List<DataObject> getAdvntceTrgts(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
if (req.getOrderBy() == null) {
req.setOrderBy("CRDN_YMD_TM");
}
@ -139,6 +500,34 @@ public class SndngBean extends AbstractComponent {
return sndngMapper.selectAdvntceTrgts(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSndngList(SndbQuery req) {
return sndngMapper.selectSndngList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSndngs(SndbQuery req) {
return sndngMapper.selectSndngs(req);
}
/** .
* @param req
* @return
@ -156,8 +545,8 @@ public class SndngBean extends AbstractComponent {
*/
public String createSndng(Sndng sndng) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 단속 상태 코드
int ffnlgAmt = 0; // 과태료 금액
@ -190,19 +579,19 @@ public class SndngBean extends AbstractComponent {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYn() == null) {
sndng.setResndYn("N"); // 재발송 여부
if (sndng.getResndYN() == null) {
sndng.setResndYN("N"); // 재발송 여부
}
if (sndng.getDelYn() == null) {
sndng.setDelYn("N"); // 삭제 여부
if (sndng.getDelYN() == null) {
sndng.setDelYN("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송 등록
retSuccess = sndngMapper.insertSndng(sndng);
if (!retSuccess) {
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -232,8 +621,8 @@ public class SndngBean extends AbstractComponent {
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
retMessage = levyBean.createRductLevy(levy);
if (retMessage.contains("[F]")) {
rtnMsg = levyBean.createRductLevy(levy);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException("발송 상세 등록 작업중 부과대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -252,8 +641,8 @@ public class SndngBean extends AbstractComponent {
levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액
levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
retMessage = levyBean.updateRductLevyYmd(levy);
if (retMessage.contains("[F]")) {
rtnMsg = levyBean.updateRductLevyYmd(levy);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException("발송 상세 등록 작업중 부과대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
@ -321,10 +710,10 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setDelYn("N"); // 삭제 여부
sndngDtl.setDelYN("N"); // 삭제 여부
retSuccess = sndngMapper.insertSndngDtl(sndngDtl); // 발송 상세 등록
if (!retSuccess) {
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -339,38 +728,38 @@ public class SndngBean extends AbstractComponent {
crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/** .
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSndng(Sndng sndng) {
return sndngMapper.updateSndng(sndng);
public boolean create(Sndng sndng) {
return sndngMapper.insert(sndng);
}
/** .
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSndngSttsCd(Sndng sndng) {
return sndngMapper.updateSndngSttsCd(sndng);
public boolean updateSndng(Sndng sndng) {
return sndngMapper.update(sndng);
}
/** .
@ -381,9 +770,31 @@ public class SndngBean extends AbstractComponent {
* </ul>
*/
public boolean removeSndng(Sndng sndng) {
return sndngMapper.deleteSndng(sndng);
return sndngMapper.delete(sndng);
}
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSndngSttsCd(Sndng sndng) {
return sndngMapper.updateSndngSttsCd(sndng);
}
/** .
* @param sndng
* @return
@ -393,8 +804,8 @@ public class SndngBean extends AbstractComponent {
*/
public String createEPost(Sndng sndng) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
String ctpvCode = ""; // 시도 코드
String sealCd3 = ""; // 내용문 상세 종류 3번째(마지막) 자리
@ -575,8 +986,8 @@ public class SndngBean extends AbstractComponent {
sealCd3 = "M"; // M:전기차충전구역과태료고지서
}
} else {
retMessage = "[F] 작업중 지정되지 않았습니다.";
return retMessage;
rtnMsg = "[F] 작업중 지정되지 않았습니다.";
return rtnMsg;
}
// 발송 구분
@ -595,8 +1006,8 @@ public class SndngBean extends AbstractComponent {
} else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납분
jobCd = vltnInfo.string("VLTN_CD") + "09";
} else {
retMessage = "[F] 작업중 발송 구분이 지정되지 않았습니다.";
return retMessage;
rtnMsg = "[F] 작업중 발송 구분이 지정되지 않았습니다.";
return rtnMsg;
}
String epostSenderRegSeq = epostRcptRegBean.getEpostSenderRegSeq(sndngInfo.string("TODAY"), sndngInfo.string("DEPT_CD"));
@ -698,8 +1109,8 @@ public class SndngBean extends AbstractComponent {
epostRcptReg.setSndngId(sndngInfo.string("SNDNG_ID")); // 발송 ID
// 6. 전자우편 접수 등록
retSuccess = epostRcptRegBean.create(epostRcptReg);
if (!retSuccess) {
rtnScs = epostRcptRegBean.create(epostRcptReg);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("우편통합 발송 작업중 전자우편 접수 등록에 실패하였습니다.");
}
@ -713,8 +1124,8 @@ public class SndngBean extends AbstractComponent {
mdfcnSndng.setSndngSttsCd("01"); // 발송 상태 코드(FIM049) - 01 발송 대기
mdfcnSndng.setSndngId(sndng.getSndngId()); // 발송 ID
retSuccess = sndngMapper.updateEPostSndng(mdfcnSndng); // 전자우편 발송 내역 수정
if (!retSuccess) {
rtnScs = sndngMapper.updateEPostSndng(mdfcnSndng); // 전자우편 발송 내역 수정
if (!rtnScs) {
throw new RuntimeException("우편통합 발송 작업중 발송 내역 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -783,10 +1194,10 @@ public class SndngBean extends AbstractComponent {
EpostRcptDtl epostRcptDtl = new EpostRcptDtl();
// 발송 상세 및 단속, 납부자, 부과 정보 조회
DataObject sndngDtlInfo = sndngMapper.selectSndngDtlLevyInfo(sndngTrgts.get(iLoop).string("SNDNG_DTL_ID"));
DataObject sndngDtlInfo = sndngDtlMapper.selectSndngDtlLevyInfo(sndngTrgts.get(iLoop).string("SNDNG_DTL_ID"));
if (!sndngDtlInfo.string("SNDNG_DTL_STTS_CD").equals("02")) {
if (!retSuccess) {
if (!rtnScs) {
throw new RuntimeException("우편통합 발송 작업중 발송상세 상태코드가 가상계좌취득이 아닌 자료를 발견되었습니다."); // 예외를 발생시켜서 DB Rollback
}
}
@ -1114,8 +1525,8 @@ public class SndngBean extends AbstractComponent {
}
// 10. 전자우편 접수 상세
retSuccess = epostRcptDtlBean.create(epostRcptDtl);
if (!retSuccess) {
rtnScs = epostRcptDtlBean.create(epostRcptDtl);
if (!rtnScs) {
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -1171,15 +1582,15 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setVrActno11(sndngDtlInfo.string("VR_ACTNO11"));
sndngDtl.setSndngDtlId(sndngDtlInfo.string("SNDNG_DTL_ID"));
retSuccess = sndngMapper.updateEPostSndngDtl(sndngDtl); // 전자우편 발송상세 내역 수정
if (!retSuccess) {
rtnScs = sndngDtlMapper.updateSndngDtlEPost(sndngDtl); // 전자우편 발송상세 내역 수정
if (!rtnScs) {
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/**OCR .
@ -1224,12 +1635,12 @@ public class SndngBean extends AbstractComponent {
*/
public String createSndbk(SndngDtl sndngDtl) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 반송 내역 조회
DataObject sndbkInfo = sndngMapper.selectSndbkInfo(new SndbQuery().setSndngDtlId(sndngDtl.getSndngDtlId())
.setDelYn("N"));
.setDelYN("N"));
// 반송 등록이 가능한지 확인.
@ -1238,15 +1649,15 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setSndngDtlSttsCd("05"); // 발송 상세 상태 코드 FIM050 - 05:반송
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 등록 한다.
retSuccess = sndngMapper.createSndbk(sndngDtl);
if (!retSuccess) {
rtnScs = sndngMapper.createSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 등록에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/** .
@ -1258,19 +1669,19 @@ public class SndngBean extends AbstractComponent {
*/
public String updateSndbk(SndngDtl sndngDtl) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 등록 한다.
retSuccess = sndngMapper.updateSndbk(sndngDtl);
if (!retSuccess) {
rtnScs = sndngMapper.updateSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 수정에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/** .
@ -1282,12 +1693,12 @@ public class SndngBean extends AbstractComponent {
*/
public String deleteSndbk(SndngDtl sndngDtl) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 반송 내역 조회
DataObject sndbkInfo = sndngMapper.selectSndbkInfo(new SndbQuery().setSndngDtlId(sndngDtl.getSndngDtlId())
.setDelYn("N"));
.setDelYN("N"));
// 반송 삭제가 가능한지 확인.
@ -1296,69 +1707,20 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setSndngDtlSttsCd(sndbkInfo.string("BFR_SNDNG_DTL_STTS_CD")); // 발송 상세 상태 코드 <- 전 발송 상세 상태 코드
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 등록 한다.
retSuccess = sndngMapper.deleteSndbk(sndngDtl);
if (!retSuccess) {
rtnScs = sndngMapper.deleteSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 삭제에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/** .
* @param req
* @return
*/
public List<DataObject> getSndngs(SndbQuery req) {
return sndngMapper.selectSndngs(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSndngDtlList(SndbQuery req) {
return sndngMapper.selectSndngDtlList(req);
}
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean createSndngDtl(SndngDtl sndngDtl) {
return sndngMapper.insertSndngDtl(sndngDtl);
}
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSndngDtl(SndngDtl sndngDtl) {
return sndngMapper.updateSndngDtl(sndngDtl);
}
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean removeSndngDtl(SndngDtl sndngDtl) {
return sndngMapper.deleteSndngDtl(sndngDtl);
}
/** .
* @param req
* @return
@ -1400,12 +1762,12 @@ public class SndngBean extends AbstractComponent {
*/
public String createSvbtc(Svbtc svbtc) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
retSuccess = svbtcMapper.insert(svbtc);
if (!retSuccess) {
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다.");
}
@ -1419,15 +1781,15 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setSndngDtlSttsCd("06");
sndngDtl.setSndngDtlId(svbtc.getSndngDtlIDs()[iLoop]);
retSuccess = sndngMapper.updateSndngDtlSvbtc(sndngDtl);
if (!retSuccess) {
rtnScs = sndngMapper.updateSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/** .
@ -1439,19 +1801,19 @@ public class SndngBean extends AbstractComponent {
*/
public String updateSvbtc(Svbtc svbtc) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 수정 한다.
retSuccess = svbtcMapper.update(svbtc);
if (!retSuccess) {
rtnScs = svbtcMapper.update(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 수정에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/** .
@ -1463,18 +1825,18 @@ public class SndngBean extends AbstractComponent {
*/
public String removeSvbtc(Svbtc svbtc) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 대장을 삭제 한다.
retSuccess = svbtcMapper.delete(svbtc);
if (!retSuccess) {
rtnScs = svbtcMapper.delete(svbtc);
if (!rtnScs) {
throw new RuntimeException("공시송달 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
/**ID .
@ -1494,19 +1856,19 @@ public class SndngBean extends AbstractComponent {
*/
public String removeSndngDtlSvbtc(SndngDtl sndngDtl) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 발송 상세(TB_SNDNG_DTL) 대장에 공시송달 정보를 삭제 한다.
retSuccess = sndngMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!retSuccess) {
rtnScs = sndngMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 공시송달 정보 삭제에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
@ -1519,12 +1881,12 @@ public class SndngBean extends AbstractComponent {
*/
public String removeSvbtcSndngDtl(Svbtc svbtc) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 대장을 삭제 한다.
retSuccess = svbtcMapper.delete(svbtc);
if (!retSuccess) {
rtnScs = svbtcMapper.delete(svbtc);
if (!rtnScs) {
throw new RuntimeException("공시송달 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -1534,14 +1896,14 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("05");
retSuccess = sndngMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!retSuccess) {
rtnScs = sndngMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
return rtnMsg;
}
}

@ -0,0 +1,82 @@
package cokr.xit.fims.sndb.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
/** Bean
*
* <p> :
*
* <pre>
* ============ ============
* 2023-12-27 JoJH
* ================================
* </pre>
*/
@Component("sndngDtlBean")
public class SndngDtlBean extends AbstractComponent {
/** 발송 상세 정보 DAO */
@Resource(name = "sndngDtlMapper")
private SndngDtlMapper sndngDtlMapper;
/** .
* @param req
* @return
*/
public List<DataObject> getSndngDtlList(SndbQuery req) {
return sndngDtlMapper.selectSndngDtlList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSndngDtls(SndbQuery req) {
return sndngDtlMapper.selectSndngDtls(req);
}
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(SndngDtl sndngDtl) {
return sndngDtlMapper.insert(sndngDtl);
}
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(SndngDtl sndngDtl) {
return sndngDtlMapper.update(sndngDtl);
}
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(SndngDtl sndngDtl) {
return sndngDtlMapper.delete(sndngDtl);
}
}

@ -0,0 +1,58 @@
package cokr.xit.fims.sndb.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.service.SndngDtlService;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2023-12-27 JoJH
* ================================
* </pre>
*/
@Service("sndngDtlService")
public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtlService {
/** 발송 상세 정보 Bean */
@Resource(name = "sndngDtlBean")
private SndngDtlBean sndngDtlBean;
@Override
public List<DataObject> getSndngDtlList(SndbQuery req) {
return sndngDtlBean.getSndngDtlList(req);
}
@Override
public List<DataObject> getSndngDtls(SndbQuery req) {
return sndngDtlBean.getSndngDtls(req);
}
@Override
public boolean create(SndngDtl sndngDtl) {
return sndngDtlBean.create(sndngDtl);
}
@Override
public boolean update(SndngDtl sndngDtl) {
return sndngDtlBean.update(sndngDtl);
}
@Override
public boolean remove(SndngDtl sndngDtl) {
return sndngDtlBean.remove(sndngDtl);
}
}

@ -31,6 +31,10 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
@Resource(name = "sndngBean")
private SndngBean sndngBean;
/** 발송 상세 정보 Bean */
@Resource(name = "sndngDtlBean")
private SndngDtlBean sndngDtlBean;
@Override
public List<DataObject> getWrngTrgtList(SndbQuery req) {
return sndngBean.getWrngTrgtList(req);
@ -42,8 +46,8 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
}
@Override
public String createWrngSndng(Sndng sndng) {
return sndngBean.createSndng(sndng);
public String createWrngSndngList(SndbQuery req, Sndng sndng) {
return sndngBean.createWrngSndngList(req, sndng);
}
@Override
@ -53,7 +57,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
@Override
public List<DataObject> getWrngSndngDtls(SndbQuery req) {
return sndngBean.getSndngDtls(req);
return sndngDtlBean.getSndngDtls(req);
}
@Override
@ -78,7 +82,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
@Override
public List<DataObject> getAdvntceSndngDtls(SndbQuery req) {
return sndngBean.getSndngDtls(req);
return sndngDtlBean.getSndngDtls(req);
}
@ -86,15 +90,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
@Override
public List<DataObject> getSndbkList(SndbQuery req) {
return sndngBean.getSndbkList(req);
@ -105,11 +100,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getSndngList(req);
}
@Override
public List<DataObject> getSndngDtls(SndbQuery req) {
return sndngBean.getSndngDtls(req);
}
@Override
public String createSndng(Sndng sndng) {
return sndngBean.createSndng(sndng);
@ -169,26 +159,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getSndngs(req);
}
@Override
public List<DataObject> getSndngDtlList(SndbQuery req) {
return sndngBean.getSndngDtlList(req);
}
@Override
public boolean createSndngDtl(SndngDtl sndngDtl) {
return sndngBean.createSndngDtl(sndngDtl);
}
@Override
public boolean updateSndngDtl(SndngDtl sndngDtl) {
return sndngBean.updateSndngDtl(sndngDtl);
}
@Override
public boolean removeSndngDtl(SndngDtl sndngDtl) {
return sndngBean.removeSndngDtl(sndngDtl);
}
@Override
public List<DataObject> getSvbtcList(SndbQuery req) {
return sndngBean.getSvbtcList(req);
@ -282,7 +252,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
} else { // 총건수를 확인하여 공시송달 대장에서 수정
// 공시송달 정보 호출
DataObject svbtcInfo = sndngBean.getSvbtcInfo(new SndbQuery().setSvbtcId(svbtc.getSvbtcId())
.setDelYn("N"));
.setDelYN("N"));
Svbtc mdfSvbtc = new Svbtc();

@ -1,21 +1,32 @@
package cokr.xit.fims.sndb.web;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.file.xls.XLSWriter;
import cokr.xit.base.file.xls.XLSWriter.CellDef;
import cokr.xit.base.file.xls.XLSWriter.Styler;
import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.cmmn.CmmnQuery;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.cmmn.service.TaskService;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.service.SndngDtlService;
import cokr.xit.fims.sndb.service.SndngService;
import cokr.xit.foundation.data.DataObject;
@ -38,10 +49,14 @@ public class Sndb01Controller extends ApplicationController {
warningTargetMain = "/010/main.do" // 계고장 발송 대상 메인 화면
, getWarningTargetList = "/010/list.do" // 계고장 발송 대상 목록 조회
, getWarningTargetInfo = "/020/info.do" // 계고장 발송 대상 조회
, createWarningSndng = "/020/create.do" // 계고장 발송 등록
, createWarningSendingList = "/020/createWrngSndngList.do" // 계고장 발송 등록
, warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면
, getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회
, getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 대장 조회
, advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면
, getAdvanceNoticeTargetList = "/050/list.do" // 사전통지 발송 대상 목록 조회
, getAdvanceNoticeTargetInfo = "/060/info.do" // 사전통지 발송 대상 조회
@ -84,6 +99,10 @@ public class Sndb01Controller extends ApplicationController {
@Resource(name = "sndngService")
private SndngService sndngService;
/**발송 상세 서비스*/
@Resource(name = "sndngDtlService")
private SndngDtlService sndngDtlService;
/** 업무 정보 서비스 */
@Resource(name = "taskService")
private TaskService taskService;
@ -102,7 +121,8 @@ public class Sndb01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
return mav
.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngTrgt") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
@ -126,9 +146,67 @@ public class Sndb01Controller extends ApplicationController {
* }</code></pre>
*/
public ModelAndView getWarningTargetList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getWrngTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngTrgt");
} else {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("계고장 발송 대상 목록.xlsx")
.worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
List<DataObject> list = sndngService.getWrngTrgtList(req.setFetchSize(0));
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
, Map.entry("계고일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_EXCL_YMD"))).style(dateYMD))
, Map.entry("계고사유", "LEVY_EXCL_RSN_NM")
, Map.entry("기타내용", "ETC_CN")
, Map.entry("민원신청번호", xlsx.style("CVLCPT_APLY_NO", center))
, Map.entry("민원접수번호", xlsx.style("CVLCPT_RCPT_NO", center))
, Map.entry("민원접수일자", xlsx.format(o -> xlsx.str2date(o.get("CVLCPT_RCPT_YMD"))).style(dateYMD))
, Map.entry("민원처리담당자", xlsx.style("CVLCPT_PRCS_PIC_NM", center))
, Map.entry("민원처리결과", xlsx.style("CVLCPT_PRCS_NM", center))
, Map.entry("단속일시", xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT))
, Map.entry("차량번호", "VHRNO")
, Map.entry("단속법정동", "CRDN_STDG_NM")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("위반항목", "VLTN_ARTCL")
, Map.entry("최초단속금액", xlsx.style("FFNLG_CRDN_AMT", numeric))
, Map.entry("처리상태", "CRDN_STTS_NM")
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("ZIP", center))
, Map.entry("주소", "ADDR")
, Map.entry("상세주소", "DTL_ADDR")
, Map.entry("단속특별구역", xlsx.style("CRDN_SPAREA_NM", center))
, Map.entry("사용연료", xlsx.style("USE_FUEL_NM", center))
, Map.entry("주차가능여부", xlsx.style("PARKNG_PSBLTY_RSLT_NM", center))
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0)
.value("계고장 발송 대상", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
}
}
/** (sndb/sndb01/020-info) .
@ -145,27 +223,28 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01020-info");
return mav.addObject("pageName", "sndb01020")
.addObject("sggCd", req.getSggCd())
.addObject("taskSeCd", req.getTaskSeCd())
.addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드
.addObject("vltnCd", req.getVltnCd()) // 위반 코드
.addObject("wrngTrgtDtl", json ? wrngTrgts : toJson(wrngTrgts)) // 계고장 발송 대상 정보
return mav
.addObject("pageName", "sndb01020")
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("wrngTrgtQuery", json ? req : toJson(req)) // Query
.addObject("wrngTrgt", json ? wrngTrgts : toJson(wrngTrgts)) // 계고장 발송 대상 정보
;
}
/** .
* @param sndng
/** .
* @param req , sndng
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
public ModelAndView createWarningSndng(Sndng sndng) {
public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
boolean saved = false;
String retMessage = sndngService.createWrngSndng(sndng);
String rtnMsg = "[F] ";
rtnMsg = sndngService.createWrngSndngList(req, sndng);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -173,7 +252,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/030-main) .
@ -316,9 +395,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView createAdvanceNoticeSndng(Sndng sndng) {
boolean saved = false;
String retMessage = sndngService.createAdvntceSndng(sndng);
String rtnMsg = sndngService.createAdvntceSndng(sndng);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -326,7 +405,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/070-main) .
@ -443,7 +522,7 @@ public class Sndb01Controller extends ApplicationController {
* }</pre>
*/
public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) {
List<?> sndngDtls = sndngService.getSndngDtls(req);
List<?> sndngDtls = sndngDtlService.getSndngDtls(req);
boolean json = jsonResponse();
@ -497,9 +576,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView createSending(Sndng sndng) {
boolean saved = false;
String retMessage = sndngService.createSndng(sndng);
String rtnMsg = sndngService.createSndng(sndng);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -507,7 +586,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** .
@ -519,9 +598,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView createSendingLink(Sndng sndng) {
boolean saved = false;
String retMessage = sndngService.createSndngLink(sndng);
String rtnMsg = sndngService.createSndngLink(sndng);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -529,7 +608,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/220-info) .
@ -547,7 +626,7 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView("jsonView");
return mav.addObject("pageName", "sndb01220")
.addObject("retMessage", "이미 등록된 미배달 사유가 있습니다.")
.addObject("rtnMsg", "이미 등록된 미배달 사유가 있습니다.")
;
} else {
boolean json = jsonResponse();
@ -575,9 +654,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView createSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String retMessage = sndngService.createSndbk(sndngDtl);
String rtnMsg = sndngService.createSndbk(sndngDtl);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -585,7 +664,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** .
@ -597,9 +676,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView updateSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String retMessage = sndngService.updateSndbk(sndngDtl);
String rtnMsg = sndngService.updateSndbk(sndngDtl);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -607,7 +686,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** .
@ -619,9 +698,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView deleteSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String retMessage = sndngService.deleteSndbk(sndngDtl);
String rtnMsg = sndngService.deleteSndbk(sndngDtl);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -629,7 +708,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/230-main) .
@ -745,9 +824,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView createServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String retMessage = sndngService.createSvbtc(svbtc);
String rtnMsg = sndngService.createSvbtc(svbtc);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -755,7 +834,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** .
@ -767,9 +846,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView updateServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String retMessage = sndngService.updateSvbtc(svbtc);
String rtnMsg = sndngService.updateSvbtc(svbtc);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -777,7 +856,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** ID .
@ -790,9 +869,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView removeServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String retMessage = sndngService.removeSvbtc(svbtc);
String rtnMsg = sndngService.removeSvbtc(svbtc);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -800,7 +879,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** ID .
@ -813,9 +892,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView removeServiceByPublicNoticeList(SndbQuery req) {
boolean saved = false;
String retMessage = sndngService.removeSvbtcList(req);
String rtnMsg = sndngService.removeSvbtcList(req);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -823,7 +902,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
/** ID .
@ -836,9 +915,9 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView removeServiceByPublicNoticeEach(Svbtc svbtc) {
boolean saved = false;
String retMessage = sndngService.removeSvbtcEach(svbtc);
String rtnMsg = sndngService.removeSvbtcEach(svbtc);
if (retMessage.contains("[S]")) {
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
@ -846,7 +925,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
.addObject("rtnMsg", rtnMsg);
}
}

@ -26,6 +26,7 @@ import cokr.xit.fims.payer.service.PayerService;
import cokr.xit.fims.rcvm.RcvmtQuery;
import cokr.xit.fims.rcvm.service.RcvmtService;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.service.SndngDtlService;
import cokr.xit.fims.sndb.service.SndngService;
import cokr.xit.fims.sprt.CvlcptDscsnQuery;
import cokr.xit.fims.sprt.SprtQuery;
@ -78,6 +79,10 @@ public class Sprt02Controller extends ApplicationController {
@Resource(name = "sndngService")
protected SndngService sndngService;
/** 발송 상세 대장 서비스*/
@Resource(name = "sndngDtlService")
protected SndngDtlService sndngDtlService;
/** 부과 대장 서비스*/
@Resource(name = "levyService")
protected LevyService levyService;
@ -249,7 +254,7 @@ public class Sprt02Controller extends ApplicationController {
exclQuery.setCallPurpose(req.getCallPurpose());
}
exclQuery.setCrdnId(req.getCrdnId());
exclQuery.setDelYN(req.getDelYn());
exclQuery.setDelYN(req.getDelYN());
// 의견 제출(TB_OPNN_SBMSN) 대장 조회
DataObject opnnSbmsn = opnnSbmsnService.getOpnnSbmsnInfo(exclQuery);
@ -289,14 +294,14 @@ public class Sprt02Controller extends ApplicationController {
sndb01Query.setCallPurpose(req.getCallPurpose());
}
sndb01Query.setCrdnId(req.getCrdnId());
sndb01Query.setDelYn(req.getDelYn());
sndb01Query.setDelYN(req.getDelYN());
sndb01Query.setOrderBy("SD.REG_DT, SD.SNDNG_DTL_ID DESC");
List<?> sndngDtl = sndngService.getSndngDtls(sndb01Query);
List<?> sndngDtl = sndngDtlService.getSndngDtls(sndb01Query);
// 공시송달 정보
sndb01Query.setCrdnId(req.getCrdnId());
sndb01Query.setDelYn(req.getDelYn());
sndb01Query.setDelYN(req.getDelYN());
sndb01Query.setOrderBy("SV.REG_DT DESC, SV.SVBTC_ID DESC");
List<?> svbtc = sndngService.getSvbtcDtls(sndb01Query);
@ -339,7 +344,7 @@ public class Sprt02Controller extends ApplicationController {
levyQuery.setCallPurpose(req.getCallPurpose());
}
levyQuery.setCrdnId(req.getCrdnId());
levyQuery.setDelYN(req.getDelYn());
levyQuery.setDelYN(req.getDelYN());
levyQuery.setOrderBy("RDUCT_ID DESC"); // 정렬
DataObject rduct = rductService.getRductInfo(levyQuery);
@ -353,7 +358,7 @@ public class Sprt02Controller extends ApplicationController {
exclQuery.setCallPurpose(req.getCallPurpose());
}
exclQuery.setCrdnId(req.getCrdnId());
exclQuery.setDelYN(req.getDelYn());
exclQuery.setDelYN(req.getDelYN());
exclQuery.setOrderBy("LEVY_EXCL_ID DESC"); // 정렬
DataObject levyExcl = levyExclService.getLevyExclInfo(exclQuery);
@ -414,7 +419,7 @@ public class Sprt02Controller extends ApplicationController {
levyQuery.setCallPurpose(req.getCallPurpose());
}
levyQuery.setCrdnId(req.getCrdnId());
levyQuery.setDelYN(req.getDelYn());
levyQuery.setDelYN(req.getDelYN());
levyQuery.setOrderBy("LEVY_ID DESC"); // 정렬
DataObject levy = levyService.getLevyInfo(levyQuery);
@ -448,7 +453,7 @@ public class Sprt02Controller extends ApplicationController {
//
List<DataObject> rcvmt = rcvmtService.getRcvmts(new RcvmtQuery().setCallPurpose(req.getCallPurpose())
.setCrdnId(req.getCrdnId())
.setDelYN(req.getDelYn())
.setDelYN(req.getDelYN())
.setOrderBy("R.RCVMT_ID DESC"));
boolean json = jsonResponse();

@ -1,9 +1,12 @@
package cokr.xit.fims.task.web;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
@ -542,9 +545,9 @@ public class DpvController {
}
@Override
@RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSndng)
public ModelAndView createWarningSndng(Sndng sndng) {
return super.createWarningSndng(sndng);
@RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSendingList)
public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
return super.createWarningSendingList(req, sndng);
}
@Override

File diff suppressed because it is too large Load Diff

@ -0,0 +1,613 @@
<?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.fims.sndb.dao.SndngDtlMapper">
<!-- 발송 상세 정보 매퍼
========== 변경 이력 ==========
2023-08-25 JoJH 최초 작성
============================ -->
<resultMap id="sndngDtlRow" type="cokr.xit.fims.sndb.SndngDtl"> <!-- 발송 상세 -->
<result property="sndngDtlId" column="SNDNG_DTL_ID" /> <!-- 발송 상세 ID -->
<result property="sndngId" column="SNDNG_ID" /> <!-- 발송 ID -->
<result property="svbtcId" column="SVBTC_ID" /> <!-- 공시송달 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="mtchgId" column="MTCHG_ID" /> <!-- 매칭 ID -->
<result property="sndngSeCd" column="SNDNG_SE_CD" /> <!-- 발송 구분 코드 -->
<result property="sndngYmd" column="SNDNG_YMD" /> <!-- 발송 일자 -->
<result property="sndngEndYmd" column="SNDNG_END_YMD" /> <!-- 발송 종료 일자 -->
<result property="vhrno" column="VHRNO" /> <!-- 차량번호 -->
<result property="crdnDt" column="CRDN_DT" /> <!-- 단속 일시 -->
<result property="crdnStdgNm" column="CRDN_STDG_NM" /> <!-- 단속 법정동 명 -->
<result property="crdnPlc" column="CRDN_PLC" /> <!-- 단속 장소 -->
<result property="fyr" column="FYR" /> <!-- 회계연도 -->
<result property="levyNo" column="LEVY_NO" /> <!-- 부과 번호 -->
<result property="levyYmd" column="LEVY_YMD" /> <!-- 부과 일자 -->
<result property="dudtYmd" column="DUDT_YMD" /> <!-- 납기 일자 -->
<result property="dudtAftrYmd" column="DUDT_AFTR_YMD" /> <!-- 납기 후 일자 -->
<result property="ffnlgAmt" column="FFNLG_AMT" /> <!-- 과태료 금액 -->
<result property="pcptax" column="PCPTAX" /> <!-- 본세 -->
<result property="adamt" column="ADAMT" /> <!-- 가산금 -->
<result property="sumAmt" column="SUM_AMT" /> <!-- 합계 금액 -->
<result property="dudtAftrAmt" column="DUDT_AFTR_AMT" /> <!-- 납기 후 금액 -->
<result property="rtpyrNm" column="RTPYR_NM" /> <!-- 납부자 명 -->
<result property="rtpyrBrdt" column="RTPYR_BRDT" /> <!-- 납부자 생년월일 -->
<result property="rtpyrAddr" column="RTPYR_ADDR" /> <!-- 납부자 주소 -->
<result property="rtpyrDtlAddr" column="RTPYR_DTL_ADDR" /> <!-- 납부자 상세 주소 -->
<result property="rtpyrZip" column="RTPYR_ZIP" /> <!-- 납부자 우편번호 -->
<result property="conKey" column="CON_KEY" /> <!-- 외부연계식별키 -->
<result property="rgNo" column="RG_NO" /> <!-- 등기 번호 -->
<result property="dlvrYmd" column="DLVR_YMD" /> <!-- 배달 일자 -->
<result property="dlvrTm" column="DLVR_TM" /> <!-- 배달 시각 -->
<result property="undlvrRsnCd" column="UNDLVR_RSN_CD" /> <!-- 미배달 사유 코드 -->
<result property="undlvrRsnNm" column="UNDLVR_RSN_NM" /> <!-- 미배달 사유 명 -->
<result property="rcpnNm" column="RCPN_NM" /> <!-- 수령인 명 -->
<result property="rcpnRelNm" column="RCPN_REL_NM" /> <!-- 수령인 관계 명 -->
<result property="sndngDtlSttsCd" column="SNDNG_DTL_STTS_CD" /> <!-- 발송 상세 상태 코드 -->
<result property="bfrSndngDtlSttsCd" column="BFR_SNDNG_DTL_STTS_CD" /> <!-- 전 발송 상세 상태 코드 -->
<result property="bfrDlvrYmd" column="BFR_DLVR_YMD" /> <!-- 전 배달 일자 -->
<result property="bfrDlvrHr" column="BFR_DLVR_HR" /> <!-- 전 배달 시간 -->
<result property="sndngRcvmtCd" column="SNDNG_RCVMT_CD" /> <!-- 발송 수납 코드 -->
<result property="addrChgCd" column="ADDR_CHG_CD" /> <!-- 주소 변경 코드 -->
<result property="taxNo" column="TAX_NO" /> <!-- 납세 번호 -->
<result property="epayno" column="EPAYNO" /> <!-- 전자납부번호 -->
<result property="bankNm" column="BANK_NM" /> <!-- 은행 명 -->
<result property="vrActno" column="VR_ACTNO" /> <!-- 가상 계좌번호 -->
<result property="bankNm2" column="BANK_NM2" /> <!-- 은행 명2 -->
<result property="vrActno2" column="VR_ACTNO2" /> <!-- 가상 계좌번호2 -->
<result property="bankNm3" column="BANK_NM3" /> <!-- 은행 명3 -->
<result property="vrActno3" column="VR_ACTNO3" /> <!-- 가상 계좌번호3 -->
<result property="bankNm4" column="BANK_NM4" /> <!-- 은행 명4 -->
<result property="vrActno4" column="VR_ACTNO4" /> <!-- 가상 계좌번호4 -->
<result property="bankNm5" column="BANK_NM5" /> <!-- 은행 명5 -->
<result property="vrActno5" column="VR_ACTNO5" /> <!-- 가상 계좌번호5 -->
<result property="bankNm6" column="BANK_NM6" /> <!-- 은행 명6 -->
<result property="vrActno6" column="VR_ACTNO6" /> <!-- 가상 계좌번호6 -->
<result property="bankNm7" column="BANK_NM7" /> <!-- 은행 명7 -->
<result property="vrActno7" column="VR_ACTNO7" /> <!-- 가상 계좌번호7 -->
<result property="bankNm8" column="BANK_NM8" /> <!-- 은행 명8 -->
<result property="vrActno8" column="VR_ACTNO8" /> <!-- 가상 계좌번호8 -->
<result property="bankNm9" column="BANK_NM9" /> <!-- 은행 명9 -->
<result property="vrActno9" column="VR_ACTNO9" /> <!-- 가상 계좌번호9 -->
<result property="bankNm10" column="BANK_NM10" /> <!-- 은행 명10 -->
<result property="vrActno10" column="VR_ACTNO10" /> <!-- 가상 계좌번호10 -->
<result property="bankNm11" column="BANK_NM11" /> <!-- 은행 명11 -->
<result property="vrActno11" column="VR_ACTNO11" /> <!-- 가상 계좌번호11 -->
<result property="delYN" column="DEL_YN" /> <!-- 삭제 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
<result property="removedAt" column="DEL_DT" /> <!-- 삭제 일시 -->
<result property="removedBy" column="DLTR" /> <!-- 삭제자 -->
<result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 -->
</resultMap>
<select id="selectSndngTrgts" parameterType="String" resultType="dataobject">/* 발송 대상 ID로 발송상세 객체 가져오기(sndngDtlMapper.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="selectList">
SELECT SD.SNDNG_DTL_ID /* 발송 상세 ID */
, SD.SVBTC_ID /* 공시송달 ID */
, SD.CRDN_ID /* 단속 ID */
, SD.SVBTC_ID /* 공시송달 ID */
, SD.MTCHG_ID /* 매칭 ID */
, SD.SNDNG_SE_CD /* 발송 구분 코드 */
, SD.SNDNG_YMD /* 발송 일자 */
, SD.SNDNG_END_YMD /* 발송 종료 일자 */
, SD.RTPYR_NM /* 납부자 명 */
, SD.RTPYR_BRDT /* 납부자 생년월일 */
, SD.RTPYR_ADDR /* 납부자 주소 */
, SD.RTPYR_DTL_ADDR /* 납부자 상세 주소 */
, SD.RTPYR_ZIP /* 납부자 우편번호 */
, SD.CON_KEY /* 외부연계식별키 */
, SD.RG_NO /* 등기 번호 */
, SD.DLVR_YMD /* 배달 일자 */
, SD.DLVR_TM /* 배달 시각 */
, SD.UNDLVR_RSN_CD /* 미배달 사유 코드 */
, SD.UNDLVR_RSN_NM /* 미배달 사유 명 */
, SD.RCPN_NM /* 수령인 명 */
, SD.RCPN_REL_NM /* 수령인 관계 명 */
, SD.SNDNG_DTL_STTS_CD /* 발송 상세 상태 코드 */
, SD.BFR_SNDNG_DTL_STTS_CD /* 전 발송 상세 상태 코드 */
, SD.BFR_DLVR_YMD /* 전 배달 일자 */
, SD.BFR_DLVR_HR /* 전 배달 시간 */
, SD.SNDNG_RCVMT_CD /* 발송 수납 코드 */
, SD.ADDR_CHG_CD /* 주소 변경 코드 */
, SD.CRDN_DT /* 단속 일시 */
, SD.VHRNO /* 차량번호 */
, SD.CRDN_STDG_NM /* 단속 법정동 명 */
, SD.CRDN_PLC /* 단속 장소 */
, SD.FYR /* 회계연도 */
, SD.LEVY_NO /* 부과 번호 */
, SD.LEVY_YMD /* 부과 일자 */
, SD.DUDT_YMD /* 납기 일자 */
, SD.DUDT_AFTR_YMD /* 납기 후 일자 */
, SD.FFNLG_AMT /* 과태료 금액 */
, SD.PCPTAX /* 본세 */
, SD.ADAMT /* 가산금 */
, SD.SUM_AMT /* 합계 금액 */
, SD.DUDT_AFTR_AMT /* 납기 후 금액 */
, SD.TAX_NO /* 납세 번호 */
, SD.EPAYNO /* 전자납부번호 */
, SD.BANK_NM /* 은행 명 */
, SD.VR_ACTNO /* 가상 계좌번호 */
, SD.BANK_NM2 /* 은행 명 2 */
, SD.VR_ACTNO2 /* 가상 계좌번호 2 */
, SD.BANK_NM3 /* 은행 명 3 */
, SD.VR_ACTNO3 /* 가상 계좌번호 3 */
, SD.BANK_NM4 /* 은행 명 4 */
, SD.VR_ACTNO4 /* 가상 계좌번호 4 */
, SD.BANK_NM5 /* 은행 명 5 */
, SD.VR_ACTNO5 /* 가상 계좌번호 5 */
, SD.BANK_NM6 /* 은행 명 6 */
, SD.VR_ACTNO6 /* 가상 계좌번호 6 */
, SD.BANK_NM7 /* 은행 명 7 */
, SD.VR_ACTNO7 /* 가상 계좌번호 7 */
, SD.BANK_NM8 /* 은행 명 8 */
, SD.VR_ACTNO8 /* 가상 계좌번호 8 */
, SD.BANK_NM9 /* 은행 명 9 */
, SD.VR_ACTNO9 /* 가상 계좌번호 9 */
, SD.BANK_NM10 /* 은행 명 10 */
, SD.VR_ACTNO10 /* 가상 계좌번호 10 */
, SD.BANK_NM11 /* 은행 명 11 */
, SD.VR_ACTNO11 /* 가상 계좌번호 11 */
, SD.REG_DT /* 등록 일시 */
, SD.RGTR /* 등록자 */
, SD.MDFCN_DT /* 수정 일시 */
, SD.MDFR /* 수정자 */
, SD.DEL_DT /* 삭제 일시 */
, SD.DLTR /* 삭제자 */
, SD.DEL_RSN /* 삭제 사유 */
, S.SNDNG_ID /* 발송 ID */
, S.SGG_CD /* 시군구 코드 */
, S.DEPT_CD /* 부서 코드 */
, S.TASK_SE_CD /* 업무 구분 코드 */
, S.SNDNG_REG_SE_CD /* 발송 등록 구분 코드 */
, S.SNDNG_SE_CD /* 발송 구분 코드 */
, S.LEVY_BGNG_YMD /* 부과 시작 일자 */
, S.LEVY_END_YMD /* 부과 종료 일자 */
, S.TTL_NM /* 제목 명 */
, S.DOC_NO /* 문서 번호 */
, S.ETC_CN /* 기타 내용 */
, S.TNOCS /* 총건수 */
, S.GRAMT /* 총금액 */
, S.DIV_KB /* 취급 구분 */
, S.EPOST_NOTICE_ID /* 전자우편 안내문 ID */
, S.SNDNG_STTS_CD /* 발송 상태 코드 */
, S.RESND_YN /* 재발송 여부 */
, GET_MASK_DATE(SD.DUDT_YMD, 'K') AS DUDT_YMD_MASK_KOR /* 납기 일자(한글표기) */
, GET_MASK_DATE(SD.DUDT_YMD, '.') AS DUDT_YMD_MASK /* 납기 일자 */
, GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') AS DUDT_AFTR_YMD_MASK /* 납기 후 일자 */
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM /* 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD) FROM DUAL) AS BFR_SNDNG_DTL_STTS_NM /* 전 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM /* 발송 수납 명 */
, GET_MASK_EPAYNO(SD.EPAYNO) AS EPAYNO_MASK /* 전자납부번호 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.DLTR) AS DLTR_NM /* 삭제자 명 */
, (SELECT GET_CODE_NM('FIM047', S.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM /* 발송 구분 명 */
FROM TB_SNDNG_DTL SD
LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID)
</sql>
<select id="selectSndngDtlList" parameterType="map" resultType="dataobject">/* 발송 상세 목록 조회(sndngDtlMapper.selectSndngDtlList) */
<include refid="utility.paging-prefix" />
<include refid="selectList" />
<where></where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<select id="selectSndngDtls" parameterType="map" resultType="dataobject">/* 발송 상세 객체 가져오기(sndngDtlMapper.selectSndngDtls) */
<include refid="selectList" />
<where>
<if test="sndngDtlId != null">
AND SD.SNDNG_DTL_ID = #{sndngDtlId} /* 발송 상세 ID */
</if>
<if test="sndngId != null">
AND SD.SNDNG_ID = #{sndngId} /* 발송 ID */
</if>
<if test="crdnId != null">
AND SD.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
</where>
<include refid="utility.orderBy" />
</select>
<select id="selectSndngDtlLevyInfo" parameterType="string" resultType="dataobject">/* 발송 상세 및 부과 객체 가져오기(sndngDtlMapper.selectSndngDtlLevyInfo) */
SELECT SD.SNDNG_DTL_ID /* 발송 상세 ID */
, SD.SNDNG_ID /* 발송 ID */
, SD.SVBTC_ID /* 공시송달 ID */
, SD.SNDNG_YMD /* 발송 일자 */
, SD.SNDNG_END_YMD /* 발송 종료 일자 */
, SD.CON_KEY /* 외부연계식별키 */
, SD.RG_NO /* 등기 번호 */
, SD.SNDNG_DTL_STTS_CD /* 발송 상세 상태 코드 */
, SD.SNDNG_RCVMT_CD /* 발송 수납 코드 */
, SD.ADDR_CHG_CD /* 주소 변경 코드 */
, C.CRDN_ID /* 단속 ID */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, P.ZIP /* 우편번호 */
, L.LEVY_ID /* 부과 ID */
, L.DEPT_CD /* 부서 코드 */
, L.FYR /* 회계연도 */
, L.ACNTG_SE_CD /* 회계 구분 코드 */
, L.TXITM_CD /* 세목 코드 */
, L.OPER_ITEM_CD /* 운영 항목 코드 */
, L.SPCL_BIZ_CD /* 특별회계 사업 코드 */
, L.LEVY_NO /* 부과 번호 */
, L.INSPY_SN /* 분납 순번 */
, L.LEVY_SE_CD /* 부과 구분 코드 */
, L.LEVY_YMD /* 부과 일자 */
, L.FRST_DUDT_YMD /* 최초 납기 일자 */
, L.DUDT_YMD /* 납기 일자 */
, L.DUDT_AFTR_YMD /* 납기 후 일자 */
, L.FFNLG_AMT /* 과태료 금액 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */
, L.RDCAMT_ADAMT /* 감액 가산금 */
, L.SUM_AMT /* 합계 금액 */
, L.EPAYNO /* 전자납부번호 */
, L.BANK_NM /* 은행 명 */
, L.VR_ACTNO /* 가상 계좌번호 */
, L.BANK_NM2 /* 은행 명2 */
, L.VR_ACTNO2 /* 가상 계좌번호2 */
, L.BANK_NM3 /* 은행 명3 */
, L.VR_ACTNO3 /* 가상 계좌번호3 */
, L.BANK_NM4 /* 은행 명4 */
, L.VR_ACTNO4 /* 가상 계좌번호4 */
, L.BANK_NM5 /* 은행 명5 */
, L.VR_ACTNO5 /* 가상 계좌번호5 */
, L.BANK_NM6 /* 은행 명6 */
, L.VR_ACTNO6 /* 가상 계좌번호6 */
, L.BANK_NM7 /* 은행 명7 */
, L.VR_ACTNO7 /* 가상 계좌번호7 */
, L.BANK_NM8 /* 은행 명8 */
, L.VR_ACTNO8 /* 가상 계좌번호8 */
, L.BANK_NM9 /* 은행 명9 */
, L.VR_ACTNO9 /* 가상 계좌번호9 */
, L.BANK_NM10 /* 은행 명10 */
, L.VR_ACTNO10 /* 가상 계좌번호10 */
, L.BANK_NM11 /* 은행 명11 */
, L.VR_ACTNO11 /* 가상 계좌번호11 */
, L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS PCPTAX /* 본세 */
, L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS ADAMT /* 가산금 */
, (SELECT GET_MASK_DATE(L.LEVY_YMD, '.') FROM DUAL) AS LEVY_YMD_MASK /* 부과 일자 마스크 */
, (SELECT GET_MASK_DATE(L.DUDT_YMD, '.') FROM DUAL) AS DUDT_YMD_MASK /* 납기 일자 마스크 */
, (SELECT GET_MASK_DATE(L.DUDT_YMD, 'K') FROM DUAL) AS DUDT_YMD_MASK_KOR /* 납기 일자 마스크 */
, (SELECT GET_MASK_DATE(L.DUDT_AFTR_YMD, '.') FROM DUAL) AS DUDT_AFTR_YMD_MASK /* 납기 후 일자 마스크 */
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM /* 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM /* 발송 수납 명 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */
FROM TB_SNDNG_DTL SD
INNER JOIN TB_CRDN C ON (SD.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
INNER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
WHERE SD.SNDNG_DTL_ID = #{sndngDtlId}
</select>
<insert id="insertSndngDtl" parameterType="map">/* 발송 상세 등록(sndngDtlMapper.insertSndngDtl) */
<selectKey resultType="string" keyProperty="sndngDtl.sndngDtlId" keyColumn="NEW_ID" order="BEFORE">
SELECT LPAD(CAST(IFNULL(MAX(SNDNG_DTL_ID) + 1, 1) AS INT), 10, '0') AS NEW_ID
FROM TB_SNDNG_DTL
</selectKey>
INSERT
INTO TB_SNDNG_DTL (
SNDNG_DTL_ID /* 발송 상세 ID */
, SNDNG_ID /* 발송 ID */
, CRDN_ID /* 단속 ID */
, SVBTC_ID /* 공시송달 ID */
, MTCHG_ID /* 매칭 ID */
, SNDNG_SE_CD /* 발송 구분 코드 */
, SNDNG_YMD /* 발송 일자 */
, SNDNG_END_YMD /* 발송 종료 일자 */
, RTPYR_NM /* 납부자 명 */
, RTPYR_BRDT /* 납부자 생년월일 */
, RTPYR_ADDR /* 납부자 주소 */
, RTPYR_DTL_ADDR /* 납부자 상세 주소 */
, RTPYR_ZIP /* 납부자 우편번호 */
, CON_KEY /* 외부연계식별키 */
, RG_NO /* 등기 번호 */
, DLVR_YMD /* 배달 일자 */
, DLVR_TM /* 배달 시각 */
, UNDLVR_RSN_CD /* 미배달 사유 코드 */
, UNDLVR_RSN_NM /* 미배달 사유 명 */
, RCPN_NM /* 수령인 명 */
, RCPN_REL_NM /* 수령인 관계 명 */
, SNDNG_DTL_STTS_CD /* 발송 상세 상태 코드 */
, BFR_SNDNG_DTL_STTS_CD /* 전 발송 상세 상태 코드 */
, BFR_DLVR_YMD /* 전 배달 일자 */
, BFR_DLVR_HR /* 전 배달 시간 */
, SNDNG_RCVMT_CD /* 발송 수납 코드 */
, ADDR_CHG_CD /* 주소 변경 코드 */
, CRDN_DT /* 단속 일시 */
, VHRNO /* 차량번호 */
, CRDN_STDG_NM /* 단속 법정동 명 */
, CRDN_PLC /* 단속 장소 */
, FYR /* 회계연도 */
, LEVY_NO /* 부과 번호 */
, LEVY_YMD /* 부과 일자 */
, DUDT_YMD /* 납기 일자 */
, DUDT_AFTR_YMD /* 납기 후 일자 */
, FFNLG_AMT /* 과태료 금액 */
, PCPTAX /* 본세 */
, ADAMT /* 가산금 */
, SUM_AMT /* 합계 금액 */
, DUDT_AFTR_AMT /* 납기 후 금액 */
, TAX_NO /* 납세 번호 */
, EPAYNO /* 전자납부번호 */
, BANK_NM /* 은행 명 */
, VR_ACTNO /* 가상 계좌번호 */
, BANK_NM2 /* 은행 명 2 */
, VR_ACTNO2 /* 가상 계좌번호 2 */
, BANK_NM3 /* 은행 명 3 */
, VR_ACTNO3 /* 가상 계좌번호 3 */
, BANK_NM4 /* 은행 명 4 */
, VR_ACTNO4 /* 가상 계좌번호 4 */
, BANK_NM5 /* 은행 명 5 */
, VR_ACTNO5 /* 가상 계좌번호 5 */
, BANK_NM6 /* 은행 명 6 */
, VR_ACTNO6 /* 가상 계좌번호 6 */
, BANK_NM7 /* 은행 명 7 */
, VR_ACTNO7 /* 가상 계좌번호 7 */
, BANK_NM8 /* 은행 명 8 */
, VR_ACTNO8 /* 가상 계좌번호 8 */
, BANK_NM9 /* 은행 명 9 */
, VR_ACTNO9 /* 가상 계좌번호 9 */
, BANK_NM10 /* 은행 명 10 */
, VR_ACTNO10 /* 가상 계좌번호 10 */
, BANK_NM11 /* 은행 명 11 */
, VR_ACTNO11 /* 가상 계좌번호 11 */
, DEL_YN /* 삭제 여부 */
, REG_DT /* 등록 일시 */
, RGTR /* 등록자 */
, MDFCN_DT /* 수정 일시 */
, MDFR /* 수정자 */
)
VALUES (
#{sndngDtl.sndngDtlId} /* 발송 상세 ID */
, #{sndngDtl.sndngId} /* 발송 ID */
, #{sndngDtl.crdnId} /* 단속 ID */
, #{sndngDtl.svbtcId} /* 공시송달 ID */
, #{sndngDtl.mtchgId} /* 매칭 ID */
, #{sndngDtl.sndngSeCd} /* 발송 구분 코드 */
, #{sndngDtl.sndngYmd} /* 발송 일자 */
, #{sndngDtl.sndngEndYmd} /* 발송 종료 일자 */
, #{sndngDtl.rtpyrNm} /* 납부자 명 */
, #{sndngDtl.rtpyrBrdt} /* 납부자 생년월일 */
, #{sndngDtl.rtpyrAddr} /* 납부자 주소 */
, #{sndngDtl.rtpyrDtlAddr} /* 납부자 상세 주소 */
, #{sndngDtl.rtpyrZip} /* 납부자 우편번호 */
, #{sndngDtl.conKey} /* 외부연계식별키 */
, #{sndngDtl.rgNo} /* 등기 번호 */
, #{sndngDtl.dlvrYmd} /* 배달 일자 */
, #{sndngDtl.dlvrTm} /* 배달 시각 */
, #{sndngDtl.undlvrRsnCd} /* 미배달 사유 코드 */
, #{sndngDtl.undlvrRsnNm} /* 미배달 사유 명 */
, #{sndngDtl.rcpnNm} /* 수령인 명 */
, #{sndngDtl.rcpnRelNm} /* 수령인 관계 명 */
, #{sndngDtl.sndngDtlSttsCd} /* 발송 상세 상태 코드 */
, #{sndngDtl.bfrSndngDtlSttsCd} /* 전 발송 상세 상태 코드 */
, #{sndngDtl.bfrDlvrYmd} /* 전 배달 일자 */
, #{sndngDtl.bfrDlvrHr} /* 전 배달 시간 */
, #{sndngDtl.sndngRcvmtCd} /* 발송 수납 코드 */
, #{sndngDtl.addrChgCd} /* 주소 변경 코드 */
, #{sndngDtl.crdnDt} /* 단속 일시 */
, #{sndngDtl.vhrno} /* 차량번호 */
, #{sndngDtl.crdnStdgNm} /* 단속 법정동 명 */
, #{sndngDtl.crdnPlc} /* 단속 장소 */
, #{sndngDtl.fyr} /* 회계연도 */
, #{sndngDtl.levyNo} /* 부과 번호 */
, #{sndngDtl.levyYmd} /* 부과 일자 */
, #{sndngDtl.dudtYmd} /* 납기 일자 */
, #{sndngDtl.dudtAftrYmd} /* 납기 후 일자 */
, #{sndngDtl.ffnlgAmt} /* 과태료 금액 */
, #{sndngDtl.pcptax} /* 본세 */
, #{sndngDtl.adamt} /* 가산금 */
, #{sndngDtl.sumAmt} /* 합계 금액 */
, #{sndngDtl.dudtAftrAmt} /* 납기 후 금액 */
, #{sndngDtl.taxNo} /* 납세 번호 */
, #{sndngDtl.epayno} /* 전자납부번호 */
, #{sndngDtl.bankNm} /* 은행 명 */
, #{sndngDtl.vrActno} /* 가상 계좌번호 */
, #{sndngDtl.bankNm2} /* 은행 명 2 */
, #{sndngDtl.vrActno2} /* 가상 계좌번호 2 */
, #{sndngDtl.bankNm3} /* 은행 명 3 */
, #{sndngDtl.vrActno3} /* 가상 계좌번호 3 */
, #{sndngDtl.bankNm4} /* 은행 명 4 */
, #{sndngDtl.vrActno4} /* 가상 계좌번호 4 */
, #{sndngDtl.bankNm5} /* 은행 명 5 */
, #{sndngDtl.vrActno5} /* 가상 계좌번호 5 */
, #{sndngDtl.bankNm6} /* 은행 명 6 */
, #{sndngDtl.vrActno6} /* 가상 계좌번호 6 */
, #{sndngDtl.bankNm7} /* 은행 명 7 */
, #{sndngDtl.vrActno7} /* 가상 계좌번호 7 */
, #{sndngDtl.bankNm8} /* 은행 명 8 */
, #{sndngDtl.vrActno8} /* 가상 계좌번호 8 */
, #{sndngDtl.bankNm9} /* 은행 명 9 */
, #{sndngDtl.vrActno9} /* 가상 계좌번호 9 */
, #{sndngDtl.bankNm10} /* 은행 명 10 */
, #{sndngDtl.vrActno10} /* 가상 계좌번호 10 */
, #{sndngDtl.bankNm11} /* 은행 명 11 */
, #{sndngDtl.vrActno11} /* 가상 계좌번호 11 */
, 'N' /* 삭제 여부 */
, <include refid="utility.now" /> /* 등록 일시 */
, #{sndngDtl.createdBy} /* 등록자 */
, <include refid="utility.now" /> /* 수정 일시 */
, #{sndngDtl.modifiedBy} /* 수정자 */
)
</insert>
<update id="updateSndngDtl" parameterType="map">/* 발송 상세 수정(sndngDtlMapper.updateSndngDtl) */
UPDATE TB_SNDNG_DTL
SET SVBTC_ID = #{sndngDtl.svbtcId} /* 공시송달 ID */
, MTCHG_ID = #{sndngDtl.mtchgId} /* 매칭 ID */
, SNDNG_SE_CD = #{sndngDtl.sndngSeCd} /* 발송 구분 코드 */
, SNDNG_YMD = #{sndngDtl.sndngYmd} /* 발송 일자 */
, SNDNG_END_YMD = #{sndngDtl.sndngEndYmd} /* 발송 종료 일자 */
, RTPYR_NM = #{sndngDtl.rtpyrNm} /* 납부자 명 */
, RTPYR_BRDT = #{sndngDtl.rtpyrBrdt} /* 납부자 생년월일 */
, RTPYR_ADDR = #{sndngDtl.rtpyrAddr} /* 납부자 주소 */
, RTPYR_DTL_ADDR = #{sndngDtl.rtpyrDtlAddr} /* 납부자 상세 주소 */
, RTPYR_ZIP = #{sndngDtl.rtpyrZip} /* 납부자 우편번호 */
, CON_KEY = #{sndngDtl.conKey} /* 외부연계식별키 */
, RG_NO = #{sndngDtl.rgNo} /* 등기 번호 */
, DLVR_YMD = #{sndngDtl.dlvrYmd} /* 배달 일자 */
, DLVR_TM = #{sndngDtl.dlvrTm} /* 배달 시각 */
, UNDLVR_RSN_CD = #{sndngDtl.undlvrRsnCd} /* 미배달 사유 코드 */
, UNDLVR_RSN_NM = #{sndngDtl.undlvrRsnNm} /* 미배달 사유 명 */
, RCPN_NM = #{sndngDtl.rcpnNm} /* 수령인 명 */
, RCPN_REL_NM = #{sndngDtl.rcpnRelNm} /* 수령인 관계 명 */
, SNDNG_DTL_STTS_CD = #{sndngDtl.sndngDtlSttsCd} /* 발송 상세 상태 코드 */
, BFR_SNDNG_DTL_STTS_CD = #{sndngDtl.bfrSndngDtlSttsCd} /* 전 발송 상세 상태 코드 */
, BFR_DLVR_YMD = #{sndngDtl.bfrDlvrYmd} /* 전 배달 일자 */
, BFR_DLVR_HR = #{sndngDtl.bfrDlvrHr} /* 전 배달 시간 */
, SNDNG_RCVMT_CD = #{sndngDtl.sndngRcvmtCd} /* 발송 수납 코드 */
, ADDR_CHG_CD = #{sndngDtl.addrChgCd} /* 주소 변경 코드 */
, CRDN_DT = #{sndngDtl.crdnDt} /* 단속 일시 */
, VHRNO = #{sndngDtl.vhrno} /* 차량번호 */
, CRDN_STDG_NM = #{sndngDtl.crdnStdgNm} /* 단속 법정동 명 */
, CRDN_PLC = #{sndngDtl.crdnPlc} /* 단속 장소 */
, FYR = #{sndngDtl.fyr} /* 회계연도 */
, LEVY_NO = #{sndngDtl.levyNo} /* 부과 번호 */
, LEVY_YMD = #{sndngDtl.levyYmd} /* 부과 일자 */
, DUDT_YMD = #{sndngDtl.dudtYmd} /* 납기 일자 */
, DUDT_AFTR_YMD = #{sndngDtl.dudtAftrYmd} /* 납기 후 일자 */
, FFNLG_AMT = #{sndngDtl.ffnlgAmt} /* 과태료 금액 */
, PCPTAX = #{sndngDtl.pcptax} /* 본세 */
, ADAMT = #{sndngDtl.adamt} /* 가산금 */
, SUM_AMT = #{sndngDtl.sumAmt} /* 합계 금액 */
, DUDT_AFTR_AMT = #{sndngDtl.dudtAftrAmt} /* 납기 후 금액 */
, TAX_NO = #{sndngDtl.taxNo} /* 납세 번호 */
, EPAYNO = #{sndngDtl.epayno} /* 전자납부번호 */
, BANK_NM = #{sndngDtl.bankNm} /* 은행 명 */
, VR_ACTNO = #{sndngDtl.vrActno} /* 가상 계좌번호 */
, BANK_NM2 = #{sndngDtl.bankNm2} /* 은행 명 2 */
, VR_ACTNO2 = #{sndngDtl.vrActno2} /* 가상 계좌번호 2 */
, BANK_NM3 = #{sndngDtl.bankNm3} /* 은행 명 3 */
, VR_ACTNO3 = #{sndngDtl.vrActno3} /* 가상 계좌번호 3 */
, BANK_NM4 = #{sndngDtl.bankNm4} /* 은행 명 4 */
, VR_ACTNO4 = #{sndngDtl.vrActno4} /* 가상 계좌번호 4 */
, BANK_NM5 = #{sndngDtl.bankNm5} /* 은행 명 5 */
, VR_ACTNO5 = #{sndngDtl.vrActno5} /* 가상 계좌번호 5 */
, BANK_NM6 = #{sndngDtl.bankNm6} /* 은행 명 6 */
, VR_ACTNO6 = #{sndngDtl.vrActno6} /* 가상 계좌번호 6 */
, BANK_NM7 = #{sndngDtl.bankNm7} /* 은행 명 7 */
, VR_ACTNO7 = #{sndngDtl.vrActno7} /* 가상 계좌번호 7 */
, BANK_NM8 = #{sndngDtl.bankNm8} /* 은행 명 8 */
, VR_ACTNO8 = #{sndngDtl.vrActno8} /* 가상 계좌번호 8 */
, BANK_NM9 = #{sndngDtl.bankNm9} /* 은행 명 9 */
, VR_ACTNO9 = #{sndngDtl.vrActno9} /* 가상 계좌번호 9 */
, BANK_NM10 = #{sndngDtl.bankNm10} /* 은행 명 10 */
, VR_ACTNO10 = #{sndngDtl.vrActno10} /* 가상 계좌번호 10 */
, BANK_NM11 = #{sndngDtl.bankNm11} /* 은행 명 11 */
, VR_ACTNO11 = #{sndngDtl.vrActno11} /* 가상 계좌번호 11 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{sndngDtl.modifiedBy} /* 수정자 */
WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId} /* 발송 상세 ID */
AND DEL_YN = 'N'
</update>
<update id="updateSndngDtlSttsCd" parameterType="map">/* 발송 상세 상태 코드 수정(sndngDtlMapper.updateSndngDtlSttsCd) */
UPDATE TB_SNDNG_DTL
SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD /* 이전 발송 상세 상태 코드 */
, SNDNG_DTL_STTS_CD = #{sndngDtl.sndngDtlSttsCd} /* 발송 상세 상태 코드 */
<if test="sndngDtl.mtchgId != null">
, MTCHG_ID = #{sndngDtl.mtchgId} /* 매칭 ID */
</if>
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{sndngDtl.modifiedBy} /* 수정자 */
WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId}
AND DEL_YN = 'N'
</update>
<update id="updateSndngDtlEPost" parameterType="map">/* 전자우편 발송상세 내역 수정(sndngDtlMapper.updateSndngDtlEPost) */
UPDATE TB_SNDNG_DTL
SET CON_KEY = #{sndngDtl.conKey} /* 외부연계식별키 */
, RG_NO = #{sndngDtl.rgNo} /* 공시송달 ID */
, BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD /* 이전 발송 상세 상태 코드 */
, SNDNG_DTL_STTS_CD = #{sndngDtl.sndngDtlSttsCd} /* 발송 상세 상태 코드 */
, RTPYR_NM = #{sndngDtl.rtpyrNm} /* 납부자 명 */
, RTPYR_BRDT = #{sndngDtl.rtpyrBrdt} /* 납부자 생년월일 */
, RTPYR_ADDR = #{sndngDtl.rtpyrAddr} /* 납부자 주소 */
, RTPYR_DTL_ADDR = #{sndngDtl.rtpyrDtlAddr} /* 납부자 상세 주소 */
, RTPYR_ZIP = #{sndngDtl.rtpyrZip} /* 납부자 우편번호 */
, CRDN_DT = #{sndngDtl.crdnDt} /* 단속 일시 */
, VHRNO = #{sndngDtl.vhrno} /* 차량번호 */
, CRDN_STDG_NM = #{sndngDtl.crdnStdgNm} /* 단속 법정동 명 */
, CRDN_PLC = #{sndngDtl.crdnPlc} /* 단속 장소 */
, FYR = #{sndngDtl.fyr} /* 회계연도 */
, LEVY_NO = #{sndngDtl.levyNo} /* 부과 번호 */
, LEVY_YMD = #{sndngDtl.levyYmd} /* 부과 일자 */
, DUDT_YMD = #{sndngDtl.dudtYmd} /* 납기 일자 */
, DUDT_AFTR_YMD = #{sndngDtl.dudtAftrYmd} /* 납기 후 일자 */
, FFNLG_AMT = #{sndngDtl.ffnlgAmt} /* 과태료 금액 */
, PCPTAX = #{sndngDtl.pcptax} /* 본세 */
, ADAMT = #{sndngDtl.adamt} /* 가산금 */
, SUM_AMT = #{sndngDtl.sumAmt} /* 합계 금액 */
, DUDT_AFTR_AMT = #{sndngDtl.dudtAftrAmt} /* 납기 후 금액 */
, TAX_NO = #{sndngDtl.taxNo} /* 납세 번호 */
, EPAYNO = #{sndngDtl.epayno} /* 전자납부번호 */
, BANK_NM = #{sndngDtl.bankNm} /* 은행 명 */
, VR_ACTNO = #{sndngDtl.vrActno} /* 가상 계좌번호 */
, BANK_NM2 = #{sndngDtl.bankNm2} /* 은행 명2 */
, VR_ACTNO2 = #{sndngDtl.vrActno2} /* 가상 계좌번호2 */
, BANK_NM3 = #{sndngDtl.bankNm3} /* 은행 명3 */
, VR_ACTNO3 = #{sndngDtl.vrActno3} /* 가상 계좌번호3 */
, BANK_NM4 = #{sndngDtl.bankNm4} /* 은행 명4 */
, VR_ACTNO4 = #{sndngDtl.vrActno4} /* 가상 계좌번호4 */
, BANK_NM5 = #{sndngDtl.bankNm5} /* 은행 명5 */
, VR_ACTNO5 = #{sndngDtl.vrActno5} /* 가상 계좌번호5 */
, BANK_NM6 = #{sndngDtl.bankNm6} /* 은행 명6 */
, VR_ACTNO6 = #{sndngDtl.vrActno6} /* 가상 계좌번호6 */
, BANK_NM7 = #{sndngDtl.bankNm7} /* 은행 명7 */
, VR_ACTNO7 = #{sndngDtl.vrActno7} /* 가상 계좌번호7 */
, BANK_NM8 = #{sndngDtl.bankNm8} /* 은행 명8 */
, VR_ACTNO8 = #{sndngDtl.vrActno8} /* 가상 계좌번호8 */
, BANK_NM9 = #{sndngDtl.bankNm9} /* 은행 명9 */
, VR_ACTNO9 = #{sndngDtl.vrActno9} /* 가상 계좌번호9 */
, BANK_NM10 = #{sndngDtl.bankNm10} /* 은행 명10 */
, VR_ACTNO10 = #{sndngDtl.vrActno10} /* 가상 계좌번호10 */
, BANK_NM11 = #{sndngDtl.bankNm11} /* 은행 명11 */
, VR_ACTNO11 = #{sndngDtl.vrActno11} /* 가상 계좌번호11 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{sndngDtl.modifiedBy} /* 수정자 */
WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId}
AND DEL_YN = 'N'
</update>
<update id="deleteSndngDtl" parameterType="map">/* 발송 상세 삭제(sndngDtlMapper.deleteSndngDtl) */
UPDATE TB_SNDNG_DTL
SET DEL_YN = 'Y'
, DEL_DT = <include refid="utility.now" /> /* 삭제 일시 */
, DLTR = #{sndngDtl.modifiedBy} /* 삭제자 */
, DEL_RSN = #{sndngDtl.delRsn} /* 삭제사유 */
WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId}
AND DEL_YN = 'N'
</update>
</mapper>

@ -101,7 +101,7 @@
// 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/createRductLevyList.do");
// ${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/updateRductLevyList.do");
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/updateRductLevyList.do");
}
/**************************************************************************
@ -123,8 +123,8 @@
${pageName}Control.save = (info) => {
if (!info) return;
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
let create = (${pageName}CallPurpose == "create");
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create

@ -158,8 +158,8 @@
<button type="button" class="btn btn-primary w-px-120" id="btnWrngTrgtInfo--${pageName}" title="발송대상 등록" onclick="fnWrngTrgtInfo${pageName}();">
발송대상 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnLevyExclInfo--${pageName}" title="계고 정보" onclick="fnLevyExclInfo${pageName}();">
계고 정
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateWrng--${pageName}" title="계고 수정" onclick="fnUpdateWrng${pageName}();">
계고
</button>
</span>
</span>
@ -183,6 +183,7 @@
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_EXCL_YMD', this.innerText, 'ymd', '');">계고일자</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('LEVY_EXCL_RSN_CD', this.innerText, 'codeValue', 'FIM022');">계고사유</th>
<th class="cmn" style="width: 240px;" onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">기타내용</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_APLY_NO', this.innerText, 'match', 'part');">민원신청번호</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th>
@ -191,14 +192,17 @@
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">단속법정동</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="bpv" style="width: 280px;" onclick="searchFromGridTitle('DTL_CRDN_PLC', this.innerText, 'match', 'part');">상세단속장소</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">최초단속금액</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'match', 'part');">납부자생일</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('ZIP', this.innerText, 'match', 'part');">우편번호</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('ADDR', this.innerText, 'match', 'part');">주소</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('DTL_ADDR', this.innerText, 'match', 'part');">상세주소</th>
<th class="pvs" style="width: 140px;" onclick="searchFromGridTitle('CRDN_SPAREA_CD', this.innerText, 'codeValue', 'FIM007');">단속특별구역</th>
<th class="eca" style="width: 140px;" onclick="searchFromGridTitle('USE_FUEL_CD', this.innerText, 'codeValue', 'LVS005');">사용연료</th>
<th class="dpv" style="width: 140px;" onclick="searchFromGridTitle('PARKNG_PSBLTY_RSLT_CD', this.innerText, 'codeValue', 'FIM034');">주차가능여부</th>
@ -214,6 +218,7 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_RSN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ETC_CN}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
@ -224,12 +229,15 @@
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="bpv text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="pvs text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_SPAREA_NM}</td>
<td class="eca text-center" onclick="{onclick}" ondblclick="{ondblclick}">{USE_FUEL_NM}</td>
<td class="dpv text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PARKNG_PSBLTY_RSLT_NM}</td>
@ -242,19 +250,19 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="bpv">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="29" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="dpv">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="29" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="eca">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="29" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pvs">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="29" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="tpv">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="29" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -299,9 +307,6 @@
, dataGetter : obj => obj.wrngTrgtList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
CVLCPT_RCPT_YMD : dateFormat
, LEVY_EXCL_YMD : dateFormat
@ -317,7 +322,7 @@
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
@ -340,34 +345,41 @@
$("#tbody--${pageName}").setCurrentRow(key);
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, crdnId : crdnId
// 계고장 발송 등록 dialog -> callback 추가
${pageName}Control.getInfo = (params) => {
if (!params) return;
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = ${pageName}Control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = ${pageName}Control.prefixName + " 수정";
} else {
dialogTitle = ${pageName}Control.prefixName + " 정보";
}
ajax.get({
url : ${pageName}Control.urls.getInfo
, data : params
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
id : "wrngTrgtDtlDialog"
, title : dialogTitle
, content : resp
, size : "xxl"
, size : "xl"
, onClose : () => { refreshList${pageName}(); } // callback
});
}
});
}
/**************************************************************************
*
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
@ -388,34 +400,88 @@
});
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
: ${infoPrefix}List.inStrings(foundTr.outerHTML
, (str, dataItem) => str
[document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML] :
${infoPrefix}List.inStrings(
foundTr.outerHTML,
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// 계고장 발송 등록 dialog -> callback 추가
getWrngTrgtInfo${pageName} = (params) => {
if (!params) return;
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
callbackFindUser${pageName} = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
getFindUser${pageName} = () => {
let params = {
callbackFuncName : "callbackFindUser${pageName}"
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "wrngTrgtDtlDialog"
, title : ${pageName}Control.prefixName + " 정보"
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "xl"
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
, size : "lg"
});
}
});
}
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
@ -426,34 +492,128 @@
if (!params) return;
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
url : wctx.url(params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
, data : params || {}
, success : resp => {
dialog.open({
id : "levyExclDialog"
, title : "부과제외 정보"
, content : resp
, size : "lg"
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
, size : "md"
, onClose : () => { refreshList${pageName}(); } // callback
});
}
});
}
// 검색 자료 재조회
refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
${pageName}Control.load(1);
}
/**************************************************************************
* 초기 셋팅
* 버튼 clickEvent
**************************************************************************/
// 초기화
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// dataset 초기화
${pageName}Control.dataset.clear();
// 초기 기본 설정
initForm${pageName}();
// URL 설정
setURL${pageName}(taskSeCd);
// 기본 데이터 설정
setFormData${pageName}(taskSeCd);
}
// 검색 버튼 이벤트
fnSearchList${pageName} = () => {
// 검색조건
${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수
${pageName}Control.query.delYN = "N"; // 삭제 여부
${pageName}Control.load(1);
}
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.download();
}
// 사용자 조회 버튼 이벤트
fnFindUser${pageName} = () => {
getFindUser${pageName}();
}
// 계고장 발송 대상 등록 버튼 이벤트
fnWrngTrgtInfo${pageName} = () => {
let params = ${pageName}Control.query;
params.callPurpose = "create";
if (params.taskSeCd == "DPV" && params.schVltnId == "05") {
params.sndngSeCd = "12"; // 발송 구분 코드 - 12 계고장 구형표지
} else {
params.sndngSeCd = "11"; // 발송 구분 코드 - 11 계고장
}
${pageName}Control.getInfo(params);
}
// 계고 수정 버튼 이벤트
fnUpdateWrng${pageName} = () => {
let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID");
let levyExclSeCd = ${pageName}Control.dataset.getValue("LEVY_EXCL_SE_CD");
// 부과제외ID 가 없다면.. return
if (!levyExclId) return;
let params = {
callPurpose : "update"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId : levyExclId
, levyExclSeCd : levyExclSeCd
};
getLevyExclInfo${pageName}(params);
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트
setEvent${pageName} = () => {
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
@ -470,41 +630,48 @@
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트
$("#table-responsive--${pageName}").scroll(function() {
let el = $(this);
if (el.scrollTop() == 0) {
return;
}
if (!${pageName}Control.tableRenderComplete) {
return;
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
}
let itemsCnt = ${pageName}Control.dataset._items.length;
let totCnt = ${pageName}Control.dataset.getValue("TOT_CNT");
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
if (itemsCnt >= totCnt) {
return;
}
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
// dataset 초기화
${pageName}Control.dataset.clear();
}
});
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
}
// 화면 초기값 셋팅
setForm${pageName} = (taskSeCd) => {
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 기본 데이터 설정
setFormData${pageName} = (taskSeCd) => {
// ${pageName}Control 설정
// ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
${pageName}Control.defaultFetchSize = 1; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 화면 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분
// 업무에 따른 위반 내용
let vltnIdCode = [];
@ -530,12 +697,6 @@
$("#schVltnId--${pageName}").append("<option value='" + vltnIdCode[index].code +"'>" + vltnIdCode[index].value + "</option>");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// 업무별 조회조건
let clsForTask = taskSeCd.toLowerCase();
@ -556,103 +717,18 @@
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화
initForm${pageName}();
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 화면 초기값 설정
setForm${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트
fnReset${pageName} = () => {
fnResetAndChangeBiz${pageName}();
}
// 검색 버튼 이벤트
fnSearchList${pageName} = () => {
// 검색조건
${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.load();
}
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
}
// 계고장 발송 대상 등록 버튼 이벤트
fnWrngTrgtInfo${pageName} = () => {
let params = ${pageName}Fields.get();
params.callPurpose = "create";
if (params.taskSeCd == "DPV" && params.schVltnId == "05") {
params.sndngSeCd = "12"; // 발송 구분 코드 - 12 계고장 구형표지
} else {
params.sndngSeCd = "11"; // 발송 구분 코드 - 11 계고장
}
getWrngTrgtInfo${pageName}(params);
}
// 계고 수정 버튼 이벤트
fnLevyExclInfo${pageName} = () => {
let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID");
let levyExclSeCd = ${pageName}Control.dataset.getValue("LEVY_EXCL_SE_CD");
// 부과제외ID 가 없다면.. return
if (!levyExclId) return;
let params = {
callPurpose : "update"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId : levyExclId
, levyExclSeCd : levyExclSeCd
};
getLevyExclInfo${pageName}(params);
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 이벤트 설정
setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
// 화면 초기 설정 및 업무 구분 변경
fnResetAndChangeBiz${pageName}(defaultBizValue);
fnResetAndChangeBiz${pageName}($("#layout-navbar input[name='taskSeCd']:checked").val());
});
</script>

@ -19,8 +19,8 @@
<!-- 총 건수 -->
<div class="col-md-12 text-end px-2">
<label for="tnocs--${pageName}" class="w-px-140 bg-lighter pe-2 col-form-label text-sm-end">총건수 / 총금액</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" data-fmt-type="number" readonly />
<input type="text" class="form-control w-px-120 text-end" id="gramt--${pageName}" name="gramt" data-map="GRAMT" data-fmt-type="number" readonly />
<input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-fmt-type="number" readonly />
<input type="text" class="form-control w-px-120 text-end" id="gramt--${pageName}" name="gramt" data-fmt-type="number" readonly />
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
@ -59,9 +59,6 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="발송 등록" onclick="fnSave${pageName}();">
발송 등록
</button>
@ -86,11 +83,11 @@
<th class="cmn" style="width: 160px;">민원신청번호</th>
<th class="cmn" style="width: 160px;">민원접수번호</th>
<th class="cmn" style="width: 120px;">민원접수일자</th>
<th class="cmn" style="width: 160px;">민원처리결과</th>
<th class="cmn" style="width: 200px;">민원처리결과</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 140px;">위반항목</th>
<th class="cmn" style="width: 160px;">법정동</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">단속금액</th>
<th class="cmn" style="width: 120px;">처리상태</th>
@ -127,7 +124,7 @@
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
@ -160,22 +157,23 @@
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
var ${pageName}CallPurpose = "${callPurpose}";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지
var ${pageName}Query = ${wrngTrgtQuery};
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "wrngTrgtDtl"
prefix : "wrngTrgt"
, prefixName : "계고장 발송 대상"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.wrngTrgtDtlList
, dataGetter : obj => obj.wrngTrgtList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
TNOCS : numberFormat
, GRAMT : numberFormat
@ -195,8 +193,6 @@
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
${pageName}Control.select(true); // 전체 선택 되도록..
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
@ -221,34 +217,10 @@
});
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, callPurpose : "view"
, crdnId : crdnId
}
ajax.get({
url : ${pageName}Control.urls.getInfo
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
// 저장 callback
${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#btnSave--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle);
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
@ -261,24 +233,21 @@
${pageName}Control.save = (info) => {
if (!info) return;
// 선택된 자료의 단속ID 추가
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
info.resndYN = "N"; // 재발송 여부
info.delYN = "N"; // 삭제 여부
info.crdnIDs = selected.join(","); // 단속 IDs
info.resndYn = "N"; // 재발송 여부
info.delYn = "N"; // 삭제 여부
let create = (${pageName}CallPurpose == "create");
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
ajax.post({
url : wctx.url(info.taskSeCd + ${pageName}PrefixUrl + "/020/create.do")
, data : info
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : params
, success : resp => ${pageName}Control.onSave(resp)
});
}
/**************************************************************************
*
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
@ -291,7 +260,7 @@
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
@ -301,6 +270,50 @@
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 발송 등록
fnSave${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
@ -323,63 +336,64 @@
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// 화면 초기값 셋팅
setForm${pageName} = () => {
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#sndngYmd--${pageName}").datepicker("setDate", new Date());
$("#sndngEndYmd--${pageName}").val("");
$("#sndngEndYmd--${pageName}").prop("disabled", true);
$("#divSndngEndYmd--${pageName}").hide();
$("#sndngEndYmd--${pageName}").datepicker("setDate", new Date());
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 엑셀
fnExcel${pageName} = () => {
// 업무구분에 따른 url 설정
setURL${pageName} = () => {
let taskSeCd = ${pageName}Query.taskSeCd;
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/createWrngSndngList.do"); // 등록
${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/updateWrngSndngList.do"); // 수정
}
// 발송 등록
fnSave${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 기본 데이터 설정
setFormData${pageName} = () => {
//
$("#sggCd--${pageName}").val(${pageName}Query.sggCd); // 시군구 코드
$("#taskSeCd--${pageName}").val(${pageName}Query.taskSeCd); // 업무 구분 코드
$("#sndngSeCd--${pageName}").val(${pageName}Query.sndngSeCd); // 발송 구분 코드
$("#vltnCd--${pageName}").val(${pageName}Query.vltnCd); // 위반 코드
dialog.alert({
content : ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
// 총건수 / 총금액
$("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS"));
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT"));
// 발송 종료 일자
$("#sndngEndYmd--${pageName}").val("");
$("#sndngEndYmd--${pageName}").prop("disabled", true);
$("#divSndngEndYmd--${pageName}").hide();
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 기본 데이터
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#taskSeCd--${pageName}").val("${taskSeCd}"); // 업무 구분 코드
$("#sndngSeCd--${pageName}").val("${sndngSeCd}"); // 발송 구분 코드
$("#vltnCd--${pageName}").val("${vltnCd}"); // 위반 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
setForm${pageName}();
// 화면 초기화
initForm${pageName}();
// Dataset 설정
${pageName}Control.addData(${wrngTrgt});
// Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가
${pageName}Control.addData(${wrngTrgtDtl});
// URL 설정
setURL${pageName}();
$("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액
// 기본 데이터 설정
setFormData${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});
</script>

@ -260,7 +260,7 @@
, crdnId : crdnId
, sggCd : mainDataItems[curDataIndex${pageName}].data.SGG_CD
, taskSeCd : mainDataItems[curDataIndex${pageName}].data.TASK_SE_CD
, delYn : "N"
, delYN : "N"
};
${pageName}RefreshDataInfo(params);
@ -298,7 +298,7 @@
, crdnId : crdnId
, sggCd : mainDataItems[curDataIndex${pageName}].data.SGG_CD
, taskSeCd : mainDataItems[curDataIndex${pageName}].data.TASK_SE_CD
, delYn : "N"
, delYN : "N"
};
${pageName}RefreshDataInfo(params);
@ -406,7 +406,7 @@
, crdnId : crdnId
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, delYn : "N"
, delYN : "N"
};
getCrdnPayerInfo${pageName}(params);
@ -427,7 +427,7 @@
, crdnId : crdnId
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, delYn : "N"
, delYN : "N"
};
getOpnnSbmsnInfo${pageName}(params);
@ -448,7 +448,7 @@
, crdnId : crdnId
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, delYn : "N"
, delYN : "N"
};
getSndngInfo${pageName}(params);
@ -470,7 +470,7 @@
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID")
, delYn : "N"
, delYN : "N"
};
getPrcsDtlInfo${pageName}(params);
@ -491,7 +491,7 @@
, crdnId : crdnId
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, delYn : "N"
, delYN : "N"
};
getLevyNpmntInfo${pageName}(params);
@ -512,7 +512,7 @@
, crdnId : crdnId
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, delYn : "N"
, delYN : "N"
};
getRcvmtInfo${pageName}(params);
@ -535,7 +535,7 @@
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD")
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD")
, vhrno : ${pageName}Control.dataset.getValue("VHRNO")
, delYn : "N"
, delYN : "N"
};
getCvlcptDscsnInfo${pageName}(params);

@ -572,7 +572,7 @@
, crdnId : crdnId
, sggCd : sggCd
, taskSeCd : taskSeCd
, delYn : "N"
, delYN : "N"
};
ajax.get({
@ -720,7 +720,7 @@
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({
@ -889,7 +889,7 @@
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID") // 납부자 ID
, delYn : "N"
, delYN : "N"
};
dialog.alert({
@ -915,7 +915,7 @@
, rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID") // 납부자 ID
, vhrno : ${pageName}Control.dataset.getValue("VHRNO") // 차량번호
, rtpyrInptSeCd : "01" // 납부자 입력 구분 코드
, delYn : "N"
, delYN : "N"
};
updatePayer${pageName}(params);

@ -332,7 +332,7 @@
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({

@ -390,7 +390,7 @@
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({

@ -477,7 +477,7 @@
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, rtpyrId : $("#rtpyrId--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({
@ -517,7 +517,6 @@
let params = {
callPurpose : "remove"
, rductId : ${pageName}${pageDataName1}Control.dataset.getValue("RDUCT_ID") // 감경 ID
, delYn : "Y" // 삭제 여부
, delRsn : obj.reason // 삭제 사유
};

@ -331,7 +331,7 @@
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({

@ -399,7 +399,7 @@
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({

@ -214,7 +214,7 @@
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, vhrno : $("#vhrno--${pageNameMain}").val()
, delYn : "N"
, delYN : "N"
};
ajax.get({
@ -240,7 +240,7 @@
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, cvlcptDscsnId : ${pageName}Control.dataset.getValue("CVLCPT_DSCSN_ID") // 민원상담 ID
, delYn : "Y" // 삭제 여부
, delYN : "Y" // 삭제 여부
, delRsn : obj.reason // 삭제 사유
};

Loading…
Cancel
Save