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

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"))) { if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) {
rtnMsg = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다."; rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
return rtnMsg; return rtnMsg;
} }

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

@ -61,9 +61,8 @@ public class SndbQuery extends CmmnQuery {
private String rcpnRelNm4; private String rcpnRelNm4;
// ETC // ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delYn; // 삭제 여부
private String delRsn; // 삭제 사유 private String delRsn; // 삭제 사유
private String crdnDelYn; // 단속 삭제 여부 private String crdnDelYN; // 단속 삭제 여부
public String[] getCrdnIDs() { public String[] getCrdnIDs() {
return ifEmpty(crdnIDs, () -> null); return ifEmpty(crdnIDs, () -> null);
@ -427,15 +426,6 @@ public class SndbQuery extends CmmnQuery {
return self(); 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() { public String getDelRsn() {
return ifEmpty(delRsn, () -> null); return ifEmpty(delRsn, () -> null);
} }
@ -445,12 +435,12 @@ public class SndbQuery extends CmmnQuery {
return self(); return self();
} }
public String getCrdnDelYn() { public String getCrdnDelYN() {
return ifEmpty(crdnDelYn, () -> null); return ifEmpty(crdnDelYN, () -> null);
} }
public <T extends SndbQuery> T setCrdnDelYn(String crdnDelYn) { public <T extends SndbQuery> T setCrdnDelYN(String crdnDelYN) {
this.crdnDelYn = crdnDelYn; this.crdnDelYN = crdnDelYN;
return self(); return self();
} }
// ETC ///////////////////////////////////////////////////////////////////// // 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; 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 /> /** .<br />
* @param req * @param req
* @return * @return
@ -57,50 +75,95 @@ public interface SndngMapper extends AbstractMapper {
default DataObject selectSndngInfo(String sndngId) { default DataObject selectSndngInfo(String sndngId) {
List<DataObject> InfoSndng = selectSndngs(new SndbQuery().setSndngId(sndngId) List<DataObject> InfoSndng = selectSndngs(new SndbQuery().setSndngId(sndngId)
.setDelYn("N") .setDelYN("N")
.setOrderBy("S.SNDNG_ID DESC")); .setOrderBy("S.SNDNG_ID DESC"));
return !InfoSndng.isEmpty() ? InfoSndng.get(0) : null; return !InfoSndng.isEmpty() ? InfoSndng.get(0) : null;
} }
/** .<br /> /** .
* @param req * @param params
* @return * <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/ */
List<DataObject> selectSndngDtlList(SndbQuery req); int insertSndng(Map<String, Object> params);
/** . /** .
* @param req * @param sndng
* @return * @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) * @param params
.setDelYn("N") * <ul><li>"sndng" - </li>
.setOrderBy("SD.SNDNG_DTL_ID DESC")); * <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 * @param params
* @return * <ul><li>"sndng" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/ */
List<DataObject> selectAdvntceTrgtList(SndbQuery req); int deleteSndng(Map<String, ?> params);
/** . /** .
* @param req * @param sndng
* @return * @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 . /** ID .
* @param req * @param req
* @return * @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 /** ID
* @param svbtcId ID * @param svbtcId ID
@ -345,31 +268,6 @@ public interface SndngMapper extends AbstractMapper {
return sndng != null && updateEPostSndng(params().set("sndng", sndng)) == 1; 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 * @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); List<DataObject> getWrngTrgts(SndbQuery req);
/** . /** .
* @param sndng * @param req , sndng
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
String createWrngSndng(Sndng sndng); String createWrngSndngList(SndbQuery req, Sndng sndng);
/** . /** .
* @param req * @param req
@ -51,7 +51,7 @@ public interface SndngService {
* @param req * @param req
* @return * @return
*/ */
List<DataObject> getWrngSndngDtls(SndbQuery req); List<DataObject> getWrngSndngDtls(SndbQuery req);
/** . /** .
* @param req * @param req
@ -80,15 +80,11 @@ public interface SndngService {
*/ */
List<DataObject> getAdvntceSndngList(SndbQuery req); List<DataObject> getAdvntceSndngList(SndbQuery req);
/** . /** .
* @param req * @param req
* @return * @return
*/ */
List<DataObject> getAdvntceSndngDtls(SndbQuery req); List<DataObject> getAdvntceSndngDtls(SndbQuery req);
/** . /** .
* @param sndng * @param sndng
@ -153,11 +149,6 @@ public interface SndngService {
*/ */
List<DataObject> getSndngList(SndbQuery req); List<DataObject> getSndngList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtls(SndbQuery req);
/** . /** .
* @param req * @param req
@ -183,33 +174,6 @@ public interface SndngService {
*/ */
List<DataObject> getSvbtcDtls(SndbQuery req); 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 * @param sndngDtl
* @return * @return
@ -294,9 +258,4 @@ public interface SndngService {
*/ */
List<DataObject> getSndngs(SndbQuery req); List<DataObject> getSndngs(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtlList(SndbQuery req);
} }

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

@ -1,21 +1,32 @@
package cokr.xit.fims.sndb.web; package cokr.xit.fims.sndb.web;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.servlet.ModelAndView; 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.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.user.ManagedUser;
import cokr.xit.base.web.ApplicationController; import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.cmmn.CmmnQuery; import cokr.xit.fims.cmmn.CmmnQuery;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.cmmn.service.TaskService; import cokr.xit.fims.cmmn.service.TaskService;
import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng; import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.SndngDtl; import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.Svbtc; import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.service.SndngDtlService;
import cokr.xit.fims.sndb.service.SndngService; import cokr.xit.fims.sndb.service.SndngService;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -38,10 +49,14 @@ public class Sndb01Controller extends ApplicationController {
warningTargetMain = "/010/main.do" // 계고장 발송 대상 메인 화면 warningTargetMain = "/010/main.do" // 계고장 발송 대상 메인 화면
, getWarningTargetList = "/010/list.do" // 계고장 발송 대상 목록 조회 , getWarningTargetList = "/010/list.do" // 계고장 발송 대상 목록 조회
, getWarningTargetInfo = "/020/info.do" // 계고장 발송 대상 조회 , getWarningTargetInfo = "/020/info.do" // 계고장 발송 대상 조회
, createWarningSndng = "/020/create.do" // 계고장 발송 등록 , createWarningSendingList = "/020/createWrngSndngList.do" // 계고장 발송 등록
, warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면 , warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면
, getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회 , getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회
, getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 대장 조회 , getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 대장 조회
, advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면 , advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면
, getAdvanceNoticeTargetList = "/050/list.do" // 사전통지 발송 대상 목록 조회 , getAdvanceNoticeTargetList = "/050/list.do" // 사전통지 발송 대상 목록 조회
, getAdvanceNoticeTargetInfo = "/060/info.do" // 사전통지 발송 대상 조회 , getAdvanceNoticeTargetInfo = "/060/info.do" // 사전통지 발송 대상 조회
@ -84,6 +99,10 @@ public class Sndb01Controller extends ApplicationController {
@Resource(name = "sndngService") @Resource(name = "sndngService")
private SndngService sndngService; private SndngService sndngService;
/**발송 상세 서비스*/
@Resource(name = "sndngDtlService")
private SndngDtlService sndngDtlService;
/** 업무 정보 서비스 */ /** 업무 정보 서비스 */
@Resource(name = "taskService") @Resource(name = "taskService")
private TaskService taskService; private TaskService taskService;
@ -102,7 +121,8 @@ public class Sndb01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064"); 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("infoPrefix", "wrngTrgt") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
@ -126,9 +146,67 @@ public class Sndb01Controller extends ApplicationController {
* }</code></pre> * }</code></pre>
*/ */
public ModelAndView getWarningTargetList(SndbQuery req) { public ModelAndView getWarningTargetList(SndbQuery req) {
List<?> result = sndngService.getWrngTrgtList(setFetchSize(req)); if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getWrngTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngTrgt"); 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) . /** (sndb/sndb01/020-info) .
@ -145,27 +223,28 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01020-info"); ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01020-info");
return mav.addObject("pageName", "sndb01020") return mav
.addObject("sggCd", req.getSggCd()) .addObject("pageName", "sndb01020")
.addObject("taskSeCd", req.getTaskSeCd()) .addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드 .addObject("wrngTrgtQuery", json ? req : toJson(req)) // Query
.addObject("vltnCd", req.getVltnCd()) // 위반 코드 .addObject("wrngTrgt", json ? wrngTrgts : toJson(wrngTrgts)) // 계고장 발송 대상 정보
.addObject("wrngTrgtDtl", json ? wrngTrgts : toJson(wrngTrgts)) // 계고장 발송 대상 정보
; ;
} }
/** . /** .
* @param sndng * @param req , sndng
* @return jsonView * @return jsonView
* <pre><code> { * <pre><code> {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
public ModelAndView createWarningSndng(Sndng sndng) { public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
boolean saved = false; 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; saved = true;
} else { } else {
saved = false; saved = false;
@ -173,7 +252,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** (sndb/sndb01/030-main) . /** (sndb/sndb01/030-main) .
@ -316,9 +395,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView createAdvanceNoticeSndng(Sndng sndng) { public ModelAndView createAdvanceNoticeSndng(Sndng sndng) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.createAdvntceSndng(sndng); String rtnMsg = sndngService.createAdvntceSndng(sndng);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -326,7 +405,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** (sndb/sndb01/070-main) . /** (sndb/sndb01/070-main) .
@ -443,7 +522,7 @@ public class Sndb01Controller extends ApplicationController {
* }</pre> * }</pre>
*/ */
public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) { public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) {
List<?> sndngDtls = sndngService.getSndngDtls(req); List<?> sndngDtls = sndngDtlService.getSndngDtls(req);
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -497,9 +576,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView createSending(Sndng sndng) { public ModelAndView createSending(Sndng sndng) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.createSndng(sndng); String rtnMsg = sndngService.createSndng(sndng);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -507,7 +586,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** . /** .
@ -519,9 +598,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView createSendingLink(Sndng sndng) { public ModelAndView createSendingLink(Sndng sndng) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.createSndngLink(sndng); String rtnMsg = sndngService.createSndngLink(sndng);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -529,7 +608,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** (sndb/sndb01/220-info) . /** (sndb/sndb01/220-info) .
@ -547,7 +626,7 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView("jsonView"); ModelAndView mav = new ModelAndView("jsonView");
return mav.addObject("pageName", "sndb01220") return mav.addObject("pageName", "sndb01220")
.addObject("retMessage", "이미 등록된 미배달 사유가 있습니다.") .addObject("rtnMsg", "이미 등록된 미배달 사유가 있습니다.")
; ;
} else { } else {
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -575,9 +654,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView createSendBack(SndngDtl sndngDtl) { public ModelAndView createSendBack(SndngDtl sndngDtl) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.createSndbk(sndngDtl); String rtnMsg = sndngService.createSndbk(sndngDtl);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -585,7 +664,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** . /** .
@ -597,9 +676,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView updateSendBack(SndngDtl sndngDtl) { public ModelAndView updateSendBack(SndngDtl sndngDtl) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.updateSndbk(sndngDtl); String rtnMsg = sndngService.updateSndbk(sndngDtl);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -607,7 +686,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** . /** .
@ -619,9 +698,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView deleteSendBack(SndngDtl sndngDtl) { public ModelAndView deleteSendBack(SndngDtl sndngDtl) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.deleteSndbk(sndngDtl); String rtnMsg = sndngService.deleteSndbk(sndngDtl);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -629,7 +708,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** (sndb/sndb01/230-main) . /** (sndb/sndb01/230-main) .
@ -745,9 +824,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView createServiceByPublicNotice(Svbtc svbtc) { public ModelAndView createServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.createSvbtc(svbtc); String rtnMsg = sndngService.createSvbtc(svbtc);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -755,7 +834,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** . /** .
@ -767,9 +846,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView updateServiceByPublicNotice(Svbtc svbtc) { public ModelAndView updateServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.updateSvbtc(svbtc); String rtnMsg = sndngService.updateSvbtc(svbtc);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -777,7 +856,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** ID . /** ID .
@ -790,9 +869,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView removeServiceByPublicNotice(Svbtc svbtc) { public ModelAndView removeServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.removeSvbtc(svbtc); String rtnMsg = sndngService.removeSvbtc(svbtc);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -800,7 +879,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** ID . /** ID .
@ -813,9 +892,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView removeServiceByPublicNoticeList(SndbQuery req) { public ModelAndView removeServiceByPublicNoticeList(SndbQuery req) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.removeSvbtcList(req); String rtnMsg = sndngService.removeSvbtcList(req);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -823,7 +902,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .addObject("saved", saved)
.addObject("retMessage", retMessage); .addObject("rtnMsg", rtnMsg);
} }
/** ID . /** ID .
@ -836,9 +915,9 @@ public class Sndb01Controller extends ApplicationController {
*/ */
public ModelAndView removeServiceByPublicNoticeEach(Svbtc svbtc) { public ModelAndView removeServiceByPublicNoticeEach(Svbtc svbtc) {
boolean saved = false; boolean saved = false;
String retMessage = sndngService.removeSvbtcEach(svbtc); String rtnMsg = sndngService.removeSvbtcEach(svbtc);
if (retMessage.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;
} else { } else {
saved = false; saved = false;
@ -846,7 +925,7 @@ public class Sndb01Controller extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved) .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.RcvmtQuery;
import cokr.xit.fims.rcvm.service.RcvmtService; import cokr.xit.fims.rcvm.service.RcvmtService;
import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.service.SndngDtlService;
import cokr.xit.fims.sndb.service.SndngService; import cokr.xit.fims.sndb.service.SndngService;
import cokr.xit.fims.sprt.CvlcptDscsnQuery; import cokr.xit.fims.sprt.CvlcptDscsnQuery;
import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.SprtQuery;
@ -78,6 +79,10 @@ public class Sprt02Controller extends ApplicationController {
@Resource(name = "sndngService") @Resource(name = "sndngService")
protected SndngService sndngService; protected SndngService sndngService;
/** 발송 상세 대장 서비스*/
@Resource(name = "sndngDtlService")
protected SndngDtlService sndngDtlService;
/** 부과 대장 서비스*/ /** 부과 대장 서비스*/
@Resource(name = "levyService") @Resource(name = "levyService")
protected LevyService levyService; protected LevyService levyService;
@ -249,7 +254,7 @@ public class Sprt02Controller extends ApplicationController {
exclQuery.setCallPurpose(req.getCallPurpose()); exclQuery.setCallPurpose(req.getCallPurpose());
} }
exclQuery.setCrdnId(req.getCrdnId()); exclQuery.setCrdnId(req.getCrdnId());
exclQuery.setDelYN(req.getDelYn()); exclQuery.setDelYN(req.getDelYN());
// 의견 제출(TB_OPNN_SBMSN) 대장 조회 // 의견 제출(TB_OPNN_SBMSN) 대장 조회
DataObject opnnSbmsn = opnnSbmsnService.getOpnnSbmsnInfo(exclQuery); DataObject opnnSbmsn = opnnSbmsnService.getOpnnSbmsnInfo(exclQuery);
@ -289,14 +294,14 @@ public class Sprt02Controller extends ApplicationController {
sndb01Query.setCallPurpose(req.getCallPurpose()); sndb01Query.setCallPurpose(req.getCallPurpose());
} }
sndb01Query.setCrdnId(req.getCrdnId()); sndb01Query.setCrdnId(req.getCrdnId());
sndb01Query.setDelYn(req.getDelYn()); sndb01Query.setDelYN(req.getDelYN());
sndb01Query.setOrderBy("SD.REG_DT, SD.SNDNG_DTL_ID DESC"); 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.setCrdnId(req.getCrdnId());
sndb01Query.setDelYn(req.getDelYn()); sndb01Query.setDelYN(req.getDelYN());
sndb01Query.setOrderBy("SV.REG_DT DESC, SV.SVBTC_ID DESC"); sndb01Query.setOrderBy("SV.REG_DT DESC, SV.SVBTC_ID DESC");
List<?> svbtc = sndngService.getSvbtcDtls(sndb01Query); List<?> svbtc = sndngService.getSvbtcDtls(sndb01Query);
@ -339,7 +344,7 @@ public class Sprt02Controller extends ApplicationController {
levyQuery.setCallPurpose(req.getCallPurpose()); levyQuery.setCallPurpose(req.getCallPurpose());
} }
levyQuery.setCrdnId(req.getCrdnId()); levyQuery.setCrdnId(req.getCrdnId());
levyQuery.setDelYN(req.getDelYn()); levyQuery.setDelYN(req.getDelYN());
levyQuery.setOrderBy("RDUCT_ID DESC"); // 정렬 levyQuery.setOrderBy("RDUCT_ID DESC"); // 정렬
DataObject rduct = rductService.getRductInfo(levyQuery); DataObject rduct = rductService.getRductInfo(levyQuery);
@ -353,7 +358,7 @@ public class Sprt02Controller extends ApplicationController {
exclQuery.setCallPurpose(req.getCallPurpose()); exclQuery.setCallPurpose(req.getCallPurpose());
} }
exclQuery.setCrdnId(req.getCrdnId()); exclQuery.setCrdnId(req.getCrdnId());
exclQuery.setDelYN(req.getDelYn()); exclQuery.setDelYN(req.getDelYN());
exclQuery.setOrderBy("LEVY_EXCL_ID DESC"); // 정렬 exclQuery.setOrderBy("LEVY_EXCL_ID DESC"); // 정렬
DataObject levyExcl = levyExclService.getLevyExclInfo(exclQuery); DataObject levyExcl = levyExclService.getLevyExclInfo(exclQuery);
@ -414,7 +419,7 @@ public class Sprt02Controller extends ApplicationController {
levyQuery.setCallPurpose(req.getCallPurpose()); levyQuery.setCallPurpose(req.getCallPurpose());
} }
levyQuery.setCrdnId(req.getCrdnId()); levyQuery.setCrdnId(req.getCrdnId());
levyQuery.setDelYN(req.getDelYn()); levyQuery.setDelYN(req.getDelYN());
levyQuery.setOrderBy("LEVY_ID DESC"); // 정렬 levyQuery.setOrderBy("LEVY_ID DESC"); // 정렬
DataObject levy = levyService.getLevyInfo(levyQuery); DataObject levy = levyService.getLevyInfo(levyQuery);
@ -448,7 +453,7 @@ public class Sprt02Controller extends ApplicationController {
// //
List<DataObject> rcvmt = rcvmtService.getRcvmts(new RcvmtQuery().setCallPurpose(req.getCallPurpose()) List<DataObject> rcvmt = rcvmtService.getRcvmts(new RcvmtQuery().setCallPurpose(req.getCallPurpose())
.setCrdnId(req.getCrdnId()) .setCrdnId(req.getCrdnId())
.setDelYN(req.getDelYn()) .setDelYN(req.getDelYN())
.setOrderBy("R.RCVMT_ID DESC")); .setOrderBy("R.RCVMT_ID DESC"));
boolean json = jsonResponse(); boolean json = jsonResponse();

@ -1,9 +1,12 @@
package cokr.xit.fims.task.web; package cokr.xit.fims.task.web;
import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@ -542,9 +545,9 @@ public class DpvController {
} }
@Override @Override
@RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSndng) @RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSendingList)
public ModelAndView createWarningSndng(Sndng sndng) { public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
return super.createWarningSndng(sndng); return super.createWarningSendingList(req, sndng);
} }
@Override @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 변경 // 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/createRductLevyList.do"); ${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) => { ${pageName}Control.save = (info) => {
if (!info) return; if (!info) return;
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
let create = (${pageName}CallPurpose == "create"); let create = (${pageName}CallPurpose == "create");
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
ajax.post({ ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create 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 type="button" class="btn btn-primary w-px-120" id="btnWrngTrgtInfo--${pageName}" title="발송대상 등록" onclick="fnWrngTrgtInfo${pageName}();">
발송대상 등록 발송대상 등록
</button> </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> </button>
</span> </span>
</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: 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: 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: 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_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: 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> <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: 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('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: 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: 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="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: 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: 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: 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: 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="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="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> <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}">{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_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}">{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_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_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</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}">{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_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</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="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-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-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-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="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="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> <td class="dpv text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PARKNG_PSBLTY_RSLT_NM}</td>
@ -242,19 +250,19 @@
</template> </template>
<template id="${infoPrefix}NotFound--${pageName}"> <template id="${infoPrefix}NotFound--${pageName}">
<tr class="bpv"> <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>
<tr class="dpv"> <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>
<tr class="eca"> <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>
<tr class="pvs"> <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>
<tr class="tpv"> <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> </tr>
</template> </template>
</table> </table>
@ -299,9 +307,6 @@
, dataGetter : obj => obj.wrngTrgtList , dataGetter : obj => obj.wrngTrgtList
, appendData : true , appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : { , formats : {
CVLCPT_RCPT_YMD : dateFormat CVLCPT_RCPT_YMD : dateFormat
, LEVY_EXCL_YMD : dateFormat , LEVY_EXCL_YMD : dateFormat
@ -317,7 +322,7 @@
**************************************************************************/ **************************************************************************/
// Dataset 변경 이벤트 // Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => { ${pageName}Control.onDatasetChange = obj => {
renderList${pageName}(); renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset list : ${pageName}Control.dataset
@ -328,7 +333,7 @@
, func : "${pageName}Control.load({index})" , func : "${pageName}Control.load({index})"
}); });
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트
@ -340,34 +345,41 @@
$("#tbody--${pageName}").setCurrentRow(key); $("#tbody--${pageName}").setCurrentRow(key);
}; };
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { // 계고장 발송 등록 dialog -> callback 추가
callControlName : "${pageName}Control" ${pageName}Control.getInfo = (params) => {
, crdnId : crdnId 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({ ajax.get({
url : ${pageName}Control.urls.getInfo url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
, data : params , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id : "wrngTrgtDtlDialog"
, title : "개별총정보" , title : dialogTitle
, content : resp , content : resp
, size : "xxl" , size : "xl"
, onClose : () => { refreshList${pageName}(); } // callback
}); });
} }
}); });
} }
/************************************************************************** /**************************************************************************
* * DataTables 이벤트
**************************************************************************/ **************************************************************************/
// DataTables에 click, dbclick 이벤트 // DataTables에 click, dbclick 이벤트
renderList${pageName} = () => { renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset; let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty; let empty = ${infoPrefix}List.empty;
let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val(); let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
@ -388,34 +400,88 @@
}); });
let trs = empty ? let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML] [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML] :
: ${infoPrefix}List.inStrings(foundTr.outerHTML ${infoPrefix}List.inStrings(
, (str, dataItem) => str foundTr.outerHTML,
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');") (str, dataItem) => str
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + 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); $("th input[type='checkbox']").prop("checked", false);
//보안모드 //보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked")); fn_securityModeToggle($("#securityMode--top").is(":checked"));
} }
// 계고장 발송 등록 dialog -> callback 추가 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
getWrngTrgtInfo${pageName} = (params) => { scrollDataList${pageName} = () => {
if (!params) return; ${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({ ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do") url : wctx.url("/user/user02/010/main.do")
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "wrngTrgtDtlDialog" id : "userDialog"
, title : ${pageName}Control.prefixName + " 정보" , title : "사용자 검색"
, content : resp , content : resp
, size : "xl" , size : "lg"
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback });
}
});
}
// 개별총정보 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; if (!params) return;
ajax.get({ 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 || {} , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "levyExclDialog" id : "levyExclDialog"
, title : "부과제외 정보" , title : "부과제외 정보"
, content : resp , content : resp
, size : "lg" , size : "md"
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback , 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} = () => { fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 화면 초기화 // 업무 구분 코드
$("#frmSearch--${pageName}")[0].reset(); 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} = () => { setEvent${pageName} = () => {
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용 // form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() { $("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() { $(this).on("input", function() {
@ -470,41 +630,48 @@
// DataTables width 변경 조정 // DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 // DataTables 스크롤 이벤트 생성
$("#table-responsive--${pageName}").scroll(function() { fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
let el = $(this); }
if (el.scrollTop() == 0) { // 화면 초기 설정
return; initForm${pageName} = () => {
} // 화면 초기화
if (!${pageName}Control.tableRenderComplete) { $("#frmSearch--${pageName}")[0].reset();
return;
}
let itemsCnt = ${pageName}Control.dataset._items.length; // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
let totCnt = ${pageName}Control.dataset.getValue("TOT_CNT"); $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
if (itemsCnt >= totCnt) { // 달력 초기화
return; initDatepicker("frmSearch--${pageName}");
}
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) { $("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 $("#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 설정
setForm${pageName} = (taskSeCd) => { setURL${pageName} = (taskSeCd) => {
// 업무 구분 코드 ${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); }
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. // 기본 데이터 설정
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { setFormData${pageName} = (taskSeCd) => {
$(this).prop("disabled", "true"); // ${pageName}Control 설정
}); // ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
${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 = []; let vltnIdCode = [];
@ -530,12 +697,6 @@
$("#schVltnId--${pageName}").append("<option value='" + vltnIdCode[index].code +"'>" + vltnIdCode[index].value + "</option>"); $("#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(); let clsForTask = taskSeCd.toLowerCase();
@ -556,103 +717,18 @@
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); $("#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 진입 * script 진입
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드 // 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked")); 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> </script>

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

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

@ -572,7 +572,7 @@
, crdnId : crdnId , crdnId : crdnId
, sggCd : sggCd , sggCd : sggCd
, taskSeCd : taskSeCd , taskSeCd : taskSeCd
, delYn : "N" , delYN : "N"
}; };
ajax.get({ ajax.get({
@ -720,7 +720,7 @@
, crdnId : crdnId , crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val() , sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val() , taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N" , delYN : "N"
}; };
ajax.get({ ajax.get({
@ -889,7 +889,7 @@
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드 , sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID") // 납부자 ID , rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID") // 납부자 ID
, delYn : "N" , delYN : "N"
}; };
dialog.alert({ dialog.alert({
@ -915,7 +915,7 @@
, rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID") // 납부자 ID , rtpyrId : ${pageName}Control.dataset.getValue("RTPYR_ID") // 납부자 ID
, vhrno : ${pageName}Control.dataset.getValue("VHRNO") // 차량번호 , vhrno : ${pageName}Control.dataset.getValue("VHRNO") // 차량번호
, rtpyrInptSeCd : "01" // 납부자 입력 구분 코드 , rtpyrInptSeCd : "01" // 납부자 입력 구분 코드
, delYn : "N" , delYN : "N"
}; };
updatePayer${pageName}(params); updatePayer${pageName}(params);
@ -1059,9 +1059,9 @@
// 이미지 정보를 파일 배열에 셋팅 // 이미지 정보를 파일 배열에 셋팅
existFileArr${pageName} = []; // 파일 배열 초기화 existFileArr${pageName} = []; // 파일 배열 초기화
var crdnPayerInfo = ${pageName}Control.getCurrent(); var crdnPayerInfo = ${pageName}Control.getCurrent();
if (crdnPayerInfo.fileList) { if (crdnPayerInfo.fileList) {
crdnPayerInfo.fileList.forEach(function(item) { crdnPayerInfo.fileList.forEach(function(item) {
item.status = ""; item.status = "";

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

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

@ -477,7 +477,7 @@
, sggCd : $("#sggCd--${pageNameMain}").val() , sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val() , taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, rtpyrId : $("#rtpyrId--${pageNameMain}").val() , rtpyrId : $("#rtpyrId--${pageNameMain}").val()
, delYn : "N" , delYN : "N"
}; };
ajax.get({ ajax.get({
@ -515,10 +515,9 @@
removeRduct${pageName} = (obj) => { removeRduct${pageName} = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = { let params = {
callPurpose : "remove" callPurpose : "remove"
, rductId : ${pageName}${pageDataName1}Control.dataset.getValue("RDUCT_ID") // 감경 ID , rductId : ${pageName}${pageDataName1}Control.dataset.getValue("RDUCT_ID") // 감경 ID
, delYn : "Y" // 삭제 여부 , delRsn : obj.reason // 삭제 사유
, delRsn : obj.reason // 삭제 사유
}; };
ajax.post({ ajax.post({

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

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

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

Loading…
Cancel
Save