1. 발송,반송 수정.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,14 +1,13 @@
package cokr.xit.fims.sndb.dao; package cokr.xit.fims.sndb.dao;
import java.util.List; import java.util.List;
import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper; import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper; import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
/** DAO /** DAO
* *
@ -144,18 +143,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int insertSndng(Map<String, Object> params); int insertSndng(Sndng sndng);
/** .
* @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;
}
/** . /** .
* @param params * @param params
@ -164,18 +152,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int updateSndng(Map<String, Object> params); int updateSndng(Sndng sndng);
/** .
* @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;
}
/** . /** .
* @param params * @param params
@ -184,18 +161,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int deleteSndng(Map<String, ?> params); int deleteSndng(Sndng sndng);
/** .
* @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;
}
/** . /** .
* @param params * @param params
@ -204,11 +170,7 @@ public interface SndngMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int updateSndngSttsCd(Map<String, Object> params); int updateSndngSttsCd(Sndng sndng);
default boolean updateSndngSttsCd(Sndng sndng) {
return sndng != null && updateSndngSttsCd(params().set("sndng", sndng)) == 1;
}
/** . /** .
* @param params * @param params
@ -217,10 +179,6 @@ public interface SndngMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int updateEPostSndng(Map<String, Object> params); int updateEPostSndng(Sndng sndng);
default boolean updateEPostSndng(Sndng sndng) {
return sndng != null && updateEPostSndng(params().set("sndng", sndng)) == 1;
}
} }

@ -79,18 +79,7 @@ public interface SvbtcMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int insertSvbtc(Map<String, Object> params); int insertSvbtc(Svbtc svbtc);
/** .
* @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;
}
/** . /** .
* @param params * @param params
@ -99,18 +88,7 @@ public interface SvbtcMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int updateSvbtc(Map<String, Object> params); int updateSvbtc(Svbtc svbtc);
/** .
* @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;
}
/** . /** .
* @param params * @param params
@ -119,17 +97,6 @@ public interface SvbtcMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int deleteSvbtc(Map<String, ?> params); int deleteSvbtc(Svbtc svbtc);
/** .
* @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;
}
} }

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

@ -120,24 +120,6 @@ public interface SndngService {
*/ */
String createSndngLink(Sndng sndng); 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 * @param sndng
* @return * @return
@ -147,17 +129,4 @@ public interface SndngService {
*/ */
String removeSndng(Sndng sndng); String removeSndng(Sndng sndng);
} }

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

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

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

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

@ -108,16 +108,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.createEPost(sndng); 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 @Override
public String removeSndng(Sndng sndng) { public String removeSndng(Sndng sndng) {
return sndngBean.removeSndng(sndng); return sndngBean.removeSndng(sndng);

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

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

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

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

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

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

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

File diff suppressed because it is too large Load Diff

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

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

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

@ -1,11 +1,12 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">계고장 발송 현황</c:set>
<!-- inner page html --> <!-- inner page html -->
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content --> <!-- Content -->
<div class="container-xxl flex-grow-1 px-0"> <div class="container-xxl flex-grow-1 px-0">
<c:set var="prefixName" scope="request">계고장 발송 현황</c:set>
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
@ -23,20 +24,19 @@
엑셀 엑셀
</button> </button>
</span> </span>
</div> </div> <!-- 상단 버튼 -->
<!-- / 상단 버튼 -->
<!-- 검색 조건 영역 --> <!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch"> <form id="frmSearch--${pageName}" name="frmSearch">
<!-- hidden --> <!-- 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="container-search">
<div class="row g-1"> <div class="row g-1">
<!-- 업무구분 --> <!-- 업무 구분 -->
<div class="col-12"> <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"> <span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item"> <c:forEach items="${taskListForSgg}" var="item">
<label> <label>
@ -49,7 +49,7 @@
</div> </div>
<!-- 발송일자 --> <!-- 발송일자 -->
<div class="col-6"> <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"> <span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom" <input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" /> data-fmt-type="day" title="시작 날짜 선택" />
@ -63,10 +63,10 @@
<!-- 동적검색 --> <!-- 동적검색 -->
<div class="col-6"> <div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" /> <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="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" /> <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"> <span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}"> <button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -76,14 +76,14 @@
</span> </span>
</div> </div>
</div> </div>
</div> <!-- / 메인 조건 --> </div> <!-- 메인 조건 -->
<!-- 상세 조건 --> <!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse"> <div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1"> <div class="row g-1">
<!-- 등록일자, 수정일자 --> <!-- 등록일자, 수정일자 -->
<div class="col-6"> <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="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option> <option value="mdfcnDt">수정일자</option>
</select> </select>
@ -99,19 +99,18 @@
</div> </div>
<!-- 등록자명, 수정자명 --> <!-- 등록자명, 수정자명 -->
<div class="col-6"> <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="rgtr">등록자</option>
<option value="mdfr">수정자</option> <option value="mdfr">수정자</option>
</select> </select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" /> <input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" /> <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 type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
검색
</button>
</div> </div>
</div> </div>
</div> <!-- / 상세 조건 --> </div> <!-- 상세 조건 -->
</form> <!-- / 검색 조건 영역 --> </form>
<!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
@ -122,15 +121,14 @@
<ul class="pagination pagination-primary" id="paging--${pageName}"> <ul class="pagination pagination-primary" id="paging--${pageName}">
</ul> </ul>
</div> </div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="계고장 발송 삭제"> <button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="계고장 발송 삭제">
삭제 발송 삭제
</button> </button>
</span> </span>
</span> </span>
</div> </div> <!-- 업무 버튼 및 건수 표시 -->
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
@ -203,12 +201,13 @@
</table> </table>
</div> </div>
</div> </div>
</div> </div> <!-- DataTables(그리드) -->
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> --> </div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> --> </div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content --> <!-- Content -->
<div class="content-backdrop fade"></div> <div class="content-backdrop fade"></div>
</div> </div>
@ -225,10 +224,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields // FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}"); $P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -236,26 +233,26 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "wrngSndng" prefix: "wrngSndng"
, prefixName : "계고장 발송 현황" , prefixName: "계고장 발송 현황"
, infoSize : "xxl" , keymapper: info => info ? info.SNDNG_ID : ""
, keymapper : info => info ? info.SNDNG_ID : "" , dataGetter: obj => obj.${infoPrefix}List
, dataGetter : obj => obj.${infoPrefix}List , appendData: true
, appendData : true , infoSize: "xxl"
, formats : { , formats: {
SNDNG_YMD : dateFormat SNDNG_YMD: dateFormat
, SNDNG_END_YMD : dateFormat , SNDNG_END_YMD: dateFormat
, TNOCS : numberFormat , TNOCS: numberFormat
, GRAMT : numberFormat , GRAMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -265,15 +262,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , 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() { $("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this); let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val())); checkbox.prop("checked", keys.includes(checkbox.val()));
}); });
@ -301,32 +297,36 @@
// DataTables(그리드) 전체 선택(checkbox) // DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) { 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) { } else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정 $("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else { } else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} }
}; };
// 발송 상세 // 상세정보 dialog
$P.control.getInfo = (sndngId) => { $P.control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return; if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = $P.control.query; let params = {
params.callPurpose = "view"; // 호출 용도 title: $P.control.prefixName + " 상세 정보" // 타이틀
params.pageNum = 1; // 페이지 번호 , callPurpose: "view" // 호출 용도
params.sndngId = sndngId; // 발송 ID , pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("input[name=taskSeCd]:checked").val() // 업무 구분 코드
, sndngId: sndngId // 발송 ID
}
ajax.get({ ajax.get({
url : $P.control.urls.getInfo url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/040/info.do") + "?openerPageName=${pageName}"
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : $P.control.prefixed("DtlDialog") id: $P.control.prefixed("DtlDialog--${pageName}")
, title : "계고장 발송 상세 정보" , title: params.title
, content : resp , content: resp
, size : $P.control.infoSize , size: $P.control.infoSize
}); });
} }
}); });
@ -339,13 +339,12 @@
// 메시지 출력 // 메시지 출력
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , init: () => { setDialogZindex(); }
, onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
$P.refreshList();
}
} }
// 삭제 // 삭제
@ -353,9 +352,9 @@
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : $P.control.urls.remove url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/030/remove.do")
, data : params , data: params
, success : resp => $P.control.onRemove(resp) , success: resp => $P.control.onRemove(resp)
}); });
} }
@ -405,7 +404,7 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => { $P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false $P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1); $P.control.load($P.control.query.pageNum + 1);
} }
@ -413,47 +412,30 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(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.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum; $P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1); $P.control.load(1);
} }
// 사유 callback // 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 삭제사유 callback
$P.callbackRsn = (obj) => { $P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = {}; let params = {};
params.sndngIds = selected.join(","); // Ids let selected = $P.control.dataset.getKeys("selected");
params.delRsn = obj.reason; // 삭제 사유
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); $P.control.remove(params);
} }
@ -469,9 +451,7 @@
} }
// 초기 기본 설정 // 초기 기본 설정
$P.initForm(); $P.initForm(taskSeCd);
// 기본 데이터 설정
$P.initData(taskSeCd);
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask(taskSeCd); $P.setTask(taskSeCd);
@ -479,14 +459,36 @@
$P.control.dataset.clear(); $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.fnSearchList = () => {
// 검색조건 // 검색조건
$P.control.query = $P.formFields.get(); $P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 $P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.sndngSeCdFrom = "11"; // 발송 구분 코드 - 11 계고장 $P.control.query.sndngSeCdFrom = "11"; // 발송 구분 코드 - 11 계고장
$P.control.query.sndngSeCdTo = "12"; // 발송 구분 코드 - 12 계고장 구형표지 $P.control.query.sndngSeCdTo = "12"; // 발송 구분 코드 - 12 계고장 구형표지
$P.control.query.delYn = "N"; // 삭제 여부 $P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1); $P.control.load(1);
} }
@ -495,10 +497,10 @@
$P.fnExcel = () => { $P.fnExcel = () => {
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content : "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, onOK : () => { } , init: () => { setDialogZindex(); }
, onOK: () => { }
}); });
return; return;
} }
@ -510,36 +512,36 @@
$P.control.download(); $P.control.download();
} }
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 삭제 버튼 이벤트 // 삭제 버튼 이벤트
$P.fnRemove = () => { $P.fnRemove = (title) => {
// 선택 자료 // 선택 자료
let selected = $P.control.dataset.getKeys("selected"); 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({ dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?" content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => { , onOK: async() => {
// 삭제 사유 입력 // 삭제 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text(); let template = await resp.text();
dialog.open({ dialog.open({
id : "inputDelRsnDialog", id: "inputDelRsnDialog"
title: "삭제", , title: title
size : "lg", , size : "lg"
content: template, , content: template
init : () => { , init: () => { setDialogZindex(); }
setDialogZindex(); , onOK: () => {
}, $P.callbackRsn({ reason: $("#reason").val() });
onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() });
} }
}); });
} }
@ -555,7 +557,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화 $("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색 $("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색 $("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다. // 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) { $("#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 변경 조정 // DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]); fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -588,7 +592,7 @@
} }
// 초기 화면 설정 // 초기 화면 설정
$P.initForm = () => { $P.initForm = (taskSeCd) => {
// 화면 초기화 // 화면 초기화
$("#frmSearch--${pageName}")[0].reset(); $("#frmSearch--${pageName}")[0].reset();
@ -605,56 +609,33 @@
$(this).prop("disabled", "true"); $(this).prop("disabled", "true");
}); });
// 달력 초기화 // 기본 데이터 설정
initDatepicker("frmSearch--${pageName}"); $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", new Date()); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date()); initDatepicker("frmSearch--${pageName}"); // 달력 초기화
// 동적 검색
$("#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);
// 일자
$("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); $("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date()); $("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
} }
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask = (taskSeCd) => { $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 // 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content; let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn"); let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = ""; let colsOuterHTML = "";
cols.each(function() { cols.each(function() {
colsOuterHTML += this.outerHTML; colsOuterHTML += this.outerHTML;
}); });
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML); $("#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"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">계고장 발송 현황 상세 정보</c:set>
<!-- inner page html --> <!-- inner page html -->
<div class="content-wrapper"> <div class="wrapper-pop">
<!-- Content --> <!-- Content -->
<div class="container flex-grow-1 px-0"> <div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">계고장 발송 현황 상세 정보</c:set>
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
<div class="wrapper-pop"> <!-- 입력 영역 -->
<!-- 입력 영역 --> <form id="frmEdit--${pageName}" name="frmEdit">
<form id="frmEdit--${pageName}" name="frmEdit"> <input type="hidden" id="sndngId--${pageName}" name="sndngId" />
<input type="hidden" id="sndngId--${pageName}" name="sndngId" /> </form>
</form> <!-- /입력 영역 --> <!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
<span class="container-page-btn"> <span class="container-page-btn">
<!-- 건수, 페이지 표시 --> <!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between"> <div class="d-flex flex-row justify-content-between">
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span> <span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<ul class="pagination pagination-primary" id="paging--${pageName}"> <ul class="pagination pagination-primary" id="paging--${pageName}">
</ul> </ul>
</div> </div>
<span class="container-window-btn-right"> <!-- 업무 버튼 -->
<!-- 업무 버튼 --> <span class="container-window-btn-right">
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀"> <button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
엑셀 엑셀
</button> </button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrintWrng--${pageName}" title="계고장 출력"> <button type="button" class="btn btn-primary w-px-120" id="btnPrintWrng--${pageName}" title="계고장 출력">
계고장 출력 계고장 출력
</button> </button>
</span> </span>
</span> </span>
</div> <!-- / 업무 버튼 및 건수 표시 --> </div> <!-- 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}"> <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}"> <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"> <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"> <thead class="sticky-thead">
<tr id="theadTr--${pageName}" <tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${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: 72px;">No.</th>
<th class="cmn" style="width: 120px;">발송상태</th> <th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 160px;">등기번호</th> <th class="cmn" style="width: 160px;">등기번호</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: 200px;">성명</th> <th class="cmn" style="width: 200px;">성명</th>
<th class="cmn" style="width: 100px;">우편번호</th> <th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th> <th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</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: 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: 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: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th> <th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">단속법정동</th> <th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th> <th class="cmn" style="width: 280px;">단속장소</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: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th> <th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th> <th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th> <th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th> <th class="cmn dummy-th"></th>
</tr> </tr>
</thead> </thead>
<tbody id="tbody--${pageName}"> <tbody id="tbody--${pageName}">
</tbody> </tbody>
<template id="${infoPrefix}Row--${pageName}"> <template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}"> <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}">{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}">{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}">{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_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_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-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</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_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_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_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</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}">{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}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_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-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}">{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_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</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}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</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}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td> <td class="cmn dummy-td"></td>
</tr> </tr>
</template> </template>
<template id="${infoPrefix}NotFound--${pageName}"> <template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd"> <tr class="odd">
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
</table> </table>
</div>
</div> </div>
</div> </div>
<!-- / DataTables(그리드) --> </div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </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> </div>
<!-- / inner page html <div class="content-wrapper"> --> <!-- / inner page html <div class="wrapper-pop"> -->
<script> <script>
/************************************************************************** /**************************************************************************
@ -127,10 +129,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// FormFields // FormFields
@ -142,24 +142,24 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "wrngSndngDtl" prefix: "wrngSndngDtl"
, prefixName : "계고장 발송 상세" , prefixName: "계고장 발송 상세"
, keymapper : info => info ? info.SNDNG_DTL_ID : "" , keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.${infoPrefix}List , dataGetter: obj => obj.${infoPrefix}List
, appendData : true , appendData: true
, formats : { , formats: {
SNDNG_YMD : dateFormat SNDNG_YMD: dateFormat
, DUDT_YMD : dateFormat , DUDT_YMD: dateFormat
, FFNLG_AMT : numberFormat , FFNLG_AMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -169,15 +169,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , func: "pageObject['${pageName}'].control.load({index})"
}); });
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 $P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트
@ -223,40 +223,39 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => { $P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false $P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1); $P.control.load($P.control.query.pageNum + 1);
} }
/************************************************************************** // DataTables에 더블 클릭시 개별총정보 dialog
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
$P.getTotalInfo = (crdnId) => { $P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { let params = {
callControlName : "pageObject['${pageName}'].control" callControlName: "pageObject['${pageName}'].control"
, callPurpose : "view" , sggCd: $P.control.dataset.getValue("SGG_CD")
, crdnId : crdnId , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, sggCd : $P.control.dataset.getValue("SGG_CD") , crdnId: crdnId
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD")
} }
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do") url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params , data: params
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id: "totalInfoMainDialog"
, title : "개별총정보" , title: "개별총정보"
, content : resp , content: resp
, size : "xxl" , size: "xxl"
}); });
} }
}); });
} }
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 출력 // 출력
$P.print = (params) => { $P.print = (params) => {
if (!params) return; if (!params) return;
@ -269,16 +268,16 @@
$P.fnExcel = () => { $P.fnExcel = () => {
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content : "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, onOK : () => { } , init: () => { setDialogZindex(); }
, onOK: () => { }
}); });
return; return;
} }
// DataTables(그리드) // DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th") let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td")); , $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
$P.control.query.cellDefs = cellDefs; $P.control.query.cellDefs = cellDefs;
$P.control.download(); $P.control.download();
@ -290,8 +289,9 @@
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({ dialog.alert({
content : $P.control.prefixName + " 정보를 출력하시겠습니까?" // content: $P.control.prefixName + " 정보를 출력하시겠습니까?"
, onOK : () => { content: "작업중입니다"
, onOK: () => {
$P.print($P.formFields.get()); $P.print($P.formFields.get());
} }
}); });
@ -306,7 +306,9 @@
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
// 업무 버튼 이벤트 // 업무 버튼 이벤트
$("#btnPrintWrng--${pageName}").on("click", () => $P.fnPrint()); // 계고장 출력 $("#btnPrintWrng--${pageName}").on("click", function() {
$P.fnPrint($(this).attr("title")); // 계고장 출력
});
// DataTables width 변경 조정 // DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]); fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -315,12 +317,12 @@
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList); fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다. // DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) { $("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({ $P.control.setData({
${infoPrefix}List : ${wrngSndngDtlList} ${infoPrefix}List: ${wrngSndngDtlList}
, ${infoPrefix}Start : ${wrngSndngDtlStart} , ${infoPrefix}Start: ${wrngSndngDtlStart}
, ${infoPrefix}Fetch : ${wrngSndngDtlFetch} , ${infoPrefix}Fetch: ${wrngSndngDtlFetch}
, ${infoPrefix}Total : ${wrngSndngDtlTotal} , ${infoPrefix}Total: ${wrngSndngDtlTotal}
}); });
// 초기 데이터 설정 // 초기 데이터 설정
@ -339,17 +341,17 @@
// SNDNG_ID // SNDNG_ID
$("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID")); $("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID"));
// 검색 조건 설정 // 검색 조건 설정 (엑셀저장)
$P.control.defaultFetchSize = $P.mainQuery.fetchSize; $P.control.defaultFetchSize = $P.mainQuery.fetchSize;
$P.control.query = $P.mainQuery; $P.control.query = $P.mainQuery;
// URL 설정 // URL 설정
$P.setURL($P.mainQuery.taskSeCd); $P.fnSetURL($P.mainQuery.taskSeCd);
} }
// 업무구분에 따른 URL 설정 // 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => { $P.fnSetURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/040/list.do"); // 조회 $P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/040/list.do"); // 조회
} }
/************************************************************************** /**************************************************************************

@ -7,6 +7,7 @@
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content --> <!-- Content -->
<div class="container-xxl flex-grow-1 px-0"> <div class="container-xxl flex-grow-1 px-0">
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
<div class="wrapper-list"> <div class="wrapper-list">
@ -36,7 +37,7 @@
<div class="row g-1"> <div class="row g-1">
<!-- 업무구분 --> <!-- 업무구분 -->
<div class="col-12"> <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"> <span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item"> <c:forEach items="${taskListForSgg}" var="item">
<label> <label>
@ -49,7 +50,7 @@
</div> </div>
<!-- 단속일자 --> <!-- 단속일자 -->
<div class="col-6"> <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"> <span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom" <input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" /> data-fmt-type="day" title="시작 날짜 선택" />
@ -62,23 +63,13 @@
</div> </div>
<!-- 위반항목 --> <!-- 위반항목 -->
<div class="col-6"> <div class="col-6">
<label class="form-label fw-bold form-search-title" for="schVltnCd--${pageName}">위반항목</label> <label class="form-label fw-bold form-search-title w-px-120 text-end" for="schVltnCd--${pageName}">위반항목</label>
<select class="form-select" id="schVltnCd--${pageName}" name="schVltnCd"> <select class="form-select w-px-160" id="schVltnCd--${pageName}" name="schVltnCd">
<option value="">전체</option> <option value="">전체</option>
<c:forEach items="${FIM004List}" var="item"> <c:forEach items="${FIM004List}" var="item">
<option value="${item.code}">${item.value}</option> <option value="${item.code}">${item.value}</option>
</c:forEach> </c:forEach>
</select> </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" />
</div> </div>
<!-- --> <!-- -->
<div class="col-6"> <div class="col-6">
@ -86,10 +77,10 @@
<!-- 동적검색 --> <!-- 동적검색 -->
<div class="col-6"> <div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" /> <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="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" /> <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"> <span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}"> <button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -99,14 +90,29 @@
</span> </span>
</div> </div>
</div> </div>
</div> <!-- / 메인 조건 --> </div> <!-- 메인 조건 -->
<!-- 상세 조건 --> <!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse"> <div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1"> <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"> <div class="col-4">
<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="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option> <option value="mdfcnDt">수정일자</option>
</select> </select>
@ -121,21 +127,19 @@
</span> </span>
</div> </div>
<!-- 등록자명, 수정자명 --> <!-- 등록자명, 수정자명 -->
<div class="col-6"> <div class="col-4">
<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="rgtr">등록자</option>
<option value="mdfr">수정자</option> <option value="mdfr">수정자</option>
</select> </select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" /> <input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" /> <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 type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
검색
</button>
</div> </div>
</div> </div>
</div> <!-- / 상세 조건 --> </div> <!-- 상세 조건 -->
</form> </form>
<!-- / 검색 조건 영역 --> <!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
@ -146,18 +150,17 @@
<ul class="pagination pagination-primary" id="paging--${pageName}"> <ul class="pagination pagination-primary" id="paging--${pageName}">
</ul> </ul>
</div> </div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<!-- 업무 버튼 --> <button type="button" class="btn btn-primary w-px-120" id="btnCreateSlctnTrgtInfo--${pageName}" title="선택 발송대상 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSlctnTrgt--${pageName}" title="선택 발송대상 등록">
선택 대상 등록 선택 대상 등록
</button> </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> </button>
</span> </span>
</span> </span>
</div> </div> <!-- 업무 버튼 및 건수 표시 -->
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
@ -258,10 +261,11 @@
</table> </table>
</div> </div>
</div> </div>
</div> </div> <!-- DataTables(그리드) -->
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> --> </div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> --> </div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content --> <!-- / Content -->
@ -287,10 +291,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields // FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}"); $P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -298,26 +300,26 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "advntceTrgt" prefix: "advntceTrgt"
, prefixName : "사전통지 발송 대상" , prefixName: "사전통지 발송 대상"
, infoSize : "xl" , keymapper: info => info ? info.CRDN_ID : ""
, keymapper : info => info ? info.CRDN_ID : "" , dataGetter: obj => obj.${infoPrefix}List
, dataGetter : obj => obj.${infoPrefix}List , appendData: true
, appendData : true , infoSize: "xl"
, formats : { , formats: {
CVLCPT_RCPT_YMD : dateFormat CVLCPT_RCPT_YMD: dateFormat
, CRDN_YMD_TM : datetimeFormat , CRDN_YMD_TM: datetimeFormat
, FFNLG_AMT : numberFormat , FFNLG_AMT: numberFormat
, ADVNTCE_AMT : numberFormat , ADVNTCE_AMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -327,15 +329,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , 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() { $("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this); let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val())); checkbox.prop("checked", keys.includes(checkbox.val()));
}); });
// 선택 대상 등록 버튼 // 선택 대상 등록 버튼
$("#btnCreateSlctnTrgt--${pageName}").prop("disabled", keys.length < 1); $("#btnCreateSlctnTrgtInfo--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox) // DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) { 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) { } else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정 $("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else { } else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} }
}; };
// 사전통지 발송 등록 dialog -> callback 추가 // 사전통지 발송 등록 dialog
$P.control.getInfo = (params) => { $P.control.getInfo = (params) => {
if (!params) return; if (!params) return;
@ -386,15 +387,15 @@
} }
ajax.get({ ajax.get({
url : $P.control.urls.getInfo url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/060/info.do") + "?openerPageName=${pageName}"
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : $P.control.prefixed("Dialog") id: $P.control.prefixed("Dialog--${pageName}")
, title : dialogTitle , title: dialogTitle
, content : resp , content: resp
, size : $P.control.infoSize , size: $P.control.infoSize
, onClose : () => { $P.refreshList(); } , onClose: () => { $P.fnRefreshList(); }
}); });
} }
}); });
@ -451,65 +452,36 @@
$P.control.load($P.control.query.pageNum + 1); $P.control.load($P.control.query.pageNum + 1);
} }
/************************************************************************** // DataTables에 더블 클릭시 개별총정보 dialog
* 사용자 함수(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
$P.getTotalInfo = (crdnId) => { $P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { let params = {
callControlName : "pageObject['${pageName}'].control" callControlName: "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val() , sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd : $("input[name=taskSeCd]:checked").val() , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId : crdnId , crdnId: crdnId
} }
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do") url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params , data: params
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id: "totalInfoMainDialog"
, title : "개별총정보" , title: "개별총정보"
, content : resp , content: resp
, size : "xxl" , size: "xxl"
, init : () => { }
, onClose : () => { }
}); });
} }
}); });
} }
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회 // 검색 자료 재조회
$P.refreshList = () => { $P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum; $P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum; $P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.query.crdnIds = null; $P.control.query.crdnIds = null;
@ -517,6 +489,12 @@
$P.control.load(1); $P.control.load(1);
} }
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -528,9 +506,7 @@
} }
// 초기 기본 설정 // 초기 기본 설정
$P.initForm(); $P.initForm(taskSeCd);
// 기본 데이터 설정
$P.initData(taskSeCd);
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask(taskSeCd); $P.setTask(taskSeCd);
@ -538,23 +514,44 @@
$P.control.dataset.clear(); $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.fnSearchList = () => {
// 검색조건 // 검색조건
$P.control.query = $P.formFields.get(); $P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 $P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
// 업무 구분 코드(TASK_SE_CD) 에 따른 검색 조건 설정 // 업무 구분 코드(TASK_SE_CD) 에 따른 검색 조건 설정
let taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val(); let taskSeCd = $("input[name=taskSeCd]:checked").val();
if (taskSeCd == "BPV" || taskSeCd == "PVS") { // 전용차로위반 , 주정차위반 과태료는 사전부과 후 의견제출 접수도 사전통지 대상 if (taskSeCd == "BPV" || taskSeCd == "PVS") { // 전용차로위반 , 주정차위반 과태료는 사전부과 후 의견제출 접수도 사전통지 대상
$P.control.query.crdnSttsCdFrom = "23"; // 단속 처리 상태 시작 $P.control.query.crdnSttsCdFrom = "21"; // 단속 처리 상태(FIM010) 시작 - 21: 납부자 등록
$P.control.query.crdnSttsCdTo = "31"; // 단속 처리 상태 종료 $P.control.query.crdnSttsCdTo = "31"; // 단속 처리 상태(FIM010) 종료 - 31: 의견제출 접수
} else { } else {
$P.control.query.crdnSttsCdFrom = "21"; // 단속 처리 상태 시작 $P.control.query.crdnSttsCdFrom = "21"; // 단속 처리 상태(FIM010) 시작 - 21: 납부자 등록
$P.control.query.crdnSttsCdTo = "31"; // 단속 처리 상태 종료 $P.control.query.crdnSttsCdTo = "23"; // 단속 처리 상태(FIM010) 종료 - 23: 사전부과
// $P.control.query.crdnSttsCdTo = "23";
} }
$P.control.query.delYn = "N"; // 삭제 여부 $P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1); $P.control.load(1);
} }
@ -563,8 +560,8 @@
$P.fnExcel = () => { $P.fnExcel = () => {
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content : "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
@ -577,48 +574,48 @@
$P.control.download(); $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"); let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return; if (selected.length < 1) return;
// 파라미터 설정 // 파라미터 설정
let params = $P.control.query; // 검색 조건 let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록) params.callPurpose = "create"; // 호출 용도 (등록)
params.title = title; // 타이틀 params.crdnIds = selected.join(","); // crdnIds
params.crdnIds = selected.join(","); // Ids params.sndngSeCd = "02"; // 발송 구분 코드(FIM047) - 02 사전통지서
params.sndngSeCd = "02"; // 발송 구분 코드(FIM047) - 02 사전통지서 params.resndYn = "N"; // 재발송 여부
params.resndYn = "N"; // 재발송 여부 params.delYn = "N"; // 삭제 여부
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params); $P.control.getInfo(params);
} }
// 전체 발송대상 등록 버튼 이벤트 // 전체 발송대상 등록 버튼 이벤트
$P.fnCreateWholTrgt = (title) => { $P.fnCreateWholTrgtInfo = (title) => {
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content : "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
// 파라미터 설정 // 파라미터 설정
let params = $P.control.query; // 검색 조건 let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록) params.callPurpose = "create"; // 호출 용도 (등록)
params.title = title; // 타이틀 params.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지서
params.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지서 params.resndYn = "N"; // 재발송 여부
params.resndYn = "N"; // 재발송 여부 params.delYn = "N"; // 삭제 여부
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params); $P.control.getInfo(params);
} }
@ -632,13 +629,13 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화 $("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색 $("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색 $("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다. // 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) { $("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
fnSearchList${pageName}();    fnSearchList${pageName}();
}     }
}); });
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용 // form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
@ -654,13 +651,12 @@
}); });
}); });
// 선택 대상 감경부과 등록 버튼 이벤트 // 업무 버튼 이벤트
$("#btnCreateSlctnTrgt--${pageName}").on("click", function() { $("#btnCreateSlctnTrgtInfo--${pageName}").on("click", function() {
$P.fnCreateSlctnTrgt($(this).attr("title")); $P.fnCreateSlctnTrgtInfo($(this).attr("title")); // 선택 대상 감경부과 등록
}); });
// 전체 대상 감경부과 등록 버튼 이벤트 $("#btnCreateWholTrgtInfo--${pageName}").on("click", function() {
$("#btnCreateWholTrgt--${pageName}").on("click", function() { $P.fnCreateWholTrgtInfo($(this).attr("title")); // 전체 대상 감경부과 등록
$P.fnCreateWholTrgt($(this).attr("title"));
}); });
// DataTables width 변경 조정 // DataTables width 변경 조정
@ -671,7 +667,7 @@
} }
// 초기 화면 설정 // 초기 화면 설정
$P.initForm = () => { $P.initForm = (taskSeCd) => {
// 화면 초기화 // 화면 초기화
$("#frmSearch--${pageName}")[0].reset(); $("#frmSearch--${pageName}")[0].reset();
@ -688,47 +684,35 @@
$(this).prop("disabled", "true"); $(this).prop("disabled", "true");
}); });
// 달력 초기화 // 기본 데이터 설정
initDatepicker("frmSearch--${pageName}"); $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", new Date()); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date()); initDatepicker("frmSearch--${pageName}"); // 달력 초기화
// 동적 검색
$("#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);
// 일자
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); $("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date()); $("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
} }
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask = (taskSeCd) => { $P.setTask = (taskSeCd) => {
// 업무별 조회조건 // 업무구분에 따른 URL 설정
let clsForTask = taskSeCd.toLowerCase(); $P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/050/list.do"); // 조회
renderForTask("frmSearch--${pageName}", clsForTask); // 업무별 조회조건
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무에 따른 위반 내용 // 업무에 따른 위반 내용
let vltnCode = []; let vltnCode = [];
if (taskSeCd == "PVS") { // 주정차 위반 if (taskSeCd == "PVS") { // 주정차 위반
vltnCode = FIM004.list(); vltnCode = FIM004.list();
} else if (taskSeCd == "BPV") { // 전용차로 위반 } else if (taskSeCd == "BPV") { // 전용차로 위반
vltnCode = FIM005.list(); vltnCode = FIM005.list();
} else if (taskSeCd == "DPV") { // 장애인 전용 } else if (taskSeCd == "DPV") { // 장애인 전용
vltnCode = FIM006.list(); vltnCode = FIM006.list();
} else if (taskSeCd == "ECA") { // 전기차 주차 위반 } else if (taskSeCd == "ECA") { // 전기차 주차 위반
vltnCode = FIM061.list(); vltnCode = FIM061.list();
} else if (taskSeCd == "PES") { // 밤샘 주차 위반 } else if (taskSeCd == "PES") { // 밤샘 주차 위반
vltnCode = FIM064.list(); vltnCode = FIM064.list();
} else { } else {
return; return;
@ -743,22 +727,13 @@
// 업무별 그리드 th // 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content; let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn"); let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = ""; let colsOuterHTML = "";
cols.each(function() { cols.each(function() {
colsOuterHTML += this.outerHTML; colsOuterHTML += this.outerHTML;
}); });
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML); $("#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> <c:set var="prefixName" scope="request">사전통지 발송 대상 상세 정보</c:set>
<!-- inner page html --> <!-- inner page html -->
<div class="content-wrapper"> <div class="wrapper-pop">
<!-- Content --> <!-- Content -->
<div class="container flex-grow-1 px-0"> <div class="container flex-grow-1 px-0">
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
<div class="wrapper-pop"> <!-- 입력 영역 -->
<!-- 입력 영역 --> <form id="frmEdit--${pageName}" name="frmEdit">
<form id="frmEdit--${pageName}" name="frmEdit"> <div class="row g-1">
<div class="row g-1"> <!-- 총 건수 -->
<!-- 총 건수 --> <div class="col-md-12 text-end px-2">
<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>
<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-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 />
<input type="text" class="form-control w-px-120 text-end" id="gramt--${pageName}" name="gramt" data-fmt-type="number" readonly /> </div>
</div> <!-- 문서 번호 -->
<!-- 문서 번호 --> <div class="col-md-4">
<div class="col-md-4"> <label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<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" />
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" autocomplete="off" /> </div>
</div> <!-- 발송 일자 -->
<!-- 발송 일자 --> <div class="col-md-4">
<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>
<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"
<input type="text" class="form-control form-date" id="sndngYmd--${pageName}" name="sndngYmd" data-fmt-type="day" title="날짜 선택" maxlength="10" required />
data-fmt-type="day" title="날짜 선택" maxlength="10" required /> <button type="button" class="bx bx-sm bx-calendar bg-white"></button>
<button type="button" class="bx bx-sm bx-calendar bg-white"></button> </div>
</div> <!-- 발송 종료 일자 -->
<!-- 발송 종료 일자 --> <div class="col-md-4" id="divSndngEndYmd--${pageName}">
<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>
<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"
<input type="text" class="form-control form-date" id="sndngEndYmd--${pageName}" name="sndngEndYmd" data-fmt-type="day" title="날짜 선택" maxlength="10" />
data-fmt-type="day" title="날짜 선택" maxlength="10" /> <button type="button" id="btnSndngEndYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button>
<button type="button" id="btnSndngEndYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button> </div>
</div> <!-- 제목 명 -->
<!-- 제목 명 --> <div class="col-md-12">
<div class="col-md-12"> <label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<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" />
<input type="text" class="form-control w-87" id="ttlNm--${pageName}" name="ttlNm" autocomplete="off" /> </div>
</div> <!-- 기타 내용 -->
<!-- 기타 내용 --> <div class="col-md-12">
<div class="col-md-12"> <label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<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>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000" autocomplete="off"></textarea> </div>
</div> </div> <!-- <div class="row g-1"> -->
</div> <!-- <div class="row g-1"> --> </form>
</form> <!-- /입력 영역 --> <!-- 입력 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
<span class="container-page-btn"> <span class="container-page-btn">
<span class="container-window-btn-right"> <!-- 업무 버튼 -->
<!-- 업무 버튼 --> <span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장"> <button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장">
저장 저장
</button> </button>
</span> </span>
</span> </span>
</div> </div> <!-- 업무 버튼 및 건수 표시 -->
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<!-- DataTables(그리드) --> <div class="card-datatable text-nowrap">
<div class="card-datatable text-nowrap"> <div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<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}">
<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">
<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">
<thead class="sticky-thead"> <tr id="theadTr--${pageName}"
<tr id="theadTr--${pageName}" data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${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: 72px;">No.</th> <th class="cmn" style="width: 180px;">민원신청번호</th>
<th class="cmn" style="width: 180px;">민원신청번호</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: 120px;">민원접수일자</th> <th class="cmn" style="width: 160px;">민원처리결과</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: 140px;">차량번호</th>
<th class="cmn" style="width: 140px;">차량번호</th> <th class="cmn" style="width: 160px;">위반항목</th>
<th class="cmn" style="width: 160px;">위반항목</th> <th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 160px;">단속법정동</th> <th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 280px;">단속장소</th> <th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 120px;">과태료금액</th> <th class="cmn" style="width: 120px;">사전통지금액</th>
<th class="cmn" style="width: 120px;">사전통지금액</th> <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: 120px;">납부자생일</th>
<th class="cmn" style="width: 120px;">납부자생일</th> <th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 100px;">우편번호</th> <th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 280px;">주소</th> <th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 320px;">상세주소</th> <th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 180px;">등록일시</th> <th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 140px;">등록사용자</th> <th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 180px;">수정일시</th> <th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn" style="width: 140px;">수정사용자</th> <th class="cmn dummy-th"></th>
<th class="cmn dummy-th"></th> </tr>
</tr> </thead>
</thead> <tbody id="tbody--${pageName}">
<tbody id="tbody--${pageName}"> </tbody>
</tbody> <template id="${infoPrefix}Row--${pageName}">
<template id="${infoPrefix}Row--${pageName}"> <tr data-key="{CRDN_ID}">
<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}">{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_APLY_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</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-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</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-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_STDG_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</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-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}">{CRDN_STTS_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</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}">{RGTR_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</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 text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td> <td class="cmn dummy-td"></td>
<td class="cmn dummy-td"></td> </tr>
</tr> </template>
</template> <template id="${infoPrefix}NotFound--${pageName}">
<template id="${infoPrefix}NotFound--${pageName}"> <tr class="odd">
<tr class="odd"> <td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> </tr>
</tr> </template>
</template> </table>
</table>
</div>
</div> </div>
</div> </div>
<!-- / DataTables(그리드) --> </div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </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> </div>
<!-- / inner page html <div class="content-wrapper"> --> <!-- / inner page html <div class="wrapper-pop"> -->
<script> <script>
/************************************************************************** /**************************************************************************
@ -153,10 +154,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// FormFields // FormFields
@ -170,27 +169,27 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "advntceTrgt" prefix: "advntceTrgt"
, prefixName : "사전통지 발송 대상" , prefixName: "사전통지 발송 대상"
, keymapper : info => info ? info.CRDN_ID : "" , keymapper: info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.${infoPrefix}List , dataGetter: obj => obj.${infoPrefix}List
, appendData : true , appendData: true
, formats : { , formats: {
TNOCS : numberFormat TNOCS: numberFormat
, GRAMT : numberFormat , GRAMT: numberFormat
, CVLCPT_RCPT_YMD : dateFormat , CVLCPT_RCPT_YMD: dateFormat
, CRDN_YMD_TM : datetimeFormat , CRDN_YMD_TM: datetimeFormat
, FFNLG_AMT : numberFormat , FFNLG_AMT: numberFormat
, ADVNTCE_AMT : numberFormat , ADVNTCE_AMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -200,15 +199,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , func: "pageObject['${pageName}'].control.load({index})"
}); });
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 $P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트
@ -222,17 +221,18 @@
// 저장 callback // 저장 callback
$P.control.onSave = (resp) => { $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); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력 // 메시지 출력
dialog.alert({ dialog.alert({
content: showMessage content: showMessage
, onOK: () => { } , init: () => { setDialogZindex(); }
, onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) {
dialog.close($P.control.prefix + "Dialog"); dialog.close($P.control.prefix + "Dialog--${openerPageName}");
} }
} }
@ -283,15 +283,12 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => { $P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false $P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1); $P.control.load($P.control.query.pageNum + 1);
} }
/************************************************************************** // DataTables에 더블 클릭시 개별총정보 dialog
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
$P.getTotalInfo = (crdnId) => { $P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
@ -303,8 +300,6 @@
, crdnId: crdnId , crdnId: crdnId
} }
let taskSeCd = $P.control.dataset.getValue("TASK_SE_CD");
ajax.get({ ajax.get({
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do") url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params , data: params
@ -319,6 +314,14 @@
}); });
} }
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/060/createList.do"); // 등록
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -329,15 +332,13 @@
// 저장 파라미터 설정 // 저장 파라미터 설정
let info = $P.formFields.get(); let info = $P.formFields.get();
// 검색조건과 저장 파라미터 객체를 합친다. // 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.mainQuery, info); let params = $.extend({}, $P.mainQuery, info);
dialog.alert({ dialog.alert({
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?" content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK: () => { , init: () => { setDialogZindex(); }
$P.control.save(params); , onOK: () => { $P.control.save(params); }
}
}); });
} }
@ -365,8 +366,8 @@
$("#sndngEndYmd--${pageName}").val(addDate(sndngYmd, $P.advntceYmdInfo.ADVNTCE_DAY_CNT)); $("#sndngEndYmd--${pageName}").val(addDate(sndngYmd, $P.advntceYmdInfo.ADVNTCE_DAY_CNT));
}); });
// 저장 버튼 이벤트 // 업무 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); $("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
// DataTables width 변경 조정 // DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]); fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -375,12 +376,12 @@
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList); fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다. // DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) { $("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({ $P.control.setData({
${infoPrefix}List : ${advntceTrgtList} ${infoPrefix}List: ${advntceTrgtList}
, ${infoPrefix}Start : ${advntceTrgtStart} , ${infoPrefix}Start: ${advntceTrgtStart}
, ${infoPrefix}Fetch : ${advntceTrgtFetch} , ${infoPrefix}Fetch: ${advntceTrgtFetch}
, ${infoPrefix}Total : ${advntceTrgtTotal} , ${infoPrefix}Total: ${advntceTrgtTotal}
}); });
// 초기 데이터 설정 // 초기 데이터 설정
@ -402,25 +403,21 @@
// 초기 데이터 설정 // 초기 데이터 설정
$P.initData = () => { $P.initData = () => {
// 총건수 / 총금액 // 총건수 / 총금액
$("#tnocs--${pageName}").val(${advntceTrgtTotal}); // 총건수 $("#tnocs--${pageName}").val(${advntceTrgtTotal});
$("#gramt--${pageName}").val($P.control.dataset.getValue("GRAMT")); // 총금액 $("#gramt--${pageName}").val($P.control.dataset.getValue("GRAMT"));
// 발송 일자 / 발송 종료 일자 // 발송 일자 / 발송 종료 일자
$("#sndngYmd--${pageName}").val($P.advntceYmdInfo.LEVY_YMD_MASK); $("#sndngYmd--${pageName}").val($P.advntceYmdInfo.LEVY_YMD_MASK);
$("#sndngEndYmd--${pageName}").val($P.advntceYmdInfo.DUDT_YMD_MASK); $("#sndngEndYmd--${pageName}").val($P.advntceYmdInfo.DUDT_YMD_MASK);
// 제목 // 제목
let ttlNm = $P.control.dataset.getValue("TASK_SE_NM"); let ttlNm = $P.control.dataset.getValue("TASK_SE_NM");
ttlNm = ttlNm + " " + $P.control.dataset.getValue("VLTN_ARTCL"); if ($P.mainQuery.schVltnCd != null && $P.mainQuery.schVltnCd != "") { // 위반항목이 '전체'가 아니라면..
ttlNm = ttlNm + " " + "사전통지"; ttlNm = ttlNm + " " + $P.control.dataset.getValue("VLTN_ARTCL");
$("#ttlNm--${pageName}").val(ttlNm); }
$("#ttlNm--${pageName}").val(ttlNm + " " + "사전통지");
// URL 설정
$P.setURL($P.mainQuery.taskSeCd);
}
// 업무구분에 따른 URL 설정 // 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => { $P.fnSetURL($P.mainQuery.taskSeCd);
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/060/createList.do"); // 등록
} }
/************************************************************************** /**************************************************************************

@ -7,6 +7,7 @@
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content --> <!-- Content -->
<div class="container-xxl flex-grow-1 px-0"> <div class="container-xxl flex-grow-1 px-0">
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
<div class="wrapper-list"> <div class="wrapper-list">
@ -23,8 +24,7 @@
엑셀 엑셀
</button> </button>
</span> </span>
</div> </div> <!-- 상단 버튼 -->
<!-- / 상단 버튼 -->
<!-- 검색 조건 영역 --> <!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch"> <form id="frmSearch--${pageName}" name="frmSearch">
@ -36,7 +36,7 @@
<div class="row g-1"> <div class="row g-1">
<!-- 업무구분 --> <!-- 업무구분 -->
<div class="col-12"> <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"> <span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item"> <c:forEach items="${taskListForSgg}" var="item">
<label> <label>
@ -49,7 +49,7 @@
</div> </div>
<!-- 발송일자 --> <!-- 발송일자 -->
<div class="col-6"> <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"> <span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom" <input type="text" class="form-control form-date" id="schSndngYmdFrom--${pageName}" name="schSndngYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" /> data-fmt-type="day" title="시작 날짜 선택" />
@ -63,10 +63,10 @@
<!-- 동적검색 --> <!-- 동적검색 -->
<div class="col-6"> <div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" /> <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="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" /> <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"> <span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}"> <button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -76,14 +76,14 @@
</span> </span>
</div> </div>
</div> </div>
</div> <!-- / 메인 조건 --> </div> <!-- 메인 조건 -->
<!-- 상세 조건 --> <!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse"> <div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1"> <div class="row g-1">
<!-- 등록일자, 수정일자 --> <!-- 등록일자, 수정일자 -->
<div class="col-6"> <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="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option> <option value="mdfcnDt">수정일자</option>
</select> </select>
@ -99,20 +99,18 @@
</div> </div>
<!-- 등록자명, 수정자명 --> <!-- 등록자명, 수정자명 -->
<div class="col-6"> <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="rgtr">등록자</option>
<option value="mdfr">수정자</option> <option value="mdfr">수정자</option>
</select> </select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" /> <input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" /> <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 type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
검색
</button>
</div> </div>
</div> </div>
</div> <!-- / 상세 조건 --> </div> <!-- 상세 조건 -->
</form> </form>
<!-- / 검색 조건 영역 --> <!-- 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
@ -123,15 +121,14 @@
<ul class="pagination pagination-primary" id="paging--${pageName}"> <ul class="pagination pagination-primary" id="paging--${pageName}">
</ul> </ul>
</div> </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> </button>
</span> </span>
</span> </span>
</div> </div> <!-- 업무 버튼 및 건수 표시 -->
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
@ -204,12 +201,13 @@
</table> </table>
</div> </div>
</div> </div>
</div> </div> <!-- DataTables(그리드) -->
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> --> </div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
<!-- Page Body -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> --> </div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content --> <!-- Content -->
<div class="content-backdrop fade"></div> <div class="content-backdrop fade"></div>
</div> </div>
@ -226,10 +224,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// FormFields // FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}"); $P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -237,26 +233,26 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "advntceSndng" prefix: "advntceSndng"
, prefixName : "사전통지 발송 현황" , prefixName: "사전통지 발송 현황"
, infoSize : "xxl" , keymapper: info => info ? info.SNDNG_ID : ""
, keymapper : info => info ? info.SNDNG_ID : "" , dataGetter: obj => obj.${infoPrefix}List
, dataGetter : obj => obj.${infoPrefix}List , appendData: true
, appendData : true , infoSize: "xxl"
, formats : { , formats: {
SNDNG_YMD : dateFormat SNDNG_YMD: dateFormat
, SNDNG_END_YMD : dateFormat , SNDNG_END_YMD: dateFormat
, TNOCS : numberFormat , TNOCS: numberFormat
, GRAMT : numberFormat , GRAMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -266,15 +262,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , 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) // DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) { 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) { } else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정 $("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else { } else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} }
}; };
// 발송 상세 // 상세정보 dialog
$P.control.getInfo = (sndngId) => { $P.control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return; if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = $P.control.query; let params = {
params.callPurpose = "view"; // 호출 용도 title: $P.control.prefixName + " 상세 정보" // 타이틀
params.pageNum = 1; // 페이지 번호 , callPurpose: "view" // 호출 용도
params.sndngId = sndngId; // 발송 ID , pageNum: 1 // 페이지 번호
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("input[name=taskSeCd]:checked").val() // 업무 구분 코드
, sndngId: sndngId // 발송 ID
}
ajax.get({ ajax.get({
url : $P.control.urls.getInfo url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/info.do") + "?openerPageName=${pageName}"
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : $P.control.prefixed("DtlDialog") id: $P.control.prefixed("DtlDialog--${pageName}")
, title : "사전통지 발송 상세 정보" , title: params.title
, content : resp , content: resp
, size : $P.control.infoSize , size: $P.control.infoSize
}); });
} }
}); });
@ -335,18 +335,17 @@
// 삭제 callback // 삭제 callback
$P.control.onRemove = (resp) => { $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); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// 메시지 출력 // 메시지 출력
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , init: () => { setDialogZindex(); }
, onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
$P.refreshList();
}
} }
// 삭제 // 삭제
@ -354,9 +353,9 @@
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : $P.control.urls.remove url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/070/remove.do")
, data : params , data: params
, success : resp => $P.control.onRemove(resp) , success: resp => $P.control.onRemove(resp)
}); });
} }
@ -414,49 +413,32 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// callback 사용자 검색 // 검색 자료 재조회
$P.callbackFindUser = (userId, userNm) => { $P.fnRefreshList = () => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID $P.control.untilPageNum = $P.control.query.pageNum;
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명 $P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
}
// 사용자 검색 $P.control.load(1);
$P.getFindUser = () => { }
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({ // 사용자검색 callback
url : wctx.url("/user/user02/010/main.do") $P.callbackFindUser = (userId, userNm) => {
, data : params || {} $("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
, success : resp => { $("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
} }
// 삭제 사유 callback // 삭제사유 callback
$P.callbackRsn = (obj) => { $P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = {}; let params = {};
params.sndngIds = selected.join(","); // Ids let selected = $P.control.dataset.getKeys("selected");
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
// 검색 자료 재조회 params[$P.control.prefixed("Ids")] = selected.join(","); // IDs
$P.refreshList = () => { params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
$P.control.untilPageNum = $P.control.query.pageNum; params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum; params.delRsn = obj.reason; // 삭제 사유
$P.control.load(1); $P.control.remove(params);
} }
/************************************************************************** /**************************************************************************
@ -470,9 +452,7 @@
} }
// 초기 기본 설정 // 초기 기본 설정
$P.initForm(); $P.initForm(taskSeCd);
// 기본 데이터 설정
$P.initData(taskSeCd);
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask(taskSeCd); $P.setTask(taskSeCd);
@ -480,6 +460,28 @@
$P.control.dataset.clear(); $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.fnSearchList = () => {
// 검색조건 // 검색조건
@ -496,6 +498,7 @@
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content: "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { } , onOK: () => { }
}); });
return; return;
@ -509,34 +512,36 @@
$P.control.download(); $P.control.download();
} }
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 삭제 버튼 이벤트 // 삭제 버튼 이벤트
$P.fnRemove = (title) => { $P.fnRemove = (title) => {
// 선택 자료 // 선택 자료
let selected = $P.control.dataset.getKeys("selected"); 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({ dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?" content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => { , onOK: async() => {
// 삭제 사유 입력 // 삭제 사유 입력
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text(); let template = await resp.text();
dialog.open({ dialog.open({
id: "inputDelRsnDialog" id: "inputDelRsnDialog"
, title: "삭제" , title: title
, size: "lg" , size: "lg"
, content: template , content: template
, init: () => { setDialogZindex(); } , init: () => { setDialogZindex(); }
, onOK: () => { , onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() }); $P.callbackRsn({ reason: $("#reason").val() });
} }
}); });
} }
@ -552,7 +557,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화 $("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색 $("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색 $("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다. // 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) { $("#term--${pageName}").keypress(function(e) {
@ -574,9 +579,9 @@
}); });
}); });
// 사전통지 발송 삭제 버튼 이벤트 // 버튼 이벤트
$("#btnRemoveAdvntceSndng--${pageName}").on("click", function() { $("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title")); $P.fnRemove($(this).attr("title")); // 사전통지 발송 삭제
}); });
// DataTables width 변경 조정 // DataTables width 변경 조정
@ -587,7 +592,7 @@
} }
// 초기 화면 설정 // 초기 화면 설정
$P.initForm = () => { $P.initForm = (taskSeCd) => {
// 화면 초기화 // 화면 초기화
$("#frmSearch--${pageName}")[0].reset(); $("#frmSearch--${pageName}")[0].reset();
@ -604,56 +609,34 @@
$(this).prop("disabled", "true"); $(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); $("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date()); $("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
} }
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask = (taskSeCd) => { $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 // 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content; let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn"); let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = ""; let colsOuterHTML = "";
cols.each(function() { cols.each(function() {
colsOuterHTML += this.outerHTML; colsOuterHTML += this.outerHTML;
}); });
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML); $("#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> <c:set var="prefixName" scope="request">사전통지 발송 현황 상세 정보</c:set>
<!-- inner page html --> <!-- inner page html -->
<div class="content-wrapper"> <div class="wrapper-pop">
<!-- Content --> <!-- Content -->
<div class="container flex-grow-1 px-0"> <div class="container flex-grow-1 px-0">
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
<div class="wrapper-pop"> <!-- 입력 영역 -->
<!-- 입력 영역 --> <form id="frmEdit--${pageName}" name="frmEdit">
<form id="frmEdit--${pageName}" name="frmEdit"> <input type="hidden" id="sndngId--${pageName}" name="sndngId" />
<input type="hidden" id="sndngId--${pageName}" name="sndngId" /> </form> <!-- 입력 영역 -->
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<!-- 업무 버튼 및 건수 표시 --> <div>
<div> <span class="container-page-btn">
<span class="container-page-btn"> <!-- 건수, 페이지 표시 -->
<!-- 건수, 페이지 표시 --> <div class="d-flex flex-row justify-content-between">
<div class="d-flex flex-row justify-content-between"> <span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span>
<span class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></span> <ul class="pagination pagination-primary" id="paging--${pageName}">
<ul class="pagination pagination-primary" id="paging--${pageName}"> </ul>
</ul> </div>
</div> <!-- 업무 버튼 -->
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<!-- 업무 버튼 --> <button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀"> 엑셀
엑셀 </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA01--${pageName}" title="세외수입 과태료대장 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA01--${pageName}" title="세외수입 과태료대장 등록"> 과태료대장 등록
과태료대장 등록 </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA03--${pageName}" title="세외수입 과태료대장 상세조회">
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpIndivA03--${pageName}" title="세외수입 과태료대장 상세조회"> 과태료대장 상세조회
과태료대장 상세조회 </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnCreateSndngLink--${pageName}" title="우편통합 발송">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSndngLink--${pageName}" title="우편통합 발송"> 우편통합 발송
우편통합 발송 </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf01--${pageName}" title="사전통지 출력(PDF-A4)">
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf01--${pageName}" title="사전통지 출력(PDF-A4)"> 사전통지 출력(PDF-A4)
사전통지 출력(PDF-A4) </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf02--${pageName}" title="사전통지 출력(PDF-Letter)">
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntcePdf02--${pageName}" title="사전통지 출력(PDF-Letter)"> 사전통지 출력(PDF-Letter)
사전통지 출력(PDF-Letter) </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntceOutsourcing--${pageName}" title="사전통지 출력(외주파일)">
<button type="button" class="btn btn-primary w-px-120" id="btnPrintAdvntceOutsourcing--${pageName}" title="사전통지 출력(외주파일)"> 사전통보서출력(외주파일)
사전통보서출력(외주파일) </button>
</button> <button type="button" class="btn btn-primary w-px-120" id="btnCreateSndbk--${pageName}" title="반송 등록">
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSndbk--${pageName}" title="반송 등록"> 반송 확인
반송 확인 </button>
</button> </span>
</span> </span>
</span> </div> <!-- 업무 버튼 및 건수 표시 -->
</div>
<!-- / 업무 버튼 및 건수 표시 --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<!-- DataTables(그리드) --> <div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="card-datatable text-nowrap"> <div class="table-responsive ox-scroll oy-scroll h-px-500" id="table-responsive--${pageName}">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${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">
<div class="table-responsive ox-scroll oy-scroll h-px-500" id="table-responsive--${pageName}"> <thead class="sticky-thead">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info"> <tr id="theadTr--${pageName}"
<thead class="sticky-thead"> data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<tr id="theadTr--${pageName}" <th class="cmn" style="width: 72px;">No.</th>
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}"> <th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 72px;">No.</th> <th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송상태</th> <th class="cmn" style="width: 120px;">발송일자</th>
<th class="cmn" style="width: 160px;">등기번호</th> <th class="cmn" style="width: 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: 200px;">성명</th> <th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 100px;">우편번호</th> <th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 280px;">주소</th> <th class="cmn" style="width: 120px;">배달일자</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: 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: 200px;">수령인</th> <th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 200px;">수령인관계</th> <th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 180px;">단속일시</th> <th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 140px;">차량번호</th> <th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 160px;">단속법정동</th> <th class="cmn" style="width: 100px;">회계연도</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: 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: 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: 120px;">미납금액</th> <th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">등록일시</th> <th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th> <th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th> <th class="cmn dummy-th"></th>
<th class="cmn" style="width: 140px;">수정사용자</th> </tr>
<th class="cmn dummy-th"></th> </thead>
</tr> <tbody id="tbody--${pageName}">
</thead> </tbody>
<tbody id="tbody--${pageName}"> <template id="${infoPrefix}Row--${pageName}">
</tbody> <tr data-key="{SNDNG_DTL_ID}">
<template id="${infoPrefix}Row--${pageName}"> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<tr data-key="{SNDNG_DTL_ID}"> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{FYR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{FYR}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_YMD}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{PCPTAX}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADAMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{PCPTAX}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{SUM_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADAMT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{SUM_AMT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td> <td class="cmn dummy-td"></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td> </tr>
<td class="cmn dummy-td"></td> </template>
</tr> <template id="${infoPrefix}NotFound--${pageName}">
</template> <tr class="odd">
<template id="${infoPrefix}NotFound--${pageName}"> <td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<tr class="odd"> </tr>
<td valign="top" colspan="30" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> </template>
</tr> </table>
</template>
</table>
</div>
</div> </div>
</div> </div>
<!-- / DataTables(그리드) --> </div> <!-- DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
<!-- Page Body -->
<span id="tempArea--${pageName}" hidden></span> <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> </div>
<!-- / inner page html <div class="content-wrapper"> --> <!-- / inner page html <div class="wrapper-pop"> -->
<script> <script>
/************************************************************************** /**************************************************************************
@ -162,10 +161,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// FormFields // FormFields
@ -177,30 +174,30 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "advntceSndngDtl" prefix: "advntceSndngDtl"
, prefixName : "사전통지 발송 상세" , prefixName: "사전통지 발송 상세"
, keymapper : info => info ? info.SNDNG_DTL_ID : "" , keymapper: info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.${infoPrefix}List , dataGetter: obj => obj.${infoPrefix}List
, appendData : true , appendData: true
, formats : { , formats: {
SNDNG_YMD : dateFormat SNDNG_YMD: dateFormat
, SNDNG_END_YMD : dateFormat , SNDNG_END_YMD: dateFormat
, DLVR_YMD : dateFormat , DLVR_YMD: dateFormat
, LEVY_YMD : dateFormat , LEVY_YMD: dateFormat
, DUDT_YMD : dateFormat , DUDT_YMD: dateFormat
, FFNLG_AMT : numberFormat , FFNLG_AMT: numberFormat
, PCPTAX : numberFormat , PCPTAX: numberFormat
, ADAMT : numberFormat , ADAMT: numberFormat
, SUM_AMT : numberFormat , SUM_AMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -210,15 +207,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , 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); $P.control.load($P.control.query.pageNum + 1);
} }
/************************************************************************** // DataTables에 더블 클릭시 개별총정보 dialog
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
$P.getTotalInfo = (crdnId) => { $P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { let params = {
callControlName : "pageObject['${pageName}'].control" callControlName: "pageObject['${pageName}'].control"
, callPurpose : "view" , sggCd: $P.control.dataset.getValue("SGG_CD")
, crdnId : crdnId , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, sggCd : $P.control.dataset.getValue("SGG_CD") , crdnId: crdnId
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD")
} }
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do") url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params , data: params
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id: "totalInfoMainDialog"
, title : "개별총정보" , title: "개별총정보"
, content : resp , content: resp
, size : "xxl" , 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) => { $P.linkNxrpIndivA01 = (params) => {
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpA01List.do") url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/991/nxrpA01List.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력 // S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회 , init: () => { setDialogZindex(); }
, onOK: () => { $P.fnRefreshList(); } // 자료 재조회
}); });
} }
}); });
@ -322,15 +327,16 @@
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpA03List.do") url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/991/nxrpA03List.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력 // S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회 , init: () => { setDialogZindex(); }
, onOK: () => { $P.fnRefreshList(); } // 자료 재조회
}); });
} }
}); });
@ -339,25 +345,27 @@
// 우편통합 발송 // 우편통합 발송
$P.callbackDate = (obj) => { $P.callbackDate = (obj) => {
let params = { let params = {
sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID title: $("#btnCreateSndngLink--${pageName}").attr("title")
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngSeCd : "02" // 발송 구분 코드 , sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd : obj.sndngYmd // 발송 일자 , sndngSeCd: "02" // 발송 구분 코드
, sndngEndYmd : obj.sndngEndYmd // 발송 종료 일자 , sndngYmd: obj.sndngYmd // 발송 일자
, postSndngSeCd : obj.postSndngSeCd // 우편 발송 구분 코드 0 일반, 1 등기 , sndngEndYmd: obj.sndngEndYmd // 발송 종료 일자
, title : $("#btnCreateSndngLink--${pageName}").attr("title") , postSndngSeCd: obj.postSndngSeCd // 우편 발송 구분 코드 0 일반, 1 등기
}; };
ajax.post({ ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/createSndngLink.do") url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndngLink.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({ dialog.alert({
content : showMessage content : showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회 , init: () => { setDialogZindex(); }
, onOK : () => { $P.fnRefreshList(); } // 자료 재조회
}); });
} }
}); });
@ -368,28 +376,21 @@
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/createSndbkList.do") url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndbkList.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력 // S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , 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 * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -397,15 +398,16 @@
$P.fnExcel = () => { $P.fnExcel = () => {
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content : "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, onOK : () => { } , init: () => { setDialogZindex(); }
, onOK: () => { }
}); });
return; return;
} }
// DataTables(그리드) // DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th") let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td")); , $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
$P.control.query.cellDefs = cellDefs; $P.control.query.cellDefs = cellDefs;
$P.control.download(); $P.control.download();
@ -416,16 +418,17 @@
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// main에서 받아온 조건(Query)을 파라미터로 넘긴다.
dialog.alert({ dialog.alert({
content : "세외수입 과태료 대장에 단속 정보를 등록하시겠습니까?" content: "세외수입 과태료 대장에 단속 정보를 등록하시겠습니까?"
, onOK : () => { , init: () => { setDialogZindex(); }
, onOK: () => {
let params = { let params = {
callPurpose : "create" callPurpose: "create"
, title : title // 타이틀 , title: title // 타이틀
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngYmd : $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자 , sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd: $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
}; };
$P.linkNxrpIndivA01(params); $P.linkNxrpIndivA01(params);
@ -438,16 +441,17 @@
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// main에서 받아온 조건(Query)을 파라미터로 넘긴다.
dialog.alert({ dialog.alert({
content : "세외수입 과태료 대장을 조회하시겠습니까?" content: "세외수입 과태료 대장을 조회하시겠습니까?"
, onOK : () => { , init: () => { setDialogZindex(); }
, onOK: () => {
let params = { let params = {
callPurpose : "update" callPurpose: "update"
, title : title // 타이틀 , title: title // 타이틀
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngYmd : $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자 , sndngId: $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
, sndngYmd: $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
}; };
$P.linkNxrpIndivA03(params); $P.linkNxrpIndivA03(params);
@ -460,30 +464,29 @@
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
var resp = await fetch(wctx.url("/resources/html/inputDateDialog.html")); let resp = await fetch(wctx.url("/resources/html/inputDateDialog.html"));
var template = await resp.text(); let template = await resp.text();
dialog.open({ dialog.open({
id : "inputEPostDateDialog", id : "inputEPostDateDialog"
title: title, , title: title
size : "md", , size: "md"
content: template, , content: template
init : () => { , init: () => {
setDialogZindex(); setDialogZindex();
$("#divPostSndng").show(); $("#divPostSndng").show();
initDatepicker("frmInputDate"); initDatepicker("frmInputDate");
$("#sndngYmd").datepicker("setDate", $P.control.dataset.getValue("SNDNG_YMD")); $("#sndngYmd").datepicker("setDate", $P.control.dataset.getValue("SNDNG_YMD"));
$("#sndngEndYmd").datepicker("setDate", $P.control.dataset.getValue("SNDNG_END_YMD")); $("#sndngEndYmd").datepicker("setDate", $P.control.dataset.getValue("SNDNG_END_YMD"));
}, },
onOK : () => { onOK: () => {
if (!inputDateComparison($("#sndngYmd").val(), $("#sndngEndYmd").val())) { if (!inputDateComparison($("#sndngYmd").val(), $("#sndngEndYmd").val())) return;
return;
}
$P.callbackDate({ $P.callbackDate({
"sndngYmd" : $("#sndngYmd").val(), "sndngYmd": $("#sndngYmd").val()
"sndngEndYmd" : $("#sndngEndYmd").val(), , "sndngEndYmd": $("#sndngEndYmd").val()
"postSndngSeCd" : $("#frmInputDate").find("[name='postSndngSeCd']:checked").val() , "postSndngSeCd": $("#frmInputDate").find("[name='postSndngSeCd']:checked").val()
}); });
} }
}); });
@ -494,44 +497,41 @@
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; 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 = ""; let url = "";
if (fileType == "pdf") { 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") { } 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; let inBrowser = false;
if (fileType == "pdf") { if (fileType == "pdf") {
params.paperSeCd = paper; submitParam.paperSeCd = paper;
inBrowser = true; inBrowser = true;
} }
if (inBrowser) { if (inBrowser) {
let parameter = toQuery(params); var parameter = toQuery(submitParam);
let filenameInHeader = ""; var filenameInHeader = "";
fetch(url + "?" + parameter) fetch(url + "?" + parameter)
.then((response) => { .then((response) => {
let header = response.headers.get('Content-Disposition'); var header = response.headers.get('Content-Disposition');
let parts = header.split(';'); var parts = header.split(';');
filenameInHeader = decodeURIComponent(parts[1].split('=')[1]); filenameInHeader = decodeURIComponent(parts[1].split('=')[1]);
return response.blob(); return response.blob();
}) })
.then((blob) => { .then((blob) => {
openPDF(blob, filenameInHeader); openPDF(blob, filenameInHeader);
}); });
} else { } else {
let parameter = toQuery(submitParam); var parameter = toQuery(submitParam);
document.location.href = url + "?" + parameter; document.location.href = url + "?" + parameter;
} }
} }
@ -542,11 +542,11 @@
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({ dialog.alert({
content : "종적결과를 확인하시겠습니까?" content: "종적결과를 확인하시겠습니까?"
, onOK : () => { , onOK: () => {
// 파리미터 설정 // 파리미터 설정
let params = $P.mainQuery; // mainQuery let params = $P.mainQuery; // mainQuery
params.title = title; // 타이틀 params.title = title; // 타이틀
$P.createSndbk(params); $P.createSndbk(params);
} }
@ -561,37 +561,32 @@
// 기본 버튼 이벤트 // 기본 버튼 이벤트
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
// 세외수입 과태료 대장 단속 정보 등록 버튼 이벤트 // 업무 버튼 이벤트
$("#btnLinkNxrpIndivA01--${pageName}").on("click", function() { $("#btnLinkNxrpIndivA01--${pageName}").on("click", function() {
$P.fnLinkNxrpIndivA01($(this).attr("title")); $P.fnLinkNxrpIndivA01($(this).attr("title")); // 세외수입 과태료 대장 단속 정보 등록
}); });
// 세외수입 과태료 대장 등록 자료 상세 조회 버튼 이벤트
$("#btnLinkNxrpIndivA03--${pageName}").on("click", function() { $("#btnLinkNxrpIndivA03--${pageName}").on("click", function() {
$P.fnLinkNxrpIndivA03($(this).attr("title")); $P.fnLinkNxrpIndivA03($(this).attr("title")); // 세외수입 과태료 대장 등록 자료 상세
}); });
// 우편통합 발송 버튼 이벤트
$("#btnCreateSndngLink--${pageName}").on("click", function() { $("#btnCreateSndngLink--${pageName}").on("click", function() {
$P.fnCreateSndngLink($(this).attr("title")); $P.fnCreateSndngLink($(this).attr("title")); // 우편통합 발송
}); });
// 사전통지 출력(PDF-A4) 버튼 이벤트
$("#btnPrintAdvntcePdf01--${pageName}").on("click", function() { $("#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() { $("#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() { $("#btnPrintAdvntceOutsourcing--${pageName}").on("click", function() {
$P.fnMakeFileAdvntce($(this).attr("title"), "outsourcing"); $P.fnMakeFileAdvntce($(this).attr("title"), "outsourcing"); // 사전통지 출력(외주파일)
}); });
// 반송 등록 버튼 이벤트
$("#btnCreateSndbk--${pageName}").on("click", function() { $("#btnCreateSndbk--${pageName}").on("click", function() {
$P.fnCreateSndbk($(this).attr("title")); $P.fnCreateSndbk($(this).attr("title")); // 반송 등록
}); });
// DataTables width 변경 조정 // DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]); fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
// DataTables 스크롤 이벤트 생성 // DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList); fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
@ -602,12 +597,12 @@
hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다. hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/ */
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다. // DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) { $("#${infoPrefix}Dialog--${openerPageName}").on("shown.bs.modal", function (e) {
$P.control.setData({ $P.control.setData({
${infoPrefix}List : ${advntceSndngDtlList} ${infoPrefix}List: ${advntceSndngDtlList}
, ${infoPrefix}Start : ${advntceSndngDtlStart} , ${infoPrefix}Start: ${advntceSndngDtlStart}
, ${infoPrefix}Fetch : ${advntceSndngDtlFetch} , ${infoPrefix}Fetch: ${advntceSndngDtlFetch}
, ${infoPrefix}Total : ${advntceSndngDtlTotal} , ${infoPrefix}Total: ${advntceSndngDtlTotal}
}); });
// 초기 데이터 설정 // 초기 데이터 설정
@ -619,6 +614,12 @@
$P.initForm = () => { $P.initForm = () => {
// 화면 초기화 // 화면 초기화
$("#frmEdit--${pageName}")[0].reset(); $("#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")); $("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID"));
// 검색 조건 설정 // 검색 조건 설정
$P.control.defaultFetchSize = $P.mainQuery.fetchSize;
$P.control.query = $P.mainQuery; $P.control.query = $P.mainQuery;
// URL 설정 // URL 설정
$P.setURL($P.mainQuery.taskSeCd); $P.fnSetURL($P.mainQuery.taskSeCd);
} }
// 업무구분에 따른 URL 설정 // 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => { $P.fnSetURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/080/list.do"); // 조회 $P.control.urls.load = wctx.url("/" + taskSeCd +"${infoPrefixUrl}" + "/080/list.do"); // 조회
} }
/************************************************************************** /**************************************************************************

Loading…
Cancel
Save