고지서 발송 등록 수정.

main
jjh 6 months ago
parent c14eeeae74
commit 99ae8d4402

@ -32,11 +32,6 @@ public class Levy extends AbstractEntity {
*/
private String crdnId;
/**
* ID
*/
private String rtpyrId;
/**
*
*/

@ -209,7 +209,6 @@ public class LevyBean extends AbstractComponent {
levy.setSggCd(crdnInfo.string("SGG_CD")); // 시군구 코드
levy.setTaskSeCd(crdnInfo.string("TASK_SE_CD")); // 업무 구분 코드
levy.setRtpyrId(crdnInfo.string("RTPYR_ID")); // 납부자 ID
levy.setInstCd(managedUser.getInstitute()); // 기관 코드
levy.setDeptCd(managedUser.getDeptCode()); // 부서 코드
levy.setAcntgSeCd(crdnInfo.string("ACNTG_SE_CD")); // 회계 구분 코드

@ -17,13 +17,15 @@ public class SndbQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
// ID
private String[] crdnIDs; // 단속 IDs
private String[] crdnIds; // 단속 IDs
private String crdnId; // 단속 ID
private String[] levyIds; // 부과 IDs
private String levyId; // 부과 ID
private String[] sndngIds; // 발송 IDs
private String sndngId; // 발송 ID
private String[] sndngDtlIds; // 발송 상세 IDs
private String sndngDtlId; // 발송 상세 ID
private String[] svbtcIDs; // 공시송달 IDs
private String[] svbtcIds; // 공시송달 IDs
private String svbtcId; // 공시송달 ID
// 검색 조건
private String schLevyExclYmdFrom; // 부과제외_부과제외 일자 시작
@ -43,6 +45,11 @@ public class SndbQuery extends CmmnQuery {
private String schSndngSeCd; // 발송, 발송상세(TB_SNDNG_DTL)_발송 구분 코드
private String schUndlvrRsnCd; // 발송상세(TB_SNDNG_DTL)_미배달 사유 코드
private String schChcRgIndct; // 선택 등기 표시
private String schLevyYmd; // 부과(TB_LEVY)_부과일자
private String schFrstDudtYmd; // 부과(TB_LEVY)_최초납기일자
private String schFyr; // 부과(TB_LEVY)_회계연도
private String schLevyNoFrom; // 부과(TB_LEVY)_부과번호 시작
private String schLevyNoTo; // 부과(TB_LEVY)_부과번호 종료
// 상세 검색 조건
// 동적 검색 조건
@ -71,12 +78,12 @@ public class SndbQuery extends CmmnQuery {
private String delRsn; // 삭제 사유
private String crdnDelYn; // 단속 삭제 여부
public String[] getCrdnIDs() {
return ifEmpty(crdnIDs, () -> null);
public String[] getCrdnIds() {
return ifEmpty(crdnIds, () -> null);
}
public <T extends SndbQuery> T setCrdnIDs(String... crdnIDs) {
this.crdnIDs = crdnIDs;
public <T extends SndbQuery> T setCrdnIDs(String... crdnIds) {
this.crdnIds = crdnIds;
return self();
}
@ -89,6 +96,25 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public String[] getLevyIds() {
return ifEmpty(levyIds, () -> null);
}
public <T extends SndbQuery> T setLevyIds(String... levyIds) {
this.levyIds = levyIds;
return self();
}
public String getLevyId() {
return ifEmpty(levyId, () -> null);
}
public <T extends SndbQuery> T setLevyId(String levyId) {
this.levyId = levyId;
return self();
}
public String[] getSndngIds() {
return ifEmpty(sndngIds, () -> null);
}
@ -125,12 +151,12 @@ public class SndbQuery extends CmmnQuery {
return self();
}
public String[] getSvbtcIDs() {
return ifEmpty(svbtcIDs, () -> null);
public String[] getSvbtcIds() {
return ifEmpty(svbtcIds, () -> null);
}
public <T extends SndbQuery> T setSvbtcIDs(String... svbtcIDs) {
this.svbtcIDs = svbtcIDs;
public <T extends SndbQuery> T setSvbtcIds(String... svbtcIds) {
this.svbtcIds = svbtcIds;
return self();
}
@ -277,7 +303,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchSndngSeCd(String schSndngSeCd) {
this.schSndngSeCd = schSndngSeCd;
return self();
}
@ -287,7 +312,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchUndlvrRsnCd(String schUndlvrRsnCd) {
this.schUndlvrRsnCd = schUndlvrRsnCd;
return self();
}
@ -297,7 +321,51 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchChcRgIndct(String schChcRgIndct) {
this.schChcRgIndct = schChcRgIndct;
return self();
}
public String getSchLevyYmd() {
return ifEmpty(schLevyYmd, () -> null);
}
public <T extends SndbQuery> T setSchLevyYmd(String schLevyYmd) {
this.schLevyYmd = schLevyYmd;
return self();
}
public String getSchFrstDudtYmd() {
return ifEmpty(schFrstDudtYmd, () -> null);
}
public <T extends SndbQuery> T setSchFrstDudtYmd(String schFrstDudtYmd) {
this.schFrstDudtYmd = schFrstDudtYmd;
return self();
}
public String getSchFyr() {
return ifEmpty(schFyr, () -> null);
}
public <T extends SndbQuery> T setSchFyr(String schFyr) {
this.schFyr = schFyr;
return self();
}
public String getSchLevyNoFrom() {
return ifEmpty(schLevyNoFrom, () -> null);
}
public <T extends SndbQuery> T setSchLevyNoFrom(String schLevyNoFrom) {
this.schLevyNoFrom = schLevyNoFrom;
return self();
}
public String getSchLevyNoTo() {
return ifEmpty(schLevyNoTo, () -> null);
}
public <T extends SndbQuery> T setSchLevyNoTo(String schLevyNoTo) {
this.schLevyNoTo = schLevyNoTo;
return self();
}

@ -73,7 +73,7 @@ public interface SndngMapper extends AbstractMapper {
* @param req
* @return ID
*/
List<DataObject> selectWrngTrgtCrdnIDs(SndbQuery req);
List<DataObject> selectWrngTrgtCrdnIds(SndbQuery req);
/** .<br />
* @param req
@ -98,7 +98,7 @@ public interface SndngMapper extends AbstractMapper {
* @param req
* @return ID
*/
List<DataObject> selectAdvntceTrgtCrdnIDs(SndbQuery req);
List<DataObject> selectAdvntceTrgtCrdnIds(SndbQuery req);
/** , , .
* @param req
@ -135,7 +135,7 @@ public interface SndngMapper extends AbstractMapper {
* @param req
* @return ID
*/
List<DataObject> selectNhtTrgtCrdnIDs(SndbQuery req);
List<DataObject> selectNhtTrgtCrdnIds(SndbQuery req);
/** .
* @param params

@ -136,7 +136,7 @@ public class SndngBean extends AbstractComponent {
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
List<DataObject> trgtList = sndngMapper.selectWrngTrgtCrdnIDs(req);
List<DataObject> trgtList = sndngMapper.selectWrngTrgtCrdnIds(req);
// 조회 건수 확인
if (trgtList == null || trgtList.size() < 1) {
@ -326,7 +326,7 @@ public class SndngBean extends AbstractComponent {
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
List<DataObject> advntceTrgtList = sndngMapper.selectAdvntceTrgtCrdnIDs(req);;
List<DataObject> advntceTrgtList = sndngMapper.selectAdvntceTrgtCrdnIds(req);
// 조회 건수 확인
if (advntceTrgtList == null || advntceTrgtList.size() < 1) {
@ -346,21 +346,17 @@ public class SndngBean extends AbstractComponent {
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYn() == null) {
sndng.setResndYn("N"); // 재발송 여부
}
if (sndng.getDelYn() == null) {
sndng.setDelYn("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송(TB_SNDNG) 등록
@ -400,15 +396,13 @@ public class SndngBean extends AbstractComponent {
if (crdnPayerInfo == null) {
throw new RuntimeException("<p>사전통지 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다.</p>"
+ "<p>"
+ "단속 ID : " + crdnId
+ "<p>단속 ID : " + crdnId
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("<p>사전통지 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다.</p>"
+ "<p>"
+ "단속 ID : " + crdnId
+ "<p>단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
@ -419,8 +413,7 @@ public class SndngBean extends AbstractComponent {
// 부과 가산금 확인
if (crdnPayerInfo.number("LEVY_ADAMT").intValue() != 0) {
throw new RuntimeException("<p>발송상세 등록 작업중 부과 가산금액이 0원이 아닙니다.</p>"
+ "<p>"
+ "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<p>단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
@ -429,8 +422,7 @@ public class SndngBean extends AbstractComponent {
// 사전 감경금액과 부과 본세금액 확인
if (crdnPayerInfo.number("ADVNTCE_AMT").intValue() != crdnPayerInfo.number("LEVY_PCPTAX").intValue()) {
throw new RuntimeException("<p>발송상세 등록 작업중 사전 감경금액과 부과 본세금액이 다릅니다.</p>"
+ "<p>"
+ "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<p>단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "<br />사전 감경금액 : " + crdnPayerInfo.string("ADVNTCE_AMT")
@ -441,8 +433,7 @@ public class SndngBean extends AbstractComponent {
// 부과 본세와 합계 금액이 같은지 확인
if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("SUM_AMT").intValue()) {
throw new RuntimeException("<p>발송상세 등록 작업중 본세금액과 합계금액이 다릅니다.</p>"
+ "<p>"
+ "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<p>단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "<br />본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX")
@ -454,13 +445,13 @@ public class SndngBean extends AbstractComponent {
// 부과일자, 최초납기일자, 납기일자를 변경한다.
Levy levy = new Levy();
levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액
levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액
levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
rtnMsg = levyBean.updateRductLevyYmd(levy);
if (!rtnMsg.contains("[S]")) {
@ -471,59 +462,85 @@ public class SndngBean extends AbstractComponent {
// 발송상세(TB_SNDNG_DTL) 등록
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
sndngDtl.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세
sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setDelYn("N"); // 삭제 여부
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
sndngDtl.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
if (crdnPayerInfo.string("PCPTAX").equals("")) {
sndngDtl.setPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 = 사전통지 금액
} else {
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세
}
sndngDtl.setAdamt(0); // 가산금 = 0
if (crdnPayerInfo.string("SUM_AMT").equals("")) {
sndngDtl.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 = 사전통지 금액
} else {
sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
}
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12
sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13
sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14
sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15
sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16
sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17
sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18
sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19
sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20
sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
sndngDtl.setDelYn("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY)을 등록하고, 단속(TB_CRDN) 대장의 단속상태코드를 수정한다.
@ -600,7 +617,7 @@ public class SndngBean extends AbstractComponent {
}
/** .
* @param req , sndng
* @param req , sndng
* @return
* <ul><li> true</li>
* <li> false</li>
@ -609,7 +626,55 @@ public class SndngBean extends AbstractComponent {
public String createNhtSndngList(SndbQuery req, Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
String rtnMsg = ""; // 처리 결과 메시지
List<DataObject> nhtTrgtList = sndngMapper.selectNhtTrgtCrdnIds(req);
// 조회 건수 확인
if (nhtTrgtList == null || nhtTrgtList.size() < 1) {
rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다.";
return rtnMsg;
}
// if (sndng.getTnocs() != nhtTrgtList.size()) {
// rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
// return rtnMsg;
// }
// 사용자 정보
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 발송 대장에 등록한다.
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
// if (sndng.getTnocs() == 1) {
// sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
// } else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
// }
if (sndng.getResndYn() == null) {
sndng.setResndYn("N"); // 재발송 여부
}
if (sndng.getDelYn() == null) {
sndng.setDelYn("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송(TB_SNDNG) 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세 대장에 등록한다.
for (int iLoop = 0; iLoop < nhtTrgtList.size(); iLoop++) {
rtnMsg = createNhtSndngDtl(sndng, nhtTrgtList.get(iLoop).string("CRDN_ID"));
// 메시지 확인
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("고지서 발송 등록 작업중 발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
@ -626,7 +691,109 @@ public class SndngBean extends AbstractComponent {
public String createNhtSndngDtl(Sndng sndng, String crdnId) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
String rtnMsg = ""; // 처리 결과 메시지
// 단속, 납부자 대장을 조회 한다.
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId);
if (crdnPayerInfo == null) {
throw new RuntimeException("<p>고지서 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("<p>고지서 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
}
if (crdnPayerInfo.string("LEVY_ID").equals("")) {
throw new RuntimeException("<p>고지서 발송상세 등록 작업중 부과 정보가 확인되지 않았습니다.</p>"
+ "<p>단속 ID : " + crdnId
+ "<br />단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "<br />차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "</p>"
); // 예외를 발생시켜서 DB Rollback
}
// 발송상세(TB_SNDNG_DTL) 등록
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자
sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세
sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12
sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13
sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14
sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15
sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16
sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17
sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18
sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19
sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20
sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
sndngDtl.setDelYn("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";

@ -432,7 +432,6 @@ public class SndngDtlBean extends AbstractComponent {
levy.setSggCd(crdnLevyInfo.string("SGG_CD")); // 시군구 코드
levy.setTaskSeCd(crdnLevyInfo.string("TASK_SE_CD")); // 업무 구분 코드
levy.setCrdnId(crdnLevyInfo.string("CRDN_ID")); // 단속 ID
levy.setRtpyrId(crdnLevyInfo.string("RTPYR_ID")); // 납부자 ID
levy.setInstCd(a03.getSgbCd()); // 기관 코드
levy.setDeptCd(a03.getDptCd()); // 부서 코드
levy.setSpclBizCd(a03.getSpacBizCd()); // 특별회계 사업 코드
@ -645,7 +644,6 @@ public class SndngDtlBean extends AbstractComponent {
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 등록 한다.
SndngDtl sndngDtl = new SndngDtl();
if (epostDlvrRsltInfo.string("DELIVRSLTCD").equals("1")) {
sndngDtl.setSndngDtlId(sndbkInfo.string("SNDNG_DTL_ID"));
sndngDtl.setDlvrYmd(epostDlvrRsltInfo.string("DELIVYMD")); // 배달일자

@ -312,9 +312,7 @@ public class Sndb01Controller extends ApplicationController {
public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
//
boolean saved = false;
String rtnMsg = "[F] ";
rtnMsg = sndngService.createWrngSndngList(req, sndng);
String rtnMsg = sndngService.createWrngSndngList(req, sndng);
if (rtnMsg.contains("[S]")) {
saved = true;
@ -640,14 +638,12 @@ public class Sndb01Controller extends ApplicationController {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="사전통지 발송 등록", value=METHOD_URL.createAdvanceNoticeSendingList)
public ModelAndView createAdvanceNoticeSendingList(SndbQuery req, Sndng sndng) {
boolean saved = false;
String rtnMsg = "[F] ";
String rtnMsg = sndngService.createAdvntceSndngList(req, sndng);
rtnMsg = sndngService.createAdvntceSndngList(req, sndng);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
@ -843,7 +839,7 @@ public class Sndb01Controller extends ApplicationController {
/** (sndb/sndb01/090-main) .
* @return /sndb/sndb01/090-main
*/
@RequestMapping(name = "사전통지 발송 대상 메인", value = METHOD_URL.noticeSheetTargetMain)
@RequestMapping(name = "고지서 발송 대상 메인", value = METHOD_URL.noticeSheetTargetMain)
public ModelAndView noticeSheetTargetMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01090-main");
@ -944,7 +940,7 @@ public class Sndb01Controller extends ApplicationController {
/** - (sndb/sndb01/100-info) .
* @param sndngId ID
* @return fims/sndb/sndb01120-info jsonView
* @return fims/sndb/sndb01100-info jsonView
* <pre>{
* "sndngDtls": [ ]
* }</pre>
@ -955,18 +951,44 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01100-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM054", "FIM061", "FIM064");
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
return mav
.addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtTrgt") // prefix
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtTrgt") // prefix
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
;
}
/** .
* @param sndng
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="고지서 발송 등록", value=METHOD_URL.createNoticeSheetSendingList)
public ModelAndView createNoticeSheetSendingList(SndbQuery req, Sndng sndng) {
boolean saved = false;
String rtnMsg = sndngService.createNhtSndngList(req, sndng);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/110-main) .
*
* @return /sndb/sndb01/110-main
@ -979,13 +1001,12 @@ public class Sndb01Controller extends ApplicationController {
ManagedUser managedUser = (ManagedUser)currentUser().getUser();
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM054", "FIM061", "FIM064");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndng") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
@ -1064,10 +1085,10 @@ public class Sndb01Controller extends ApplicationController {
mav.setViewName("fims/sndb/sndb01120-info");
return mav
.addObject("pageName", "sndb01120") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndngDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("pageName", "sndb01120") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "nhtSndngDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("nhtSndngDtlList", toJson(mav.getModel().get("nhtSndngDtlList"))) // 자료
;
}
@ -1941,7 +1962,7 @@ public class Sndb01Controller extends ApplicationController {
@RequestMapping(name="세외수입 과태료 대장 단속 정보 등록", value=METHOD_URL.setNonTaxReceiptIndividualA01List)
public ModelAndView setNonTaxReceiptIndividualA01List(SndbQuery req) {
boolean saved = false;
String rtnMsg = "[F]";
String rtnMsg = "";
List<DataObject> dtlList = sndngDtlService.getSndngTrgtDtlIds(req);
@ -1980,7 +2001,7 @@ public class Sndb01Controller extends ApplicationController {
@RequestMapping(name="세외수입 과태료 대장 등록 자료 상세 조회", value=METHOD_URL.getNonTaxReceiptIndividualA03List)
public ModelAndView getNonTaxReceiptIndividualA03List(SndbQuery req) {
boolean saved = false;
String rtnMsg = "[F]";
String rtnMsg = "";
List<DataObject> dtlList = sndngDtlService.getSndngTrgtDtlIds(req);
@ -2019,7 +2040,7 @@ public class Sndb01Controller extends ApplicationController {
@RequestMapping(name="세외수입 체납상세 세목정보 조회", value=METHOD_URL.getNonTaxReceiptSpecialB01List)
public ModelAndView getNonTaxReceiptSpecialB01List(SndbQuery req) {
boolean saved = false;
String rtnMsg = "[F]";
String rtnMsg = "";
/*
List<DataObject> dtlList = sndngDtlService.getSndngTrgtDtlIds(req);
@ -2042,6 +2063,8 @@ public class Sndb01Controller extends ApplicationController {
}
}
*/
rtnMsg = "[S]";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);

@ -12,7 +12,6 @@
<result property="sggCd" column="SGG_CD" /> <!-- 시군구 코드 -->
<result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="instCd" column="INST_CD" /> <!-- 기관 코드 -->
<result property="deptCd" column="DEPT_CD" /> <!-- 부서 코드 -->
<result property="fyr" column="FYR" /> <!-- 회계 연도 -->
@ -621,7 +620,6 @@
, SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, CRDN_ID <!-- 단속 ID -->
, RTPYR_ID <!-- 납부자 ID -->
, INST_CD <!-- 기관 코드 -->
, DEPT_CD <!-- 부서 코드 -->
, FYR <!-- 회계 연도 -->
@ -718,7 +716,6 @@
, #{levy.sggCd} <!-- 시군구 코드 -->
, #{levy.taskSeCd} <!-- 업무 구분 코드 -->
, #{levy.crdnId} <!-- 단속 ID -->
, #{levy.rtpyrId} <!-- 납부자 ID -->
, #{levy.instCd} <!-- 기관 코드 -->
, #{levy.deptCd} <!-- 부서 코드 -->
, #{levy.fyr} <!-- 회계 연도 -->
@ -968,7 +965,6 @@
, C.CVLCPT_LINK_YN
, C.LINK_TBL_NM
, C.LINK_ID
, C.RTPYR_ID
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, C.VHRNO <!-- 차량번호 -->

@ -275,9 +275,9 @@
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
<if test="crdnIDs != null">
<if test="crdnIds != null">
AND C.CRDN_ID IN (
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach> <!-- 단속 IDs -->
<foreach collection="crdnIds" item="crdnId" separator=","> #{crdnId} </foreach> <!-- 단속 IDs -->
)
</if>
<if test="crdnId != null">
@ -409,7 +409,7 @@
<include refid="utility.orderBy" />
</select>
<select id="selectWrngTrgtCrdnIDs" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 단속ID 가져오기(sndngMapper.selectWrngTrgtCrdnIDs) */
<select id="selectWrngTrgtCrdnIds" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 단속ID 가져오기(sndngMapper.selectWrngTrgtCrdnIds) */
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="fromWrngTrgt" />
<include refid="utility.orderBy" />
@ -489,9 +489,9 @@
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD <![CDATA[ <> ]]> '00') <!-- 민원 처리 코드 -->
<if test="crdnIDs != null">
<if test="crdnIds != null">
AND C.CRDN_ID IN ( <!-- 단속 IDs -->
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
<foreach collection="crdnIds" item="crdnId" separator=","> #{crdnId} </foreach>
)
</if>
<if test="crdnId != null">
@ -620,15 +620,25 @@
<include refid="utility.orderBy" />
</select>
<select id="selectAdvntceTrgtCrdnIDs" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 단속ID 가져오기(sndngMapper.selectAdvntceTrgtCrdnIDs) */
<select id="selectAdvntceTrgtCrdnIds" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 단속ID 가져오기(sndngMapper.selectAdvntceTrgtCrdnIds) */
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="fromAdvntceTrgt" />
<include refid="utility.orderBy" />
</select>
<sql id="selectNhtTrgt">
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, L.SGG_CD <!-- 시군구 코드 -->
, L.TASK_SE_CD <!-- 업무 구분 코드 -->
, L.INST_CD <!-- 기관 코드 -->
, L.DEPT_CD <!-- 부서 코드 -->
, L.SPCL_BIZ_CD <!-- 특별회계 사업 코드 -->
, L.FYR <!-- 회계연도 -->
, L.ACNTG_SE_CD <!-- 회계 구분 코드 -->
, L.TXITM_CD <!-- 세목 코드 -->
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_NO <!-- 분납 번호 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
@ -640,33 +650,6 @@
, 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('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM <!-- 단속 입력 구분 명 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, CA.DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, CA.CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CA.CRDN_END_TM <!-- 단속 종료 시각 -->
, CA.CRDN_SN <!-- 단속 일련번호 -->
, CA.USE_FUEL_CD <!-- 사용 연료 코드 -->
, CA.FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTIME_YN <!-- 시간외 여부 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, (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 <!-- 사용 연료 명 -->
, (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM <!-- 과태료 차종 명 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, L.LEVY_ID <!-- 부과 ID -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
@ -680,131 +663,52 @@
</sql>
<sql id="fromNhtTrgt">
FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID)
FROM TB_LEVY L
INNER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD <![CDATA[ <> ]]> '00') <!-- 민원 처리 코드 -->
<if test="crdnIDs != null">
WHERE L.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND L.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
<if test="levyIds != null">
AND L.LEVY_ID IN ( <!-- 부과 IDs -->
<foreach collection="levyIds" item="levyId" separator=","> #{levyId} </foreach>
)
</if>
<if test="levyId != null">
AND L.LEVY_ID = #{levyId} <!-- 부과 ID -->
</if>
<if test="crdnIds != null">
AND C.CRDN_ID IN ( <!-- 단속 IDs -->
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
<foreach collection="crdnIds" item="crdnId" separator=","> #{crdnId} </foreach>
)
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<if test="crdnSttsCdFrom != null">
AND C.CRDN_STTS_CD <![CDATA[>=]]> #{crdnSttsCdFrom} <!-- 단속 상태 코드 시작 -->
</if>
<if test="crdnSttsCdTo != null">
AND C.CRDN_STTS_CD <![CDATA[<=]]> #{crdnSttsCdTo} <!-- 단속 상태 코드 종료 -->
</if>
<if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if>
<if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</if>
<if test="schVltnCd != null">
AND V.VLTN_CD = #{schVltnCd} <!-- 위반 코드 -->
</if>
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
<if test="schLevyYmd != null">
AND L.LEVY_YMD = #{schLevyYmd} <!-- 부과 일자 -->
</if>
<if test="schRtpyrNm != null">
AND P.RTPYR_NM = #{schRtpyrNm}<!-- 납부자 명 -->
<if test="schFrstDudtYmd != null">
AND L.FRST_DUDT_YMD = #{schFrstDudtYmd} <!-- 최초 납기 일자 -->
</if>
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
<choose>
<when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null">
AND C.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') <!-- 등록 일자 시작 -->
</if>
<if test="schRegDateTo != null">
AND C.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') <!-- 등록 일자 종료 -->
</if>
</when>
<when test="schRegDateOpt == 'mdfcnDt'">
<if test="schRegDateFrom != null">
AND C.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') <!-- 수정 일자 시작 -->
</if>
<if test="schRegDateTo != null">
AND C.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') <!-- 수정 일자 종료 -->
</if>
</when>
<otherwise>
</otherwise>
</choose>
<choose>
<when test="schRgtrOpt == 'rgtr'">
<if test="schRgtrCd != null">
AND C.RGTR = #{schRgtrCd} <!-- 등록자 코드 -->
</if>
</when>
<when test="schRgtrOpt == 'mdfr'">
<if test="schRgtrCd != null">
AND C.MDFR = #{schRgtrCd} <!-- 수정자 코드 -->
</if>
</when>
<otherwise>
</otherwise>
</choose>
<if test="by != null and by != '' and term != null">
<choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" />
<choose>
<when test="by == 'crdnRegSeCd'"> C.CRDN_REG_SE_CD </when>
<when test="by == 'crdnInptSeCd'"> C.CRDN_INPT_SE_CD </when>
<when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
<when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
<when test="by == 'crdnRoadNm'"> C.CRDN_ROAD_NM </when>
<when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
<when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when>
<when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when>
<when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when>
<when test="by == 'opnnSbmsnYn'"> C.OPNN_SBMSN_YN </when>
<when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when>
<when test="by == 'crdnSeCd'"> CA.CRDN_SE_CD </when>
<when test="by == 'dtlCrdnPlc'"> CA.DTL_CRDN_PLC </when>
<when test="by == 'crdnSpareaCd'"> CA.CRDN_SPAREA_CD </when>
<when test="by == 'crdnBgngTm'"> CA.CRDN_BGNG_TM </when>
<when test="by == 'crdnEndTm'"> CA.CRDN_END_TM </when>
<when test="by == 'crdnSn'"> CA.CRDN_SN </when>
<when test="by == 'useFuelCd'"> CA.USE_FUEL_CD </when>
<when test="by == 'ffnlgCarmdlCd'"> CA.FFNLG_CARMDL_CD </when>
<when test="by == 'parkngPsbltyRsltCd'"> CA.PARKNG_PSBLTY_RSLT_CD </when>
<when test="by == 'vltnNmtm'"> CA.VLTN_NMTM </when>
<when test="by == 'ovtimeYn'"> CA.OVTIME_YN </when>
<when test="by == 'vltnArtcl'"> V.VLTN_ARTCL </when>
<when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'zip'"> P.ZIP </when>
<when test="by == 'addr'"> P.ADDR </when>
<when test="by == 'dtlAddr'"> P.DTL_ADDR </when>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptPrcsPicNm'"> CC.CVLCPT_PRCS_PIC_NM </when>
<when test="by == 'cvlcptPrcsCd'"> CC.CVLCPT_PRCS_CD </when>
<when test="by == 'cvlcptTrsmCd'"> CC.CVLCPT_TRSM_CD </when>
</choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when>
<otherwise>
</otherwise>
</choose>
<if test="schFyr != null">
AND L.FYR = #{schFyr} <!-- 회계연도 -->
</if>
<if test="schLevyNoFrom != null">
AND L.LEVY_NO <![CDATA[>=]]> #{schLevyNoFrom} <!-- 부과 번호 시작 -->
</if>
<if test="schLevyNoTo != null">
AND L.LEVY_NO <![CDATA[<=]]> #{schLevyNoTo} <!-- 부과 번호종료 -->
</if>
AND L.DEL_YN = 'N' <!-- 삭제 여부 -->
</sql>
<select id="selectNhtTrgtList" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 목록 조회(sndngMapper.selectAdvntceSndngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
, SUM(C.FFNLG_AMT) OVER() AS GRAMT <!-- 총금액 -->
SELECT L.LEVY_ID <!-- 부과 ID -->
, SUM(L.SUM_AMT) OVER() AS GRAMT <!-- 총금액 -->
<include refid="selectNhtTrgt" />
<include refid="fromNhtTrgt" />
<include refid="utility.orderBy" />
@ -812,39 +716,19 @@
</select>
<select id="selectNhtTrgts" parameterType="map" resultType="dataobject">/* 고지서 발송 대상 객체 가져오기(sndngMapper.selectAdvntceSndngTrgts) */
SELECT C.CRDN_ID <!-- 단속 ID -->
SELECT L.LEVY_ID <!-- 부과 ID -->
<include refid="selectNhtTrgt" />
<include refid="fromNhtTrgt" />
<include refid="utility.orderBy" />
</select>
<select id="selectNhtTrgtCrdnIDs" parameterType="map" resultType="dataobject">/* 고지서 발송 대상 단속ID 가져오기(sndngMapper.selectAdvntceTrgtCrdnIDs) */
SELECT C.CRDN_ID <!-- 단속 ID -->
<select id="selectNhtTrgtCrdnIds" parameterType="map" resultType="dataobject">/* 고지서 발송 대상 단속ID 가져오기(sndngMapper.selectAdvntceTrgtCrdnIds) */
SELECT L.LEVY_ID <!-- 부과 ID -->
, C.CRDN_ID <!-- 단속 ID -->
<include refid="fromNhtTrgt" />
<include refid="utility.orderBy" />
</select>
<sql id="selectCrdnPayer">
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
@ -978,9 +862,9 @@
<select id="selectCrdnPayerTrgts" parameterType="map" resultType="dataobject">/* 단속, 납부자, 부과 대장 객체 가져오기(sndngMapper.selectCrdnPayerTrgts) */
<include refid="selectCrdnPayer" />
<choose>
<when test="crdnIDs != null">
<when test="crdnIds != null">
WHERE C.CRDN_ID IN ( <!-- 단속 IDs -->
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
<foreach collection="crdnIds" item="crdnId" separator=","> #{crdnId} </foreach>
)
</when>
<otherwise>

@ -56,7 +56,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="발송 저장">
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장">
저장
</button>
</span>
@ -227,8 +227,8 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
@ -243,9 +243,9 @@
let create = ($P.callPurpose == "create");
ajax.post({
url : !create ? $P.control.urls.update : $P.control.urls.create
, data : info
, success : resp => $P.control.onSave(resp)
url: !create ? $P.control.urls.update : $P.control.urls.create
, data: info
, success: resp => $P.control.onSave(resp)
});
}
@ -296,24 +296,24 @@
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, callPurpose : "view"
, crdnId : crdnId
, sggCd : $P.control.dataset.getValue("SGG_CD")
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD")
callControlName: "pageObject['${pageName}'].control"
, callPurpose: "view"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
let taskSeCd = $P.control.dataset.getValue("TASK_SE_CD");
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
@ -334,8 +334,8 @@
let params = $.extend({}, $P.mainQuery, info);
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK: () => {
$P.control.save(params);
}
});
@ -362,12 +362,11 @@
// 부과 일자 변경 이벤트
$("#sndngYmd--${pageName}").on("change", function() {
let sndngYmd = $("#sndngYmd--${pageName}").val();
$("#sndngEndYmd--${pageName}").val(addDate(sndngYmd, $P.advntceYmdInfo.ADVNTCE_DAY_CNT));
});
// 업무 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
// DataTables width 변경 조정
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);

@ -10,13 +10,6 @@
<!-- Page Body -->
<div class="card">
<!-- 업무 버튼 표시 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
</span>
</span>
</div> <!-- / 업무 버튼 표시 -->
<!-- 조회 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
@ -42,32 +35,29 @@
</c:forEach>
</select>
</div>
<!-- 부과 일자 -->
<!--
<div class="col-md-4">
<label for="schLevyYmd--${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="schLevyYmd--${pageName}" name="schLevyYmd"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 최초 납기 일자 -->
<div class="col-md-8">
<label for="schFrstDudtYmd--${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="schFrstDudtYmd--${pageName}" name="schFrstDudtYmd"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
-->
<!-- 회계연도 -->
<div class="col-md-4">
<label for="schFyr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">회계연도</label>
<input type="text" class="form-control w-px-80" id="schFyr--${pageName}" name="schFyr" maxlength="4" autocomplete="off" required />
</div>
<!-- 부과번호 -->
<div class="col-md-4">
<label for="schLevyNoFrom--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">시작 부과번호</label>
<input type="text" class="form-control w-px-80" id="schLevyNoFrom--${pageName}" name="schLevyNoFrom" maxlength="6" value="000000" autocomplete="off" required />
</div>
<div class="col-md-4">
<label for="schLevyNoFrom--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">종료 부과번호</label>
<div class="col-md-8">
<label for="schLevyNoFrom--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과번호</label>
<input type="text" class="form-control w-px-80" id="schLevyNoFrom--${pageName}" name="schLevyNoFrom" maxlength="6" value="000000" autocomplete="off" required /> ~
<input type="text" class="form-control w-px-80" id="schLevyNoTo--${pageName}" name="schLevyNoTo" maxlength="6" value="999999" autocomplete="off" required />
</div>
</div>
@ -77,8 +67,8 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpSpclB01--${pageName}" title="세외수입 체납 상세조회">
체납 상세 조회
<button type="button" class="btn btn-primary w-px-120" id="btnLinkNxrpSpclB01--${pageName}" title="세외수입 체납상세 조회">
외수입 조회
</button>
</span>
</span>
@ -92,7 +82,7 @@
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="row g-1">
<!-- 발송 구분 -->
<div class="col-12">
<div class="col-4">
<label for="sndngSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">발송구분</label>
<select class="form-select" id="sndngSeCd--${pageName}" name="sndngSeCd">
<c:forEach items="${FIM047List}" var="item">
@ -100,11 +90,6 @@
</c:forEach>
</select>
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-55" id="docNo--${pageName}" name="docNo" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
<label for="sndngYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">발송일자</label>
@ -119,6 +104,11 @@
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 문서 번호 -->
<div class="col-md-12">
<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-30" id="docNo--${pageName}" name="docNo" />
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
@ -136,7 +126,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">
<button type="button" class="btn btn-primary w-px-120" id="btnSave--${pageName}" title="저장">
저장
</button>
</span>
@ -154,11 +144,11 @@
pageObject["${pageName}"] = {};
// 공통 코드
var FIM004 = new CommonCodes(${FIM004}, true); // 주정차위반 내역 코드
var FIM005 = new CommonCodes(${FIM005}, true); // 전용차로위반 내역 코드
var FIM006 = new CommonCodes(${FIM006}, true); // 장애인주차위반 내역 코드
var FIM061 = new CommonCodes(${FIM061}, true); // 전기차 충전구역 및 충전방해 위반 코드
var FIM064 = new CommonCodes(${FIM064}, true); // 화물자동차 밤샘주차 위반 코드
var FIM004 = new CommonCodes(${FIM004}, true); // 주정차위반 내역 코드
var FIM005 = new CommonCodes(${FIM005}, true); // 전용차로위반 내역 코드
var FIM006 = new CommonCodes(${FIM006}, true); // 장애인주차위반 내역 코드
var FIM061 = new CommonCodes(${FIM061}, true); // 전기차 충전구역 및 충전방해 위반 코드
var FIM064 = new CommonCodes(${FIM064}, true); // 화물자동차 밤샘주차 위반 코드
/**************************************************************************
* script 진입
@ -169,6 +159,8 @@
// URL
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
$P.formEditFields = new FimsFormFields("#frmEdit--${pageName}");
@ -185,9 +177,9 @@
, appendData: true
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null;
/**************************************************************************
@ -195,7 +187,7 @@
**************************************************************************/
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
let dialogTitle = $("#" + $P.control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
@ -205,7 +197,7 @@
});
if (resp.saved) {
dialog.close(${pageName}Control.prefix + "Dialog");
dialog.close($P.control.prefix + "Dialog");
}
}
@ -225,55 +217,17 @@
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 세외수입 체납상세 세목정보 조회
$P.linkNxrpIndivA03 = (params) => {
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpB01List.do")
, data : params || {}
, success : resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content : showMessage
, onOK : () => { $P.refreshList(); } // 자료 재조회
});
}
});
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 검색 버튼 이벤트
$P.fnSearchList${pageName} = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
// 엑셀 버튼 이벤트
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
// 제목 변경
$P.fnChangeTitle = () => {
let title = "";
let sndngYmd = $("#sndngYmd--${pageName}").val();
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
$P.control.query.cellDefs = cellDefs;
sndngYmd = sndngYmd.replace(/-/g, "");
title = sndngYmd.substring(0, 4) + "년";
title = title + " " + sndngYmd.substring(4, 6) + "월";
title = title + " " + $("#sndngSeCd--${pageName} :selected").text();
$P.control.download();
$("#ttlNm--${pageName}").val(title);
}
// 세외수입 과태료 대장 등록 자료 상세 조회 버튼 이벤트
@ -281,18 +235,62 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// main에서 받아온 조건(Query)을 파라미터로 넘긴다.
dialog.alert({
content: "세외수입 체납상세 세목정보를 조회하시겠습니까?"
content: title + "를 조회하시겠습니까?"
, onOK: () => {
let params = {
callPurpose: "update"
, title: title // 타이틀
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("#taskSeCd--${pageName}").val() // 업무 구분 코드
};
$P.linkNxrpSpclB01(params);
// 파라미터(params) 설정
let params = $P.formFields.get();
params.callPurpose = "update";
params.title = title; // 타이틀
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("#taskSeCd--${pageName}").val(); // 업무 구분 코드
// 서버 호출
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpB01List.do")
, data : params || {}
, success : resp => {
// 연계 성공이면 저장 버튼 활성화
if (resp.rtnMsg.match("[S]")) {
$("#schVltnId--${pageName}").prop("disabled", true); // 위반항목
$("#schLevyYmd--${pageName}").prop("disabled", true); // 부과일자
$("#schFrstDudtYmd--${pageName}").prop("disabled", true); // 최초납기일자
$("#schFyr--${pageName}").prop("disabled", true); // 회계연도
$("#schLevyNoFrom--${pageName}").prop("disabled", true); // 시작 부과번호
$("#schLevyNoTo--${pageName}").prop("disabled", true); // 종료 부과번호
$("#btnSave--${pageName}").prop("disabled", false); // 저장 버튼
}
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
content : showMessage
, onOK : () => { }
});
}
});
}
});
}
// 저장 버튼 이벤트
$P.fnSave = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 저장 파라미터 설정
let info = $P.formFields.get();
let info2 = $P.formEditFields.get();
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, info2, info);
dialog.alert({
content : $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
$P.control.save(params);
}
});
}
@ -315,10 +313,26 @@
});
});
// 세외수입 체납상세 세목정보 조회 버튼 이벤트
// 발송일자 변경 이벤트
$("#sndngYmd--${pageName}").on("change", function() {
$P.fnChangeTitle();
// 납기일자 변경
let sndngYmd = $("#sndngYmd--${pageName}").val();
sndngYmd = sndngYmd.replace(/-/g, "");
$("#sndngEndYmd--${pageName}").datepicker("setDate", new Date(sndngYmd.substring(0, 4), sndngYmd.substring(4, 6), 0)); // 납기일자
});
// 발송구분 변경 이벤트
$("#sndngSeCd--${pageName}").on("change", function() {
$P.fnChangeTitle();
});
// 세외수입 체납상세정보 조회 버튼 이벤트
$("#btnLinkNxrpSpclB01--${pageName}").on("click", function() {
$P.fnLinkNxrpSpclB01($(this).attr("title"));
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
}
// 초기 화면 설정
@ -333,6 +347,9 @@
initDatepicker("frmEdit--${pageName}");
$("#sndngYmd--${pageName}").datepicker("setDate", new Date());
$("#sndngEndYmd--${pageName}").datepicker("setDate", new Date());
//
$("#btnSave--${pageName}").prop("disabled", true);
}
// 기본 데이터 설정
@ -342,13 +359,14 @@
// 업무 구분 코드
$("#taskSeCd--${pageName}").val("${taskSeCd}");
// 일자
$("#schLevyYmd--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schFrstDudtYmd--${pageName}").datepicker("setDate", new Date());
$("#schFyr--${pageName}").val(new Date().getFullYear());
$("#sndngYmd--${pageName}").datepicker("setDate", new Date());
$("#sndngEndYmd--${pageName}").datepicker("setDate", new Date());
// $("#sndngEndYmd--${pageName}").datepicker("setDate", getLastDay($("#sndngYmd--${pageName}").val()));
$("#schLevyYmd--${pageName}").datepicker("setDate", new Date()); // 부과일자
$("#schFrstDudtYmd--${pageName}").datepicker("setDate", new Date()); // 최초납기일자
$("#schFyr--${pageName}").val(new Date().getFullYear()); // 회계연도
$("#schLevyNoFrom--${pageName}").val("000001"); // 시작 부과번호
$("#schLevyNoTo--${pageName}").val("999999"); // 종료 부과번호
$("#sndngSeCd--${pageName}").val("03").prop("selected", true); // 발송구분
$("#sndngYmd--${pageName}").datepicker("setDate", new Date()); // 발송일자
// 업무 구분별 설정
$P.setTask($("#taskSeCd--${pageName}").val());
@ -390,7 +408,7 @@
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
// $P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/060/createList.do"); // 등록
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/100/createList.do"); // 등록
}
/**************************************************************************

@ -29,7 +29,7 @@
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<!-- 메인 조건 -->
<div class="container-search">
@ -453,8 +453,8 @@
, data: params || {}
, success: resp => {
dialog.open({
id: $P.control.prefixed("Dialog")
, title:"고지서 발송 대상"
id: "nhtTrgtDialog"
, title: "고지서 발송 대상"
, content: resp
, size: "lg"
, onClose: () => { }
@ -542,7 +542,7 @@
let params = {
callPurpose: "create"
, title: title // 타이틀
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sggCd: $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd: $("input[name=taskSeCd]:checked").val() // 업무 구분 코드
};

Loading…
Cancel
Save