1. 발송,반송 수정.

2. 기타 오류 수정.
3. 주석 수정.
main
jjh 5 months ago
parent f754c8c1b1
commit 966c5a6718

@ -48,7 +48,7 @@ public class EpostGdcc extends AbstractEntity {
private String lastUseDt;
/**
* IDs
* Ids
*/
private String[] gdccIds;

@ -126,11 +126,7 @@ public interface EpostRcptRegMapper extends AbstractMapper {
* </ul>
* @return
*/
int updatePostPrcsSttsCd(Map<String, Object> params);
default boolean updatePostPrcsSttsCd(EpostRcptReg epostRcptReg) {
return epostRcptReg != null && updatePostPrcsSttsCd(params().set("epostRcptReg", epostRcptReg)) == 1;
}
int updatePostPrcsSttsCd(EpostRcptReg epostRcptReg);
/** .
* @param params
@ -139,17 +135,6 @@ public interface EpostRcptRegMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteEpostRcptReg(Map<String, ?> params);
/** .
* @param epostRcptReg
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(EpostRcptReg epostRcptReg) {
return epostRcptReg != null && deleteEpostRcptReg(params().set("epostRcptReg", epostRcptReg)) == 1;
}
int deleteEpostRcptReg(EpostRcptReg epostRcptReg);
}

@ -176,33 +176,27 @@ public class EpostRcptRegBean extends AbstractBean {
*/
public String updatePostPrcsSttsCd(EpostRcptReg epostRcptReg) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
// 전자우편 접수 등록 정보의 우편 처리 상태 코드를 수정한다.
epostRcptReg.setPostPrcsSttsCd("02");
rtnScs = epostRcptRegMapper.updatePostPrcsSttsCd(epostRcptReg);
if (!rtnScs) {
rtnMsg = "전자우편 접수등록 정보 수정에 실패하였습니다.";
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
rtnNocs = epostRcptRegMapper.updatePostPrcsSttsCd(epostRcptReg);
if (rtnNocs != 1) {
throw new RuntimeException("전자우편 접수등록 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 정보의 발송 상태 코드를 수정한다.
Sndng sndng = new Sndng();
sndng.setSndngId(epostRcptReg.getSndngId()); // 발송 ID
sndng.setSndngSttsCd("02"); // 발송 상태 코드
sndng.setSndngId(epostRcptReg.getSndngId()); // 발송 ID
sndng.setSndngSttsCd("02"); // 발송 상태 코드
rtnScs = sndngMapper.updateSndngSttsCd(sndng);
if (!rtnScs) {
rtnMsg = "발송 대장 정보 수정에 실패하였습니다.";
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
rtnNocs = sndngMapper.updateSndngSttsCd(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("발송상태코드 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -213,20 +207,13 @@ public class EpostRcptRegBean extends AbstractBean {
* </ul>
*/
public String remove(EpostRcptReg epostRcptReg) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 전자우편 접수 등록 정보를 삭제한다.
rtnScs = epostRcptRegMapper.delete(epostRcptReg);
if (!rtnScs) {
rtnMsg = "전자우편 접수등록 정보 삭제에 실패하였습니다.";
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
int rtnNocs = epostRcptRegMapper.deleteEpostRcptReg(epostRcptReg);
if (rtnNocs < 1) {
throw new RuntimeException("전자우편 접수등록 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -61,7 +61,7 @@ public class Epst01Controller extends ApplicationController {
}
/** .
* @param epostRcptRegIDs
* @param epostRcptRegIds
* @return jsonView
* <pre><code> {
* "affected":

@ -247,7 +247,7 @@ public class Epst02Controller extends ApplicationController {
}
/** .
* @param epostGdccIDs
* @param epostGdccIds
* @return jsonView
* <pre><code> {
* "affected":

@ -158,7 +158,7 @@ public class LevyExclBean extends AbstractBean {
}
}
// 부과제외(TB_LEVY_EXCL) 대장을 등록 한다.
// 부과제외(TB_LEVY_EXCL) 대장을 등록한다.
rtnNocs = levyExclMapper.insertLevyExcl(levyExcl);
if (rtnNocs != 1) {
throw new RuntimeException("부과제외 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
@ -177,13 +177,13 @@ public class LevyExclBean extends AbstractBean {
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
if (levyExcl.getLevyExclSeCd().equals("1")) { // 비부과
newCrdnSttsCd = "81"; // 비부과(서손)
newCrdnSttsCd = "81"; // 비부과(서손)
} else if (levyExcl.getLevyExclSeCd().equals("2")) { // 계고
newCrdnSttsCd = "83"; // 계고
newCrdnSttsCd = "83"; // 계고
} else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소(전액감액)
newCrdnSttsCd = "80"; // 부과취소
newCrdnSttsCd = "80"; // 부과취소
}
// 단속상태이력(TB_CRDN_STTS_HSTRY)

@ -276,7 +276,7 @@ public class Excl01Controller extends ApplicationController {
if (levyExcl.getLevyExclIds() == null || levyExcl.getLevyExclIds().length < 1) {
rtnMsg = levyExclService.removeLevyExcl(levyExcl);
} else {
// 부과제외 IDs 만큼 반복..
// 부과제외 Ids 만큼 반복..
for (int iLoop = 0; iLoop < levyExcl.getLevyExclIds().length; iLoop++) {
levyExcl.setLevyExclId(levyExcl.getLevyExclIds()[iLoop]); // 부과제외 ID 설정

@ -411,7 +411,7 @@ public class Excl02Controller extends ApplicationController {
if (opnnSbmsn.getOpnnIds() == null || opnnSbmsn.getOpnnIds().length < 1) {
rtnMsg = opnnSbmsnService.removeOpnnSbmsn(opnnSbmsn);
} else {
// 의견제출 IDs 만큼 반복..
// 의견제출 Ids 만큼 반복..
for (int iLoop = 0; iLoop < opnnSbmsn.getOpnnIds().length; iLoop++) {
opnnSbmsn.setOpnnId(opnnSbmsn.getOpnnIds()[iLoop]); // 의견제출 ID 설정

@ -17,50 +17,50 @@ public class LevyQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
// ID
private String[] crdnIds; // 단속 IDs
private String crdnId; // 단속 ID
private String[] levyIds; // 부과 IDs
private String levyId; // 부과 ID
private String[] rductIds; // 감경 IDs
private String rductId; // 감경 ID
private String[] crdnIds; // 단속 Ids
private String crdnId; // 단속 ID
private String[] levyIds; // 부과 Ids
private String levyId; // 부과 ID
private String[] rductIds; // 감경 Ids
private String rductId; // 감경 ID
// 검색 조건
private String schFyr; // 회계연도
private String schLevyNoFrom; // 부과 번호 시작
private String schLevyNoTo; // 부과 번호 종료
private String schRductSeCd; // 감경 구분 코드
private String schLevyYmdFrom; // 부과 일자 시작
private String schLevyYmdTo; // 부과 일자 종료
private String schRductYmdFrom; // 감경 일자 시작
private String schRductYmdTo; // 감경 일자 종료
private String schRductRsnCd; // 감경 사유 코드
private String schCrdnYmdFrom; // 단속 일자 시작
private String schCrdnYmdTo; // 단속 일자 종료
private String schVhrno; // 차량번호
private String schCrdnSttsCd; // 단속 상태 코드
private String schVltnCd; // 위반 코드
private String schCvlcptRcptYmdFrom; // 민원 접수 일자 시작
private String schCvlcptRcptYmdTo; // 민원 접수 일자 종료
private String schCvlcptPrcsCmptnDtFrom; // 민원 처리 완료 일시 시작
private String schCvlcptPrcsCmptnDtTo; // 민원 처리 완료 일시 종료
private String schCvlcptPrcsPic; // 민원 처리 담당자
private String schRtpyrNo; // 납부자 번호
private String schRtpyrNm; // 납부자 명
private String schFyr; // 회계연도
private String schLevyNoFrom; // 부과 번호 시작
private String schLevyNoTo; // 부과 번호 종료
private String schRductSeCd; // 감경 구분 코드
private String schLevyYmdFrom; // 부과 일자 시작
private String schLevyYmdTo; // 부과 일자 종료
private String schRductYmdFrom; // 감경 일자 시작
private String schRductYmdTo; // 감경 일자 종료
private String schRductRsnCd; // 감경 사유 코드
private String schCrdnYmdFrom; // 단속 일자 시작
private String schCrdnYmdTo; // 단속 일자 종료
private String schVhrno; // 차량번호
private String schCrdnSttsCd; // 단속 상태 코드
private String schVltnCd; // 위반 코드
private String schCvlcptRcptYmdFrom; // 민원 접수 일자 시작
private String schCvlcptRcptYmdTo; // 민원 접수 일자 종료
private String schCvlcptPrcsCmptnDtFrom; // 민원 처리 완료 일시 시작
private String schCvlcptPrcsCmptnDtTo; // 민원 처리 완료 일시 종료
private String schCvlcptPrcsPic; // 민원 처리 담당자
private String schRtpyrNo; // 납부자 번호
private String schRtpyrNm; // 납부자 명
// 상세 검색 조건
// ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delRsn; // 삭제 사유
private String tnocs; // 총 건수
private String gramtFfnlgAmt; // 총 금액
private String gramtAdvntceAmt; // 총 감경부과 금액
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delRsn; // 삭제 사유
private String tnocs; // 총 건수
private String gramtFfnlgAmt; // 총 금액
private String gramtAdvntceAmt; // 총 감경부과 금액
// 부과 등록
private String fyr; // 회계연도
private String acntgSeCd; // 회계 구분 코드
private String txitmCd; // 세목 코드
private String operItemCd; // 운영 항목 코드
private String levyYmd; // 부과 일자
private String dudtYmd; // 납기 일자
private String crdnSttsCd; // 단속 상태 코드
private String fyr; // 회계연도
private String acntgSeCd; // 회계 구분 코드
private String txitmCd; // 세목 코드
private String operItemCd; // 운영 항목 코드
private String levyYmd; // 부과 일자
private String dudtYmd; // 납기 일자
private String crdnSttsCd; // 단속 상태 코드
// ID
public String[] getCrdnIds() {

@ -58,7 +58,7 @@ public class Rduct extends AbstractEntity {
private String delRsn;
/**
* IDs
* Ids
*/
private String[] rductIds;

@ -267,7 +267,7 @@ public class Levy02Controller extends ApplicationController {
if (rduct.getRductIds() == null || rduct.getRductIds().length < 1) {
rtnMsg = rductService.removeRduct(rduct);
} else {
// 부과제외 IDs 만큼 반복..
// 부과제외 Ids 만큼 반복..
for (int iLoop = 0; iLoop < rduct.getRductIds().length; iLoop++) {
rduct.setRductId(rduct.getRductIds()[iLoop]); // 감경 ID 설정

@ -18,9 +18,9 @@ public class NisIndivQuery extends QueryRequest {
private static final long serialVersionUID = 1L;
// ID
private String[] crdnIds; // 단속 IDs
private String[] crdnIds; // 단속 Ids
private String crdnId; // 단속 ID
private String sndngDtlId; // 발송 상세 ID
private String sndngDtlId; // 발송 상세 Id
// 연계 Key
private String linkTrgtCd;
private String linkMngKey;

@ -15,9 +15,7 @@ import cokr.xit.foundation.component.QueryRequest;
public class PayerQuery extends QueryRequest {
private static final long serialVersionUID = 1L;
/**
* IDs
*/
/** 납부자 Ids */
private String[] rtpyrIds;
/** 차량번호 */
private String vhrno;
@ -44,15 +42,15 @@ public class PayerQuery extends QueryRequest {
/** 호출 용도 */
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
/** IDs .
* @return IDs
/** Ids .
* @return Ids
*/
public String[] getRtpyrIds() {
return ifEmpty(rtpyrIds, () -> null);
}
/** IDs .
* @param rtpyrIds IDs
/** Ids .
* @param rtpyrIds Ids
* @return PayerQuery
*/
public PayerQuery setRtpyrIds(String... rtpyrIds) {

@ -20,7 +20,7 @@ public class RcvmtQuery extends CmmnQuery {
// ID
private String crdnId; // 단속 ID
private String levyId; // 부과 ID
private String[] rcvmtIds; // 수납 IDs
private String[] rcvmtIds; // 수납 Ids
private String rcvmtId; // 수납 ID
// 검색 조건
private String schAcntgYmdFrom; // 수납(TB_RCVMT)_회계 일자 시작

@ -17,9 +17,9 @@ public class RdcamtQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
// ID
private String[] rdcamtIDs; // 감액 IDs
private String[] rdcamtIds; // 감액 Ids
private String rdcamtId; // 감액 ID
private String[] levyIDs; // 부과 IDs
private String[] levyIds; // 부과 Ids
private String levyId; // 부과 ID
// 검색 조건
@ -34,12 +34,12 @@ public class RdcamtQuery extends CmmnQuery {
private String delRsn; // 삭제 사유
public String[] getRdcamtIDs() {
return ifEmpty(rdcamtIDs, () -> null);
public String[] getRdcamtIds() {
return ifEmpty(rdcamtIds, () -> null);
}
public <T extends RdcamtQuery> T setRdcamtIDs(String... rdcamtIDs) {
this.rdcamtIDs = rdcamtIDs;
public <T extends RdcamtQuery> T setRdcamtIds(String... rdcamtIds) {
this.rdcamtIds = rdcamtIds;
return self();
}
@ -52,12 +52,12 @@ public class RdcamtQuery extends CmmnQuery {
return self();
}
public String[] getLevyIDs() {
return ifEmpty(levyIDs, () -> null);
public String[] getLevyIds() {
return ifEmpty(levyIds, () -> null);
}
public <T extends RdcamtQuery> T setLevyIDs(String... levyIDs) {
this.levyIDs = levyIDs;
public <T extends RdcamtQuery> T setLevyIds(String... levyIds) {
this.levyIds = levyIds;
return self();
}

@ -202,7 +202,7 @@ public class Rdca01Controller extends ApplicationController {
}
/** .
* @param rdcamtIDs
* @param rdcamtIds
* @return jsonView
* <pre><code> {
* "affected":

@ -17,24 +17,26 @@ public class SndbQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
// ID
private String[] crdnIds; // 단속 IDs
private String[] crdnIds; // 단속 Ids
private String crdnId; // 단속 ID
private String[] levyIds; // 부과 IDs
private String[] levyIds; // 부과 Ids
private String levyId; // 부과 ID
private String[] sndngIds; // 발송 IDs
private String[] sndngIds; // 발송 Ids
private String sndngId; // 발송 ID
private String[] sndngDtlIds; // 발송 상세 IDs
private String[] sndngDtlIds; // 발송 상세 Ids
private String sndngDtlId; // 발송 상세 ID
private String[] svbtcIds; // 공시송달 IDs
private String[] svbtcIds; // 공시송달 Ids
private String svbtcId; // 공시송달 ID
// 검색 조건
private String schLevyExclYmdFrom; // 부과제외_부과제외 일자 시작
private String schLevyExclYmdTo; // 부과제외_부과제외 일자 종료
private String schLevyExclSeCd; // 부과제외_부과제외 구분 코드
private String schLevyExclRsnCd; // 부과제외_부과제외 사유 코드
private String schVltnCd; // 위반 코드
private String schCrdnYmdFrom; // 단속(TB_CRDN)_단속 일자 시작
private String schCrdnYmdTo; // 단속(TB_CRDN)_단속 일자 종료
private String schVhrno; // 단속(TB_CRDN)_차량번호
private String schRtpyrNo; // 납부자(TB_PAYER)_납부자 번호
private String schRtpyrNm; // 납부자(TB_PAYER)_납부자 명
private String schSndngYmdFrom; // 발송(TB_SNDNG)_발송 일자 시작
private String schSndngYmdTo; // 발송(TB_SNDNG)_발송 일자 종료
@ -82,7 +84,7 @@ public class SndbQuery extends CmmnQuery {
return ifEmpty(crdnIds, () -> null);
}
public <T extends SndbQuery> T setCrdnIDs(String... crdnIds) {
public <T extends SndbQuery> T setCrdnIds(String... crdnIds) {
this.crdnIds = crdnIds;
return self();
}
@ -196,6 +198,15 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public String getSchLevyExclRsnCd() {
return ifEmpty(schLevyExclRsnCd, () -> null);
}
public <T extends SndbQuery> T setSchLevyExclRsnCd(String schLevyExclRsnCd) {
this.schLevyExclRsnCd = schLevyExclRsnCd;
return self();
}
public String getSchVltnCd() {
return ifEmpty(schVltnCd, () -> null);
}
@ -232,6 +243,15 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public String getSchRtpyrNo() {
return ifEmpty(schRtpyrNo, () -> null);
}
public <T extends SndbQuery> T setSchRtpyrNo(String schRtpyrNo) {
this.schRtpyrNo = schRtpyrNo;
return self();
}
public String getSchRtpyrNm() {
return ifEmpty(schRtpyrNm, () -> null);
}

@ -133,17 +133,17 @@ public class Sndng extends AbstractEntity {
private String delRsn;
/**
* IDs
* Ids
*/
private String[] sndngIds;
/**
* IDs
* Ids
*/
private String[] crdnIds;
/**
* IDs
* Ids
*/
private String[] sndngDtlIds;

@ -444,7 +444,7 @@ public class SndngDtl extends AbstractEntity {
// 추가 /////////////////////////////////////////////////////////////////////
/**
* IDs
* Ids
*/
private String[] sndngDtlIds;

@ -64,12 +64,12 @@ public class Svbtc extends AbstractEntity {
// 추가 /////////////////////////////////////////////////////////////////////
/**
* IDs
* Ids
*/
private String[] svbtcIds;
/**
* IDs
* Ids
*/
private String[] sndngDtlIds;

@ -1,15 +1,14 @@
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.crdn.Crdn;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.SndngDtl;
/** DAO
*
@ -36,8 +35,12 @@ public interface SndngDtlMapper extends AbstractMapper {
*/
List<DataObject> selectSndngDtls(SndbQuery req);
/** .
* @param req
* @return
*/
default DataObject selectSndngDtlInfo(SndbQuery req) {
// 삭제여부
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
@ -64,18 +67,7 @@ public interface SndngDtlMapper extends AbstractMapper {
* </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;
}
int insertSndngDtl(SndngDtl sndngDtl);
/** .
* @param params
@ -84,90 +76,52 @@ public interface SndngDtlMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateSndngDtl(Map<String, Object> params);
int updateSndngDtl(SndngDtl sndngDtl);
/** .
* @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);
int deleteSndngDtl(SndngDtl sndngDtl);
default boolean updateSndngDtlSttsCd(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlSttsCd(params().set("sndngDtl", sndngDtl)) == 1;
}
/** (A03) .
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlNxrpA03(Map<String, Object> params);
default boolean updateSndngDtlNxrpA03(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlNxrpA03(params().set("sndngDtl", sndngDtl)) == 1;
}
int updateSndngDtlSttsCd(SndngDtl sndngDtl);
/** .
/** (A03) .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlRcvmtCd(Map<String, Object> params);
default boolean updateSndngDtlRcvmtCd(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlRcvmtCd(params().set("sndngDtl", sndngDtl)) == 1;
}
int updateSndngDtlNxrpA03(SndngDtl sndngDtl);
/** .
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlEPost(Map<String, Object> params);
int updateSndngDtlRcvmtCd(SndngDtl sndngDtl);
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;
}
int updateSndngDtlEPost(SndngDtl sndngDtl);
/** ID , .
* @param crdnId ID
@ -182,11 +136,7 @@ public interface SndngDtlMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateCrdnNxrpAcbKey(Map<String, Object> params);
default boolean updateCrdnNxrpAcbKey(Crdn crdn) {
return crdn != null && updateCrdnNxrpAcbKey(params().set("crdn", crdn)) == 1;
}
int updateCrdnNxrpAcbKey(Crdn crdn);
/** .
* @param req
@ -229,31 +179,19 @@ public interface SndngDtlMapper extends AbstractMapper {
* @param sndngDtl
* @return
*/
int createSndbk(Map<String, Object> params);
default boolean createSndbk(SndngDtl sndngDtl) {
return sndngDtl != null && createSndbk(params().set("sndngDtl", sndngDtl)) == 1;
}
int createSndbk(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
*/
int updateSndbk(Map<String, Object> params);
default boolean updateSndbk(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndbk(params().set("sndngDtl", sndngDtl)) == 1;
}
int updateSndbk(SndngDtl sndngDtl);
/** .
* @param sndngDtl
* @return
*/
int deleteSndbk(Map<String, Object> params);
default boolean deleteSndbk(SndngDtl sndngDtl) {
return sndngDtl != null && deleteSndbk(params().set("sndngDtl", sndngDtl)) == 1;
}
int deleteSndbk(SndngDtl sndngDtl);
/** ID
* @param svbtcId ID
@ -268,11 +206,7 @@ public interface SndngDtlMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateSndngDtlSvbtc(Map<String, Object> params);
default boolean updateSndngDtlSvbtc(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlSvbtc(params().set("sndngDtl", sndngDtl)) == 1;
}
int updateSndngDtlSvbtc(SndngDtl sndngDtl);
/** .
* @param params
@ -281,17 +215,6 @@ public interface SndngDtlMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteSndngDtlSvbtc(Map<String, ?> params);
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean deleteSndngDtlSvbtc(SndngDtl sndngDtl) {
return sndngDtl != null && deleteSndngDtlSvbtc(params().set("sndngDtl", sndngDtl)) >= 1;
}
int deleteSndngDtlSvbtc(SndngDtl sndngDtl);
}

@ -1,14 +1,13 @@
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.Sndng;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
/** DAO
*
@ -144,18 +143,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertSndng(Map<String, Object> params);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(Sndng sndng) {
return sndng != null && insertSndng(params().set("sndng", sndng)) == 1;
}
int insertSndng(Sndng sndng);
/** .
* @param params
@ -164,18 +152,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateSndng(Map<String, Object> params);
/** .
* @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;
}
int updateSndng(Sndng sndng);
/** .
* @param params
@ -184,18 +161,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteSndng(Map<String, ?> params);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(Sndng sndng) {
return sndng != null && deleteSndng(params().set("sndng", sndng)) == 1;
}
int deleteSndng(Sndng sndng);
/** .
* @param params
@ -204,11 +170,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateSndngSttsCd(Map<String, Object> params);
default boolean updateSndngSttsCd(Sndng sndng) {
return sndng != null && updateSndngSttsCd(params().set("sndng", sndng)) == 1;
}
int updateSndngSttsCd(Sndng sndng);
/** .
* @param params
@ -217,10 +179,6 @@ public interface SndngMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateEPostSndng(Map<String, Object> params);
default boolean updateEPostSndng(Sndng sndng) {
return sndng != null && updateEPostSndng(params().set("sndng", sndng)) == 1;
}
int updateEPostSndng(Sndng sndng);
}

@ -79,18 +79,7 @@ public interface SvbtcMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertSvbtc(Map<String, Object> params);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(Svbtc svbtc) {
return svbtc != null && insertSvbtc(params().set("svbtc", svbtc)) == 1;
}
int insertSvbtc(Svbtc svbtc);
/** .
* @param params
@ -99,18 +88,7 @@ public interface SvbtcMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateSvbtc(Map<String, Object> params);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(Svbtc svbtc) {
return svbtc != null && updateSvbtc(params().set("svbtc", svbtc)) == 1;
}
int updateSvbtc(Svbtc svbtc);
/** .
* @param params
@ -119,17 +97,6 @@ public interface SvbtcMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteSvbtc(Map<String, ?> params);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(Svbtc svbtc) {
return svbtc != null && deleteSvbtc(params().set("svbtc", svbtc)) == 1;
}
int deleteSvbtc(Svbtc svbtc);
}

@ -4,9 +4,9 @@ import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.SndbQuery;
/** .
*
@ -38,33 +38,6 @@ public interface SndngDtlService {
*/
List<DataObject> getSndngTrgtDtlIds(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);
/** .
* @param req
* @return
@ -77,6 +50,12 @@ public interface SndngDtlService {
*/
String getNxrpIndivA03List(SndngDtl sndngDtl);
/** .
* @param req
* @return
*/
List<DataObject> getSndbkList(SndbQuery req);
/** ID .<br />
* @param sndngDtlId ID
* @return
@ -119,29 +98,6 @@ public interface SndngDtlService {
*/
String removeSndbk(SndngDtl sndngDtl);
/** .
* @param req
* @return
*/
List<DataObject> getSndbkList(SndbQuery req);
/** .
* @param svbtc
* @return
@ -151,6 +107,4 @@ public interface SndngDtlService {
*/
String removeSvbtcEach(Svbtc svbtc);
}

@ -120,24 +120,6 @@ public interface SndngService {
*/
String createSndngLink(Sndng sndng);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean updateSndng(Sndng sndng);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean updateSndngSttsCd(Sndng sndng);
/** .
* @param sndng
* @return
@ -147,17 +129,4 @@ public interface SndngService {
*/
String removeSndng(Sndng sndng);
}

@ -48,7 +48,6 @@ public interface SvbtcService {
*/
List<DataObject> getSvbtcDtls(SndbQuery req);
/** .
* @param svbtc
* @return
@ -58,15 +57,6 @@ public interface SvbtcService {
*/
String createSvbtc(SndbQuery req, Svbtc svbtc);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String create(Svbtc svbtc);
/** .
* @param svbtc
* @return
@ -74,7 +64,7 @@ public interface SvbtcService {
* <li> false</li>
* </ul>
*/
String update(Svbtc svbtc);
String updateSvbtc(Svbtc svbtc);
/** .
* @param svbtc

@ -128,9 +128,10 @@ public class SndngBean extends AbstractBean {
*/
public String createWrngSndngList(SndbQuery req, Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속 Ids로 계도장 발송 대상 정보 조회
List<DataObject> trgtList = sndngMapper.selectWrngTrgtCrdnIds(req);
// 조회 건수 확인
@ -147,46 +148,38 @@ public class SndngBean extends AbstractBean {
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 발송(TB_SNDNG) 대장에 등록한다.
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(trgtList.get(0).string("VLTN_ID")); // 위반 ID
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setSndngEndYmd(null); // 발송 종료 일자
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(trgtList.get(0).string("VLTN_ID")); // 위반 ID
sndng.setSndngEndYmd(null); // 발송 종료 일자
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYn() == null) {
sndng.setResndYn("N"); // 재발송 여부
sndng.setResndYn("N"); // 재발송 여부
}
if (sndng.getDelYn() == null) {
sndng.setDelYn("N"); // 삭제 여부
sndng.setDelYn("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
// 발송(TB_SNDNG) 대장을 등록한다.
rtnNocs = sndngMapper.insertSndng(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("계도장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세(TB_SNDNG_DTL) 대장에 등록한다.
// 발송 상세 대장을 등록한다.
for (int iLoop = 0; iLoop < trgtList.size(); iLoop++) {
rtnMsg = createWrngSndngDtl(sndng, trgtList.get(iLoop).string("CRDN_ID"));
// 메시지 확인
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("계도장 발송 등록 작업중 발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -198,29 +191,28 @@ public class SndngBean extends AbstractBean {
*/
public String createWrngSndngDtl(Sndng sndng, String crdnId) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // 처리 결과 여부
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속, 납부자 대장을 조회 한다.
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId);
if (crdnPayerInfo == null) {
throw new RuntimeException("<p>계도장 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다.</p>"
+ "<p>"
+ "단속 ID : " + crdnId
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다."
+ "<p>" + "단속 ID : " + crdnId + "</p>";
return rtnMsg;
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("<p>계도장 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다.</p>"
+ "<p>"
+ "단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다."
+ "<p>" + "단속ID : " + crdnId
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>";
return rtnMsg;
}
// 발송 상세(TB_SNDNG_DTL)
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
@ -245,15 +237,15 @@ public class SndngBean extends AbstractBean {
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setDelYn("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
// 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 코드를 수정한다.
if (crdnPayerInfo.string("CRDN_STTS_CD").equals("83")) {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT"));
@ -267,9 +259,7 @@ public class SndngBean extends AbstractBean {
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -302,6 +292,7 @@ public class SndngBean extends AbstractBean {
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("CRDN_YMD_TM");
}
@ -318,9 +309,10 @@ public class SndngBean extends AbstractBean {
*/
public String createAdvntceSndngList(SndbQuery req, Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
// 단속 Ids로 사전통지 발송 대상 정보 조회
List<DataObject> advntceTrgtList = sndngMapper.selectAdvntceTrgtCrdnIds(req);
// 조회 건수 확인
@ -333,31 +325,29 @@ public class SndngBean extends AbstractBean {
return rtnMsg;
}
// 사용자 정보
// 사용자 정보를 조회한다.
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 발송 대장에 등록한다.
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYn() == null) {
sndng.setResndYn("N"); // 재발송 여부
sndng.setResndYn("N"); // 재발송 여부
}
if (sndng.getDelYn() == null) {
sndng.setDelYn("N"); // 삭제 여부
sndng.setDelYn("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송(TB_SNDNG) 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
// 발송(TB_SNDNG) 대장을 등록한다.
rtnNocs = sndngMapper.insertSndng(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("사전통지 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세 대장에 등록한다.
@ -365,13 +355,11 @@ public class SndngBean extends AbstractBean {
rtnMsg = createAdvntceSndngDtl(sndng, advntceTrgtList.get(iLoop).string("CRDN_ID"));
// 메시지 확인
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("사전통지 발송 등록 작업중 발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -383,63 +371,62 @@ public class SndngBean extends AbstractBean {
*/
public String createAdvntceSndngDtl(Sndng sndng, String crdnId) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // 처리 결과 여부
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
// 단속, 납부자 대장을 조회 한다.
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId);
if (crdnPayerInfo == null) {
throw new RuntimeException("<p>사전통지 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다."
+ "<p>" + "단속 ID : " + crdnId + "</p>";
return rtnMsg;
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("<p>사전통지 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다."
+ "<p>" + "단속ID : " + crdnId
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>";
return rtnMsg;
}
if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) {
// 부과 가산금 확인
if (crdnPayerInfo.number("LEVY_ADAMT").intValue() != 0) {
throw new RuntimeException("<p>발송상세 등록 작업중 부과 가산금액이 0원이 아닙니다.</p>"
+ "<p>단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 부과 가산금액이 0원이 아닙니다."
+ "<p>" + "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>";
return rtnMsg;
}
// 사전 감경금액과 부과 본세금액 확인
if (crdnPayerInfo.number("ADVNTCE_AMT").intValue() != crdnPayerInfo.number("LEVY_PCPTAX").intValue()) {
throw new RuntimeException("<p>발송상세 등록 작업중 사전 감경금액과 부과 본세금액이 다릅니다.</p>"
+ "<p>단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "<br />사전 감경금액 : " + crdnPayerInfo.string("ADVNTCE_AMT")
+ "<br />부과 본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 사전 감경금액과 부과 본세금액이 다릅니다."
+ "<p>" + "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "<br>" + "사전 감경금액 : " + crdnPayerInfo.string("ADVNTCE_AMT")
+ "<br>" + "부과 본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX")
+ "</p>";
return rtnMsg;
}
// 부과 본세와 합계 금액이 같은지 확인
if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("SUM_AMT").intValue()) {
throw new RuntimeException("<p>발송상세 등록 작업중 본세금액과 합계금액이 다릅니다.</p>"
+ "<p>단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "<br />본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX")
+ "<br />합계금액 : " + crdnPayerInfo.string("SUM_AMT")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 본세금액과 합계금액이 다릅니다."
+ "<p>" + "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "<br>" + "본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX")
+ "<br>" + "합계금액 : " + crdnPayerInfo.string("SUM_AMT")
+ "</p>";
return rtnMsg;
}
// 부과일자, 최초납기일자, 납기일자를 변경한다.
Levy levy = new Levy();
levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
@ -454,7 +441,7 @@ public class SndngBean extends AbstractBean {
}
}
// 발송상세(TB_SNDNG_DTL) 등록
// 발송 상세(TB_SNDNG_DTL)
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
@ -533,8 +520,9 @@ public class SndngBean extends AbstractBean {
sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
sndngDtl.setDelYn("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
// 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -569,9 +557,7 @@ public class SndngBean extends AbstractBean {
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -604,6 +590,7 @@ public class SndngBean extends AbstractBean {
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("CRDN_YMD_TM");
}
@ -620,9 +607,10 @@ public class SndngBean extends AbstractBean {
*/
public String createNhtSndngList(SndbQuery req, Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속 Ids로 고지서 발송 대상 정보 조회
List<DataObject> nhtTrgtList = sndngMapper.selectNhtTrgtCrdnIds(req);
// 조회 건수 확인
@ -630,24 +618,22 @@ public class SndngBean extends AbstractBean {
rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다.";
return rtnMsg;
}
// if (sndng.getTnocs() != nhtTrgtList.size()) {
// rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
// return rtnMsg;
// }
if (sndng.getTnocs() != nhtTrgtList.size()) {
rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
return rtnMsg;
}
// 사용자 정보
// 사용자 정보를 조회한다.
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 발송 대장에 등록한다.
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
// if (sndng.getTnocs() == 1) {
// sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
// } else {
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
// }
}
if (sndng.getResndYn() == null) {
sndng.setResndYn("N"); // 재발송 여부
}
@ -656,10 +642,10 @@ public class SndngBean extends AbstractBean {
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송(TB_SNDNG) 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
// 발송(TB_SNDNG) 대장을 등록한다.
rtnNocs = sndngMapper.insertSndng(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("고지서 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세 대장에 등록한다.
@ -667,13 +653,11 @@ public class SndngBean extends AbstractBean {
rtnMsg = createNhtSndngDtl(sndng, nhtTrgtList.get(iLoop).string("CRDN_ID"));
// 메시지 확인
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("고지서 발송 등록 작업중 발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -685,114 +669,112 @@ public class SndngBean extends AbstractBean {
*/
public String createNhtSndngDtl(Sndng sndng, String crdnId) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속, 납부자 대장을 조회 한다.
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId);
if (crdnPayerInfo == null) {
throw new RuntimeException("<p>고지서 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다."
+ "<p>" + "단속 ID : " + crdnId + "</p>";
return rtnMsg;
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("<p>고지서 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다."
+ "<p>" + "단속 ID : " + crdnId
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>";
return rtnMsg;
}
if (crdnPayerInfo.string("LEVY_ID").equals("")) {
throw new RuntimeException("<p>고지서 발송상세 등록 작업중 부과 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
rtnMsg = "[F] 발송상세 등록 작업중 부과 정보가 확인되지 않았습니다."
+ "<p>" + "단속 ID : " + crdnId
+ "<br>" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br>" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>";
return rtnMsg;
}
// 발송상세(TB_SNDNG_DTL) 등록
// 발송 상세(TB_SNDNG_DTL)
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자
sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세
sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12
sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13
sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14
sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15
sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16
sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17
sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18
sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19
sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20
sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
sndngDtl.setDelYn("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자
sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세
sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12
sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13
sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14
sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15
sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16
sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17
sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18
sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19
sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20
sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
sndngDtl.setDelYn("N"); // 삭제 여부
// 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -837,17 +819,6 @@ public class SndngBean extends AbstractBean {
return sndngMapper.selectSndngs(req);
}
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSndng(Sndng sndng) {
return sndngMapper.update(sndng);
}
/** .
* @param sndng
* @return
@ -856,30 +827,13 @@ public class SndngBean extends AbstractBean {
* </ul>
*/
public String removeSndng(Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
// 발송(TB_SNDNG) 대장을 삭제 한다.
rtnScs = sndngMapper.delete(sndng);
if (!rtnScs) {
throw new RuntimeException("발송 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
int rtnNocs = sndngMapper.deleteSndng(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("발송 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSndngSttsCd(Sndng sndng) {
return sndngMapper.updateSndngSttsCd(sndng);
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -891,8 +845,9 @@ public class SndngBean extends AbstractBean {
*/
public String createEPost(Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
String ctpvCode = ""; // 시도 코드
String sealCd3 = ""; // 내용문 상세 종류 3번째(마지막) 자리
@ -1042,7 +997,7 @@ public class SndngBean extends AbstractBean {
// 4. 위반 정보를 조회한다.
VltnQuery vltnQuery = new VltnQuery();
if (sndngInfo.string("VLTN_ID").equals("")) { // 위반 ID가 없다면..
if (sndngInfo.string("VLTN_ID").equals("")) { // 위반 ID가 없다면..
vltnQuery.setSggCd(sndngInfo.string("SGG_CD"));
vltnQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD"));
vltnQuery.setVltnCd("01");
@ -1060,13 +1015,13 @@ public class SndngBean extends AbstractBean {
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) {
sealCd3 = "E"; // E:과태료부과계도장
} else if (sndngInfo.string("TASK_SE_CD").equals("DPV")) { // 장애인전용
} else if (sndngInfo.string("TASK_SE_CD").equals("DPV")) { // 장애인전용
if (sndngInfo.string("SNDNG_SE_CD").equals("02")) {
sealCd3 = "2"; // 2:장애인주차구역사전통보
} else {
sealCd3 = "7"; // 7:장애인주차구역고지서
}
} else if (sndngInfo.string("TASK_SE_CD").equals("ECA")) { // 전기차주차
} else if (sndngInfo.string("TASK_SE_CD").equals("ECA")) { // 전기차주차
if (sndngInfo.string("SNDNG_SE_CD").equals("02")) {
sealCd3 = "L"; // L:전기차충전구역과태료사전통지서
} else {
@ -1132,7 +1087,7 @@ public class SndngBean extends AbstractBean {
epostRcptReg.setRecevCnt(sndngInfo.number("TNOCS").intValue()); // 수취인 수 -> 건수 확인 필요하다. /////////////////////////////
epostRcptReg.setEnvCd("003"); // 봉투 종류 - 접착식
if (ctpvCode.equals("11")) { // 서울특별시
if (ctpvCode.equals("11")) { // 서울특별시
epostRcptReg.setColorYn("Y");
epostRcptReg.setMailCnt(2);
@ -1142,7 +1097,7 @@ public class SndngBean extends AbstractBean {
epostRcptReg.setFlexCd("Y");
}
} else {
if (sndngInfo.string("SGG_CD").equals("44200")) { // 아산시청
if (sndngInfo.string("SGG_CD").equals("44200")) { // 아산시청
if (sndng.getSndngSeCd().equals("02")) { // 사전통지는 컬러로..
epostRcptReg.setColorYn("Y");
} else {
@ -1204,39 +1159,38 @@ public class SndngBean extends AbstractBean {
}
// 7. 발송 내역을 수정한다.
Sndng mdfcnSndng = new Sndng();
mdfcnSndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키
mdfcnSndng.setDivKb(epostRcptReg.getDivKb()); // 취급 구분
// mdfcnSndng.setEpostNoticeId(); // 전자우편 안내문 ID
mdfcnSndng.setSndngSttsCd("01"); // 발송 상태 코드(FIM049) - 01 발송 대기
mdfcnSndng.setSndngId(sndng.getSndngId()); // 발송 ID
rtnScs = sndngMapper.updateEPostSndng(mdfcnSndng); // 전자우편 발송 내역 수정
if (!rtnScs) {
Sndng updtSndng = new Sndng();
updtSndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키
updtSndng.setDivKb(epostRcptReg.getDivKb()); // 취급 구분
// updtSndng.setEpostNoticeId(); // 전자우편 안내문 ID
updtSndng.setSndngSttsCd("01"); // 발송 상태 코드(FIM049) - 01 발송 대기
updtSndng.setSndngId(sndng.getSndngId()); // 발송 ID
rtnNocs = sndngMapper.updateEPostSndng(updtSndng); // 전자우편 발송 내역 수정
if (rtnNocs != 1) {
throw new RuntimeException("우편통합 발송 작업중 발송 내역 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 8. 전자우편 접수 상세 내역을 등록한다.
String infoSndngSeNm = ""; // 약식 발송 구분 명
String infoSndngSeNm = ""; // 약식 발송 구분 명
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계도
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계도
infoSndngSeNm = "계도";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지서
} else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지서
infoSndngSeNm = "사전";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("03")) { // 부과고지서
} else if (sndngInfo.string("SNDNG_SE_CD").equals("03")) { // 부과고지서
infoSndngSeNm = "부과";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("04")) { // 독촉고지서
} else if (sndngInfo.string("SNDNG_SE_CD").equals("04")) { // 독촉고지서
infoSndngSeNm = "독촉";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("05")) { // 압류예고통지서
} else if (sndngInfo.string("SNDNG_SE_CD").equals("05")) { // 압류예고통지서
infoSndngSeNm = "예고";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("06")) { // 압류통지
} else if (sndngInfo.string("SNDNG_SE_CD").equals("06")) { // 압류통지
infoSndngSeNm = "압류";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("07")) { // 사전통지서(개별)
} else if (sndngInfo.string("SNDNG_SE_CD").equals("07")) { // 사전통지서(개별)
infoSndngSeNm = "사전";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("08")) { // 체납고지서(개별)
} else if (sndngInfo.string("SNDNG_SE_CD").equals("08")) { // 체납고지서(개별)
infoSndngSeNm = "체납";
} else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납고지서
} else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납고지서
infoSndngSeNm = "체납";
}
@ -1254,17 +1208,17 @@ public class SndngBean extends AbstractBean {
recevDocCd4 = "[" + "시세외" + "]" + sndngInfo.string("TXITM_NM"); // 문서종류4
recevDocCd5 = "영수필통지서"; // 문서종류5
} else {
recevDocCd1 = ""; // 문서종류1
recevDocCd2 = ""; // 문서종류2
recevDocCd3 = ""; // 문서종류3
recevDocCd4 = ""; // 문서종류4
recevDocCd5 = "영수필통지서"; // 문서종류5
recevDocCd1 = ""; // 문서종류1
recevDocCd2 = ""; // 문서종류2
recevDocCd3 = ""; // 문서종류3
recevDocCd4 = ""; // 문서종류4
recevDocCd5 = "영수필통지서"; // 문서종류5
}
// 과목명
String recevSubj1 = ""; // 과목명1
String recevSubj2 = ""; // 과목명2
String recevSubj3 = ""; // 과목명3
String recevSubj1 = ""; // 과목명1
String recevSubj2 = ""; // 과목명2
String recevSubj3 = ""; // 과목명3
recevSubj1 = "과태료";
if (sndngInfo.string("SNDNG_SE_CD").equals("01") || sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 계도, 사전통지서
@ -1312,41 +1266,41 @@ public class SndngBean extends AbstractBean {
}
// 금액
int pcptax = 0; // 본세
int adamt = 0; // 가산금
int sumAmt = 0; // 합계 금액
int afterPcptax = 0; // 납기후 본세
int afterAdamt = 0; // 납기후 가산금
int afterSumAmt = 0; // 납기후 합계 금액
int pcptax = 0; // 본세
int adamt = 0; // 가산금
int sumAmt = 0; // 합계 금액
int afterPcptax = 0; // 납기후 본세
int afterAdamt = 0; // 납기후 가산금
int afterSumAmt = 0; // 납기후 합계 금액
// 계도장에는 최초 과태료 금액을 출력한다.
if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) {
pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액
adamt = 0; // 가산금 = 0
sumAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액
afterPcptax = 0; // 납기후 본세
afterAdamt = 0; // 납기후 가산금
afterSumAmt = 0; // 납기후 합계 금액
pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액
adamt = 0; // 가산금 = 0
sumAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액
afterPcptax = 0; // 납기후 본세
afterAdamt = 0; // 납기후 가산금
afterSumAmt = 0; // 납기후 합계 금액
} else {
pcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 본세
adamt = sndngDtlInfo.number("ADAMT").intValue(); // 가산금
sumAmt = sndngDtlInfo.number("SUM_AMT").intValue(); // 합계 금액
pcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 본세
adamt = sndngDtlInfo.number("ADAMT").intValue(); // 가산금
sumAmt = sndngDtlInfo.number("SUM_AMT").intValue(); // 합계 금액
if (sndngDtlInfo.string("SGG_CD").equals("50110")) {
afterPcptax = 0; // 납기후 본세
afterAdamt = 0; // 납기후 가산금
afterSumAmt = 0; // 납기후 합계 금액
afterPcptax = 0; // 납기후 본세
afterAdamt = 0; // 납기후 가산금
afterSumAmt = 0; // 납기후 합계 금액
} else {
afterSumAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액
if (afterSumAmt == 0) { // 납기후 금액이 0 이라면..
afterSumAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액
if (afterSumAmt == 0) { // 납기후 금액이 0 이라면..
afterPcptax = 0;
afterAdamt = 0;
afterSumAmt = 0;
} else {
afterPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세
if (afterSumAmt > afterPcptax) { // 납기후 금액이 본세보다 크다면..
afterPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세
if (afterSumAmt > afterPcptax) { // 납기후 금액이 본세보다 크다면..
afterAdamt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue() - sndngDtlInfo.number("PCPTAX").intValue();
} else if (afterSumAmt < afterPcptax) { // 납기후 금액이 본세보다 작다면 오류..
} else if (afterSumAmt < afterPcptax) { // 납기후 금액이 본세보다 작다면 오류..
throw new RuntimeException("우편통합 발송 작업중 납기후 금액이 본세보다 작은 자료가 발견되었습니다."); // 예외를 발생시켜서 DB Rollback
} else {
afterAdamt = 0;
@ -1554,7 +1508,6 @@ public class SndngBean extends AbstractBean {
fInputStream.close();
fOutputStream.close();
} catch (IOException e) {
throw new RuntimeException("우편통합 발송 작업중 전자우편 단속 사진 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -1584,15 +1537,13 @@ public class SndngBean extends AbstractBean {
sndngDtl.setSndngDtlSttsCd("03"); // 발송 상세 상태 코드(FIM050) - 03 발송
sndngDtl.setSndngDtlId(sndngDtlInfo.string("SNDNG_DTL_ID"));
rtnScs = sndngDtlMapper.updateSndngDtlEPost(sndngDtl); // 전자우편 발송상세 내역 수정
if (!rtnScs) {
rtnNocs = sndngDtlMapper.updateSndngDtlEPost(sndngDtl); // 전자우편 발송상세 내역 수정
if (rtnNocs != 1) {
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -111,39 +111,6 @@ public class SndngDtlBean extends AbstractBean {
return sndngDtlMapper.selectSndngTrgtDtlIds(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);
}
/** .
* @param sndngDtl
* @return
@ -153,13 +120,12 @@ public class SndngDtlBean extends AbstractBean {
*/
public String setNxrpIndivA01List(SndngDtl sndngDtl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 발송 상세 상태 코드(SNDNG_DTL_STTS_CD) 가 처리전(00)인 자료만 처리
if (sndngDtl.getSndngDtlSttsCd().equals("00")) {
NisIndivQuery nisIndivQuery = new NisIndivQuery();
nisIndivQuery.setCrdnId(sndngDtl.getCrdnId());
nisIndivQuery.setSndngDtlId(sndngDtl.getSndngDtlId());
@ -176,13 +142,13 @@ public class SndngDtlBean extends AbstractBean {
// 발송 대장(TB_SNDNG) - 발송 상태 코드(SNDNG_DTL_STTS_CD) 수정
SndngDtl uptSndngDtl = new SndngDtl();
uptSndngDtl.setSndngDtlSttsCd("01"); // 발송 상태 코드(FIM050) 01:세외수입부과
uptSndngDtl.setSndngDtlId(sndngDtl.getSndngDtlId()); // 발송 상세 ID
uptSndngDtl.setLinkTrgtCd(resVo1.get("linkTrgtCd").asText()); // 연계 대상 코드
uptSndngDtl.setLinkMngKey(resVo1.get("linkMngKey").asText()); // 연계 관리 키
uptSndngDtl.setSndngDtlSttsCd("01"); // 발송 상태 코드(FIM050) 01:세외수입부과
uptSndngDtl.setSndngDtlId(sndngDtl.getSndngDtlId()); // 발송 상세 ID
uptSndngDtl.setLinkTrgtCd(resVo1.get("linkTrgtCd").asText()); // 연계 대상 코드
uptSndngDtl.setLinkMngKey(resVo1.get("linkMngKey").asText()); // 연계 관리 키
rtnScs = sndngDtlMapper.updateSndngDtlSttsCd(uptSndngDtl);
if (!rtnScs) {
rtnNocs = sndngDtlMapper.updateSndngDtlSttsCd(uptSndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("세외수입 과태료대장 연계 정보를 단속 대장에 수정하지 못했습니다."); // 예외를 발생시켜서 DB Rollback
}
}
@ -191,9 +157,7 @@ public class SndngDtlBean extends AbstractBean {
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -205,14 +169,12 @@ public class SndngDtlBean extends AbstractBean {
*/
public String getNxrpIndivA03List(SndngDtl sndngDtl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
// 발송 상세 상태 코드(SNDNG_DTL_STTS_CD) 가 세외수입부과(01)인 자료만 처리
if (sndngDtl.getSndngDtlSttsCd().equals("01")) {
NisIndivQuery nisIndivQuery = new NisIndivQuery();
nisIndivQuery.setCrdnId(sndngDtl.getCrdnId());
nisIndivQuery.setSndngDtlId(sndngDtl.getSndngDtlId());
@ -409,8 +371,8 @@ public class SndngDtlBean extends AbstractBean {
uptSndngDtl.setBankNm20(a03.getVtlacBankNm20()); // 은행 명20
uptSndngDtl.setVrActno20(a03.getVrActno20()); // 가상 계좌번호20
rtnScs = sndngDtlMapper.updateSndngDtlNxrpA03(uptSndngDtl);
if (!rtnScs) {
rtnNocs = sndngDtlMapper.updateSndngDtlNxrpA03(uptSndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("세외수입 연계 정보를 발송 상세에 수정하지 못했습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -422,8 +384,8 @@ public class SndngDtlBean extends AbstractBean {
crdn.setCrdnId(crdnLevyInfo.string("CRDN_ID")); // 단속 ID
crdn.setNxrpAcbKey(a03.getFinScrgAcbKey()); // 세외수입 대장 키
rtnScs = sndngDtlMapper.updateCrdnNxrpAcbKey(crdn);
if (!rtnScs) {
rtnNocs = sndngDtlMapper.updateCrdnNxrpAcbKey(crdn);
if (rtnNocs != 1) {
throw new RuntimeException("단속 대장에 세외수입 대장키 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -507,10 +469,11 @@ public class SndngDtlBean extends AbstractBean {
levy.setBankNm20(a03.getVtlacBankNm20()); // 은행 명20
levy.setVrActno20(a03.getVrActno20()); // 가상 계좌번호20
if (crdnLevyInfo.string("LEVY_ID").equals("")) { // 부과 ID가 없다면 부과대장 등록
if (crdnLevyInfo.string("LEVY_ID").equals("")) { // 부과 ID가 없다면
// 부과(TB_LEVY) 대장을 등록 한다.
rtnNocs = levyMapper.insertLevy(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속상태이력(TB_CRDN_STTS_HSTRY)
@ -533,22 +496,24 @@ public class SndngDtlBean extends AbstractBean {
throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
} else { // 부과 대장 수정
} else {
levy.setLevyId(crdnLevyInfo.string("LEVY_ID"));
// 부과(TB_LEVY) 대장을 수정 한다.
rtnNocs = levyMapper.updateLevy(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 수납 정보 확인하여 발송 대장(TB_SNDNG) - 발송 상태 코드(SNDNG_DTL_STTS_CD) 수정
// 수납 정보 확인하여 발송(TB_SNDNG) - 발송 상태 코드(SNDNG_DTL_STTS_CD) 수정
if (resVo1.get("rcvmtSeNm").asText().equals("수납")) {
uptSndngDtl.setSndngDtlSttsCd("09"); // 발송 상세 상태 코드(FIM050) 09:수납
uptSndngDtl.setSndngRcvmtCd("1"); // 발송 수납 코드(FIM051) 1:수납
rtnScs = sndngDtlMapper.updateSndngDtlSttsCd(uptSndngDtl);
if (!rtnScs) {
// 발송(TB_SNDNG) 대장을 수정 한다.
rtnNocs = sndngDtlMapper.updateSndngDtlSttsCd(uptSndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("세외수입 연계 정보를 발송 상세에 수정하지 못했습니다."); // 예외를 발생시켜서 DB Rollback
}
}
@ -558,9 +523,7 @@ public class SndngDtlBean extends AbstractBean {
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -576,12 +539,10 @@ public class SndngDtlBean extends AbstractBean {
* @return
*/
public DataObject getSndbkInfo(SndbQuery req) {
//
DataObject info = new DataObject();
if (req.getCallPurpose().equals("create")) {
info = sndngDtlMapper.selectSndngDtlInfo(req);
} else {
info = sndngDtlMapper.selectSndbkInfo(req);
}
@ -589,7 +550,7 @@ public class SndngDtlBean extends AbstractBean {
return info;
}
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
@ -598,8 +559,7 @@ public class SndngDtlBean extends AbstractBean {
*/
public String createSndbkList(SndbQuery req) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
String rtnMsg = ""; // 처리 결과 메시지
List<DataObject> sndngDtlList = sndngDtlMapper.selectSndngTrgtDtlIds(req);
@ -609,24 +569,24 @@ public class SndngDtlBean extends AbstractBean {
return rtnMsg;
}
// 발송상세(TB_SNDNG_DTL)에 반송 정보를 등록한다.
// 반송 정보를 등록한다.
for (int iLoop = 0; iLoop < sndngDtlList.size(); iLoop++) {
// 반송 내역 조회
DataObject sndbkInfo = sndngDtlMapper.selectSndbkInfo(new SndbQuery().setSndngDtlId(sndngDtlList.get(iLoop).string("SNDNG_DTL_ID")));
// 반송 등록이 가능한지 확인.
if (!("03,05".contains(sndbkInfo.string("SNDNG_DTL_STTS_CD")))) {
rtnMsg = "[N] 반송 등록 대상자료가 아닙니다.";
rtnMsg = "[F] 반송 등록 대상자료가 아닙니다.";
return rtnMsg;
}
// 등기 번호가 있는지 확인
if (sndbkInfo.string("RG_NO").equals("")) {
rtnMsg = "[N] 등기번호가 존재하지 않습니다.";
rtnMsg = "[F] 등기번호가 존재하지 않습니다.";
return rtnMsg;
}
// 등기 번호가 13자리인지 확인
if (sndbkInfo.string("RG_NO").length() != 13) {
rtnMsg = "[N] 등기번호 자릿수(13)가 맞지 않습니다.";
rtnMsg = "[F] 등기번호 자릿수(13)가 맞지 않습니다.";
return rtnMsg;
}
@ -638,7 +598,7 @@ public class SndngDtlBean extends AbstractBean {
DataObject epostDlvrRsltInfo = epostDlvrRsltMapper.selectEpostDlvrRsltInfo(epostQuery);
// 조회 건수 확인
if (epostDlvrRsltInfo == null) {
rtnMsg = "[N] 반송 자료가 존재하지 않습니다.";
rtnMsg = "[F] 반송 자료가 존재하지 않습니다.";
return rtnMsg;
}
@ -662,19 +622,18 @@ public class SndngDtlBean extends AbstractBean {
sndngDtl.setBfrSndngDtlSttsCd(sndbkInfo.string("SNDNG_DTL_STTS_CD")); // 전 발송 상세 상태 코드
}
rtnScs = sndngDtlMapper.createSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 등록에 실패하였습니다.");
// 발송상세(TB_SNDNG_DTL)에 반송 정보를 등록한다.
rtnMsg = createSndbk(sndngDtl);
// 메시지 확인
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
@ -682,22 +641,16 @@ public class SndngDtlBean extends AbstractBean {
* </ul>
*/
public String createSndbk(SndngDtl sndngDtl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
rtnScs = sndngDtlMapper.createSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 등록에 실패하였습니다.");
// 발송상세(TB_SNDNG_DTL)에 반송 정보를 등록한다.
int rtnNocs = sndngDtlMapper.createSndbk(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("[F] 발송상세의 반송 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
@ -705,23 +658,16 @@ public class SndngDtlBean extends AbstractBean {
* </ul>
*/
public String updateSndbk(SndngDtl sndngDtl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 등록 한다.
rtnScs = sndngDtlMapper.updateSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 수정에 실패하였습니다.");
// 발송상세(TB_SNDNG_DTL)에 반송 정보를 등록한다.
int rtnNocs = sndngDtlMapper.updateSndbk(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("[F] 발송상세의 반송 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
@ -730,8 +676,8 @@ public class SndngDtlBean extends AbstractBean {
*/
public String removeSndbk(SndngDtl sndngDtl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
// 반송 내역 조회
SndbQuery req = new SndbQuery();
@ -760,16 +706,13 @@ public class SndngDtlBean extends AbstractBean {
sndngDtl.setDlvrTm("");
}
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 등록 한다.
rtnScs = sndngDtlMapper.deleteSndbk(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 반송 정보 삭제에 실패하였습니다.");
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 삭제 한다.
rtnNocs = sndngDtlMapper.deleteSndbk(sndngDtl);
if (rtnNocs < 1) {
throw new RuntimeException("발송상세의 반송 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/**ID .
@ -788,20 +731,13 @@ public class SndngDtlBean extends AbstractBean {
* </ul>
*/
public String removeSndngDtlSvbtc(SndngDtl sndngDtl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 발송 상세(TB_SNDNG_DTL) 대장에 공시송달 정보를 삭제 한다.
rtnScs = sndngDtlMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세의 공시송달 정보 삭제에 실패하였습니다.");
int rtnNocs = sndngDtlMapper.deleteSndngDtlSvbtc(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("발송상세의 공시송달 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -9,9 +9,9 @@ import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.service.SndngDtlService;
/** .
@ -50,21 +50,6 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
return sndngDtlBean.getSndngTrgtDtlIds(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);
}
@Override
public String setNxrpIndivA01List(SndngDtl sndngDtl) {
return sndngDtlBean.setNxrpIndivA01List(sndngDtl);
@ -75,11 +60,6 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
return sndngDtlBean.getNxrpIndivA03List(sndngDtl);
}
@Override
public List<DataObject> getSndbkList(SndbQuery req) {
return sndngDtlBean.getSndbkList(req);
@ -110,36 +90,27 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
return sndngDtlBean.removeSndbk(sndngDtl);
}
@Override
public String removeSvbtcEach(Svbtc svbtc) {
// 변수 선언
String rtnMsg = ""; // 처리 결과 메시지
String rtnMsg = ""; // 처리 결과 메시지
// 공시송달 IDs 건수를 확인하여 1건이하면.. 종료
// 공시송달 Ids 건수를 확인하여 1건이하면.. 종료
if (svbtc.getSndngDtlIds().length < 1) {
rtnMsg = "작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 공시송달 IDs 만큼 반복..
// 공시송달 Ids 만큼 반복..
for (int iLoop = 0; iLoop < svbtc.getSndngDtlIds().length; iLoop++) {
// 발송 상세(TB_SNDNG_DTL) 대장에서 공시송달 정보를 삭제 한다.
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngDtlId(svbtc.getSndngDtlIds()[iLoop]);
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("05");
rtnMsg = sndngDtlBean.removeSndngDtlSvbtc(sndngDtl);
if (rtnMsg.contains("[F]")) {
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
@ -147,32 +118,29 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
// 공시송달 총건수 수정 호출
int svbtcTnocs = sndngDtlBean.selectTnocsSndngDtlSvbtc(svbtc.getSvbtcId());
if (svbtcTnocs == 0) { // 총건수가 0건이라면 공시송달 대장에서 삭제
if (svbtcTnocs == 0) { // 총건수가 0건이라면 공시송달 대장에서 삭제
rtnMsg = svbtcBean.removeSvbtc(svbtc);
} else { // 총건수를 확인하여 공시송달 대장에서 수정
} else { // 총건수를 확인하여 공시송달 대장에서 수정
// 공시송달 정보 호출
DataObject svbtcInfo = svbtcBean.getSvbtcInfo(new SndbQuery().setSvbtcId(svbtc.getSvbtcId()));
Svbtc mdfSvbtc = new Svbtc();
Svbtc updtSvbtc = new Svbtc();
updtSvbtc.setSvbtcYmd(svbtcInfo.string("SVBTC_YMD"));
updtSvbtc.setTtlNm(svbtcInfo.string("TTL_NM"));
updtSvbtc.setDocNo(svbtcInfo.string("DOC_NO"));
updtSvbtc.setEtcCn(svbtcInfo.string("ETC_CN"));
updtSvbtc.setTnocs(svbtcTnocs);
updtSvbtc.setSvbtcId(svbtc.getSvbtcId());
mdfSvbtc.setSvbtcYmd(svbtcInfo.string("SVBTC_YMD"));
mdfSvbtc.setTtlNm(svbtcInfo.string("TTL_NM"));
mdfSvbtc.setDocNo(svbtcInfo.string("DOC_NO"));
mdfSvbtc.setEtcCn(svbtcInfo.string("ETC_CN"));
mdfSvbtc.setTnocs(svbtcTnocs);
mdfSvbtc.setSvbtcId(svbtc.getSvbtcId());
rtnMsg = svbtcBean.update(mdfSvbtc);
rtnMsg = svbtcBean.updateSvbtc(updtSvbtc);
}
// 오류가 발생하였으면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -108,16 +108,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.createEPost(sndng);
}
@Override
public boolean updateSndng(Sndng sndng) {
return sndngBean.updateSndng(sndng);
}
@Override
public boolean updateSndngSttsCd(Sndng sndng) {
return sndngBean.updateSndngSttsCd(sndng);
}
@Override
public String removeSndng(Sndng sndng) {
return sndngBean.removeSndng(sndng);

@ -127,14 +127,12 @@ public class SvbtcBean extends AbstractBean {
*/
public String createSvbtc(SndbQuery req, Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다.");
rtnNocs = svbtcMapper.insertSvbtc(svbtc);
if (rtnNocs != 1) {
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
List<DataObject> sndngDtlList = new ArrayList<DataObject>();
@ -144,31 +142,28 @@ public class SvbtcBean extends AbstractBean {
sndngDtlList = sndngDtlMapper.selectSvbtcsTrgtSndngDtlIds(req);
} else {
SndbQuery query = new SndbQuery();
query.setSndngDtlIds(svbtc.getSndngDtlIds());
query.setOrderBy("SD.SNDNG_DTL_ID");
sndngDtlList = sndngDtlMapper.selectSvbtcsTrgtSndngDtlIds(query);
}
// 발송 상세 대장에 공시송달 정보 수정
// 공시송달 정보 수정
for (int iLoop = 0; iLoop < sndngDtlList.size(); iLoop++) {
// 발송 상세
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("06");
sndngDtl.setSndngDtlId(sndngDtlList.get(iLoop).string("SNDNG_DTL_ID"));
rtnScs = sndngDtlMapper.updateSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
// 발송 상세(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
rtnNocs = sndngDtlMapper.updateSndngDtlSvbtc(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -178,45 +173,14 @@ public class SvbtcBean extends AbstractBean {
* <li> false</li>
* </ul>
*/
public String create(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String update(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
public String updateSvbtc(Svbtc svbtc) {
// 공시송달(TB_SVBTC) 정보를 수정 한다.
rtnScs = svbtcMapper.update(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 수정에 실패하였습니다.");
int rtnNocs = svbtcMapper.updateSvbtc(svbtc);
if (rtnNocs != 1) {
throw new RuntimeException("공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -228,29 +192,25 @@ public class SvbtcBean extends AbstractBean {
*/
public String removeSvbtc(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int rtnNocs = -1; // 처리 결과 건수
// 공시송달(TB_SVBTC) 대장을 삭제 한다.
rtnScs = svbtcMapper.delete(svbtc);
if (!rtnScs) {
rtnNocs = svbtcMapper.deleteSvbtc(svbtc);
if (rtnNocs != 1) {
throw new RuntimeException("공시송달 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세(TB_SNDNG_DTL) 대장에서 공시송달 정보를 삭제 한다.
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("05");
rtnScs = sndngDtlMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
rtnNocs = sndngDtlMapper.deleteSndngDtlSvbtc(sndngDtl);
if (rtnNocs != 1) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -60,13 +60,8 @@ public class SvbtcServiceBean extends AbstractServiceBean implements SvbtcServic
}
@Override
public String create(Svbtc svbtc) {
return svbtcBean.create(svbtc);
}
@Override
public String update(Svbtc svbtc) {
return svbtcBean.update(svbtc);
public String updateSvbtc(Svbtc svbtc) {
return svbtcBean.updateSvbtc(svbtc);
}
@Override
@ -74,7 +69,7 @@ public class SvbtcServiceBean extends AbstractServiceBean implements SvbtcServic
// 변수 선언
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달 ID 및 공시송달 IDs 확인하여 null이면 종료
// 공시송달 Id 및 공시송달 Ids 확인하여 null이면 종료
if (svbtc.getSvbtcId() == null && svbtc.getSvbtcIds() == null) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
@ -84,13 +79,13 @@ public class SvbtcServiceBean extends AbstractServiceBean implements SvbtcServic
if (svbtc.getSvbtcId() != null) {
rtnMsg = svbtcBean.removeSvbtc(svbtc);
} else {
// 공시송달 IDs 를 확인하여 건수가 1보다 작다면 종료..
// 공시송달 Ids 를 확인하여 건수가 1보다 작다면 종료..
if (svbtc.getSvbtcIds().length < 1) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 공시송달 IDs 만큼 반복..
// 공시송달 Ids 만큼 반복..
for (int iLoop = 0; iLoop < svbtc.getSvbtcIds().length; iLoop++) {
// 부과제외 ID 설정
svbtc.setSvbtcId(svbtc.getSvbtcIds()[iLoop]);

@ -7,6 +7,7 @@ import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.stereotype.Controller;
@ -176,28 +177,29 @@ public class Sndb01Controller extends ApplicationController {
*/
@RequestMapping(name = "계도장 발송 대상 메인", value = METHOD_URL.warningTargetMain)
public ModelAndView warningTargetMain() {
//
ModelAndView mav = new ModelAndView("fims/sndb/sndb01010-main");
// 사용자 정보
ManagedUser managedUser = (ManagedUser)currentUser().getUser();
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM022", "FIM054", "FIM061", "FIM064");
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
// 위반 코드(VLTN_CD)
addCodes(commonCodes, mav, "FIM022", "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
return mav
.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngTrgt") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_ID)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_ID)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_ID)
.addObject("FIM022List", commonCodes.get("FIM022")) // 부과 제외 사유 코드(LEVY_EXCL_RSN_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_ID)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_ID)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_ID)
;
}
@ -215,7 +217,6 @@ public class Sndb01Controller extends ApplicationController {
@Task
@RequestMapping(name="계고장 발송 대상 목록 조회", value=METHOD_URL.getWarningTargetList)
public ModelAndView getWarningTargetList(SndbQuery req) {
//
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getWrngTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngTrgt");
@ -286,17 +287,18 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="계고장 발송 대상 상세 조회", value=METHOD_URL.getWarningTargetInfo)
public ModelAndView getWarningTargetInfo(SndbQuery req) {
//
public ModelAndView getWarningTargetInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getWarningTargetList(req);
mav.setViewName("fims/sndb/sndb01020-info");
return mav
.addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngTrgt") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("wrngTrgtList", toJson(mav.getModel().get("wrngTrgtList"))) // 자료
;
}
@ -311,7 +313,6 @@ public class Sndb01Controller extends ApplicationController {
@Task
@RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSendingList)
public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
//
boolean saved = false;
String rtnMsg = sndngService.createWrngSndngList(req, sndng);
@ -331,7 +332,6 @@ public class Sndb01Controller extends ApplicationController {
*/
@RequestMapping(name = "계도장 발송 현황 메인", value = METHOD_URL.warningSendingMain)
public ModelAndView warningSendingMain() {
//
ModelAndView mav = new ModelAndView("fims/sndb/sndb01030-main");
// 사용자 정보
@ -341,11 +341,11 @@ public class Sndb01Controller extends ApplicationController {
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav
.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndng") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndng") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
@ -363,7 +363,6 @@ public class Sndb01Controller extends ApplicationController {
@Task
@RequestMapping(name="계고장 발송 현황 목록 조회", value=METHOD_URL.getWarningSendingList)
public ModelAndView getWarningSendingList(SndbQuery req) {
//
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getWrngSndngList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndng");
@ -418,17 +417,18 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingDetailInfo)
public ModelAndView getWarningSendingDetailInfo(SndbQuery req) {
//
public ModelAndView getWarningSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getWarningSendingDetailList(req);
mav.setViewName("fims/sndb/sndb01040-info");
return mav
.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndngDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndngDtl") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList"))) // 자료
;
}
@ -517,16 +517,16 @@ public class Sndb01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
return mav
.addObject("pageName", "sndb01050") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceTrgt") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("pageName", "sndb01050") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_CD)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_CD)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_CD)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_CD)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_CD)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_CD)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_CD)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_CD)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_CD)
;
}
@ -612,23 +612,24 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="사전통지 발송 대상 상세 조회", value=METHOD_URL.getAdvanceNoticeTargetInfo)
public ModelAndView getAdvanceNoticeTargetInfo(SndbQuery req) {
//
public ModelAndView getAdvanceNoticeTargetInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getAdvanceNoticeTargetList(req);
mav.setViewName("fims/sndb/sndb01060-info");
// 사전통지 납기일자
DataObject advntceYmdInfo = taskBean.getAdvntceYmdInfo(new CmmnQuery().setSggCd(req.getSggCd())
.setTaskSeCd(req.getTaskSeCd()));
mav.setViewName("fims/sndb/sndb01060-info");
return mav
.addObject("pageName", "sndb01060") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceTrgt") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("advntceYmdInfo", toJson(advntceYmdInfo)) // 사전통지 기간 정보
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01060") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("advntceTrgtList", toJson(mav.getModel().get("advntceTrgtList"))) // 자료
.addObject("advntceYmdInfo", toJson(advntceYmdInfo)) // 사전통지 기간 정보
;
}
@ -671,11 +672,11 @@ public class Sndb01Controller extends ApplicationController {
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav
.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndng") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndng") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
@ -747,17 +748,18 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingDetailInfo)
public ModelAndView getAdvanceNoticeSendingDetailInfo(SndbQuery req) {
//
public ModelAndView getAdvanceNoticeSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getAdvanceNoticeSendingDetailList(req);
mav.setViewName("fims/sndb/sndb01080-info");
return mav
.addObject("pageName", "sndb01080") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndngDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01080") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndngDtl") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("advntceSndngDtlList", toJson(mav.getModel().get("advntceSndngDtlList"))) // 자료
;
}
@ -853,16 +855,16 @@ public class Sndb01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
return mav
.addObject("pageName", "sndb01090") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtTrgt") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("pageName", "sndb01090") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_CD)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_CD)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_CD)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_CD)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_CD)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_CD)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_CD)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_CD)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_CD)
;
}
@ -948,21 +950,21 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="고지서 발송 대상 상세 화면", value=METHOD_URL.getNoticeSheetTargetInfo)
public ModelAndView getNoticeSheetTargetInfo(SndbQuery req) {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01100-info");
public ModelAndView getNoticeSheetTargetInfo(HttpServletRequest hReq, SndbQuery req) {
// ModelAndView mav = getWarningTargetList(req);
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM054", "FIM061", "FIM064");
// mav.setViewName("fims/sndb/sndb01100-info");
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
ModelAndView mav = new ModelAndView("fims/sndb/sndb01100-info");
return mav
.addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtTrgt") // prefix
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("nhtTrgtList", toJson(mav.getModel().get("nhtTrgtList"))) // 자료
;
}
@ -990,6 +992,46 @@ public class Sndb01Controller extends ApplicationController {
.addObject("rtnMsg", rtnMsg);
}
/** ID .
* @param levyExclID
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송 대장 삭제", value=METHOD_URL.removeNoticeSheetSending)
public ModelAndView removeNoticeSheetSending(Sndng sndng) {
boolean saved = false;
String rtnMsg = "";
if (sndng.getSndngIds().length > 0) { // 발송 Ids
// 부과제외 Ids 만큼 반복..
for (int iLoop = 0; iLoop < sndng.getSndngIds().length; iLoop++) {
// 부과제외 ID 설정
sndng.setSndngId(sndng.getSndngIds()[iLoop]);
// 발송 삭제 호출
rtnMsg = sndngService.removeSndng(sndng);
if (!rtnMsg.contains("[S]")) // 오류가 발생하였으면 종료..
break;
}
} else {
rtnMsg = sndngService.removeSndng(sndng);
}
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/110-main) .
*
* @return /sndb/sndb01/110-main
@ -1004,9 +1046,10 @@ public class Sndb01Controller extends ApplicationController {
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndng") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
return mav.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndng") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
;
}
@ -1070,46 +1113,6 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** ID .
* @param levyExclID
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송 대장 삭제", value=METHOD_URL.removeNoticeSheetSending)
public ModelAndView removeNoticeSheetSending(Sndng sndng) {
boolean saved = false;
String rtnMsg = "";
if (sndng.getSndngIds().length > 0) { // 발송 IDs
// 부과제외 IDs 만큼 반복..
for (int iLoop = 0; iLoop < sndng.getSndngIds().length; iLoop++) {
// 부과제외 ID 설정
sndng.setSndngId(sndng.getSndngIds()[iLoop]);
// 발송 삭제 호출
rtnMsg = sndngService.removeSndng(sndng);
if (rtnMsg.contains("[F]")) // 오류가 발생하였으면 종료..
break;
}
} else {
rtnMsg = sndngService.removeSndng(sndng);
}
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** - (sndb/sndb01/120-info) .
* @param sndngId ID
* @return fims/sndb/sndb01120-info jsonView
@ -1119,17 +1122,18 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="고지서 발송 현황 상세 화면", value=METHOD_URL.getNoticeSheetSendingDetailInfo)
public ModelAndView getNoticeSheetSendingDetailInfo(SndbQuery req) {
//
public ModelAndView getNoticeSheetSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getNoticeSheetSendingDetailList(req);
mav.setViewName("fims/sndb/sndb01120-info");
return mav
.addObject("pageName", "sndb01120") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndngDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01120") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndngDtl") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("nhtSndngDtlList", toJson(mav.getModel().get("nhtSndngDtlList"))) // 자료
;
}
@ -1748,7 +1752,7 @@ public class Sndb01Controller extends ApplicationController {
@RequestMapping(name="공시송달 수정", value=METHOD_URL.updateServiceByPublicNotice)
public ModelAndView updateServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String rtnMsg = svbtcService.update(svbtc);
String rtnMsg = svbtcService.updateSvbtc(svbtc);
if (rtnMsg.contains("[S]")) {
saved = true;

@ -10,34 +10,32 @@ public class SprtQuery extends CmmnQuery {
// 필수
private String callControlName; // 호출한 페이지의 Control 이름
// ID 목록
private String[] cvlcptDscsnIDs;
private String[] crdnIds; // 단속 ID 목록
// IDs
private String[] cvlcptDscsnIds; // 민원 상담 Ids
private String[] crdnIds; // 단속 Ids
// ID
private String crdnId; // 단속 ID
private String rtpyrId; // 납부자 ID
private String levyExclId; // 부과 제외 ID
private String opnnId; // 의견 ID
private String levyId; // 부과 ID
private String cvlcptDscsnId; // 민원 상담 ID
private List<Keyword> ischKeywordSet; // 통합조회 키워드
private List<String> ischOnlyDataSet; // 특정자료만 조회
private List<String> ischExclDataSet; // 특정자료 제외
private String crdnId; // 단속 ID
private String rtpyrId; // 납부자 ID
private String levyExclId; // 부과 제외 ID
private String opnnId; // 의견 ID
private String levyId; // 부과 ID
private String cvlcptDscsnId; // 민원 상담 ID
private List<Keyword> ischKeywordSet; // 통합조회 키워드
private List<String> ischOnlyDataSet; // 특정자료만 조회
private List<String> ischExclDataSet; // 특정자료 제외
private String gridType;
private String vhrno; // 차량번호
private String rtpyrNo; // 납부자 번호
private String rtpyrBrdt; // 납부자 생일
private String rtpyrNm; // 납부자 명
private String fyr; // 회계연도
private String levyNo; // 부과 번호
private String vhrno; // 차량번호
private String rtpyrNo; // 납부자 번호
private String rtpyrBrdt; // 납부자 생일
private String rtpyrNm; // 납부자 명
private String fyr; // 회계연도
private String levyNo; // 부과 번호
// ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delRsn; // 삭제 사유
private String inquiryCondition; // 조회 조건
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delRsn; // 삭제 사유
private String inquiryCondition; // 조회 조건
public String getCallControlName() {
return ifEmpty(callControlName, () -> null);
@ -48,33 +46,34 @@ public class SprtQuery extends CmmnQuery {
return self();
}
public String[] getCvlcptDscsnIDs() {
return ifEmpty(cvlcptDscsnIDs, () -> null);
public String[] getCvlcptDscsnIds() {
return ifEmpty(cvlcptDscsnIds, () -> null);
}
public <T extends SprtQuery> T setCvlcptDscsnIDs(String... cvlcptDscsnIDs) {
this.cvlcptDscsnIDs = cvlcptDscsnIDs;
public <T extends SprtQuery> T setCvlcptDscsnIds(String... cvlcptDscsnIds) {
this.cvlcptDscsnIds = cvlcptDscsnIds;
return self();
}
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
public String[] getCrdnIds() {
return ifEmpty(crdnIds, () -> null);
}
public <T extends SprtQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
public <T extends SprtQuery> T setCrdnIds(String... crdnIds) {
this.crdnIds = crdnIds;
return self();
}
public String[] getCrdnIds() {
return ifEmpty(crdnIds, () -> null);
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
}
public <T extends SprtQuery> T setCrdnIds(String... crdnIds) {
this.crdnIds = crdnIds;
public <T extends SprtQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getRtpyrId() {
return ifEmpty(rtpyrId, () -> null);
}

@ -678,7 +678,7 @@ public class Sprt01Controller extends ApplicationController {
//발송 등록
List<DataObject> dataObjectList0 = integrationSearchMapper.selectIntegrationDataList(sprtQuery);
SndbQuery sndbQuery = new SndbQuery();
sndbQuery.setCrdnIDs(crdnIds);
sndbQuery.setCrdnIds(crdnIds);
sndng.setSndngSeCd("02");
sndng.setTnocs(crdnIds.length);
sndng.setGramt(CmmnUtil.sumByKey(dataObjectList0, "FFNLG_AMT"));
@ -793,7 +793,7 @@ public class Sprt01Controller extends ApplicationController {
//발송 등록
List<DataObject> dataObjectList0 = integrationSearchMapper.selectIntegrationDataList(sprtQuery);
SndbQuery sndbQuery = new SndbQuery();
sndbQuery.setCrdnIDs(crdnIds);
sndbQuery.setCrdnIds(crdnIds);
sndng.setSndngSeCd("02");
sndng.setTnocs(crdnIds.length);
sndng.setGramt(CmmnUtil.sumByKey(dataObjectList0, "FFNLG_AMT"));
@ -918,7 +918,7 @@ public class Sprt01Controller extends ApplicationController {
//발송 등록
List<DataObject> dataObjectList0 = integrationSearchMapper.selectIntegrationDataList(sprtQuery);
SndbQuery sndbQuery = new SndbQuery();
sndbQuery.setCrdnIDs(crdnIds);
sndbQuery.setCrdnIds(crdnIds);
sndng.setSndngSeCd("03");
sndng.setTnocs(crdnIds.length);
sndng.setGramt(CmmnUtil.sumByKey(dataObjectList0, "FFNLG_AMT"));
@ -1033,7 +1033,7 @@ public class Sprt01Controller extends ApplicationController {
//발송 등록
List<DataObject> dataObjectList0 = integrationSearchMapper.selectIntegrationDataList(sprtQuery);
SndbQuery sndbQuery = new SndbQuery();
sndbQuery.setCrdnIDs(crdnIds);
sndbQuery.setCrdnIds(crdnIds);
sndng.setSndngSeCd("03");
sndng.setTnocs(crdnIds.length);
sndng.setGramt(CmmnUtil.sumByKey(dataObjectList0, "FFNLG_AMT"));

@ -314,190 +314,190 @@
AND D.USE_YN = 'Y'
</select>
<update id="updatePostPrcsSttsCd" parameterType="map">/* 전자우편 접수 등록 정보의 우편 처리 상태 코드를 수정(epostRcptRegMapper.updatePostPrcsSttsCd) */
UPDATE TB_EPOST_RCPT_REG
SET POST_PRCS_STTS_CD = #{epostRcptReg.postPrcsSttsCd} <!-- 우편 처리 상태 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{epostRcptReg.modifiedBy} <!-- 수정자 -->
WHERE CON_KEY = #{epostRcptReg.conKey}
AND DEL_YN = 'N'
</update>
<insert id="insertEpostRcptReg" parameterType="map">/* 전자우편 접수 등록 등록(epostRcptRegMapper.insertEpostRcptReg) */
<insert id="insertEpostRcptReg" parameterType="cokr.xit.fims.epst.EpostRcptReg">/* 전자우편 접수 등록 등록(epostRcptRegMapper.insertEpostRcptReg) */
INSERT
INTO TB_EPOST_RCPT_REG (
CON_KEY <!-- 외부연계식별키 -->
, CON_ORG <!-- 외부기관구분코드 -->
, SNDNG_ID <!-- 발송 ID -->
, RCEPT_ID <!-- 접수우체국국기호 -->
, RCEPT_YMD <!-- 접수 일자 -->
, DATA_CD <!-- 접수코드 -->
, DIV_KB <!-- 취급구분 -->
, DFPAYYN <!-- 결재방법 -->
, RCPT_KB <!-- 내용문 유형 -->
, SEAL_CD <!-- 내용문 상세 종류 -->
, WORD_KB <!-- 내용문 종류 -->
, MAIL_CNT <!-- 내용문 매수 -->
, RECEV_CNT <!-- 수취인 수 -->
, ENV_CD <!-- 봉투 종류 -->
, COLOR_YN <!-- 칼라우편물 -->
, MM_YN <!-- 메일머지 플래그 -->
, FLEX_CD <!-- 이면구분 -->
, DM_CNT <!-- 동봉물 개수 -->
, SB_FG <!-- 반송불필요 여부 -->
, APVL_NB <!-- 승인번호 -->
, SEND_DATE <!-- 신청 일자 -->
, SEND_TIME <!-- 전송 시간 -->
, RELORSECT_CD <!-- 연계기관결제부서코드 -->
, RECEV_SENDER_ORG_CODE <!-- 발송기관코드 -->
, RECEV_SENDER_NM <!-- 발송인명 -->
, RECEV_SENDER_ZIPCODE <!-- 발송인 우편번호 -->
, RECEV_SENDER_ADDR <!-- 주소 -->
CON_KEY <!-- 외부연계식별키 -->
, CON_ORG <!-- 외부기관구분코드 -->
, SNDNG_ID <!-- 발송 ID -->
, RCEPT_ID <!-- 접수우체국국기호 -->
, RCEPT_YMD <!-- 접수 일자 -->
, DATA_CD <!-- 접수코드 -->
, DIV_KB <!-- 취급구분 -->
, DFPAYYN <!-- 결재방법 -->
, RCPT_KB <!-- 내용문 유형 -->
, SEAL_CD <!-- 내용문 상세 종류 -->
, WORD_KB <!-- 내용문 종류 -->
, MAIL_CNT <!-- 내용문 매수 -->
, RECEV_CNT <!-- 수취인 수 -->
, ENV_CD <!-- 봉투 종류 -->
, COLOR_YN <!-- 칼라우편물 -->
, MM_YN <!-- 메일머지 플래그 -->
, FLEX_CD <!-- 이면구분 -->
, DM_CNT <!-- 동봉물 개수 -->
, SB_FG <!-- 반송불필요 여부 -->
, APVL_NB <!-- 승인번호 -->
, SEND_DATE <!-- 신청 일자 -->
, SEND_TIME <!-- 전송 시간 -->
, RELORSECT_CD <!-- 연계기관결제부서코드 -->
, RECEV_SENDER_ORG_CODE <!-- 발송기관코드 -->
, RECEV_SENDER_NM <!-- 발송인명 -->
, RECEV_SENDER_ZIPCODE <!-- 발송인 우편번호 -->
, RECEV_SENDER_ADDR <!-- 주소 -->
, RECEV_SENDER_DETAILADDR <!-- 상세주소 -->
, RECEV_SENDER_DEPART_TEL <!-- 부과부서 전화번호 -->
, RECEV_SENDER_DEPART_NM <!-- 부과부서 -->
, RECEV_DIV_CD <!-- 등기구분 -->
, RECEV_PRINT_DT <!-- 출력일자 -->
, RECEV_PRINT_YEAR <!-- 출력연도 -->
, RECEV_PRINT_MONTH <!-- 출력월 -->
, RECEV_PRINT_DAY <!-- 출력일 -->
, RECEV_SENDER_FAX <!-- 부과부서 팩스번호 -->
, RECEV_SERDER_STAFF <!-- 부과부서 담당자 -->
, RECEV_SENDER_EMAIL <!-- 부과부서 이메일 -->
, REG_VAR_DATA1 <!-- 추가 데이터1 -->
, REG_VAR_DATA2 <!-- 추가 데이터2 -->
, REG_VAR_DATA3 <!-- 추가 데이터3 -->
, REG_VAR_DATA4 <!-- 추가 데이터4 -->
, REG_VAR_DATA5 <!-- 추가 데이터5 -->
, JOB_CD <!-- 작업 코드 -->
, POST_PRCS_STTS_CD <!-- 우편 처리 상태 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
, RECEV_DIV_CD <!-- 등기구분 -->
, RECEV_PRINT_DT <!-- 출력일자 -->
, RECEV_PRINT_YEAR <!-- 출력연도 -->
, RECEV_PRINT_MONTH <!-- 출력월 -->
, RECEV_PRINT_DAY <!-- 출력일 -->
, RECEV_SENDER_FAX <!-- 부과부서 팩스번호 -->
, RECEV_SERDER_STAFF <!-- 부과부서 담당자 -->
, RECEV_SENDER_EMAIL <!-- 부과부서 이메일 -->
, REG_VAR_DATA1 <!-- 추가 데이터1 -->
, REG_VAR_DATA2 <!-- 추가 데이터2 -->
, REG_VAR_DATA3 <!-- 추가 데이터3 -->
, REG_VAR_DATA4 <!-- 추가 데이터4 -->
, REG_VAR_DATA5 <!-- 추가 데이터5 -->
, JOB_CD <!-- 작업 코드 -->
, POST_PRCS_STTS_CD <!-- 우편 처리 상태 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
VALUES (
#{epostRcptReg.conKey} <!-- 외부연계식별키 -->
, #{epostRcptReg.conOrg} <!-- 외부기관구분코드 -->
, #{epostRcptReg.sndngId} <!-- 발송 ID -->
, #{epostRcptReg.rceptId} <!-- 접수우체국국기호 -->
, #{epostRcptReg.rceptYmd} <!-- 접수 일자 -->
, #{epostRcptReg.dataCd} <!-- 접수코드 -->
, #{epostRcptReg.divKb} <!-- 취급구분 -->
, #{epostRcptReg.dfpayyn} <!-- 결재방법 -->
, #{epostRcptReg.rcptKb} <!-- 내용문 유형 -->
, #{epostRcptReg.sealCd} <!-- 내용문 상세 종류 -->
, #{epostRcptReg.wordKb} <!-- 내용문 종류 -->
, #{epostRcptReg.mailCnt} <!-- 내용문 매수 -->
, #{epostRcptReg.recevCnt} <!-- 수취인 수 -->
, #{epostRcptReg.envCd} <!-- 봉투 종류 -->
, #{epostRcptReg.colorYn} <!-- 칼라우편물 -->
, #{epostRcptReg.mmYn} <!-- 메일머지 플래그 -->
, #{epostRcptReg.flexCd} <!-- 이면구분 -->
, #{epostRcptReg.dmCnt} <!-- 동봉물 개수 -->
, #{epostRcptReg.sbFg} <!-- 반송불필요 여부 -->
, #{epostRcptReg.apvlNb} <!-- 승인번호 -->
, #{epostRcptReg.sendDate} <!-- 신청 일자 -->
, #{epostRcptReg.sendTime} <!-- 전송 시간 -->
, #{epostRcptReg.relorsectCd} <!-- 연계기관결제부서코드 -->
, #{epostRcptReg.recevSenderOrgCode} <!-- 발송기관코드 -->
, #{epostRcptReg.recevSenderNm} <!-- 발송인명 -->
, #{epostRcptReg.recevSenderZipcode} <!-- 발송인 우편번호 -->
, #{epostRcptReg.recevSenderAddr} <!-- 주소 -->
, #{epostRcptReg.recevSenderDetailaddr} <!-- 상세주소 -->
, #{epostRcptReg.recevSenderDepartTel} <!-- 부과부서 전화번호 -->
, #{epostRcptReg.recevSenderDepartNm} <!-- 부과부서 -->
, #{epostRcptReg.recevDivCd} <!-- 등기구분 -->
, #{epostRcptReg.recevPrintDt} <!-- 출력일자 -->
, #{epostRcptReg.recevPrintYear} <!-- 출력연도 -->
, #{epostRcptReg.recevPrintMonth} <!-- 출력월 -->
, #{epostRcptReg.recevPrintDay} <!-- 출력일 -->
, #{epostRcptReg.recevSenderFax} <!-- 부과부서 팩스번호 -->
, #{epostRcptReg.recevSerderStaff} <!-- 부과부서 담당자 -->
, #{epostRcptReg.recevSenderEmail} <!-- 부과부서 이메일 -->
, #{epostRcptReg.regVarData1} <!-- 추가 데이터1 -->
, #{epostRcptReg.regVarData2} <!-- 추가 데이터2 -->
, #{epostRcptReg.regVarData3} <!-- 추가 데이터3 -->
, #{epostRcptReg.regVarData4} <!-- 추가 데이터4 -->
, #{epostRcptReg.regVarData5} <!-- 추가 데이터5 -->
, #{epostRcptReg.jobCd} <!-- 작업 코드 -->
, #{epostRcptReg.postPrcsSttsCd} <!-- 우편 처리 상태 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{epostRcptReg.createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{epostRcptReg.modifiedBy} <!-- 수정자 -->
#{conKey} <!-- 외부연계식별키 -->
, #{conOrg} <!-- 외부기관구분코드 -->
, #{sndngId} <!-- 발송 ID -->
, #{rceptId} <!-- 접수우체국국기호 -->
, #{rceptYmd} <!-- 접수 일자 -->
, #{dataCd} <!-- 접수코드 -->
, #{divKb} <!-- 취급구분 -->
, #{dfpayyn} <!-- 결재방법 -->
, #{rcptKb} <!-- 내용문 유형 -->
, #{sealCd} <!-- 내용문 상세 종류 -->
, #{wordKb} <!-- 내용문 종류 -->
, #{mailCnt} <!-- 내용문 매수 -->
, #{recevCnt} <!-- 수취인 수 -->
, #{envCd} <!-- 봉투 종류 -->
, #{colorYn} <!-- 칼라우편물 -->
, #{mmYn} <!-- 메일머지 플래그 -->
, #{flexCd} <!-- 이면구분 -->
, #{dmCnt} <!-- 동봉물 개수 -->
, #{sbFg} <!-- 반송불필요 여부 -->
, #{apvlNb} <!-- 승인번호 -->
, #{sendDate} <!-- 신청 일자 -->
, #{sendTime} <!-- 전송 시간 -->
, #{relorsectCd} <!-- 연계기관결제부서코드 -->
, #{recevSenderOrgCode} <!-- 발송기관코드 -->
, #{recevSenderNm} <!-- 발송인명 -->
, #{recevSenderZipcode} <!-- 발송인 우편번호 -->
, #{recevSenderAddr} <!-- 주소 -->
, #{recevSenderDetailaddr} <!-- 상세주소 -->
, #{recevSenderDepartTel} <!-- 부과부서 전화번호 -->
, #{recevSenderDepartNm} <!-- 부과부서 -->
, #{recevDivCd} <!-- 등기구분 -->
, #{recevPrintDt} <!-- 출력일자 -->
, #{recevPrintYear} <!-- 출력연도 -->
, #{recevPrintMonth} <!-- 출력월 -->
, #{recevPrintDay} <!-- 출력일 -->
, #{recevSenderFax} <!-- 부과부서 팩스번호 -->
, #{recevSerderStaff} <!-- 부과부서 담당자 -->
, #{recevSenderEmail} <!-- 부과부서 이메일 -->
, #{regVarData1} <!-- 추가 데이터1 -->
, #{regVarData2} <!-- 추가 데이터2 -->
, #{regVarData3} <!-- 추가 데이터3 -->
, #{regVarData4} <!-- 추가 데이터4 -->
, #{regVarData5} <!-- 추가 데이터5 -->
, #{jobCd} <!-- 작업 코드 -->
, #{postPrcsSttsCd} <!-- 우편 처리 상태 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateEpostRcptReg" parameterType="map">/* 전자우편 접수 등록 수정(epostRcptRegMapper.updateEpostRcptReg) */
<update id="updateEpostRcptReg" parameterType="cokr.xit.fims.epst.EpostRcptReg">/* 전자우편 접수 등록 수정(epostRcptRegMapper.updateEpostRcptReg) */
UPDATE TB_EPOST_RCPT_REG
SET RCEPT_YMD = #{epostRcptReg.rceptYmd} <!-- 접수 일자 -->
, CON_ORG = #{epostRcptReg.conOrg} <!-- 접수우체국국기호 -->
, RCEPT_ID = #{epostRcptReg.rceptId} <!-- 접수우체국국기호 -->
, DATA_CD = #{epostRcptReg.dataCd} <!-- 접수코드 -->
, DIV_KB = #{epostRcptReg.divKb} <!-- 취급구분 -->
, DFPAYYN = #{epostRcptReg.dfpayyn} <!-- 결재방법 -->
, RCPT_KB = #{epostRcptReg.rcptKb} <!-- 내용문 유형 -->
, SEAL_CD = #{epostRcptReg.sealCd} <!-- 내용문 상세 종류 -->
, WORD_KB = #{epostRcptReg.wordKb} <!-- 내용문 종류 -->
, MAIL_CNT = #{epostRcptReg.mailCnt} <!-- 내용문 매수 -->
, RECEV_CNT = #{epostRcptReg.recevCnt} <!-- 수취인 수 -->
, ENV_CD = #{epostRcptReg.envCd} <!-- 봉투 종류 -->
, COLOR_YN = #{epostRcptReg.colorYn} <!-- 칼라우편물 -->
, MM_YN = #{epostRcptReg.mmYn} <!-- 메일머지 플래그 -->
, FLEX_CD = #{epostRcptReg.flexCd} <!-- 이면구분 -->
, DM_CNT = #{epostRcptReg.dmCnt} <!-- 동봉물 개수 -->
, SB_FG = #{epostRcptReg.sbFg} <!-- 반송불필요 여부 -->
, APVL_NB = #{epostRcptReg.apvlNb} <!-- 승인번호 -->
, SEND_DATE = #{epostRcptReg.sendDate} <!-- 신청 일자 -->
, SEND_TIME = #{epostRcptReg.sendTime} <!-- 전송 시간 -->
, RELORSECT_CD = #{epostRcptReg.relorsectCd} <!-- 연계기관결제부서코드 -->
, RECEV_SENDER_ORG_CODE = #{epostRcptReg.recevSenderOrgCode} <!-- 발송기관코드 -->
, RECEV_SENDER_NM = #{epostRcptReg.recevSenderNm} <!-- 발송인명 -->
, RECEV_SENDER_ZIPCODE = #{epostRcptReg.recevSenderZipcode} <!-- 발송인 우편번호 -->
, RECEV_SENDER_ADDR = #{epostRcptReg.recevSenderAddr} <!-- 주소 -->
, RECEV_SENDER_DETAILADDR = #{epostRcptReg.recevSenderDetailaddr} <!-- 상세주소 -->
, RECEV_SENDER_DEPART_TEL = #{epostRcptReg.recevSenderDepartTel} <!-- 부과부서 전화번호 -->
, RECEV_SENDER_DEPART_NM = #{epostRcptReg.recevSenderDepartNm} <!-- 부과부서 -->
, RECEV_DIV_CD = #{epostRcptReg.recevDivCd} <!-- 등기구분 -->
, RECEV_PRINT_DT = #{epostRcptReg.recevPrintDt} <!-- 출력일자 -->
, RECEV_PRINT_YEAR = #{epostRcptReg.recevPrintYear} <!-- 출력연도 -->
, RECEV_PRINT_MONTH = #{epostRcptReg.recevPrintMonth} <!-- 출력월 -->
, RECEV_PRINT_DAY = #{epostRcptReg.recevPrintDay} <!-- 출력일 -->
, RECEV_SENDER_FAX = #{epostRcptReg.recevSenderFax} <!-- 부과부서 팩스번호 -->
, RECEV_SERDER_STAFF = #{epostRcptReg.recevSerderStaff} <!-- 부과부서 담당자 -->
, RECEV_SENDER_EMAIL = #{epostRcptReg.recevSenderEmail} <!-- 부과부서 이메일 -->
, REG_VAR_DATA1 = #{epostRcptReg.regVarData1} <!-- 추가 데이터1 -->
, REG_VAR_DATA2 = #{epostRcptReg.regVarData2} <!-- 추가 데이터2 -->
, REG_VAR_DATA3 = #{epostRcptReg.regVarData3} <!-- 추가 데이터3 -->
, REG_VAR_DATA4 = #{epostRcptReg.regVarData4} <!-- 추가 데이터4 -->
, REG_VAR_DATA5 = #{epostRcptReg.regVarData5} <!-- 추가 데이터5 -->
, JOB_CD = #{epostRcptReg.jobCd} <!-- 작업 코드 -->
, POST_PRCS_STTS_CD = #{epostRcptReg.postPrcsSttsCd} <!-- 우편 처리 상태 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{epostRcptReg.modifiedBy} <!-- 수정자 -->
WHERE CON_KEY = #{epostRcptReg.conKey}
AND DEL_YN = 'N'
SET RCEPT_YMD = #{rceptYmd} <!-- 접수 일자 -->
, CON_ORG = #{conOrg} <!-- 접수우체국국기호 -->
, RCEPT_ID = #{rceptId} <!-- 접수우체국국기호 -->
, DATA_CD = #{dataCd} <!-- 접수코드 -->
, DIV_KB = #{divKb} <!-- 취급구분 -->
, DFPAYYN = #{dfpayyn} <!-- 결재방법 -->
, RCPT_KB = #{rcptKb} <!-- 내용문 유형 -->
, SEAL_CD = #{sealCd} <!-- 내용문 상세 종류 -->
, WORD_KB = #{wordKb} <!-- 내용문 종류 -->
, MAIL_CNT = #{mailCnt} <!-- 내용문 매수 -->
, RECEV_CNT = #{recevCnt} <!-- 수취인 수 -->
, ENV_CD = #{envCd} <!-- 봉투 종류 -->
, COLOR_YN = #{colorYn} <!-- 칼라우편물 -->
, MM_YN = #{mmYn} <!-- 메일머지 플래그 -->
, FLEX_CD = #{flexCd} <!-- 이면구분 -->
, DM_CNT = #{dmCnt} <!-- 동봉물 개수 -->
, SB_FG = #{sbFg} <!-- 반송불필요 여부 -->
, APVL_NB = #{apvlNb} <!-- 승인번호 -->
, SEND_DATE = #{sendDate} <!-- 신청 일자 -->
, SEND_TIME = #{sendTime} <!-- 전송 시간 -->
, RELORSECT_CD = #{relorsectCd} <!-- 연계기관결제부서코드 -->
, RECEV_SENDER_ORG_CODE= #{recevSenderOrgCode} <!-- 발송기관코드 -->
, RECEV_SENDER_NM = #{recevSenderNm} <!-- 발송인명 -->
, RECEV_SENDER_ZIPCODE = #{recevSenderZipcode} <!-- 발송인 우편번호 -->
, RECEV_SENDER_ADDR = #{recevSenderAddr} <!-- 주소 -->
, RECEV_SENDER_DETAILADDR = #{recevSenderDetailaddr} <!-- 상세주소 -->
, RECEV_SENDER_DEPART_TEL = #{recevSenderDepartTel} <!-- 부과부서 전화번호 -->
, RECEV_SENDER_DEPART_NM = #{recevSenderDepartNm} <!-- 부과부서 -->
, RECEV_DIV_CD = #{recevDivCd} <!-- 등기구분 -->
, RECEV_PRINT_DT = #{recevPrintDt} <!-- 출력일자 -->
, RECEV_PRINT_YEAR = #{recevPrintYear} <!-- 출력연도 -->
, RECEV_PRINT_MONTH = #{recevPrintMonth} <!-- 출력월 -->
, RECEV_PRINT_DAY = #{recevPrintDay} <!-- 출력일 -->
, RECEV_SENDER_FAX = #{recevSenderFax} <!-- 부과부서 팩스번호 -->
, RECEV_SERDER_STAFF = #{recevSerderStaff} <!-- 부과부서 담당자 -->
, RECEV_SENDER_EMAIL = #{recevSenderEmail} <!-- 부과부서 이메일 -->
, REG_VAR_DATA1 = #{regVarData1} <!-- 추가 데이터1 -->
, REG_VAR_DATA2 = #{regVarData2} <!-- 추가 데이터2 -->
, REG_VAR_DATA3 = #{regVarData3} <!-- 추가 데이터3 -->
, REG_VAR_DATA4 = #{regVarData4} <!-- 추가 데이터4 -->
, REG_VAR_DATA5 = #{regVarData5} <!-- 추가 데이터5 -->
, JOB_CD = #{jobCd} <!-- 작업 코드 -->
, POST_PRCS_STTS_CD = #{postPrcsSttsCd} <!-- 우편 처리 상태 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE CON_KEY = #{conKey}
AND DEL_YN = 'N'
</update>
<update id="deleteEpostRcptReg" parameterType="map">/* 전자우편 접수 등록 삭제(epostRcptRegMapper.deleteEpostRcptReg) */
<update id="deleteEpostRcptReg" parameterType="cokr.xit.fims.epst.EpostRcptReg">/* 전자우편 접수 등록 삭제(epostRcptRegMapper.deleteEpostRcptReg) */
UPDATE TB_EPOST_RCPT_REG
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{epostRcptReg.modifiedBy} <!-- 삭제자 -->
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
<choose>
<when test="epostRcptReg.conKeys != null">
WHERE CON_KEY IN ( <!-- 외부연계식별키s -->
WHERE CON_KEY IN ( <!-- 외부연계식별키s -->
<foreach collection="epostRcptReg.conKeys" item="epostRcptReg.conKey" separator=","> #{epostRcptReg.conKey} </foreach>
)
</when>
<otherwise>
WHERE CON_KEY = #{epostRcptReg.conKey} <!-- 외부연계식별키 -->
WHERE CON_KEY = #{conKey} <!-- 외부연계식별키 -->
</otherwise>
</choose>
AND DEL_YN = 'N'
</update>
<update id="updatePostPrcsSttsCd" parameterType="cokr.xit.fims.epst.EpostRcptReg">/* 전자우편 접수 등록 정보의 우편 처리 상태 코드를 수정(epostRcptRegMapper.updatePostPrcsSttsCd) */
UPDATE TB_EPOST_RCPT_REG
SET POST_PRCS_STTS_CD= #{postPrcsSttsCd} <!-- 우편 처리 상태 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE CON_KEY = #{conKey}
AND DEL_YN = 'N'
</update>
</mapper>

@ -242,7 +242,7 @@
, CC.CVLCPT_PRCS_PIC_NM <!-- 민원 처리 담당자 명 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, CC.CVLCPT_PRCS_CMPTN_DT <!-- 민원 처리 완료 일시 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
@ -256,14 +256,14 @@
, LE.LEVY_EXCL_ID <!-- 부과 제외 ID -->
, LE.LEVY_EXCL_YMD <!-- 부과 제외 일자 -->
, LE.LEVY_EXCL_RSN_CD <!-- 부과 제외 사유 코드 -->
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 -->
, LE.ETC_CN <!-- 기타 내용 -->
, LE.REG_DT <!-- 등록 일시 -->
, LE.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, LE.MDFCN_DT <!-- 수정 일시 -->
, LE.MDFR <!-- 수정자 -->
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
</sql>
<sql id="fromWrngTrgt">
@ -273,7 +273,7 @@
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN)
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
<if test="crdnIds != null">
@ -293,15 +293,21 @@
<if test="schLevyExclYmdTo != null">
AND LE.LEVY_EXCL_YMD <![CDATA[<=]]> #{schLevyExclYmdTo} <!-- 부과제외 일자 종료 -->
</if>
<if test="schLevyExclRsnCd != null">
AND LE.LEVY_EXCL_RSN_CD <![CDATA[<=]]> #{schLevyExclRsnCd} <!-- 부과제외 사유 코드 -->
</if>
<if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if>
<if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</if>
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="schRtpyrNo != null">
AND P.RTPYR_NO = #{schRtpyrNo} <!-- 납부자 번호 -->
</if>
<if test="schRtpyrNm != null">
AND P.RTPYR_NM = #{schRtpyrNm} <!-- 납부자 명 -->
</if>
@ -371,7 +377,6 @@
<when test="by == 'vltnArtcl'"> V.VLTN_ARTCL </when>
<when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'zip'"> PA.ZIP </when>
<when test="by == 'addr'"> PA.ADDR </when>
<when test="by == 'dtlAddr'"> PA.DTL_ADDR </when>
@ -417,68 +422,68 @@
</select>
<sql id="selectAdvntceTrgt">
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, C.REG_DT <!-- 등록 일시 -->
, C.RGTR <!-- 등록자 -->
, C.MDFCN_DT <!-- 수정 일시 -->
, C.MDFR <!-- 수정자 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM <!-- 단속 입력 구분 명 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, CA.DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, CA.CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CA.CRDN_END_TM <!-- 단속 종료 시각 -->
, CA.CRDN_SN <!-- 단속 일련번호 -->
, CA.USE_FUEL_CD <!-- 사용 연료 코드 -->
, CA.FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTIME_YN <!-- 시간외 여부 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, C.REG_DT <!-- 등록 일시 -->
, C.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, C.MDFCN_DT <!-- 수정 일시 -->
, C.MDFR <!-- 수정자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, CA.DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM <!-- 사용 연료 명 -->
, CA.CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CA.CRDN_END_TM <!-- 단속 종료 시각 -->
, CA.CRDN_SN <!-- 단속 일련번호 -->
, CA.USE_FUEL_CD <!-- 사용 연료 코드 -->
, (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM <!-- 사용 연료 명 -->
, CA.FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM <!-- 과태료 차종 명 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_APLCNT_NM <!-- 민원 신청인 명 -->
, CC.CVLCPT_APLY_DT <!-- 민원 신청 일시 -->
, CC.CVLCPT_PRCS_PIC_NM <!-- 민원 처리 담당자 명 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, CC.CVLCPT_PRCS_CMPTN_DT <!-- 민원 처리 완료 일시 -->
, CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTIME_YN <!-- 시간외 여부 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_APLCNT_NM <!-- 민원 신청인 명 -->
, CC.CVLCPT_APLY_DT <!-- 민원 신청 일시 -->
, CC.CVLCPT_PRCS_PIC_NM <!-- 민원 처리 담당자 명 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, CC.CVLCPT_PRCS_CMPTN_DT <!-- 민원 처리 완료 일시 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, (GET_BRDT_FORMAT(P.RTPYR_BRDT, '.')) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
</sql>
<sql id="fromAdvntceTrgt">
@ -607,7 +612,7 @@
<select id="selectAdvntceTrgtList" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 목록 조회(sndngMapper.selectAdvntceSndngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
SELECT C.CRDN_ID <!-- 단속 ID -->
, SUM(C.FFNLG_AMT) OVER() AS GRAMT <!-- 총금액 -->
<include refid="selectAdvntceTrgt" />
<include refid="fromAdvntceTrgt" />
@ -629,39 +634,39 @@
</select>
<sql id="selectNhtTrgt">
, L.SGG_CD <!-- 시군구 코드 -->
, L.TASK_SE_CD <!-- 업무 구분 코드 -->
, L.INST_CD <!-- 기관 코드 -->
, L.DEPT_CD <!-- 부서 코드 -->
, L.SPCL_BIZ_CD <!-- 특별회계 사업 코드 -->
, L.FYR <!-- 회계연도 -->
, L.ACNTG_SE_CD <!-- 회계 구분 코드 -->
, L.TXITM_CD <!-- 세목 코드 -->
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, L.SGG_CD <!-- 시군구 코드 -->
, L.TASK_SE_CD <!-- 업무 구분 코드 -->
, L.INST_CD <!-- 기관 코드 -->
, L.DEPT_CD <!-- 부서 코드 -->
, L.SPCL_BIZ_CD <!-- 특별회계 사업 코드 -->
, L.FYR <!-- 회계연도 -->
, L.ACNTG_SE_CD <!-- 회계 구분 코드 -->
, L.TXITM_CD <!-- 세목 코드 -->
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, (GET_BRDT_FORMAT(P.RTPYR_BRDT, '.')) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
</sql>
<sql id="fromNhtTrgt">
@ -733,127 +738,126 @@
</select>
<sql id="selectCrdnPayer">
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, (GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':')) AS CRDN_YMD_TM_MASK <!-- 단속 일시 마스크 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, (GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':')) AS CRDN_YMD_TM_MASK <!-- 단속 일시 마스크 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, V.ACNTG_SE_NM <!-- 회계 구분 명 -->
, V.TXITM_NM <!-- 세목 명 -->
, V.OPER_ITEM_NM <!-- 운영 항목 명 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_PRCS_SUMRY <!-- 민원 처리 요약 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, V.ACNTG_SE_NM <!-- 회계 구분 명 -->
, V.TXITM_NM <!-- 세목 명 -->
, V.OPER_ITEM_NM <!-- 운영 항목 명 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_PRCS_SUMRY <!-- 민원 처리 요약 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, CC.CVLCPT_PRCS_CMPTN_DT <!-- 민원 처리 완료 일시 -->
, CC.CVLCPT_TRSM_CD <!-- 민원 전송 코드 -->
, CC.CVLCPT_TRSM_DT <!-- 민원 전송 일시 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, L.LEVY_ID <!-- 부과 ID -->
, L.INST_CD <!-- 기관 코드 -->
, 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.LEVY_PCPTAX <!-- 부과 본세 -->
, L.LEVY_ADAMT <!-- 부과 가산금 -->
, L.INSPY_INT <!-- 분납 이자 -->
, L.RCVMT_PCPTAX <!-- 수납 본세 -->
, L.RCVMT_ADAMT <!-- 수납 가산금 -->
, L.RDCAMT_PCPTAX <!-- 감액 본세 -->
, L.RDCAMT_ADAMT <!-- 감액 가산금 -->
, L.SUM_AMT <!-- 합계 금액 -->
, L.DUDT_AFTR_AMT <!-- 납기 후 금액 -->
, L.TXTN_THING <!-- 과세 물건 -->
, L.MNG_ITEM1 <!-- 관리 아이템1 -->
, L.MNG_ITEM2 <!-- 관리 아이템2 -->
, L.MNG_ITEM3 <!-- 관리 아이템3 -->
, L.MNG_ITEM4 <!-- 관리 아이템4 -->
, L.MNG_ITEM5 <!-- 관리 아이템5 -->
, L.MNG_ITEM6 <!-- 관리 아이템6 -->
, 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.BANK_NM12 <!-- 은행 명12 -->
, L.VR_ACTNO12 <!-- 가상 계좌번호12 -->
, L.BANK_NM13 <!-- 은행 명13 -->
, L.VR_ACTNO13 <!-- 가상 계좌번호13 -->
, L.BANK_NM14 <!-- 은행 명14 -->
, L.VR_ACTNO14 <!-- 가상 계좌번호14 -->
, L.BANK_NM15 <!-- 은행 명15 -->
, L.VR_ACTNO15 <!-- 가상 계좌번호15 -->
, L.BANK_NM16 <!-- 은행 명16 -->
, L.VR_ACTNO16 <!-- 가상 계좌번호16 -->
, L.BANK_NM17 <!-- 은행 명17 -->
, L.VR_ACTNO17 <!-- 가상 계좌번호17 -->
, L.BANK_NM18 <!-- 은행 명18 -->
, L.VR_ACTNO18 <!-- 가상 계좌번호18 -->
, L.BANK_NM19 <!-- 은행 명19 -->
, L.VR_ACTNO19 <!-- 가상 계좌번호19 -->
, L.BANK_NM20 <!-- 은행 명20 -->
, L.VR_ACTNO20 <!-- 가상 계좌번호20 -->
, (CASE WHEN L.FFNLG_AMT IS NOT NULL THEN L.FFNLG_AMT
ELSE C.FFNLG_AMT
END) AS FFNLG_AMT <!-- 과태료 금액 -->
, L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS PCPTAX <!-- 본세 -->
, L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS ADAMT <!-- 가산금 -->
, CC.CVLCPT_TRSM_CD <!-- 민원 전송 코드 -->
, CC.CVLCPT_TRSM_DT <!-- 민원 전송 일시 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, L.LEVY_ID <!-- 부과 ID -->
, L.INST_CD <!-- 기관 코드 -->
, 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.LEVY_PCPTAX <!-- 부과 본세 -->
, L.LEVY_ADAMT <!-- 부과 가산금 -->
, L.INSPY_INT <!-- 분납 이자 -->
, L.RCVMT_PCPTAX <!-- 수납 본세 -->
, L.RCVMT_ADAMT <!-- 수납 가산금 -->
, L.RDCAMT_PCPTAX <!-- 감액 본세 -->
, L.RDCAMT_ADAMT <!-- 감액 가산금 -->
, L.SUM_AMT <!-- 합계 금액 -->
, L.DUDT_AFTR_AMT <!-- 납기 후 금액 -->
, L.TXTN_THING <!-- 과세 물건 -->
, L.MNG_ITEM1 <!-- 관리 아이템1 -->
, L.MNG_ITEM2 <!-- 관리 아이템2 -->
, L.MNG_ITEM3 <!-- 관리 아이템3 -->
, L.MNG_ITEM4 <!-- 관리 아이템4 -->
, L.MNG_ITEM5 <!-- 관리 아이템5 -->
, L.MNG_ITEM6 <!-- 관리 아이템6 -->
, 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.BANK_NM12 <!-- 은행 명12 -->
, L.VR_ACTNO12 <!-- 가상 계좌번호12 -->
, L.BANK_NM13 <!-- 은행 명13 -->
, L.VR_ACTNO13 <!-- 가상 계좌번호13 -->
, L.BANK_NM14 <!-- 은행 명14 -->
, L.VR_ACTNO14 <!-- 가상 계좌번호14 -->
, L.BANK_NM15 <!-- 은행 명15 -->
, L.VR_ACTNO15 <!-- 가상 계좌번호15 -->
, L.BANK_NM16 <!-- 은행 명16 -->
, L.VR_ACTNO16 <!-- 가상 계좌번호16 -->
, L.BANK_NM17 <!-- 은행 명17 -->
, L.VR_ACTNO17 <!-- 가상 계좌번호17 -->
, L.BANK_NM18 <!-- 은행 명18 -->
, L.VR_ACTNO18 <!-- 가상 계좌번호18 -->
, L.BANK_NM19 <!-- 은행 명19 -->
, L.VR_ACTNO19 <!-- 가상 계좌번호19 -->
, L.BANK_NM20 <!-- 은행 명20 -->
, L.VR_ACTNO20 <!-- 가상 계좌번호20 -->
, (CASE WHEN L.FFNLG_AMT IS NOT NULL THEN L.FFNLG_AMT ELSE C.FFNLG_AMT END) AS FFNLG_AMT <!-- 과태료 금액 -->
, L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS PCPTAX <!-- 본세 -->
, L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS ADAMT <!-- 가산금 -->
FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
@ -879,11 +883,14 @@
<include refid="utility.orderBy" />
</select>
<insert id="insertSndng" parameterType="map">/* 발송 대장 등록(sndngMapper.insertSndng) */
<selectKey resultType="string" keyProperty="sndng.sndngId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(#{sndng.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(SNDNG_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
FROM TB_SNDNG
WHERE SNDNG_ID LIKE CONCAT(#{sndng.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
<insert id="insertSndng" parameterType="cokr.xit.fims.sndb.Sndng">/* 발송 대장 등록(sndngMapper.insertSndng) */
<selectKey resultType="string" keyProperty="sndngId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyBySggAndYear">
<property name="TABLE_NAME" value="TB_SNDNG" />
<property name="TABLE_KEY" value="SNDNG_ID" />
<property name="sggCd" value="#{sggCd}" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_SNDNG (
@ -915,78 +922,78 @@
, MDFR <!-- 수정자 -->
)
VALUES (
#{sndng.sndngId} <!-- 발송 ID -->
, #{sndng.sggCd} <!-- 시군구 코드 -->
, #{sndng.taskSeCd} <!-- 업무 구분 코드 -->
, #{sndng.deptCd} <!-- 부서 코드 -->
, #{sndng.sndngRegSeCd} <!-- 발송 등록 구분 코드 -->
, #{sndng.sndngSeCd} <!-- 발송 구분 코드 -->
#{sndngId} <!-- 발송 ID -->
, #{sggCd} <!-- 시군구 코드 -->
, #{taskSeCd} <!-- 업무 구분 코드 -->
, #{deptCd} <!-- 부서 코드 -->
, #{sndngRegSeCd} <!-- 발송 등록 구분 코드 -->
, #{sndngSeCd} <!-- 발송 구분 코드 -->
, (SELECT VLTN_ID FROM TB_VLTN
WHERE SGG_CD = #{sndng.sggCd}
AND TASK_SE_CD = #{sndng.taskSeCd}
AND VLTN_CD = #{sndng.vltnCd}) <!-- 위반 ID -->
, #{sndng.levyBgngYmd} <!-- 부과 시작 일자 -->
, #{sndng.levyEndYmd} <!-- 부과 종료 일자 -->
, #{sndng.sndngYmd} <!-- 발송 일자 -->
, #{sndng.sndngEndYmd} <!-- 발송 종료 일자 -->
, #{sndng.ttlNm} <!-- 제목 명 -->
, #{sndng.docNo} <!-- 문서 번호 -->
, #{sndng.etcCn} <!-- 기타 내용 -->
, #{sndng.tnocs} <!-- 총건수 -->
, #{sndng.gramt} <!-- 총금액 -->
, #{sndng.conKey} <!-- 외부연계식별키 -->
, #{sndng.divKb} <!-- 취급 구분 -->
, #{sndng.epostNoticeId} <!-- 전자우편 안내문 ID -->
, #{sndng.sndngSttsCd} <!-- 발송 상태 코드 -->
, #{sndng.resndYn} <!-- 재발송 여부 -->
, #{sndng.delYn} <!-- 삭제 여부 -->
WHERE SGG_CD = #{sggCd}
AND TASK_SE_CD = #{taskSeCd}
AND VLTN_CD = #{vltnCd}) <!-- 위반 ID -->
, #{levyBgngYmd} <!-- 부과 시작 일자 -->
, #{levyEndYmd} <!-- 부과 종료 일자 -->
, #{sndngYmd} <!-- 발송 일자 -->
, #{sndngEndYmd} <!-- 발송 종료 일자 -->
, #{ttlNm} <!-- 제목 명 -->
, #{docNo} <!-- 문서 번호 -->
, #{etcCn} <!-- 기타 내용 -->
, #{tnocs} <!-- 총건수 -->
, #{gramt} <!-- 총금액 -->
, #{conKey} <!-- 외부연계식별키 -->
, #{divKb} <!-- 취급 구분 -->
, #{epostNoticeId} <!-- 전자우편 안내문 ID -->
, #{sndngSttsCd} <!-- 발송 상태 코드 -->
, #{resndYn} <!-- 재발송 여부 -->
, #{delYn} <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{sndng.createdBy} <!-- 등록자 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{sndng.modifiedBy} <!-- 수정자 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateSndng" parameterType="map">/* 발송 대장 수정(sndngMapper.updateSndng) */
<update id="updateSndng" parameterType="cokr.xit.fims.sndb.Sndng">/* 발송 대장 수정(sndngMapper.updateSndng) */
UPDATE TB_SNDNG
SET SNDNG_SE_CD = #{sndng.sndngSeCd} <!-- 발송 구분 코드 -->
, LEVY_BGNG_YMD = #{sndng.levyBgngYmd} <!-- 부과 시작 일자 -->
, LEVY_END_YMD = #{sndng.levyEndYmd} <!-- 부과 종료 일자 -->
, VLTN_ID = #{sndng.vltnId} <!-- 위반 ID -->
, SNDNG_YMD = #{sndng.sndngYmd} <!-- 발송 일자 -->
, SNDNG_END_YMD = #{sndng.sndngEndYmd} <!-- 납기 일자 -->
, TTL_NM = #{sndng.ttlNm} <!-- 제목 명 -->
, DOC_NO = #{sndng.docNo} <!-- 문서 번호 -->
, ETC_CN = #{sndng.etcCn} <!-- 기타 내용 -->
, TNOCS = #{sndng.tnocs} <!-- 총건수 -->
, GRAMT = #{sndng.gramt} <!-- 총금액 -->
, CON_KEY = #{sndng.conKey} <!-- 외부연계식별키 -->
, DIV_KB = #{sndng.divKb} <!-- 취급 구분 -->
, EPOST_NOTICE_ID = #{sndng.epostNoticeId}<!-- 전자우편 안내문 ID -->
, SNDNG_STTS_CD = #{sndng.sndngSttsCd} <!-- 발송 상태 코드 -->
, RESND_YN = #{sndng.resndYn} <!-- 재발송 여부 -->
SET SNDNG_SE_CD = #{sndngSeCd} <!-- 발송 구분 코드 -->
, LEVY_BGNG_YMD = #{levyBgngYmd} <!-- 부과 시작 일자 -->
, LEVY_END_YMD = #{levyEndYmd} <!-- 부과 종료 일자 -->
, VLTN_ID = #{vltnId} <!-- 위반 ID -->
, SNDNG_YMD = #{sndngYmd} <!-- 발송 일자 -->
, SNDNG_END_YMD = #{sndngEndYmd} <!-- 납기 일자 -->
, TTL_NM = #{ttlNm} <!-- 제목 명 -->
, DOC_NO = #{docNo} <!-- 문서 번호 -->
, ETC_CN = #{etcCn} <!-- 기타 내용 -->
, TNOCS = #{tnocs} <!-- 총건수 -->
, GRAMT = #{gramt} <!-- 총금액 -->
, CON_KEY = #{conKey} <!-- 외부연계식별키 -->
, DIV_KB = #{divKb} <!-- 취급 구분 -->
, EPOST_NOTICE_ID = #{epostNoticeId}<!-- 전자우편 안내문 ID -->
, SNDNG_STTS_CD = #{sndngSttsCd} <!-- 발송 상태 코드 -->
, RESND_YN = #{resndYn} <!-- 재발송 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{sndng.modifiedBy} <!-- 수정자 -->
WHERE SNDNG_ID = #{sndng.sndngId} <!-- 발송 ID -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE SNDNG_ID = #{sndngId} <!-- 발송 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteSndng" parameterType="map">/* 발송 대장 삭제(sndngMapper.deleteSndng) */
<update id="deleteSndng" parameterType="cokr.xit.fims.sndb.Sndng">/* 발송 대장 삭제(sndngMapper.deleteSndng) */
UPDATE TB_SNDNG
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{sndng.modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{sndng.delRsn} <!-- 삭제 사유 -->
WHERE SNDNG_ID = #{sndng.sndngId} <!-- 발송 ID -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{delRsn} <!-- 삭제 사유 -->
WHERE SNDNG_ID = #{sndngId} <!-- 발송 ID -->
AND DEL_YN = 'N'
</update>
<update id="updateSndngSttsCd" parameterType="map">/* 발송 대장 정보의 발송 상태 코드를 수정(sndngMapper.updateSndngSttsCd) */
<update id="updateSndngSttsCd" parameterType="cokr.xit.fims.sndb.Sndng">/* 발송 대장 정보의 발송 상태 코드를 수정(sndngMapper.updateSndngSttsCd) */
UPDATE TB_SNDNG
SET SNDNG_STTS_CD = #{sndng.sndngSttsCd} <!-- 발송 상태 코드 -->
SET SNDNG_STTS_CD = #{sndngSttsCd} <!-- 발송 상태 코드 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{sndng.modifiedBy} <!-- 수정자 -->
WHERE SNDNG_ID = #{sndng.sndngId} <!-- 발송 ID -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE SNDNG_ID = #{sndngId} <!-- 발송 ID -->
AND DEL_YN = 'N'
</update>

File diff suppressed because it is too large Load Diff

@ -29,6 +29,7 @@
<sql id="select">
SELECT SV.SVBTC_ID <!-- 공시송달 ID -->
, SV.SNDNG_SE_CD <!-- 발송 구분 코드 -->
, (SELECT GET_CODE_NM('FIM047', SV.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, SV.SVBTC_YMD <!-- 공시송달 일자 -->
, SV.SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, SV.TTL_NM <!-- 제목 명 -->
@ -38,14 +39,10 @@
, SV.DEL_YN <!-- 삭제 여부 -->
, SV.REG_DT <!-- 등록 일시 -->
, SV.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, SV.MDFCN_DT <!-- 수정 일시 -->
, SV.MDFR <!-- 수정자 -->
, SV.DEL_DT <!-- 삭제 일시 -->
, SV.DLTR <!-- 삭제자 -->
, (SELECT GET_CODE_NM('FIM047', SV.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.MDFR) AS MDFR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.DLTR) AS DLTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.MDFR) AS MDFR_NM <!-- 등록자 명 -->
FROM TB_SVBTC SV
</sql>
@ -60,9 +57,9 @@
AND SV.SVBTC_YMD <![CDATA[<=]]> #{schSvbtcYmdTo} <!-- 발송 일자 종료 -->
</if>
<if test="schSndngSeCd != null">
AND SV.SNDNG_SE_CD = #{schSndngSeCd} <!-- 발송 구분 코드 -->
AND SV.SNDNG_SE_CD = #{schSndngSeCd} <!-- 발송 구분 코드 -->
</if>
AND SV.DEL_YN = 'N' <!-- 삭제 여부 -->
AND SV.DEL_YN = 'N' <!-- 삭제 여부 -->
<choose>
<when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null">
@ -142,6 +139,7 @@
<sql id="selectDtl">
SELECT SV.SVBTC_ID <!-- 공시송달 ID -->
, SV.SNDNG_SE_CD <!-- 발송 구분 코드 -->
, (SELECT GET_CODE_NM('FIM047', SV.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, SV.SVBTC_YMD <!-- 공시송달 일자 -->
, SV.SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, SV.DOC_NO <!-- 문서 번호 -->
@ -151,14 +149,10 @@
, SV.DEL_YN <!-- 삭제 여부 -->
, SV.REG_DT <!-- 등록 일시 -->
, SV.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, SV.MDFCN_DT <!-- 수정 일시 -->
, SV.MDFR <!-- 수정자 -->
, SV.DEL_DT <!-- 삭제 일시 -->
, SV.DLTR <!-- 삭제자 -->
, (SELECT GET_CODE_NM('FIM047', SV.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.MDFR) AS MDFR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.DLTR) AS DLTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.MDFR) AS MDFR_NM <!-- 등록자 명 -->
, SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
, SD.SNDNG_ID <!-- 발송 ID -->
, SD.CRDN_ID <!-- 단속 ID -->
@ -171,7 +165,10 @@
, SD.SNDNG_YMD <!-- 발송 일자 -->
, SD.SNDNG_END_YMD <!-- 발송 종료 일자 -->
, SD.LEVY_YMD <!-- 부과 일자 -->
, (SELECT GET_MASK_DATE(SD.LEVY_YMD, '.') FROM DUAL) AS LEVY_YMD_MASK <!-- 부과 일자 -->
, SD.DUDT_YMD <!-- 납기 일자 -->
, (SELECT GET_MASK_DATE(SD.DUDT_YMD, '.') FROM DUAL) AS DUDT_YMD_MASK <!-- 납기 일자 -->
, (SELECT GET_MASK_DATE(SD.DUDT_YMD, 'K') FROM DUAL) AS DUDT_YMD_MASK_KOR <!-- 납기 일자(한글표기) -->
, SD.FFNLG_AMT <!-- 과태료 금액 -->
, SD.PCPTAX <!-- 본세 -->
, SD.ADAMT <!-- 가산금 -->
@ -186,17 +183,14 @@
, SD.DLVR_YMD <!-- 배달 일자 -->
, SD.DLVR_TM <!-- 배달 시각 -->
, SD.UNDLVR_RSN_NM <!-- 미배달 사유 명 -->
, (SELECT GET_CODE('EGP010', SD.UNDLVR_RSN_NM) FROM DUAL) AS UNDLVR_RSN_CD <!-- 미배달 사유 코드 -->
, SD.ACTL_RCPN_NM <!-- 실제 수령인 명 -->
, SD.RCPN_REL_NM <!-- 수령인 관계 명 -->
, SD.SNDNG_DTL_STTS_CD <!-- 발송 상세 상태 코드 -->
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM <!-- 발송 상세 상태 명 -->
, SD.SNDNG_RCVMT_CD <!-- 발송 수납 코드 -->
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM <!-- 발송 수납 명 -->
, SD.ADDR_CHG_CD <!-- 주소 변경 코드 -->
, (GET_MASK_DATE(SD.LEVY_YMD, '.')) AS LEVY_YMD_MASK <!-- 부과 일자 -->
, (GET_MASK_DATE(SD.DUDT_YMD, '.')) AS DUDT_YMD_MASK <!-- 납기 일자 -->
, (GET_MASK_DATE(SD.DUDT_YMD, 'K')) AS DUDT_YMD_MASK_KOR <!-- 납기 일자(한글표기) -->
, (SELECT GET_CODE('EGP010', SD.UNDLVR_RSN_NM) FROM DUAL) AS UNDLVR_RSN_CD <!-- 미배달 사유 코드 -->
, (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 <!-- 발송 수납 명 -->
FROM TB_SVBTC SV
INNER JOIN TB_SNDNG_DTL SD ON (SV.SVBTC_ID = SD.SVBTC_ID)
</sql>
@ -249,35 +243,35 @@
<select id="selectSvbtcPrint" parameterType="map" resultType="dataobject">/* 공시송달 상세 객체 가져오기(svbtcMapper.selectSvbtcDtls) */
SELECT SV.SVBTC_ID <!-- 공시송달 ID -->
, SV.SVBTC_YMD <!-- 공시송달 일자 -->
, (SELECT GET_MASK_DATE(SV.SVBTC_YMD, '-') FROM DUAL) AS SVBTC_YMD <!-- 공시송달 일자 -->
, SV.SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, (SELECT GET_MASK_DATE(SV.SVBTC_END_YMD, '-') FROM DUAL) AS SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, SV.DOC_NO <!-- 문서 번호 -->
, SV.TTL_NM <!-- 제목 명 -->
, SV.ETC_CN <!-- 기타 내용 -->
, SV.TNOCS <!-- 총건수 -->
, (GET_MASK_DATE(SV.SVBTC_YMD, '-')) AS SVBTC_YMD <!-- 공시송달 일자 -->
, (GET_MASK_DATE(SV.SVBTC_END_YMD, '-')) AS SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
, SD.SNDNG_ID <!-- 발송 ID -->
, SD.CRDN_ID <!-- 단속 ID -->
, SD.VHRNO <!-- 차량번호 -->
, (CONCAT(SUBSTRING(SD.VHRNO, 1, CHAR_LENGTH(SD.VHRNO) - 2), '**')) AS VHRNO_MASK <!-- 차량번호 마스크 -->
, SD.CRDN_DT <!-- 단속 일시 -->
, SD.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, SD.CRDN_PLC <!-- 단속 장소 -->
, SD.RCPN_NM <!-- 수령인 명 -->
, SD.RCPN_ADDR <!-- 수령인 주소 -->
, SD.RCPN_DTL_ADDR <!-- 수령인 상세 주소 -->
, (REGEXP_REPLACE(CONCAT(SD.RCPN_ADDR, ' ', SD.RCPN_DTL_ADDR), '[0-9]', '*')) AS WHOL_ADDR_MASK <!-- 주소 마스크 -->
, SD.RCPN_ZIP <!-- 수령인 우편번호 -->
, SD.RG_NO <!-- 등기 번호 -->
, SD.DLVR_YMD <!-- 배달 일자 -->
, (SELECT GET_MASK_DATE(SD.DLVR_YMD, '-') FROM DUAL) AS DLVR_YMD_MASK <!-- 배달일자 마스크 -->
, SD.DLVR_TM <!-- 배달 시각 -->
, SD.UNDLVR_RSN_NM <!-- 미배달 사유 명 -->
, SD.ACTL_RCPN_NM <!-- 실제 수령인 명 -->
, SD.RCPN_REL_NM <!-- 수령인 관계 명 -->
, (GET_MASK_DATE(SD.DLVR_YMD, '-')) AS DLVR_YMD_MASK <!-- 배달일자 마스크 -->
, (GET_MASK_NAME(SD.RCPN_NM, 'MIDDLE', 2, '*')) AS RCPN_NM_MASK <!-- 수령인 명 마스크 -->
, (REGEXP_REPLACE(CONCAT(SD.RCPN_ADDR, ' ', SD.RCPN_DTL_ADDR), '[0-9]', '*')) AS WHOL_ADDR_MASK <!-- 주소 마스크 -->
, (CONCAT(SUBSTRING(SD.VHRNO, 1, CHAR_LENGTH(SD.VHRNO) - 2), '**')) AS VHRNO_MASK <!-- 차량번호 마스크 -->
, (GET_INST_LEADER(S.INST_NM, S.INST_SE_CD)) AS INST_LEADER <!-- 기관 장 -->
, (SELECT GET_MASK_NAME(SD.RCPN_NM, 'MIDDLE', 2, '*') FROM DUAL) AS RCPN_NM_MASK <!-- 수령인 명 마스크 -->
, (SELECT GET_INST_LEADER(S.INST_NM, S.INST_SE_CD) FROM DUAL) AS INST_LEADER <!-- 기관 장 -->
, SGG.OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
, DPT.DEPT_TELNO <!-- 부서 전화번호 -->
, (CONCAT(SGG.SGG_NM, ' ', DPT.DEPT_NM)) AS SGG_DEPT_NM <!-- 부서 명 -->
@ -326,66 +320,70 @@
ORDER BY SNDNG_DTL_ID
</select>
<insert id="insertSvbtc" parameterType="map">/* 공시송달 대장 등록(svbtcMapper.insertSvbtc) */
<selectKey resultType="string" keyProperty="svbtc.svbtcId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(#{svbtc.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(SVBTC_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
FROM TB_SVBTC
WHERE SVBTC_ID LIKE CONCAT(#{svbtc.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
<insert id="insertSvbtc" parameterType="cokr.xit.fims.sndb.Svbtc">/* 공시송달 대장 등록(svbtcMapper.insertSvbtc) */
<selectKey resultType="string" keyProperty="svbtcId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyBySggAndYear">
<property name="TABLE_NAME" value="TB_SVBTC" />
<property name="TABLE_KEY" value="SVBTC_ID" />
<property name="sggCd" value="#{sggCd}" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_SVBTC (
SVBTC_ID <!-- 공시송달 ID -->
, SNDNG_SE_CD <!-- 발송 구분 코드 -->
, SVBTC_YMD <!-- 공시송달 일자 -->
, SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, TTL_NM <!-- 제목 명 -->
, DOC_NO <!-- 문서 번호 -->
, ETC_CN <!-- 기타 내용 -->
, TNOCS <!-- 총건수 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
SVBTC_ID <!-- 공시송달 ID -->
, SNDNG_SE_CD <!-- 발송 구분 코드 -->
, SVBTC_YMD <!-- 공시송달 일자 -->
, SVBTC_END_YMD <!-- 공시송달 종료 일자 -->
, TTL_NM <!-- 제목 명 -->
, DOC_NO <!-- 문서 번호 -->
, ETC_CN <!-- 기타 내용 -->
, TNOCS <!-- 총건수 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
VALUES (
#{svbtc.svbtcId} <!-- 공시송달 ID -->
, #{svbtc.sndngSeCd} <!-- 발송 구분 코드 -->
, #{svbtc.svbtcYmd} <!-- 공시송달 일자 -->
, #{svbtc.svbtcEndYmd} <!-- 공시송달 종료 일자 -->
, #{svbtc.ttlNm} <!-- 제목 명 -->
, #{svbtc.docNo} <!-- 문서 번호 -->
, #{svbtc.etcCn} <!-- 기타 내용 -->
, #{svbtc.tnocs} <!-- 총건수 -->
, 'N' <!-- 삭제 여부 -->
#{svbtcId} <!-- 공시송달 ID -->
, #{sndngSeCd} <!-- 발송 구분 코드 -->
, #{svbtcYmd} <!-- 공시송달 일자 -->
, #{svbtcEndYmd} <!-- 공시송달 종료 일자 -->
, #{ttlNm} <!-- 제목 명 -->
, #{docNo} <!-- 문서 번호 -->
, #{etcCn} <!-- 기타 내용 -->
, #{tnocs} <!-- 총건수 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{svbtc.createdBy} <!-- 등록자 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{svbtc.modifiedBy} <!-- 수정자 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateSvbtc" parameterType="map">/* 공시송달 대장 수정(svbtcMapper.updateSvbtc) */
<update id="updateSvbtc" parameterType="cokr.xit.fims.sndb.Svbtc">/* 공시송달 대장 수정(svbtcMapper.updateSvbtc) */
UPDATE TB_SVBTC
SET SVBTC_YMD = #{svbtc.svbtcYmd} <!-- 공시송달 일자 -->
, SVBTC_END_YMD= #{svbtc.svbtcEndYmd} <!-- 공시송달 종료 일자 -->
, TTL_NM = #{svbtc.ttlNm} <!-- 제목 명 -->
, DOC_NO = #{svbtc.docNo} <!-- 문서 번호 -->
, ETC_CN = #{svbtc.etcCn} <!-- 기타 내용 -->
, TNOCS = #{svbtc.tnocs} <!-- 총건수 -->
SET SVBTC_YMD = #{svbtcYmd} <!-- 공시송달 일자 -->
, SVBTC_END_YMD= #{svbtcEndYmd} <!-- 공시송달 종료 일자 -->
, TTL_NM = #{ttlNm} <!-- 제목 명 -->
, DOC_NO = #{docNo} <!-- 문서 번호 -->
, ETC_CN = #{etcCn} <!-- 기타 내용 -->
, TNOCS = #{tnocs} <!-- 총건수 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{svbtc.modifiedBy} <!-- 수정자 -->
WHERE SVBTC_ID = #{svbtc.svbtcId} <!-- 공시송달 ID -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE SVBTC_ID = #{svbtcId} <!-- 공시송달 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteSvbtc" parameterType="map">/* 공시송달 대장 삭제(svbtcMapper.deleteSvbtc) */
<update id="deleteSvbtc" parameterType="cokr.xit.fims.sndb.Svbtc">/* 공시송달 대장 삭제(svbtcMapper.deleteSvbtc) */
UPDATE TB_SVBTC
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{svbtc.modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{svbtc.delRsn} <!-- 삭제 사유 -->
WHERE SVBTC_ID = #{svbtc.svbtcId} <!-- 공시송달 ID -->
AND DEL_YN = 'N' <!-- 삭제 여부 -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{delRsn} <!-- 삭제 사유 -->
WHERE SVBTC_ID = #{svbtcId} <!-- 공시송달 ID -->
AND DEL_YN = 'N' <!-- 삭제 여부 -->
</update>
</mapper>

@ -416,6 +416,7 @@
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
@ -598,6 +599,7 @@
if ($P.control.dataset.empty) {
dialog.alert({
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
@ -638,6 +640,7 @@
if (selected.length < 1) {
dialog.alert({
content: "선택하신 " + $P.control.prefixName + " 정보가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
@ -658,7 +661,7 @@
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() });
$P.callbackRsn({ reason: $("#reason").val() });
}
});
}

@ -1,11 +1,12 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">계고장 발송 대상</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<c:set var="prefixName" scope="request">계고장 발송 대상</c:set>
<!-- Page Body -->
<div class="card">
@ -23,20 +24,19 @@
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
</div> <!-- 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<!-- 메인 조건 -->
<div class="container-search">
<div class="row g-1">
<!-- 업무구분 -->
<!-- 업무 구분 -->
<div class="col-12">
<span class="form-label fw-bold form-search-title">업무구분</span>
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item">
<label>
@ -47,9 +47,9 @@
</c:forEach>
</span>
</div>
<!-- 계고일자 -->
<!-- 계고 일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title">계고일자</span>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schLevyExclYmdFrom--${pageName}">계고일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schLevyExclYmdFrom--${pageName}" name="schLevyExclYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
@ -60,46 +60,33 @@
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 위반항목 -->
<!-- 계고 사유 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schLevyExclRsnCd--${pageName}">계고사유</label>
<select class="form-select w-px-200" id="schLevyExclRsnCd--${pageName}" name="schLevyExclRsnCd">
<option value="">전체</option>
<c:forEach items="${FIM022List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 위반 항목 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title" for="schVltnId--${pageName}">위반항목</label>
<select class="form-select" id="schVltnId--${pageName}" name="schVltnId">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schVltnCd--${pageName}">위반항목</label>
<select class="form-select w-px-160" id="schVltnCd--${pageName}" name="schVltnCd">
<option value="">전체</option>
<c:forEach items="${FIM004List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 단속일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title">단속일자</span>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title" for="schVhrno--${pageName}">차량번호</label>
<input type="text" class="form-control w-px-150" id="schVhrno--${pageName}" name="schVhrno" />
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title" for="schRtpyrNm--${pageName}">납부자명</label>
<input type="text" class="form-control w-px-150" id="schRtpyrNm--${pageName}" name="schRtpyrNm" />
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="text" class="form-control fw-bold w-px-120 text-end" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<input type="text" class="form-control w-px-400" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -109,14 +96,42 @@
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
</div> <!-- 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 단속일자 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schCrdnYmdFrom--${pageName}">단속일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" autocomplete="off" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
data-fmt-type="day" autocomplete="off" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 차량번호 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schVhrno--${pageName}">차량번호</label>
<input type="text" class="form-control w-px-160" id="schVhrno--${pageName}" name="schVhrno" autocomplete="off" />
</div>
<!-- 납부자번호 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRtpyrNm--${pageName}">납부자번호</label>
<input type="text" class="form-control w-px-160" id="schRtpyrNm--${pageName}" name="schRtpyrNm" autocomplete="off" />
</div>
<!-- 납부자명 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRtpyrNo--${pageName}">납부자명</label>
<input type="text" class="form-control w-px-160" id="schRtpyrNo--${pageName}" name="schRtpyrNo" autocomplete="off" />
</div>
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<div class="col-4">
<select class="form-select w-px-120 text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
@ -131,20 +146,19 @@
</span>
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<div class="col-4">
<select class="form-select w-px-120 text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">
검색
</button>
<input type="text" class="form-control w-px-160" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
</div>
</div>
</div> <!-- / 상세 조건 -->
</form> <!-- / 검색 조건 영역 -->
</div> <!-- 상세 조건 -->
</form>
<!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -155,21 +169,20 @@
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateWrng--${pageName}" title="계고 수정">
계고 수정
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnSlctnTrgtInfo--${pageName}" title="선택 발송대상 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSlctnTrgtInfo--${pageName}" title="선택 발송대상 등록">
선택 대상 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnWholTrgtInfo--${pageName}" title="선택 발송대상 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateWholTrgtInfo--${pageName}" title="선택 발송대상 등록">
전체 대상 등록
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -198,7 +211,7 @@
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('CVLCPT_PRCS_CD', this.innerText, 'codeValue', 'FIM017');">민원처리결과</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('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 160px;" 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: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="bpv" style="width: 280px;" onclick="searchFromGridTitle('DTL_CRDN_PLC', this.innerText, 'match', 'part');">상세단속장소</th>
@ -274,12 +287,13 @@
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->
<!-- Content -->
<div class="content-backdrop fade"></div>
</div>
@ -292,21 +306,20 @@
pageObject["${pageName}"] = {};
// 공통 코드
var FIM004 = new CommonCodes(${FIM004}, true); // 주정차위반 내역 코드
var FIM005 = new CommonCodes(${FIM005}, true); // 전용차로위반 내역 코드
var FIM006 = new CommonCodes(${FIM006}, true); // 장애인주차위반 내역 코드
var FIM061 = new CommonCodes(${FIM061}, true); // 전기차 충전구역 및 충전방해 위반 코드
var FIM064 = new CommonCodes(${FIM064}, true); // 화물자동차 밤샘주차 위반 코드
var FIM022 = new CommonCodes(${FIM022}, true); // 부과 제외 사유 코드
var FIM004 = new CommonCodes(${FIM004}, true); // 주정차위반 내역 코드
var FIM005 = new CommonCodes(${FIM005}, true); // 전용차로위반 내역 코드
var FIM006 = new CommonCodes(${FIM006}, true); // 장애인주차위반 내역 코드
var FIM061 = new CommonCodes(${FIM061}, true); // 전기차 충전구역 및 충전방해 위반 코드
var FIM064 = new CommonCodes(${FIM064}, true); // 화물자동차 밤샘주차 위반 코드
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -314,26 +327,26 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "wrngTrgt"
, prefixName : "계고장 발송 대상"
, infoSize : "xxl"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
CVLCPT_RCPT_YMD : dateFormat
, LEVY_EXCL_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_CRDN_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "wrngTrgt"
, prefixName: "계고장 발송 대상"
, keymapper: info => info ? info.CRDN_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "xl"
, formats: {
CVLCPT_RCPT_YMD: dateFormat
, LEVY_EXCL_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -343,15 +356,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -370,24 +383,23 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
// 선택 대상 등록 버튼
$("#btnSlctnTrgtInfo--${pageName}").prop("disabled", keys.length < 1);
$("#btnCreateSlctnTrgtInfo--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
}
};
// 계고장 발송 등록 dialog -> callback 추가
// 계고장 발송 등록 dialog
$P.control.getInfo = (params) => {
if (!params) return;
@ -402,15 +414,15 @@
}
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : dialogTitle
, content : resp
, size : "xl"
, onClose : () => { $P.refreshList(); }
id: $P.control.prefixed("Dialog--${pageName}")
, title: dialogTitle
, content: resp
, size: $P.control.infoSize
, onClose: () => { $P.fnRefreshList(); }
});
}
});
@ -436,7 +448,7 @@
//
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['${pageName}'].control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{onclick}/gi, "pageObject['${pageName}'].control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');");
let trs = empty ? [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
@ -467,65 +479,36 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
}
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
callControlName: "pageObject['${pageName}'].control"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.refreshList = () => {
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.query.crdnIds = null;
@ -533,20 +516,26 @@
$P.control.load(1);
}
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 계고 수정 dialog -> callback 추가
$P.getLevyExclInfo = (params) => {
if (!params) return;
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
, data: params || {}
, success: resp => {
dialog.open({
id : "levyExclDialog"
, title : "부과제외 정보"
, content : resp
, size : "md"
, onClose : () => { $P.refreshList(); }
id: "levyExclDialog"
, title: "부과제외 정보"
, content: resp
, size: "md"
, onClose: () => { $P.fnRefreshList(); }
});
}
});
@ -563,9 +552,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -573,13 +560,35 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.crdnSttsCd = "83"; // 단속 처리 상태 - 83:계고
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.crdnSttsCd = "83"; // 단속 처리 상태 - 83:계고
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
@ -588,10 +597,9 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
@ -603,38 +611,31 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 계고 수정 버튼 이벤트
$P.fnUpdateWrng = () => {
$P.fnUpdateWrng = (title) => {
let levyExclId = $P.control.dataset.getValue("LEVY_EXCL_ID");
// 부과제외 ID 가 없다면.. return
if (typeof levyExclId == "undefined" || levyExclId == null || levyExclId == "") return;
let levyExclSeCd = $P.control.dataset.getValue("LEVY_EXCL_SE_CD");
let params = {
callPurpose : "update"
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId : levyExclId // 부과제외 ID
, levyExclSeCd : levyExclSeCd // 부과제외 구분 코드
title: title
, callPurpose: "update"
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId: levyExclId // 부과제외 ID
, levyExclSeCd: $P.control.dataset.getValue("LEVY_EXCL_SE_CD") // 부과제외 구분 코드
};
$P.getLevyExclInfo(params);
}
// 선택 발송대상 등록 버튼 이벤트
$P.fnSlctnTrgtInfo = () => {
$P.fnCreateSlctnTrgtInfo = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
@ -644,41 +645,40 @@
if (selected.length < 1) return;
// 파라미터 설정
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
if (params.taskSeCd == "DPV" && params.schVltnId == "05") {
params.sndngSeCd = "12"; // 발송 구분 코드 - 12 계고장 구형표지
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.crdnIds = selected.join(","); // crdnIds
if (params.taskSeCd == "DPV" && params.schVltnCd == "05") {
params.sndngSeCd = "12"; // 발송 구분 코드 - 12 계고장 구형표지
} else {
params.sndngSeCd = "11"; // 발송 구분 코드 - 11 계고장
params.sndngSeCd = "11"; // 발송 구분 코드 - 11 계고장
}
params.crdnIds = selected.join(","); // IDs
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params);
}
// 전체 발송대상 등록 버튼 이벤트
$P.fnWholTrgtInfo = () => {
$P.fnCreateWholTrgtInfo = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
// 파라미터 설정
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
if (params.taskSeCd == "DPV" && params.schVltnId == "05") {
params.sndngSeCd = "12"; // 발송 구분 코드 - 12 계고장 구형표지
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
if (params.taskSeCd == "DPV" && params.schVltnCd == "05") {
params.sndngSeCd = "12"; // 발송 구분 코드 - 12 계고장 구형표지
} else {
params.sndngSeCd = "11"; // 발송 구분 코드 - 11 계고장
params.sndngSeCd = "11"; // 발송 구분 코드 - 11 계고장
}
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params);
}
@ -692,13 +692,13 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색
$("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
fnSearchList${pageName}();
}
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
@ -715,18 +715,25 @@
});
// 업무 버튼 이벤트
$("#btnUpdateWrng--${pageName}").on("click", () => $P.fnUpdateWrng()); // 계고 수정
$("#btnSlctnTrgtInfo--${pageName}").on("click", () => $P.fnSlctnTrgtInfo()); // 선택 대상 등록
$("#btnWholTrgtInfo--${pageName}").on("click", () => $P.fnWholTrgtInfo()); // 전체 대상 등록
$("#btnUpdateWrng--${pageName}").on("click", function() {
$P.fnUpdateWrng($(this).attr("title")); // 계고 수정
});
$("#btnCreateSlctnTrgtInfo--${pageName}").on("click", function() {
$P.fnCreateSlctnTrgtInfo($(this).attr("title")); // 선택 대상 등록
});
$("#btnCreateWholTrgtInfo--${pageName}").on("click", function() {
$P.fnCreateWholTrgtInfo($(this).attr("title")); // 전체 대상 등록
});
// DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -743,80 +750,62 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 업무별 조회조건
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 조회
// 계고 사유에 "전체" 추가
let reasons = FIM022.list().filter(reason => reason.code > "200");
$("#schLevyExclRsnCd--${pageName}").empty();
$("#schLevyExclRsnCd--${pageName}").append("<option value=''>" + "전체" + "</option>");
$("#schLevyExclRsnCd--${pageName}").append(reasons.map(reason => "<option value='" + reason.code + "'>" + reason.value + "</option>").join());
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무에 따른 위반 내용
let vltnIdCode = [];
if (taskSeCd == "PVS") { // 주정차 위반
if (taskSeCd == "PVS") { // 주정차 위반
vltnIdCode = FIM004.list();
} else if (taskSeCd == "BPV") { // 전용차로 위반
} else if (taskSeCd == "BPV") { // 전용차로 위반
vltnIdCode = FIM005.list();
} else if (taskSeCd == "DPV") { // 장애인 전용
} else if (taskSeCd == "DPV") { // 장애인 전용
vltnIdCode = FIM006.list();
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
vltnIdCode = FIM061.list();
} else if (taskSeCd == "PES") { // 밤샘 주차 위반
} else if (taskSeCd == "PES") { // 밤샘 주차 위반
vltnIdCode = FIM064.list();
} else {
return;
}
// 위반 항목
$("#schVltnId--${pageName}").empty();
$("#schVltnId--${pageName}").append("<option value=''>" + "전체" + "</option>");
$("#schVltnCd--${pageName}").empty();
$("#schVltnCd--${pageName}").append("<option value=''>" + "전체" + "</option>");
$(vltnIdCode).each(function(index, item) {
$("#schVltnId--${pageName}").append("<option value='" + vltnIdCode[index].code +"'>" + vltnIdCode[index].value + "</option>");
$("#schVltnCd--${pageName}").append("<option value='" + vltnIdCode[index].code +"'>" + vltnIdCode[index].value + "</option>");
});
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/list.do"); // 조회
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/info.do"); // 발송대상 정보
}
/**************************************************************************
@ -831,5 +820,5 @@
// 3. 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});
//# sourceURL=sndb01010-main.jsp
</script>

@ -1,154 +1,155 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">계고장 발송 대상 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<div class="wrapper-pop">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">계고장 발송 대상 상세 정보</c:set>
<!-- Page Body -->
<div class="card">
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="row g-1">
<!-- 총 건수 -->
<div class="col-md-12 text-end px-2">
<label for="tnocs--${pageName}" class="w-px-140 bg-lighter pe-2 col-form-label text-sm-end">총건수 / 총금액</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-fmt-type="number" readonly />
<input type="text" class="form-control w-px-120 text-end" id="gramt--${pageName}" name="gramt" data-fmt-type="number" readonly />
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
<label for="sndngYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">발송일자</label>
<input type="text" class="form-control form-date" id="sndngYmd--${pageName}" name="sndngYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 발송 종료 일자 -->
<div class="col-md-4" id="divSndngEndYmd--${pageName}">
<label for="sndngEndYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납기일자</label>
<input type="text" class="form-control form-date" id="sndngEndYmd--${pageName}" name="sndngEndYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" />
<button type="button" id="btnSndngEndYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="발송 저장">
저장
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-300" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">계고일자</th>
<th class="cmn" style="width: 160px;">계고사유</th>
<th class="cmn" style="width: 180px;">민원신청번호</th>
<th class="cmn" style="width: 180px;">민원접수번호</th>
<th class="cmn" style="width: 120px;">민원접수일자</th>
<th class="cmn" style="width: 200px;">민원처리결과</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">위반항목</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">단속금액</th>
<th class="cmn" style="width: 120px;">처리상태</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자생일</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</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}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="row g-1">
<!-- 총 건수 -->
<div class="col-md-12 text-end px-2">
<label class="w-px-120 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-fmt-type="number" readonly />
<input type="text" class="form-control w-px-140 text-end" id="gramt--${pageName}" name="gramt" data-fmt-type="number" readonly />
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
<label for="sndngYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">발송일자</label>
<input type="text" class="form-control form-date" id="sndngYmd--${pageName}" name="sndngYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 발송 종료 일자 -->
<div class="col-md-4" id="divSndngEndYmd--${pageName}">
<label for="sndngEndYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납기일자</label>
<input type="text" class="form-control form-date" id="sndngEndYmd--${pageName}" name="sndngEndYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" />
<button type="button" id="btnSndngEndYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form>
<!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="발송 저장">
저장
</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-300" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">계고일자</th>
<th class="cmn" style="width: 160px;">계고사유</th>
<th class="cmn" style="width: 180px;">민원신청번호</th>
<th class="cmn" style="width: 180px;">민원접수번호</th>
<th class="cmn" style="width: 120px;">민원접수일자</th>
<th class="cmn" style="width: 200px;">민원처리결과</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">위반항목</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">단속금액</th>
<th class="cmn" style="width: 120px;">처리상태</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자생일</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</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}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="card"> -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
<!-- Page Body -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
</div>
<!-- / inner page html <div class="content-wrapper"> -->
<!-- / inner page html <div class="content-pop"> -->
<script>
/**************************************************************************
@ -161,10 +162,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -176,27 +175,27 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "wrngTrgt"
, prefixName : "계고장 발송 대상"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
TNOCS : numberFormat
, GRAMT : numberFormat
, LEVY_EXCL_YMD : dateFormat
, CVLCPT_RCPT_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_CRDN_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "wrngTrgt"
, prefixName: "계고장 발송 대상"
, keymapper: info => info ? info.CRDN_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, formats: {
TNOCS: numberFormat
, GRAMT: numberFormat
, LEVY_EXCL_YMD: dateFormat
, CVLCPT_RCPT_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -206,15 +205,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -228,17 +227,18 @@
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#btnSave--${pageName}").attr("title");
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
dialog.close($P.control.prefix + "Dialog");
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
}
}
@ -249,9 +249,9 @@
let create = ($P.callPurpose == "create");
ajax.post({
url : !create ? $P.control.urls.update : $P.control.urls.create
, data : info
, success : resp => $P.control.onSave(resp)
url: !create ? $P.control.urls.update : $P.control.urls.create
, data: info
, success: resp => $P.control.onSave(resp)
});
}
@ -272,7 +272,6 @@
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
// $("#tbody--${pageName}").html(trs.join());
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = ($P.control.query.pageNum < 2) && ($P.control.untilPageNum == 0);
@ -290,40 +289,45 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, callPurpose : "view"
, crdnId : crdnId
, sggCd : $P.control.dataset.getValue("SGG_CD")
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD")
callControlName: "pageObject['${pageName}'].control"
, callPurpose: "view"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/createList.do"); // 등록
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -334,15 +338,13 @@
// 저장 파라미터 설정
let info = $P.formFields.get();
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.mainQuery, info);
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
$P.control.save(params);
}
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK: () => { $P.control.save(params); }
});
}
@ -380,12 +382,12 @@
hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List : ${wrngTrgtList}
, ${infoPrefix}Start : ${wrngTrgtStart}
, ${infoPrefix}Fetch : ${wrngTrgtFetch}
, ${infoPrefix}Total : ${wrngTrgtTotal}
${infoPrefix}List: ${wrngTrgtList}
, ${infoPrefix}Start: ${wrngTrgtStart}
, ${infoPrefix}Fetch: ${wrngTrgtFetch}
, ${infoPrefix}Total: ${wrngTrgtTotal}
});
// 초기 데이터 설정
@ -416,17 +418,13 @@
// 제목
let ttlNm = $P.control.dataset.getValue("TASK_SE_NM");
ttlNm = ttlNm + " " + $P.control.dataset.getValue("VLTN_ARTCL");
ttlNm = ttlNm + " " + "계고장";
$("#ttlNm--${pageName}").val(ttlNm);
// URL 설정
$P.setURL($P.mainQuery.taskSeCd);
}
if ($P.mainQuery.schVltnCd != null && $P.mainQuery.schVltnCd != "") { // 위반항목이 '전체'가 아니라면..
ttlNm = ttlNm + " " + $P.control.dataset.getValue("VLTN_ARTCL");
}
$("#ttlNm--${pageName}").val(ttlNm + " " + "계고장");
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/createList.do"); // 등록
// 업무구분에 따른 URL 설정
$P.fnSetURL($P.mainQuery.taskSeCd);
}
/**************************************************************************

@ -1,11 +1,12 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">계고장 발송 현황</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<c:set var="prefixName" scope="request">계고장 발송 현황</c:set>
<!-- Page Body -->
<div class="card">
@ -23,20 +24,19 @@
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
</div> <!-- 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<!-- 메인 조건 -->
<div class="container-search">
<div class="row g-1">
<!-- 업무구분 -->
<!-- 업무 구분 -->
<div class="col-12">
<span class="form-label fw-bold form-search-title">업무구분</span>
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item">
<label>
@ -49,7 +49,7 @@
</div>
<!-- 발송일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title">발송일자</span>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schSndngYmdFrom--${pageName}">발송일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
@ -63,10 +63,10 @@
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="text" class="form-control fw-bold w-px-120 text-end" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<input type="text" class="form-control w-px-400" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -76,14 +76,14 @@
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
</div> <!-- 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<select class="form-select w-px-120 text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
@ -99,19 +99,18 @@
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<select class="form-select w-px-120 text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">
검색
</button>
<input type="text" class="form-control w-px-160" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
</div>
</div>
</div> <!-- / 상세 조건 -->
</form> <!-- / 검색 조건 영역 -->
</div> <!-- 상세 조건 -->
</form>
<!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -122,15 +121,14 @@
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="계고장 발송 삭제">
삭제
발송 삭제
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -203,12 +201,13 @@
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->
<!-- Content -->
<div class="content-backdrop fade"></div>
</div>
@ -225,10 +224,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -236,26 +233,26 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "wrngSndng"
, prefixName : "계고장 발송 현황"
, infoSize : "xxl"
, keymapper : info => info ? info.SNDNG_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
SNDNG_YMD : dateFormat
, SNDNG_END_YMD : dateFormat
, TNOCS : numberFormat
, GRAMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "wrngSndng"
, prefixName: "계고장 발송 현황"
, keymapper: info => info ? info.SNDNG_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "xxl"
, formats: {
SNDNG_YMD: dateFormat
, SNDNG_END_YMD: dateFormat
, TNOCS: numberFormat
, GRAMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -265,15 +262,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -292,7 +289,6 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
@ -301,32 +297,36 @@
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
}
};
// 발송 상세
// 상세정보 dialog
$P.control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = $P.control.query;
params.callPurpose = "view"; // 호출 용도
params.pageNum = 1; // 페이지 번호
params.sndngId = sndngId; // 발송 ID
let params = {
title: $P.control.prefixName + " 상세 정보" // 타이틀
, callPurpose: "view" // 호출 용도
, pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("input[name=taskSeCd]:checked").val() // 업무 구분 코드
, sndngId: sndngId // 발송 ID
}
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/040/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("DtlDialog")
, title : "계고장 발송 상세 정보"
, content : resp
, size : $P.control.infoSize
id: $P.control.prefixed("DtlDialog--${pageName}")
, title: params.title
, content: resp
, size: $P.control.infoSize
});
}
});
@ -339,13 +339,12 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
$P.refreshList();
}
if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
}
// 삭제
@ -353,9 +352,9 @@
if (!params) return;
ajax.post({
url : $P.control.urls.remove
, data : params
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/030/remove.do")
, data: params
, success: resp => $P.control.onRemove(resp)
});
}
@ -405,7 +404,7 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
@ -413,47 +412,30 @@
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
}
// 검색 자료 재조회
$P.refreshList = () => {
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
// 사유 callback
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 삭제사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
params.sndngIds = selected.join(","); // Ids
params.delRsn = obj.reason; // 삭제 사유
let selected = $P.control.dataset.getKeys("selected");
params[$P.control.prefixed("Ids")] = selected.join(","); // IDs
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
@ -469,9 +451,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -479,14 +459,36 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.sndngSeCdFrom = "11"; // 발송 구분 코드 - 11 계고장
$P.control.query.sndngSeCdTo = "12"; // 발송 구분 코드 - 12 계고장 구형표지
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.sndngSeCdFrom = "11"; // 발송 구분 코드 - 11 계고장
$P.control.query.sndngSeCdTo = "12"; // 발송 구분 코드 - 12 계고장 구형표지
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
@ -495,10 +497,10 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
@ -510,36 +512,36 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 삭제 버튼 이벤트
$P.fnRemove = () => {
$P.fnRemove = (title) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (selected.length < 1) {
dialog.alert({
content: "선택하신 " + $P.control.prefixName + " 정보가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK: async() => {
// 삭제 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: "삭제",
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() });
id: "inputDelRsnDialog"
, title: title
, size : "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason: $("#reason").val() });
}
});
}
@ -555,7 +557,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색
$("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
@ -577,8 +579,10 @@
});
});
// 업무 버튼 이벤트
$("#btnRemove--${pageName}").on("click", () => $P.fnRemove()); // 계고장 발송 삭제
// 버튼 이벤트
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title")); // 계고장 발송 삭제
});
// DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -588,7 +592,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -605,56 +609,33 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/030/list.do"); // 조회
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 조회 조건
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/030/list.do"); // 조회
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/030/remove.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/040/info.do"); // 계고장 발송 정보
}
/**************************************************************************

@ -1,120 +1,122 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">계고장 발송 현황 상세 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<div class="wrapper-pop">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">계고장 발송 현황 상세 정보</c:set>
<!-- Page Body -->
<div class="card">
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sndngId--${pageName}" name="sndngId" />
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintWrng--${pageName}" title="계고장 출력">
계고장 출력
</button>
</span>
</span>
</div> <!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-500" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">발송상태</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: 200px;">성명</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</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-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sndngId--${pageName}" name="sndngId" />
</form>
<!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintWrng--${pageName}" title="계고장 출력">
계고장 출력
</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-500" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">발송상태</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: 200px;">성명</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</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-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="card"> -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
<!-- Page Body -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
</div>
<!-- / inner page html <div class="content-wrapper"> -->
<!-- / inner page html <div class="wrapper-pop"> -->
<script>
/**************************************************************************
@ -127,10 +129,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -142,24 +142,24 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "wrngSndngDtl"
, prefixName : "계고장 발송 상세"
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
SNDNG_YMD : dateFormat
, DUDT_YMD : dateFormat
, FFNLG_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "wrngSndngDtl"
, prefixName: "계고장 발송 상세"
, keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, formats: {
SNDNG_YMD: dateFormat
, DUDT_YMD: dateFormat
, FFNLG_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -169,15 +169,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -223,40 +223,39 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, callPurpose : "view"
, crdnId : crdnId
, sggCd : $P.control.dataset.getValue("SGG_CD")
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD")
callControlName: "pageObject['${pageName}'].control"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 출력
$P.print = (params) => {
if (!params) return;
@ -269,16 +268,16 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
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)"));
$P.control.query.cellDefs = cellDefs;
$P.control.download();
@ -290,8 +289,9 @@
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : $P.control.prefixName + " 정보를 출력하시겠습니까?"
, onOK : () => {
// content: $P.control.prefixName + " 정보를 출력하시겠습니까?"
content: "작업중입니다"
, onOK: () => {
$P.print($P.formFields.get());
}
});
@ -306,7 +306,9 @@
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
// 업무 버튼 이벤트
$("#btnPrintWrng--${pageName}").on("click", () => $P.fnPrint()); // 계고장 출력
$("#btnPrintWrng--${pageName}").on("click", function() {
$P.fnPrint($(this).attr("title")); // 계고장 출력
});
// DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -315,12 +317,12 @@
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List : ${wrngSndngDtlList}
, ${infoPrefix}Start : ${wrngSndngDtlStart}
, ${infoPrefix}Fetch : ${wrngSndngDtlFetch}
, ${infoPrefix}Total : ${wrngSndngDtlTotal}
${infoPrefix}List: ${wrngSndngDtlList}
, ${infoPrefix}Start: ${wrngSndngDtlStart}
, ${infoPrefix}Fetch: ${wrngSndngDtlFetch}
, ${infoPrefix}Total: ${wrngSndngDtlTotal}
});
// 초기 데이터 설정
@ -339,17 +341,17 @@
// SNDNG_ID
$("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID"));
// 검색 조건 설정
// 검색 조건 설정 (엑셀저장)
$P.control.defaultFetchSize = $P.mainQuery.fetchSize;
$P.control.query = $P.mainQuery;
// URL 설정
$P.setURL($P.mainQuery.taskSeCd);
$P.fnSetURL($P.mainQuery.taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/040/list.do"); // 조회
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/040/list.do"); // 조회
}
/**************************************************************************

@ -7,6 +7,7 @@
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<div class="wrapper-list">
@ -36,7 +37,7 @@
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<span class="form-label fw-bold form-search-title">업무구분</span>
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item">
<label>
@ -49,7 +50,7 @@
</div>
<!-- 단속일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title">단속일자</span>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schCrdnYmdFrom--${pageName}">단속일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
@ -62,23 +63,13 @@
</div>
<!-- 위반항목 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title" for="schVltnCd--${pageName}">위반항목</label>
<select class="form-select" id="schVltnCd--${pageName}" name="schVltnCd">
<option value="">전체</option>
<c:forEach items="${FIM004List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title" for="schVhrno--${pageName}">차량번호</label>
<input type="text" class="form-control w-px-150" id="schVhrno--${pageName}" name="schVhrno" />
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title" for="schRtpyrNm--${pageName}">납부자명</label>
<input type="text" class="form-control w-px-150" id="schRtpyrNm--${pageName}" name="schRtpyrNm" />
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schVltnCd--${pageName}">위반항목</label>
<select class="form-select w-px-160" id="schVltnCd--${pageName}" name="schVltnCd">
<option value="">전체</option>
<c:forEach items="${FIM004List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- -->
<div class="col-6">
@ -86,10 +77,10 @@
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="text" class="form-control fw-bold w-px-120 text-end" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<input type="text" class="form-control w-px-400" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -99,14 +90,29 @@
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
</div> <!-- 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 차량번호 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schVhrno--${pageName}">차량번호</label>
<input type="text" class="form-control w-px-160" id="schVhrno--${pageName}" name="schVhrno" autocomplete="off" />
</div>
<!-- 납부자번호 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRtpyrNm--${pageName}">납부자번호</label>
<input type="text" class="form-control w-px-160" id="schRtpyrNm--${pageName}" name="schRtpyrNm" autocomplete="off" />
</div>
<!-- 납부자명 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRtpyrNo--${pageName}">납부자명</label>
<input type="text" class="form-control w-px-160" id="schRtpyrNo--${pageName}" name="schRtpyrNo" autocomplete="off" />
</div>
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<div class="col-4">
<select class="form-select w-px-120 text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
@ -121,21 +127,19 @@
</span>
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<div class="col-4">
<select class="form-select w-px-120 text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">
검색
</button>
<input type="text" class="form-control w-px-160" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
</div>
</div>
</div> <!-- / 상세 조건 -->
</div> <!-- 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
<!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -146,18 +150,17 @@
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSlctnTrgt--${pageName}" title="선택 발송대상 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSlctnTrgtInfo--${pageName}" title="선택 발송대상 등록">
선택 대상 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateWholTrgt--${pageName}" title="선택 발송대상 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateWholTrgtInfo--${pageName}" title="선택 발송대상 등록">
전체 대상 등록
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -258,10 +261,11 @@
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->
@ -287,10 +291,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -298,26 +300,26 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "advntceTrgt"
, prefixName : "사전통지 발송 대상"
, infoSize : "xl"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
CVLCPT_RCPT_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_AMT : numberFormat
, ADVNTCE_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "advntceTrgt"
, prefixName: "사전통지 발송 대상"
, keymapper: info => info ? info.CRDN_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "xl"
, formats: {
CVLCPT_RCPT_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_AMT: numberFormat
, ADVNTCE_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -327,15 +329,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -354,24 +356,23 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
// 선택 대상 등록 버튼
$("#btnCreateSlctnTrgt--${pageName}").prop("disabled", keys.length < 1);
$("#btnCreateSlctnTrgtInfo--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
}
};
// 사전통지 발송 등록 dialog -> callback 추가
// 사전통지 발송 등록 dialog
$P.control.getInfo = (params) => {
if (!params) return;
@ -386,15 +387,15 @@
}
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/060/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : dialogTitle
, content : resp
, size : $P.control.infoSize
, onClose : () => { $P.refreshList(); }
id: $P.control.prefixed("Dialog--${pageName}")
, title: dialogTitle
, content: resp
, size: $P.control.infoSize
, onClose: () => { $P.fnRefreshList(); }
});
}
});
@ -451,65 +452,36 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
}
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
callControlName: "pageObject['${pageName}'].control"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.refreshList = () => {
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.query.crdnIds = null;
@ -517,6 +489,12 @@
$P.control.load(1);
}
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -528,9 +506,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -538,23 +514,44 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
// 업무 구분 코드(TASK_SE_CD) 에 따른 검색 조건 설정
let taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
if (taskSeCd == "BPV" || taskSeCd == "PVS") { // 전용차로위반 , 주정차위반 과태료는 사전부과 후 의견제출 접수도 사전통지 대상
$P.control.query.crdnSttsCdFrom = "23"; // 단속 처리 상태 시작
$P.control.query.crdnSttsCdTo = "31"; // 단속 처리 상태 종료
let taskSeCd = $("input[name=taskSeCd]:checked").val();
if (taskSeCd == "BPV" || taskSeCd == "PVS") { // 전용차로위반 , 주정차위반 과태료는 사전부과 후 의견제출 접수도 사전통지 대상
$P.control.query.crdnSttsCdFrom = "21"; // 단속 처리 상태(FIM010) 시작 - 21: 납부자 등록
$P.control.query.crdnSttsCdTo = "31"; // 단속 처리 상태(FIM010) 종료 - 31: 의견제출 접수
} else {
$P.control.query.crdnSttsCdFrom = "21"; // 단속 처리 상태 시작
$P.control.query.crdnSttsCdTo = "31"; // 단속 처리 상태 종료
// $P.control.query.crdnSttsCdTo = "23";
$P.control.query.crdnSttsCdFrom = "21"; // 단속 처리 상태(FIM010) 시작 - 21: 납부자 등록
$P.control.query.crdnSttsCdTo = "23"; // 단속 처리 상태(FIM010) 종료 - 23: 사전부과
}
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
@ -563,8 +560,8 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
@ -577,48 +574,48 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 선택 발송대상 등록 버튼 이벤트
$P.fnCreateSlctnTrgt = (title) => {
$P.fnCreateSlctnTrgtInfo = (title) => {
if ($P.control.dataset.empty) {
dialog.alert({
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
// 파라미터 설정
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.title = title; // 타이틀
params.crdnIds = selected.join(","); // Ids
params.sndngSeCd = "02"; // 발송 구분 코드(FIM047) - 02 사전통지서
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.crdnIds = selected.join(","); // crdnIds
params.sndngSeCd = "02"; // 발송 구분 코드(FIM047) - 02 사전통지서
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params);
}
// 전체 발송대상 등록 버튼 이벤트
$P.fnCreateWholTrgt = (title) => {
$P.fnCreateWholTrgtInfo = (title) => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
// 파라미터 설정
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.title = title; // 타이틀
params.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지서
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지서
params.resndYn = "N"; // 재발송 여부
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params);
}
@ -632,13 +629,13 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색
$("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
fnSearchList${pageName}();
}
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
@ -654,13 +651,12 @@
});
});
// 선택 대상 감경부과 등록 버튼 이벤트
$("#btnCreateSlctnTrgt--${pageName}").on("click", function() {
$P.fnCreateSlctnTrgt($(this).attr("title"));
// 업무 버튼 이벤트
$("#btnCreateSlctnTrgtInfo--${pageName}").on("click", function() {
$P.fnCreateSlctnTrgtInfo($(this).attr("title")); // 선택 대상 감경부과 등록
});
// 전체 대상 감경부과 등록 버튼 이벤트
$("#btnCreateWholTrgt--${pageName}").on("click", function() {
$P.fnCreateWholTrgt($(this).attr("title"));
$("#btnCreateWholTrgtInfo--${pageName}").on("click", function() {
$P.fnCreateWholTrgtInfo($(this).attr("title")); // 전체 대상 감경부과 등록
});
// DataTables width 변경 조정
@ -671,7 +667,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -688,47 +684,35 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 업무별 조회조건
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/050/list.do"); // 조회
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무에 따른 위반 내용
let vltnCode = [];
if (taskSeCd == "PVS") { // 주정차 위반
if (taskSeCd == "PVS") { // 주정차 위반
vltnCode = FIM004.list();
} else if (taskSeCd == "BPV") { // 전용차로 위반
} else if (taskSeCd == "BPV") { // 전용차로 위반
vltnCode = FIM005.list();
} else if (taskSeCd == "DPV") { // 장애인 전용
} else if (taskSeCd == "DPV") { // 장애인 전용
vltnCode = FIM006.list();
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
vltnCode = FIM061.list();
} else if (taskSeCd == "PES") { // 밤샘 주차 위반
} else if (taskSeCd == "PES") { // 밤샘 주차 위반
vltnCode = FIM064.list();
} else {
return;
@ -743,22 +727,13 @@
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/050/list.do"); // 조회
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/060/info.do"); // 발송대상 정보
}
/**************************************************************************

@ -4,143 +4,144 @@
<c:set var="prefixName" scope="request">사전통지 발송 대상 상세 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<div class="wrapper-pop">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="row g-1">
<!-- 총 건수 -->
<div class="col-md-12 text-end px-2">
<label for="tnocs--${pageName}" class="w-px-140 bg-lighter pe-2 col-form-label text-sm-end">총건수 / 총금액</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-fmt-type="number" readonly />
<input type="text" class="form-control w-px-120 text-end" id="gramt--${pageName}" name="gramt" data-fmt-type="number" readonly />
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
<label for="sndngYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">발송일자</label>
<input type="text" class="form-control form-date" id="sndngYmd--${pageName}" name="sndngYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 발송 종료 일자 -->
<div class="col-md-4" id="divSndngEndYmd--${pageName}">
<label for="sndngEndYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납기일자</label>
<input type="text" class="form-control form-date" id="sndngEndYmd--${pageName}" name="sndngEndYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" />
<button type="button" id="btnSndngEndYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장">
저장
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-300" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 180px;">민원신청번호</th>
<th class="cmn" style="width: 180px;">민원접수번호</th>
<th class="cmn" style="width: 120px;">민원접수일자</th>
<th class="cmn" style="width: 160px;">민원처리결과</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">위반항목</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 120px;">사전통지금액</th>
<th class="cmn" style="width: 120px;">처리상태</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자생일</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="row g-1">
<!-- 총 건수 -->
<div class="col-md-12 text-end px-2">
<label class="w-px-120 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-fmt-type="number" readonly />
<input type="text" class="form-control w-px-140 text-end" id="gramt--${pageName}" name="gramt" data-fmt-type="number" readonly />
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
<label for="sndngYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">발송일자</label>
<input type="text" class="form-control form-date" id="sndngYmd--${pageName}" name="sndngYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 발송 종료 일자 -->
<div class="col-md-4" id="divSndngEndYmd--${pageName}">
<label for="sndngEndYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납기일자</label>
<input type="text" class="form-control form-date" id="sndngEndYmd--${pageName}" name="sndngEndYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" />
<button type="button" id="btnSndngEndYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form>
<!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장">
저장
</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-300" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 180px;">민원신청번호</th>
<th class="cmn" style="width: 180px;">민원접수번호</th>
<th class="cmn" style="width: 120px;">민원접수일자</th>
<th class="cmn" style="width: 160px;">민원처리결과</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">위반항목</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 120px;">사전통지금액</th>
<th class="cmn" style="width: 120px;">처리상태</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자생일</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="card"> -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
<!-- Page Body -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
</div>
<!-- / inner page html <div class="content-wrapper"> -->
<!-- / inner page html <div class="wrapper-pop"> -->
<script>
/**************************************************************************
@ -153,10 +154,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -170,27 +169,27 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "advntceTrgt"
, prefixName : "사전통지 발송 대상"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
TNOCS : numberFormat
, GRAMT : numberFormat
, CVLCPT_RCPT_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_AMT : numberFormat
, ADVNTCE_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "advntceTrgt"
, prefixName: "사전통지 발송 대상"
, keymapper: info => info ? info.CRDN_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, formats: {
TNOCS: numberFormat
, GRAMT: numberFormat
, CVLCPT_RCPT_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_AMT: numberFormat
, ADVNTCE_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -200,15 +199,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -222,17 +221,18 @@
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#btnSave--${pageName}").attr("title");
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, onOK: () => { }
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
dialog.close($P.control.prefix + "Dialog");
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
}
}
@ -283,15 +283,12 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
@ -303,8 +300,6 @@
, crdnId: crdnId
}
let taskSeCd = $P.control.dataset.getValue("TASK_SE_CD");
ajax.get({
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
@ -319,6 +314,14 @@
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/060/createList.do"); // 등록
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -329,15 +332,13 @@
// 저장 파라미터 설정
let info = $P.formFields.get();
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.mainQuery, info);
dialog.alert({
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK: () => {
$P.control.save(params);
}
, init: () => { setDialogZindex(); }
, onOK: () => { $P.control.save(params); }
});
}
@ -365,8 +366,8 @@
$("#sndngEndYmd--${pageName}").val(addDate(sndngYmd, $P.advntceYmdInfo.ADVNTCE_DAY_CNT));
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
// 업무 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
// DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -375,12 +376,12 @@
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List : ${advntceTrgtList}
, ${infoPrefix}Start : ${advntceTrgtStart}
, ${infoPrefix}Fetch : ${advntceTrgtFetch}
, ${infoPrefix}Total : ${advntceTrgtTotal}
${infoPrefix}List: ${advntceTrgtList}
, ${infoPrefix}Start: ${advntceTrgtStart}
, ${infoPrefix}Fetch: ${advntceTrgtFetch}
, ${infoPrefix}Total: ${advntceTrgtTotal}
});
// 초기 데이터 설정
@ -402,25 +403,21 @@
// 초기 데이터 설정
$P.initData = () => {
// 총건수 / 총금액
$("#tnocs--${pageName}").val(${advntceTrgtTotal}); // 총건수
$("#gramt--${pageName}").val($P.control.dataset.getValue("GRAMT")); // 총금액
$("#tnocs--${pageName}").val(${advntceTrgtTotal});
$("#gramt--${pageName}").val($P.control.dataset.getValue("GRAMT"));
// 발송 일자 / 발송 종료 일자
$("#sndngYmd--${pageName}").val($P.advntceYmdInfo.LEVY_YMD_MASK);
$("#sndngEndYmd--${pageName}").val($P.advntceYmdInfo.DUDT_YMD_MASK);
// 제목
let ttlNm = $P.control.dataset.getValue("TASK_SE_NM");
ttlNm = ttlNm + " " + $P.control.dataset.getValue("VLTN_ARTCL");
ttlNm = ttlNm + " " + "사전통지";
$("#ttlNm--${pageName}").val(ttlNm);
// URL 설정
$P.setURL($P.mainQuery.taskSeCd);
}
if ($P.mainQuery.schVltnCd != null && $P.mainQuery.schVltnCd != "") { // 위반항목이 '전체'가 아니라면..
ttlNm = ttlNm + " " + $P.control.dataset.getValue("VLTN_ARTCL");
}
$("#ttlNm--${pageName}").val(ttlNm + " " + "사전통지");
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/060/createList.do"); // 등록
// 업무구분에 따른 URL 설정
$P.fnSetURL($P.mainQuery.taskSeCd);
}
/**************************************************************************

@ -7,6 +7,7 @@
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<div class="wrapper-list">
@ -23,8 +24,7 @@
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
</div> <!-- 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
@ -36,7 +36,7 @@
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<span class="form-label fw-bold form-search-title">업무구분</span>
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item">
<label>
@ -49,7 +49,7 @@
</div>
<!-- 발송일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title">발송일자</span>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schSndngYmdFrom--${pageName}">발송일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
@ -63,10 +63,10 @@
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="text" class="form-control fw-bold w-px-120 text-end" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<input type="text" class="form-control w-px-400" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -76,14 +76,14 @@
</span>
</div>
</div>
</div> <!-- / 메인 조건 -->
</div> <!-- 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<select class="form-select w-px-120 text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
@ -99,20 +99,18 @@
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<select class="form-select w-px-120 text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">
검색
</button>
<input type="text" class="form-control w-px-160" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
</div>
</div>
</div> <!-- / 상세 조건 -->
</div> <!-- 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
<!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -123,15 +121,14 @@
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveAdvntceSndng--${pageName}" title="사전통지 발송 삭제">
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="사전통지 발송 삭제">
발송 삭제
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -204,12 +201,13 @@
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->
<!-- Content -->
<div class="content-backdrop fade"></div>
</div>
@ -226,10 +224,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -237,26 +233,26 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "advntceSndng"
, prefixName : "사전통지 발송 현황"
, infoSize : "xxl"
, keymapper : info => info ? info.SNDNG_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
SNDNG_YMD : dateFormat
, SNDNG_END_YMD : dateFormat
, TNOCS : numberFormat
, GRAMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "advntceSndng"
, prefixName: "사전통지 발송 현황"
, keymapper: info => info ? info.SNDNG_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "xxl"
, formats: {
SNDNG_YMD: dateFormat
, SNDNG_END_YMD: dateFormat
, TNOCS: numberFormat
, GRAMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -266,15 +262,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -298,36 +294,40 @@
});
// 삭제 버튼
$("#btnRemoveAdvntceSndng--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
}
};
// 발송 상세
// 상세정보 dialog
$P.control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = $P.control.query;
params.callPurpose = "view"; // 호출 용도
params.pageNum = 1; // 페이지 번호
params.sndngId = sndngId; // 발송 ID
let params = {
title: $P.control.prefixName + " 상세 정보" // 타이틀
, callPurpose: "view" // 호출 용도
, pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("input[name=taskSeCd]:checked").val() // 업무 구분 코드
, sndngId: sndngId // 발송 ID
}
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("DtlDialog")
, title : "사전통지 발송 상세 정보"
, content : resp
, size : $P.control.infoSize
id: $P.control.prefixed("DtlDialog--${pageName}")
, title: params.title
, content: resp
, size: $P.control.infoSize
});
}
});
@ -335,18 +335,17 @@
// 삭제 callback
$P.control.onRemove = (resp) => {
let btnTitle = $("#btnRemoveAdvntceSndng--${pageName}").attr("title");
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
$P.refreshList();
}
if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
}
// 삭제
@ -354,9 +353,9 @@
if (!params) return;
ajax.post({
url : $P.control.urls.remove
, data : params
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/070/remove.do")
, data: params
, success: resp => $P.control.onRemove(resp)
});
}
@ -414,49 +413,32 @@
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 검색 자료 재조회
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
$P.control.load(1);
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 삭제 사유 callback
// 삭제사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
params.sndngIds = selected.join(","); // Ids
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
let selected = $P.control.dataset.getKeys("selected");
// 검색 자료 재조회
$P.refreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
params[$P.control.prefixed("Ids")] = selected.join(","); // IDs
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.delRsn = obj.reason; // 삭제 사유
$P.control.load(1);
$P.control.remove(params);
}
/**************************************************************************
@ -470,9 +452,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -480,6 +460,28 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
@ -496,6 +498,7 @@
if ($P.control.dataset.empty) {
dialog.alert({
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
@ -509,34 +512,36 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 삭제 버튼 이벤트
$P.fnRemove = (title) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (selected.length < 1) {
dialog.alert({
content: "선택하신 " + $P.control.prefixName + " 정보가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK: async() => {
// 삭제 사유 입력
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id: "inputDelRsnDialog"
, title: "삭제"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() });
$P.callbackRsn({ reason: $("#reason").val() });
}
});
}
@ -552,7 +557,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색
$("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
@ -574,9 +579,9 @@
});
});
// 사전통지 발송 삭제 버튼 이벤트
$("#btnRemoveAdvntceSndng--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title"));
// 버튼 이벤트
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title")); // 사전통지 발송 삭제
});
// DataTables width 변경 조정
@ -587,7 +592,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -604,56 +609,34 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 기본 데이터 설정
// 일자
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/070/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 조회 조건
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/070/list.do"); // 검색
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/070/remove.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/080/info.do"); // 사전통지 세부내용
}
/**************************************************************************

@ -4,152 +4,151 @@
<c:set var="prefixName" scope="request">사전통지 발송 현황 상세 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<div class="wrapper-pop">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sndngId--${pageName}" name="sndngId" />
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA01--${pageName}" title="세외수입 과태료대장 등록">
과태료대장 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA03--${pageName}" title="세외수입 과태료대장 상세조회">
과태료대장 상세조회
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSndngLink--${pageName}" title="우편통합 발송">
우편통합 발송
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf01--${pageName}" title="사전통지 출력(PDF-A4)">
사전통지 출력(PDF-A4)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf02--${pageName}" title="사전통지 출력(PDF-Letter)">
사전통지 출력(PDF-Letter)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntceOutsourcing--${pageName}" title="사전통지 출력(외주파일)">
사전통보서출력(외주파일)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSndbk--${pageName}" title="반송 등록">
반송 확인
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-500" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">발송상태</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: 200px;">성명</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 100px;">회계연도</th>
<th class="cmn" style="width: 100px;">부과번호</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>
<th class="cmn" style="width: 120px;">가산금</th>
<th class="cmn" style="width: 120px;">미납금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</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-center" onclick="{onclick}" ondblclick="{ondblclick}">{FYR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{PCPTAX}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADAMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{SUM_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sndngId--${pageName}" name="sndngId" />
</form> <!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA01--${pageName}" title="세외수입 과태료대장 등록">
과태료대장 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA03--${pageName}" title="세외수입 과태료대장 상세조회">
과태료대장 상세조회
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSndngLink--${pageName}" title="우편통합 발송">
우편통합 발송
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf01--${pageName}" title="사전통지 출력(PDF-A4)">
사전통지 출력(PDF-A4)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf02--${pageName}" title="사전통지 출력(PDF-Letter)">
사전통지 출력(PDF-Letter)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntceOutsourcing--${pageName}" title="사전통지 출력(외주파일)">
사전통보서출력(외주파일)
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSndbk--${pageName}" title="반송 등록">
반송 확인
</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive ox-scroll oy-scroll h-px-500" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">발송상태</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: 200px;">성명</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 100px;">회계연도</th>
<th class="cmn" style="width: 100px;">부과번호</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>
<th class="cmn" style="width: 120px;">가산금</th>
<th class="cmn" style="width: 120px;">미납금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</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-center" onclick="{onclick}" ondblclick="{ondblclick}">{FYR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{PCPTAX}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADAMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{SUM_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- DataTables(그리드) -->
</div> <!-- <div class="card"> -->
<!-- Page Body -->
<span id="tempArea--${pageName}" hidden></span>
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
</div> <!-- <div class="container flex-grow-1 px-0"> -->
<!-- Content -->
</div>
<!-- / inner page html <div class="content-wrapper"> -->
<!-- / inner page html <div class="wrapper-pop"> -->
<script>
/**************************************************************************
@ -162,10 +161,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -177,30 +174,30 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "advntceSndngDtl"
, prefixName : "사전통지 발송 상세"
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
SNDNG_YMD : dateFormat
, SNDNG_END_YMD : dateFormat
, DLVR_YMD : dateFormat
, LEVY_YMD : dateFormat
, DUDT_YMD : dateFormat
, FFNLG_AMT : numberFormat
, PCPTAX : numberFormat
, ADAMT : numberFormat
, SUM_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "advntceSndngDtl"
, prefixName: "사전통지 발송 상세"
, keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, formats: {
SNDNG_YMD: dateFormat
, SNDNG_END_YMD: dateFormat
, DLVR_YMD: dateFormat
, LEVY_YMD: dateFormat
, DUDT_YMD: dateFormat
, FFNLG_AMT: numberFormat
, PCPTAX: numberFormat
, ADAMT: numberFormat
, SUM_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -210,15 +207,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -269,49 +266,57 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, callPurpose : "view"
, crdnId : crdnId
, sggCd : $P.control.dataset.getValue("SGG_CD")
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD")
callControlName: "pageObject['${pageName}'].control"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
// 세외수입 과태료 대장 등록
$P.linkNxrpIndivA01 = (params) => {
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpA01List.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/991/nxrpA01List.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content : showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -322,15 +327,16 @@
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpA03List.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/991/nxrpA03List.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content : showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -339,25 +345,27 @@
// 우편통합 발송
$P.callbackDate = (obj) => {
let params = {
sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngSeCd : "02" // 발송 구분 코드
, sndngYmd : obj.sndngYmd // 발송 일자
, sndngEndYmd : obj.sndngEndYmd // 발송 종료 일자
, postSndngSeCd : obj.postSndngSeCd // 우편 발송 구분 코드 0 일반, 1 등기
, title : $("#btnCreateSndngLink--${pageName}").attr("title")
title: $("#btnCreateSndngLink--${pageName}").attr("title")
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngSeCd: "02" // 발송 구분 코드
, sndngYmd: obj.sndngYmd // 발송 일자
, sndngEndYmd: obj.sndngEndYmd // 발송 종료 일자
, postSndngSeCd: obj.postSndngSeCd // 우편 발송 구분 코드 0 일반, 1 등기
};
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/createSndngLink.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndngLink.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content : showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회
, init: () => { setDialogZindex(); }
, onOK : () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -368,28 +376,21 @@
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/createSndbkList.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndbkList.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
}
// 검색 자료 재조회
$P.refreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -397,15 +398,16 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
return;
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
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)"));
$P.control.query.cellDefs = cellDefs;
$P.control.download();
@ -416,16 +418,17 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// main에서 받아온 조건(Query)을 파라미터로 넘긴다.
dialog.alert({
content : "세외수입 과태료 대장에 단속 정보를 등록하시겠습니까?"
, onOK : () => {
content: "세외수입 과태료 대장에 단속 정보를 등록하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK: () => {
let params = {
callPurpose : "create"
, title : title // 타이틀
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd : $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
callPurpose: "create"
, title: title // 타이틀
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd: $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
};
$P.linkNxrpIndivA01(params);
@ -438,16 +441,17 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// main에서 받아온 조건(Query)을 파라미터로 넘긴다.
dialog.alert({
content : "세외수입 과태료 대장을 조회하시겠습니까?"
, onOK : () => {
content: "세외수입 과태료 대장을 조회하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK: () => {
let params = {
callPurpose : "update"
, title : title // 타이틀
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd : $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
callPurpose: "update"
, title: title // 타이틀
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd: $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
};
$P.linkNxrpIndivA03(params);
@ -460,30 +464,29 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
var resp = await fetch(wctx.url("/resources/html/inputDateDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputDateDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputEPostDateDialog",
title: title,
size : "md",
content: template,
init : () => {
id : "inputEPostDateDialog"
, title: title
, size: "md"
, content: template
, init: () => {
setDialogZindex();
$("#divPostSndng").show();
initDatepicker("frmInputDate");
$("#sndngYmd").datepicker("setDate", $P.control.dataset.getValue("SNDNG_YMD"));
$("#sndngEndYmd").datepicker("setDate", $P.control.dataset.getValue("SNDNG_END_YMD"));
},
onOK : () => {
if (!inputDateComparison($("#sndngYmd").val(), $("#sndngEndYmd").val())) {
return;
}
onOK: () => {
if (!inputDateComparison($("#sndngYmd").val(), $("#sndngEndYmd").val())) return;
$P.callbackDate({
"sndngYmd" : $("#sndngYmd").val(),
"sndngEndYmd" : $("#sndngEndYmd").val(),
"postSndngSeCd" : $("#frmInputDate").find("[name='postSndngSeCd']:checked").val()
"sndngYmd": $("#sndngYmd").val()
, "sndngEndYmd": $("#sndngEndYmd").val()
, "postSndngSeCd": $("#frmInputDate").find("[name='postSndngSeCd']:checked").val()
});
}
});
@ -494,44 +497,41 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let taskSeCd = $P.control.dataset.getValue("TASK_SE_CD");
let submitParam = {
sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
};
let url = "";
if (fileType == "pdf") {
url = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/080/makeAdvntcePdf.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntcePdf.do");
} else if (fileType == "outsourcing") {
url = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/080/makeAdvntceOutsourcing.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntceOutsourcing.do");
}
let params = {
sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, taskSeCd : taskSeCd
};
let inBrowser = false;
if (fileType == "pdf") {
params.paperSeCd = paper;
submitParam.paperSeCd = paper;
inBrowser = true;
}
if (inBrowser) {
let parameter = toQuery(params);
let filenameInHeader = "";
var parameter = toQuery(submitParam);
var filenameInHeader = "";
fetch(url + "?" + parameter)
.then((response) => {
let header = response.headers.get('Content-Disposition');
let parts = header.split(';');
filenameInHeader = decodeURIComponent(parts[1].split('=')[1]);
var header = response.headers.get('Content-Disposition');
var parts = header.split(';');
filenameInHeader = decodeURIComponent(parts[1].split('=')[1]);
return response.blob();
})
.then((blob) => {
openPDF(blob, filenameInHeader);
});
} else {
let parameter = toQuery(submitParam);
var parameter = toQuery(submitParam);
document.location.href = url + "?" + parameter;
}
}
@ -542,11 +542,11 @@
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "종적결과를 확인하시겠습니까?"
, onOK : () => {
content: "종적결과를 확인하시겠습니까?"
, onOK: () => {
// 파리미터 설정
let params = $P.mainQuery; // mainQuery
params.title = title; // 타이틀
let params = $P.mainQuery; // mainQuery
params.title = title; // 타이틀
$P.createSndbk(params);
}
@ -561,37 +561,32 @@
// 기본 버튼 이벤트
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
// 세외수입 과태료 대장 단속 정보 등록 버튼 이벤트
// 업무 버튼 이벤트
$("#btnLinkNxrpIndivA01--${pageName}").on("click", function() {
$P.fnLinkNxrpIndivA01($(this).attr("title"));
$P.fnLinkNxrpIndivA01($(this).attr("title")); // 세외수입 과태료 대장 단속 정보 등록
});
// 세외수입 과태료 대장 등록 자료 상세 조회 버튼 이벤트
$("#btnLinkNxrpIndivA03--${pageName}").on("click", function() {
$P.fnLinkNxrpIndivA03($(this).attr("title"));
$P.fnLinkNxrpIndivA03($(this).attr("title")); // 세외수입 과태료 대장 등록 자료 상세
});
// 우편통합 발송 버튼 이벤트
$("#btnCreateSndngLink--${pageName}").on("click", function() {
$P.fnCreateSndngLink($(this).attr("title"));
$P.fnCreateSndngLink($(this).attr("title")); // 우편통합 발송
});
// 사전통지 출력(PDF-A4) 버튼 이벤트
$("#btnPrintAdvntcePdf01--${pageName}").on("click", function() {
$P.fnMakeFileAdvntce($(this).attr("title"), "pdf", "01");
$P.fnMakeFileAdvntce($(this).attr("title"), "pdf", "01"); // 사전통지 출력(PDF-A4)
});
// 사전통지 출력(PDF-Letter) 버튼 이벤트
$("#btnPrintAdvntcePdf02--${pageName}").on("click", function() {
$P.fnMakeFileAdvntce($(this).attr("title"), "pdf", "02");
$P.fnMakeFileAdvntce($(this).attr("title"), "pdf", "02"); // 사전통지 출력(PDF-Letter)
});
// 사전통지 출력(외주파일) 버튼 이벤트
$("#btnPrintAdvntceOutsourcing--${pageName}").on("click", function() {
$P.fnMakeFileAdvntce($(this).attr("title"), "outsourcing");
$P.fnMakeFileAdvntce($(this).attr("title"), "outsourcing"); // 사전통지 출력(외주파일)
});
// 반송 등록 버튼 이벤트
$("#btnCreateSndbk--${pageName}").on("click", function() {
$P.fnCreateSndbk($(this).attr("title"));
$P.fnCreateSndbk($(this).attr("title")); // 반송 등록
});
// DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
@ -602,12 +597,12 @@
hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List : ${advntceSndngDtlList}
, ${infoPrefix}Start : ${advntceSndngDtlStart}
, ${infoPrefix}Fetch : ${advntceSndngDtlFetch}
, ${infoPrefix}Total : ${advntceSndngDtlTotal}
${infoPrefix}List: ${advntceSndngDtlList}
, ${infoPrefix}Start: ${advntceSndngDtlStart}
, ${infoPrefix}Fetch: ${advntceSndngDtlFetch}
, ${infoPrefix}Total: ${advntceSndngDtlTotal}
});
// 초기 데이터 설정
@ -619,6 +614,12 @@
$P.initForm = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 업무가 주정차위반(PVS) 또는 전용차로위반(BPV) 이라면..
if ($P.mainQuery.taskSeCd == "PVS" || $P.mainQuery.taskSeCd == "BPV") {
$("#btnLinkNxrpIndivA01--${pageName}").prop("disabled", true);
$("#btnLinkNxrpIndivA03--${pageName}").prop("disabled", true);
}
}
// 초기 데이터 설정
@ -627,15 +628,16 @@
$("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID"));
// 검색 조건 설정
$P.control.defaultFetchSize = $P.mainQuery.fetchSize;
$P.control.query = $P.mainQuery;
// URL 설정
$P.setURL($P.mainQuery.taskSeCd);
$P.fnSetURL($P.mainQuery.taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/080/list.do"); // 조회
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd +"${infoPrefixUrl}" + "/080/list.do"); // 조회
}
/**************************************************************************

Loading…
Cancel
Save