1. 부과제외 불필요 소스 제거 및 소스 수정.

2. 부과(TB_LEVY)테이블에  분납번호를 분납 일련번호 로 수정.
main
jjh 6 months ago
parent 599de65262
commit dca3c423a9

@ -220,7 +220,7 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
excl01.setLevyExclRsnCd(crdn.getLevyExclRsnCd());
excl01.setEtcCn(crdn.getEtcCn());
retSuccess = levyExclMapper.insert(excl01);
retSuccess = levyExclMapper.insertLevyExcl(excl01);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 대장 등록에 실패하였습니다.");
@ -351,7 +351,7 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
excl01.setLevyExclSeCd("1");
excl01.setLevyExclRsnCd(levyExclRsnCd);
excl01.setEtcCn(etcCn);
saved = levyExclMapper.insert(excl01);
saved = levyExclMapper.insertLevyExcl(excl01);
if (!saved) {
throw new RuntimeException("서손처리 중 부과제외 대장 등록에 실패하였습니다.");
}

@ -5,11 +5,10 @@ import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
@ -59,7 +58,7 @@ public interface LevyExclMapper extends AbstractMapper {
/** .
* @param params
* <ul><li>"excl01" - </li>
* <ul><li>"levyExcl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
@ -67,73 +66,54 @@ public interface LevyExclMapper extends AbstractMapper {
int insertLevyExcl(Map<String, Object> params);
/** .
* @param excl01
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(LevyExcl levyExcl) {
default boolean insertLevyExcl(LevyExcl levyExcl) {
return levyExcl != null && insertLevyExcl(params().set("levyExcl", levyExcl)) == 1;
}
/** .
* @param excl
* @param params
* <ul><li>"levyExcl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateLevyExcl(Map<String, Object> params);
default boolean update(LevyExcl levyExcl) {
return levyExcl != null && updateLevyExcl(params().set("levyExcl", levyExcl)) == 1;
}
/** .
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
int deleteLevyExcl(Map<String, Object> params);
default boolean delete(LevyExcl levyExcl) {
return levyExcl != null && deleteLevyExcl(params().set("levyExcl", levyExcl)) == 1;
}
/** ID .
* @param crdnId ID
* @return
*/
DataObject selectCrdnInfo(String crdnId);
/** .
* @param crdnId ID
* @return ,
*/
DataObject selectCvlcptAnsWords(LevyExclQuery req);
default DataObject selectCvlcptAnsWordsInfo(String ansRsnCd) {
return selectCvlcptAnsWords(new LevyExclQuery().setAnsRsnCd(ansRsnCd));
default boolean updateLevyExcl(LevyExcl levyExcl) {
return levyExcl != null && updateLevyExcl(params().set("levyExcl", levyExcl)) == 1;
}
/**(TB_CRDN_CVLCPT) (CVLCPT_PRCS_RSLT_CN) .
* @param excl
/** .
* @param params
* <ul><li>"levyExcl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateCrdnCvlcptPrcsRsltCn(Map<String, Object> params);
default boolean updateCrdnCvlcptPrcsRsltCn(CrdnCvlcpt crdnCvlcpt) {
return crdnCvlcpt != null && updateCrdnCvlcptPrcsRsltCn(params().set("crdnCvlcpt", crdnCvlcpt)) == 1;
}
int deleteLevyExcl(Map<String, Object> params);
/**(TB_CRDN_CVLCPT) .
* @param excl
* @return
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
int updateCrdnCvlcpt(Map<String, Object> params);
default boolean updateCrdnCvlcpt(CrdnCvlcpt crdnCvlcpt) {
return crdnCvlcpt != null && updateCrdnCvlcpt(params().set("crdnCvlcpt", crdnCvlcpt)) == 1;
default boolean deleteLevyExcl(LevyExcl levyExcl) {
return levyExcl != null && deleteLevyExcl(params().set("levyExcl", levyExcl)) == 1;
}
/**(TB_CRDN) .

@ -90,15 +90,11 @@ public class LevyExclBean extends AbstractComponent {
* @return
*/
public DataObject getLevyExclInfo(LevyExclQuery req) {
//
DataObject info = new DataObject();
DataObject info = levyExclMapper.selectLevyExclInfo(req);
// 신규 등록
if (req.getCallPurpose().equals("create")) {
info = levyExclMapper.selectCrdnInfo(req.getCrdnId());
info.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과 제외 구분 코드
} else {
info = levyExclMapper.selectLevyExclInfo(req);
info.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과제외 구분 코드
}
return info;
@ -113,76 +109,77 @@ public class LevyExclBean extends AbstractComponent {
*/
public String createLevyExcl(LevyExcl levyExcl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
// 단속 ID로 단속, 부과제외 정보 조회
DataObject crdnInfo = levyExclMapper.selectCrdnInfo(levyExcl.getCrdnId());
DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId()));
// 조회된 자료 정보로 등록 가능한지 검증
if (!crdnInfo.string("LEVY_EXCL_ID").equals("")) { // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!levyExclInfo.string("LEVY_EXCL_ID").equals("")) { // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
rtnMsg = "[F] 작업중 이미 등록된 부과제외 자료가 존재합니다.";
return rtnMsg;
}
if (levyExcl.getLevyExclSeCd().contains("1,2")) { // 비부과(서손), 계고
if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 51) { // 단속상태코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다.
rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
if (levyExclInfo.number("CRDN_STTS_CD").intValue() >= 51) { // 단속상태코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다.
rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
} else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소
if (crdnInfo.number("CRDN_STTS_CD").intValue() < 51) { // 단속상태코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다.
rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
if (levyExclInfo.number("CRDN_STTS_CD").intValue() < 51) { // 단속상태코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다.
rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
}
if (!crdnInfo.string("CVLCPT_LINK_ID").equals("")) { // 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인
if (crdnInfo.string("CVLCPT_PRCS_CD").equals("00")) {
// 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인
if (!levyExclInfo.string("CVLCPT_LINK_ID").equals("")) {
if (levyExclInfo.string("CVLCPT_PRCS_CD").equals("00")) {
rtnMsg = "[F] 작업중 단속 민원 자료가 처리 되지 않았습니다.<br>단속 민원 업무를 먼저 처리 하시기 바랍니다.<br>";
return rtnMsg;
}
}
// 단속상태코드 설정.
// 단속상태코드 설정
if (levyExcl.getLevyExclSeCd().equals("1")) { // 비부과
newCrdnSttsCd = "81"; // 비부과(서손)
newCrdnSttsCd = "81"; // 비부과(서손)
} else if (levyExcl.getLevyExclSeCd().equals("2")) { // 계고
newCrdnSttsCd = "83"; // 계고
newCrdnSttsCd = "83"; // 계고
} else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소(전액감액)
newCrdnSttsCd = "80"; // 부과취소
newCrdnSttsCd = "80"; // 부과취소
}
// 부과취소(전액감액)일 경우 부과(TB_LEVY)에 감액금액 입력이 필요..
if (levyExcl.getLevyExclSeCd().equals("3")) {
if (crdnInfo.string("LEVY_ID").equals("")) {
if (levyExclInfo.string("LEVY_ID").equals("")) {
rtnMsg = "[F] 작업 중 부과 자료가 존재하지 않습니다.<br>비부과로 처리 하시기 바랍니다.<br>";
return rtnMsg;
}
// 감액(TB_RDCAMT) 등록
Rdcamt rdcamt = new Rdcamt();
rdcamt.setLevyId(crdnInfo.string("LEVY_ID")); // 부과 ID
rdcamt.setRdcamtYmd(levyExcl.getLevyExclYmd()); // 감액 일자
rdcamt.setRdcamtSeCd("02"); // 감액 구분 코드 FIM085 - 02:부과취소
rdcamt.setRdcamtRsnCd(levyExcl.getLevyExclRsnCd()); // 감액 사유 코드
rdcamt.setLevyId(levyExclInfo.string("LEVY_ID")); // 부과 ID
rdcamt.setRdcamtYmd(levyExcl.getLevyExclYmd()); // 감액 일자
rdcamt.setRdcamtSeCd("02"); // 감액 구분 코드 FIM085 - 02:부과취소
rdcamt.setRdcamtRsnCd(levyExcl.getLevyExclRsnCd()); // 감액 사유 코드
rtnMsg = rdcamtBean.createRdcamt(rdcamt);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback
}
}
// 부과제외(TB_LEVY_EXCL) 대장을 등록 한다.
rtnScs = levyExclMapper.insert(levyExcl);
rtnScs = levyExclMapper.insertLevyExcl(levyExcl);
if (!rtnScs) {
throw new RuntimeException("부과제외 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnId(levyExclInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(levyExclInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(levyExclInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId());
@ -210,7 +207,7 @@ public class LevyExclBean extends AbstractComponent {
String rtnMsg = ""; // 처리 결과 메시지
// 부과제외(TB_LEVY_EXCL) 대장을 수정 한다.
rtnScs = levyExclMapper.update(levyExcl);
rtnScs = levyExclMapper.updateLevyExcl(levyExcl);
if (!rtnScs) {
throw new RuntimeException("부과제외 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -253,14 +250,14 @@ public class LevyExclBean extends AbstractComponent {
}
// 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다.
rtnScs = levyExclMapper.delete(levyExcl);
rtnScs = levyExclMapper.deleteLevyExcl(levyExcl);
if (!rtnScs) {
throw new RuntimeException("부과제외 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 부과제외 이력삭제 및 부과제외삭제 이력을 등록 한다.
String deltCrdnSttsCd = "";
if (levyExclInfo.string("CRDN_STTS_CD").equals("80")) { // 임시
if (levyExclInfo.string("CRDN_STTS_CD").equals("80")) { // 임시
throw new RuntimeException("부과취소는 부과제외 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} else if (levyExclInfo.string("CRDN_STTS_CD").equals("81")) {
deltCrdnSttsCd = "91"; // 비부과(서손) 삭제
@ -275,12 +272,12 @@ public class LevyExclBean extends AbstractComponent {
// 부과제외 구분이 비부과(서손)일 경우
if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1")) {
// 표지정보 확인여부가 조회미대상이면 -> 미확인 으로
// 표지정보 확인여부가 조회미대상이면 -> 미확인 으로
// 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니
if (levyExclInfo.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상
Crdn crdn = new Crdn();
crdn.setCrdnId(levyExclInfo.string("CRDN_ID")); // 단속 ID
crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인
crdn.setCrdnId(levyExclInfo.string("CRDN_ID")); // 단속 ID
crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인
rtnScs = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
if (!rtnScs) {

@ -46,12 +46,12 @@ public class Excl01Controller extends ApplicationController {
public class METHOD_URL {
public static final String
levyExclusionMain = "/010/main.do" // 부과 제외 관리 메인 화면
, getLevyExclusionList = "/010/list.do" // 부과 제외 대장 목록 조회
, removeLevyExclusion = "/010/remove.do" // 부과 제외 대장 삭제
, getLevyExclusionInfo = "/020/info.do" // 부과 제외 대장 조회
, createLevyExclusion = "/020/create.do" // 부과 제외 대장 등록
, updateLevyExclusion = "/020/update.do" // 부과 제외 대장 수정
levyExclusionMain = "/010/main.do" // 부과 제외 관리 메인 화면
, getLevyExclusionList = "/010/list.do" // 부과 제외 대장 목록 조회
, removeLevyExclusion = "/010/remove.do" // 부과 제외 대장 삭제
, getLevyExclusionInfo = "/020/info.do" // 부과 제외 대장 조회
, createLevyExclusion = "/020/create.do" // 부과 제외 대장 등록
, updateLevyExclusion = "/020/update.do" // 부과 제외 대장 수정
;
}
@ -82,6 +82,7 @@ public class Excl01Controller extends ApplicationController {
return mav
.addObject("pageName", "excl01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "levyExcl") // prefix
.addObject("infoPrefixUrl", "/excl/excl01") // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
.addObject("FIM021List", commonCodes.get("FIM021")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD)
@ -116,7 +117,7 @@ public class Excl01Controller extends ApplicationController {
XLSWriter xlsx = new XLSWriter().worksheet(0);
Format format = new Format(xlsx);
CellStyle center = format.cellStyle(Style.CENTER);
CellStyle left = format.cellStyle(Style.LEFT);
// CellStyle left = format.cellStyle(Style.LEFT);
CellStyle numeric = format.n_nn0();
CellStyle dateYMD = format.yyyy_mm_dd();
CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss();
@ -187,7 +188,6 @@ public class Excl01Controller extends ApplicationController {
;
} else {
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl01020-info");
// View(jsp)에서 사용할 공통코드를 조회
@ -199,10 +199,11 @@ public class Excl01Controller extends ApplicationController {
.addObject("saveCallbackFuncName", saveCallbackFuncName) //
.addObject("savedCallbackFuncName", savedCallbackFuncName) //
.addObject("pageName", "excl01020") //
.addObject("infoPrefix", "levyExcl") // prefix
.addObject("infoPrefixUrl", "/excl/excl01") // prefixUrl
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("FIM021List", commonCodes.get("FIM021")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD)
.addObject("FIM022List", commonCodes.get("FIM022")) // 부과 제외 사유 코드(LEVY_EXCL_RSN_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("levyExclInfo", json ? info : toJson(info)) // 부과제외 정보
;
}
@ -219,9 +220,8 @@ public class Excl01Controller extends ApplicationController {
@RequestMapping(name="부과제외 대장 등록", value=METHOD_URL.createLevyExclusion)
public ModelAndView createLevyExclusion(LevyExcl levyExcl) {
boolean saved = false;
String rtnMsg = "";
String rtnMsg = levyExclService.createLevyExcl(levyExcl);
rtnMsg = levyExclService.createLevyExcl(levyExcl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
@ -244,9 +244,8 @@ public class Excl01Controller extends ApplicationController {
@RequestMapping(name="부과제외 대장 수정", value=METHOD_URL.updateLevyExclusion)
public ModelAndView updateLevyExclusion(LevyExcl levyExcl) {
boolean saved = false;
String rtnMsg = "";
String rtnMsg = levyExclService.updateLevyExcl(levyExcl);
rtnMsg = levyExclService.updateLevyExcl(levyExcl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
@ -272,19 +271,18 @@ public class Excl01Controller extends ApplicationController {
boolean saved = false;
String rtnMsg = "";
if (levyExcl.getLevyExclIds().length > 0) { // 부과제외 IDs
if (levyExcl.getLevyExclIds() == null || levyExcl.getLevyExclIds().length < 1) {
rtnMsg = levyExclService.removeLevyExcl(levyExcl);
} else {
// 부과제외 IDs 만큼 반복..
for (int iLoop = 0; iLoop < levyExcl.getLevyExclIds().length; iLoop++) {
// 부과제외 ID 설정
levyExcl.setLevyExclId(levyExcl.getLevyExclIds()[iLoop]);
levyExcl.setLevyExclId(levyExcl.getLevyExclIds()[iLoop]); // 부과제외 ID 설정
// 부과제외 삭제 호출
rtnMsg = levyExclService.removeLevyExcl(levyExcl);
if (rtnMsg.contains("[F]")) // 오류가 발생하였으면 종료..
break;
}
} else {
rtnMsg = levyExclService.removeLevyExcl(levyExcl);
}
if (rtnMsg.contains("[S]")) {

@ -73,9 +73,9 @@ public class Levy extends AbstractEntity {
private String levyNo;
/**
*
*
*/
private String inspyNo;
private String inspySn;
/**
*

@ -24,26 +24,26 @@ public class LevyQuery extends CmmnQuery {
private String[] rductIds; // 감경 IDs
private String rductId; // 감경 ID
// 검색 조건
private String schFyr; // 회계연도
private String schLevyNoFrom; // 부과 번호 시작
private String schLevyNoTo; // 부과 번호 종료
private String schRductSeCd; // 감경 구분 코드
private String schLevyYmdFrom; // 부과 일자 시작
private String schLevyYmdTo; // 부과 일자 종료
private String schRductYmdFrom; // 감경 일자 시작
private String schRductYmdTo; // 감경 일자 종료
private String schCrdnYmdFrom; // 단속 일자 시작
private String schCrdnYmdTo; // 단속 일자 종료
private String schVhrno; // 차량번호
private String schCrdnSttsCd; // 단속 상태 코드
private String schVltnCd; // 위반 코드
private String schFyr; // 회계연도
private String schLevyNoFrom; // 부과 번호 시작
private String schLevyNoTo; // 부과 번호 종료
private String schRductSeCd; // 감경 구분 코드
private String schLevyYmdFrom; // 부과 일자 시작
private String schLevyYmdTo; // 부과 일자 종료
private String schRductYmdFrom; // 감경 일자 시작
private String schRductYmdTo; // 감경 일자 종료
private String schCrdnYmdFrom; // 단속 일자 시작
private String schCrdnYmdTo; // 단속 일자 종료
private String schVhrno; // 차량번호
private String schCrdnSttsCd; // 단속 상태 코드
private String schVltnCd; // 위반 코드
private String schCvlcptRcptYmdFrom; // 민원 접수 일자 시작
private String schCvlcptRcptYmdTo; // 민원 접수 일자 종료
private String schCvlcptPrcsCmptnDtFrom; // 민원 처리 완료 일시 시작
private String schCvlcptPrcsCmptnDtTo; // 민원 처리 완료 일시 종료
private String schCvlcptPrcsPic; // 민원 처리 담당자
private String schRtpyrNo; // 납부자 번호
private String schRtpyrNm; // 납부자 명
private String schRtpyrNo; // 납부자 번호
private String schRtpyrNm; // 납부자 명
// 상세 검색 조건
// ETC

@ -215,7 +215,7 @@ public class LevyBean extends AbstractComponent {
levy.setTxitmCd(crdnInfo.string("TXITM_CD")); // 세목 코드
levy.setOperItemCd(crdnInfo.string("OPER_ITEM_CD")); // 운영 항목 코드
levy.setSpclBizCd(crdnInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드
levy.setInspyNo("00"); // 분납 순번
levy.setInspySn("00"); // 분납 일련번호
levy.setLevySeCd("02"); // 부과 구분 코드 FIM040
levy.setUntySeCd("02"); // 통합 구분 코드 FIM072
if (crdnInfo.string("TASK_SE_CD").equals("BPV")) {

@ -68,9 +68,9 @@ public class Rcvmt extends AbstractEntity {
private String levyNo;
/**
*
*
*/
private String inspyNo;
private String inspySn;
/**
*

@ -440,7 +440,7 @@ public class SndngDtlBean extends AbstractComponent {
levy.setTxitmCd(a03.getRprsTxmCd()); // 세목 코드
levy.setOperItemCd(a03.getOperItemCd()); // 운영 항목 코드
levy.setLevyNo(a03.getRsveItem1().substring(23, 29)); // 부과 번호
levy.setInspyNo(a03.getRsveItem1().substring(29, 31)); // 분납 번호
levy.setInspySn(a03.getRsveItem1().substring(29, 31)); // 분납 번호
levy.setLevySeCd("02"); // 부과 구분 코드 FIM040
levy.setUntySeCd("02"); // 통합 구분 코드 FIM072
levy.setRductSeCd("01"); // 감경 구분 코드 FIM046 - 01 감경

@ -10,6 +10,7 @@
<resultMap id="levyExclRow" type="cokr.xit.fims.excl.LevyExcl">
<result property="levyExclId" column="LEVY_EXCL_ID" /> <!-- 부과 제외 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rdcamtId" column="RDCAMT_ID" /> <!-- 감액 ID -->
<result property="levyExclYmd" column="LEVY_EXCL_YMD" /> <!-- 부과제외 일자 -->
<result property="levyExclSeCd" column="LEVY_EXCL_SE_CD" /> <!-- 부과제외 구분 코드 -->
<result property="levyExclSeNm" column="LEVY_EXCL_SE_NM" /> <!-- 부과제외 구분 명 -->
@ -30,48 +31,41 @@
SELECT LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
, LE.LEVY_EXCL_YMD <!-- 부과제외 일자 -->
, LE.LEVY_EXCL_SE_CD <!-- 부과제외 구분 코드 -->
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 -->
, 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.DEL_YN <!-- 삭제 여부 -->
, LE.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, LE.MDFCN_DT <!-- 수정 일시 -->
, LE.DEL_DT <!-- 삭제 일시 -->
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 -->
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (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('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, (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('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, (SELECT GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.ZIP <!-- 우편번호 -->
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
, (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 <!-- 납부자 생년월일 마스크 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
@ -101,12 +95,6 @@
</if>
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</if>
<if test="sggCd != null">
AND C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
</if>
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
<if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
@ -117,7 +105,6 @@
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<if test="schRtpyrNm != null">
AND P.RTPYR_NM = #{schRtpyrNm} <!-- 납부자 명 -->
</if>
@ -188,38 +175,44 @@
</choose>
</if>
</where>
AND C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<sql id="select">
SELECT LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, L.LEVY_ID <!-- 부과 ID -->
, LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
, LE.LEVY_EXCL_YMD <!-- 부과제외 일자 -->
, LE.LEVY_EXCL_SE_CD <!-- 부과제외 구분 코드 -->
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 -->
, 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.DEL_YN <!-- 삭제 여부 -->
, LE.REG_DT <!-- 등록 일시 -->
, LE.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, LE.MDFCN_DT <!-- 수정 일시 -->
, LE.MDFR <!-- 수정자 -->
, LE.DEL_DT <!-- 삭제 일시 -->
, LE.DLTR <!-- 삭제자 -->
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 -->
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
FROM TB_LEVY_EXCL LE
INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID)
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
FROM TB_CRDN C
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_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
</sql>
<select id="selectLevyExcls" parameterType="map" resultType="dataobject">/* 부과제외 대장 객체 가져오기(levyExclMapper.selectLevyExcls) */
@ -232,14 +225,11 @@
</if>
<if test="levyExclId != null">
AND LE.LEVY_EXCL_ID = #{levyExclId} <!-- 부과 제외 ID -->
</if>
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</if>
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</where>
<include refid="utility.orderBy" />
</select>
@ -300,70 +290,6 @@
AND DEL_YN = 'N'
</update>
<select id="selectCrdnInfo" parameterType="string" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdnInfo) */
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, L.LEVY_ID <!-- 부과 ID -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
FROM TB_CRDN C
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.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_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</select>
<select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(levyExclMapper.selectCvlcptAnsWords) */
SELECT CAW.ANS_WORDS_ID <!-- 답변 문구 ID -->
, CAW.ANS_SE_CD <!-- 답변 구분 코드 -->
, CAW.ANS_RSN_CD <!-- 답변 사유 코드 -->
, CAW.ANS_RSN_NM <!-- 답변 사유 명 -->
, CAW.PRCS_SUMRY <!-- 처리 요약 -->
, CAW.PRCS_RSLT_CN <!-- 처리 결과 내용 -->
, (SELECT GET_CODE_NM('FIM060', CAW.ANS_SE_CD) FROM DUAL) AS ANS_SE_NM <!-- 답변 구분 명 -->
FROM TB_CVLCPT_ANS_WORDS CAW
WHERE CAW.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND CAW.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND CAW.ANS_RSN_CD = #{ansRsnCd} <!-- 답변 사유 코드 -->
AND CAW.USE_YN = 'Y'
</select>
<update id="updateCrdnCvlcptPrcsRsltCn" parameterType="map">/* 단속민원 대장 민원처리결과내용 초기화(levyExclMapper.updateCrdnCvlcptPrcsRsltCn) */
UPDATE TB_CRDN_CVLCPT
SET CVLCPT_PRCS_SUMRY = NULL <!-- 민원 처리 요약 -->
, CVLCPT_PRCS_RSLT_CN = NULL <!-- 민원 처리 결과 내용 -->
, CVLCPT_PRCS_CMPTN_DT = NULL <!-- 민원 처리 완료 일시 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{crdnCvlcpt.modifiedBy} <!-- 수정자 -->
WHERE CVLCPT_LINK_ID = #{crdnCvlcpt.cvlcptLinkId} <!-- 민원 연계 ID -->
AND DEL_YN = 'N'
</update>
<update id="updateCrdnCvlcpt" parameterType="map">/* 단속민원 대장 민원답변 수정(levyExclMapper.updateCrdnCvlcpt) */
UPDATE TB_CRDN_CVLCPT
SET CVLCPT_PRCS_CD = #{crdnCvlcpt.cvlcptPrcsCd} <!-- 민원 처리 코드 -->
, CVLCPT_PRCS_SUMRY = #{crdnCvlcpt.cvlcptPrcsSumry} <!-- 민원 처리 요약 -->
, CVLCPT_PRCS_RSLT_CN = #{crdnCvlcpt.cvlcptPrcsRsltCn} <!-- 민원 처리 결과 내용 -->
, CVLCPT_PRCS_CMPTN_DT = #{crdnCvlcpt.cvlcptPrcsCmptnDt} <!-- 민원 처리 완료 일시 -->
, CVLCPT_PRCS_PIC = #{crdnCvlcpt.cvlcptPrcsPic} <!-- 민원 처리 담당자 -->
, CVLCPT_TRSM_CD = #{crdnCvlcpt.cvlcptTrsmCd} <!-- 민원 전송 코드 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{crdnCvlcpt.modifiedBy} <!-- 수정자 -->
WHERE CVLCPT_LINK_ID = #{crdnCvlcpt.cvlcptLinkId} <!-- 민원 연계 ID -->
AND DEL_YN = 'N'
</update>
<update id="updateParkngPsbltyRsltCd" parameterType="map">/* 단속 대장 주차가능결과코드를 수정(levyExclMapper.updateParkngPsbltyRsltCd) */
UPDATE TB_CRDN_ADI
SET PARKNG_PSBLTY_RSLT_CD= #{crdn.parkngPsbltyRsltCd} <!-- 주차 가능 결과 코드 -->
@ -374,13 +300,13 @@
</update>
<select id="selectSndngDtl" parameterType="map" resultType="dataobject">/* 발송상세 대장 객체 가져오기(levyExclMapper.selectSndngDtl) */
SELECT SD.SNDNG_ID <!-- 발송 ID -->
, SD.CRDN_ID <!-- 단속 ID -->
, SD.SNDNG_RCVMT_CD <!-- 발송 수납 코드 -->
FROM TB_SNDNG_DTL SD
WHERE SD.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND SD.SNDNG_RCVMT_CD = #{sndngRcvmtCd} <!-- 발송 수납 코드 -->
AND SD.DEL_YN = 'N'
SELECT SNDNG_ID <!-- 발송 ID -->
, CRDN_ID <!-- 단속 ID -->
, SNDNG_RCVMT_CD <!-- 발송 수납 코드 -->
FROM TB_SNDNG_DTL
WHERE CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND SNDNG_RCVMT_CD = #{sndngRcvmtCd} <!-- 발송 수납 코드 -->
AND DEL_YN = 'N'
</select>
<update id="updateRcvmtCd" parameterType="map">/* 발송상세 대장 수납코드를 수정(levyExclMapper.updateRcvmtCd) */

@ -20,7 +20,7 @@
<result property="operItemCd" column="OPER_ITEM_CD" /> <!-- 운영 항목 코드 -->
<result property="spclBizCd" column="SPCL_BIZ_CD" /> <!-- 특별회계 사업 코드 -->
<result property="levyNo" column="LEVY_NO" /> <!-- 부과 번호 -->
<result property="inspyNo" column="INSPY_NO" /> <!-- 분납 번호 -->
<result property="inspySn" column="INSPY_SN" /> <!-- 분납 일련번호 -->
<result property="levySeCd" column="LEVY_SE_CD" /> <!-- 부과 구분 코드 -->
<result property="untySeCd" column="UNTY_SE_CD" /> <!-- 통합 구분 코드 -->
<result property="rductSeCd" column="RDUCT_SE_CD" /> <!-- 감경 구분 코드 -->
@ -297,7 +297,7 @@
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.SPCL_BIZ_CD <!-- 특별회계 사업 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_NO <!-- 분납 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, L.LEVY_SE_CD <!-- 부과 구분 코드 -->
, L.UNTY_SE_CD <!-- 통합 구분 코드 -->
, L.RDUCT_SE_CD <!-- 감경 구분 코드 -->
@ -575,7 +575,7 @@
, TXITM_CD <!-- 세목 코드 -->
, OPER_ITEM_CD <!-- 운영 항목 코드 -->
, LEVY_NO <!-- 부과 번호 -->
, INSPY_NO <!-- 분납 번호 -->
, INSPY_SN <!-- 분납 일련번호 -->
, FFNLG_AMT <!-- 과태료 금액 -->
, LEVY_PCPTAX <!-- 부과 본세 -->
, LEVY_ADAMT <!-- 부과 가산금 -->
@ -602,7 +602,7 @@
AND TXITM_CD = #{txitmCd} <!-- 세목 코드 -->
AND OPER_ITEM_CD = #{operItemCd} <!-- 운영 항목 코드 -->
AND LEVY_NO = #{levyNo} <!-- 부과 번호 -->
AND INSPY_NO = #{inspyNo} <!-- 분납 번호 -->
AND INSPY_SN = #{inspySn} <!-- 분납 일련번호 -->
</otherwise>
</choose>
AND DEL_YN = 'N' <!-- 삭제 여부 -->
@ -628,7 +628,7 @@
, OPER_ITEM_CD <!-- 운영 항목 코드 -->
, SPCL_BIZ_CD <!-- 특별회계 사업 코드 -->
, LEVY_NO <!-- 부과 번호 -->
, INSPY_NO <!-- 분납 번호 -->
, INSPY_SN <!-- 분납 일련번호 -->
, LEVY_SE_CD <!-- 부과 구분 코드 -->
, UNTY_SE_CD <!-- 통합 구분 코드 -->
, RDUCT_SE_CD <!-- 감경 구분 코드 -->
@ -724,7 +724,7 @@
, #{levy.operItemCd} <!-- 운영 항목 코드 -->
, #{levy.spclBizCd} <!-- 특별회계 사업 코드 -->
, #{levy.levyNo} <!-- 부과 번호 -->
, #{levy.inspyNo} <!-- 분납 번호 -->
, #{levy.inspySn} <!-- 분납 일련번호 -->
, #{levy.levySeCd} <!-- 부과 구분 코드 -->
, #{levy.untySeCd} <!-- 통합 구분 코드 -->
, #{levy.rductSeCd} <!-- 감경 구분 코드 -->
@ -819,7 +819,7 @@
, OPER_ITEM_CD = #{levy.operItemCd} <!-- 운영 항목 코드 -->
, SPCL_BIZ_CD = #{levy.spclBizCd} <!-- 특별회계 사업 코드 -->
, LEVY_NO = #{levy.levyNo} <!-- 부과 번호 -->
, INSPY_NO = #{levy.inspyNo} <!-- 분납 번호 -->
, INSPY_SN = #{levy.inspySn} <!-- 분납 일련번호 -->
, LEVY_SE_CD = #{levy.levySeCd} <!-- 부과 구분 코드 -->
, UNTY_SE_CD = #{levy.untySeCd} <!-- 통합 구분 코드 -->
, RDUCT_SE_CD = #{levy.rductSeCd} <!-- 감경 구분 코드 -->

@ -19,7 +19,7 @@
<result property="acntgSeCd" column="ACNTG_SE_CD" /> <!-- 회계 구분 코드 -->
<result property="txitmCd" column="TXITM_CD" /> <!-- 세목 코드 -->
<result property="levyNo" column="LEVY_NO" /> <!-- 부과 번호 -->
<result property="inspyNo" column="INSPY_NO" /> <!-- 분납 일련번호 -->
<result property="inspySn" column="INSPY_SN" /> <!-- 분납 일련번호 -->
<result property="lastPcptax" column="LAST_PCPTAX" /> <!-- 최종 본세 -->
<result property="lastAdamt" column="LAST_ADAMT" /> <!-- 최종 가산금 -->
<result property="rcvmtSn" column="RCVMT_SN" /> <!-- 수납 일련번호 -->
@ -61,7 +61,7 @@
, R.ACNTG_SE_CD <!-- 회계 구분 코드 -->
, R.TXITM_CD <!-- 세목 코드 -->
, R.LEVY_NO <!-- 부과 번호 -->
, R.INSPY_NO <!-- 분납 번호 -->
, R.INSPY_SN <!-- 분납 일련번호 -->
, R.LAST_PCPTAX <!-- 최종 본세 -->
, R.LAST_ADAMT <!-- 최종 가산금 -->
, R.RCVMT_SN <!-- 수납 일련번호 -->
@ -266,7 +266,7 @@
, R.ACNTG_SE_CD <!-- 회계 구분 코드 -->
, R.TXITM_CD <!-- 세목 코드 -->
, R.LEVY_NO <!-- 부과 번호 -->
, R.INSPY_NO <!-- 분납 번호 -->
, R.INSPY_SN <!-- 분납 일련번호 -->
, R.LAST_PCPTAX <!-- 최종 본세 -->
, R.LAST_ADAMT <!-- 최종 가산금 -->
, R.RCVMT_SN <!-- 수납 일련번호 -->
@ -360,7 +360,7 @@
, ACNTG_SE_CD <!-- 회계 구분 코드 -->
, TXITM_CD <!-- 세목 코드 -->
, LEVY_NO <!-- 부과 번호 -->
, INSPY_NO <!-- 분납 번호 -->
, INSPY_SN <!-- 분납 일련번호 -->
, LAST_PCPTAX <!-- 최종 본세 -->
, LAST_ADAMT <!-- 최종 가산금 -->
, RCVMT_SN <!-- 수납 일련번호 -->
@ -399,7 +399,7 @@
, #{rcvmt.acntgSeCd} <!-- 회계 구분 코드 -->
, #{rcvmt.txitmCd} <!-- 세목 코드 -->
, #{rcvmt.levyNo} <!-- 부과 번호 -->
, #{rcvmt.inspyNo} <!-- 분납 번호 -->
, #{rcvmt.inspySn} <!-- 분납 일련번호 -->
, #{rcvmt.lastPcptax} <!-- 최종 본세 -->
, #{rcvmt.lastAdamt} <!-- 최종 가산금 -->
, #{rcvmt.rcvmtSn} <!-- 수납 일련번호 -->
@ -438,7 +438,7 @@
, ACNTG_SE_CD = #{rcvmt.acntgSeCd} <!-- 회계 구분 코드 -->
, TXITM_CD = #{rcvmt.txitmCd} <!-- 세목 코드 -->
, LEVY_NO = #{rcvmt.levyNo} <!-- 부과 번호 -->
, INSPY_NO = #{rcvmt.inspyNo} <!-- 분납 번호 -->
, INSPY_SN = #{rcvmt.inspySn} <!-- 분납 일련번호 -->
, LAST_PCPTAX = #{rcvmt.lastPcptax} <!-- 최종 본세 -->
, LAST_ADAMT = #{rcvmt.lastAdamt} <!-- 최종 가산금 -->
, RCVMT_SN = #{rcvmt.rcvmtSn} <!-- 수납 일련번호 -->
@ -484,7 +484,7 @@
, L.TXITM_CD <!-- 세목 코드 -->
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_NO <!-- 분납 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, L.FFNLG_AMT <!-- 과태료 금액 -->
, L.LEVY_PCPTAX <!-- 부과 본세 -->
, L.LEVY_ADAMT <!-- 부과 가산금 -->
@ -521,7 +521,7 @@
AND ACNTG_SE_CD = #{acntgSeCd} <!-- 회계 구분 코드 -->
AND TXITM_CD = #{txitmCd} <!-- 세목 코드 -->
AND LEVY_NO = #{levyNo} <!-- 부과 번호 -->
AND INSPY_NO = #{inspyNo} <!-- 분납 번호 -->
AND INSPY_SN = #{inspySn} <!-- 분납 일련번호 -->
<if test="operItemCd != null">
AND OPER_ITEM_CD = #{operItemCd} <!-- 운영 항목 코드 -->
</if>

@ -637,7 +637,7 @@
, L.TXITM_CD <!-- 세목 코드 -->
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_NO <!-- 분납 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
@ -783,7 +783,7 @@
, L.OPER_ITEM_CD <!-- 운영 항목 코드 -->
, L.SPCL_BIZ_CD <!-- 특별회계 사업 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_NO <!-- 분납 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, L.LEVY_SE_CD <!-- 부과 구분 코드 -->
, L.LEVY_YMD <!-- 부과 일자 -->
, L.FRST_DUDT_YMD <!-- 최초 납기 일자 -->

@ -81,7 +81,7 @@
, L.ACNTG_SE_CD /* 회계 구분 */
, L.TXITM_CD /* 세목 코드 */
, L.LEVY_NO /* 부과 번호 */
, L.INSPY_NO /* 분납 번호 */
, L.INSPY_SN /* 분납 일련번호 */
, (CONCAT(L.FYR, '-', L.LEVY_NO)) AS GOJI_NO /* 고지번호 */
, L.LEVY_SE_CD /* 부과 구분 코드 */
, (SELECT GET_CODE_NM('FIM040', L.LEVY_SE_CD) FROM DUAL) AS LEVY_SE_NM /* 부과 구분 명 */

@ -149,7 +149,7 @@
, L.ACNTG_SE_CD <!-- 회계 구분 코드 -->
, L.TXITM_CD <!-- 세목 코드 -->
, L.LEVY_NO <!-- 부과 번호 -->
, L.INSPY_NO <!-- 분납 번호 -->
, L.INSPY_SN <!-- 분납 일련번호 -->
, L.LEVY_PCPTAX <!-- 부과 본세 -->
, L.LEVY_ADAMT <!-- 부과 가산금 -->
, L.INSPY_INT <!-- 분납 이자 -->

@ -157,10 +157,10 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateLevyExcl--${pageName}" title="부과제외 수정">
<button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="부과제외 수정">
부과제외 수정
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveLevyExcl--${pageName}" title="부과제외 삭제">
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="부과제외 삭제">
부과제외 삭제
</button>
</span>
@ -293,10 +293,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -304,31 +302,26 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "levyExcl"
, prefixName : "부과제외"
, infoSize : "md"
, keymapper : info => info ? info.LEVY_EXCL_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, urls : {
load : wctx.url("/" + $P.PrefixUrl + "/010/list.do") // 조회
, remove : wctx.url("/" + $P.PrefixUrl + "/010/remove.do") // 삭제
, getInfo : wctx.url("/" + $P.PrefixUrl + "/020/info.do") // 수정
}
, formats : {
LEVY_EXCL_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat
, FFNLG_CRDN_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "levyExcl"
, prefixName: "부과제외"
, infoSize: "md"
, keymapper: info => info ? info.LEVY_EXCL_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, formats: {
LEVY_EXCL_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, CVLCPT_RCPT_YMD: dateFormat
, FFNLG_CRDN_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -346,7 +339,7 @@
, func : "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
@ -365,12 +358,11 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
// 삭제 버튼
$("#btnRemoveLevyExcl--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
@ -382,21 +374,21 @@
}
};
// 부과제외 정보 dialog
// 부과제외 상세정보 dialog
$P.control.getInfo = (params) => {
if (!params) return;
ajax.get({
url : $P.control.urls.getInfo + "?openerPageName=${pageName}"
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : params.title
, content : resp
, size : $P.control.infoSize
, init : () => { }
, onClose : () => { $P.refreshList(); } // 자료 재조회
id: $P.control.prefixed("Dialog")
, title: params.title
, content: resp
, size: $P.control.infoSize
, init: () => { }
, onClose: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -404,16 +396,18 @@
// 삭제 callback
$P.control.onRemove = (resp) => {
let btnTitle = $("#btnRemoveLevyExcl--${pageName}").attr("title");
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) { $P.refreshList(); } // 자료 재조회
if (resp.saved) {
$P.fnRefreshList(); // 자료 재조회
}
}
// 삭제
@ -421,9 +415,9 @@
if (!params) return;
ajax.post({
url : $P.control.urls.remove
, data : params || {}
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/010/remove.do")
, data: params || {}
, success: resp => $P.control.onRemove(resp)
});
}
@ -478,81 +472,38 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
}
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
callControlName: "pageObject['${pageName}'].control"
, sggCd: $("#sggCd--${pageName}").val()
, taskSeCd: $("input[name=taskSeCd]:checked").val()
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
, init: () => { }
, onClose: () => { }
});
}
});
}
// 삭제 사유 callback
$P.callbackRsn = (obj) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성
let params = {};
params[$P.control.prefixed("Ids")] = selected.join(","); // Ids
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.refreshList = () => {
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
@ -571,8 +522,6 @@
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -580,12 +529,39 @@
$P.control.dataset.clear();
}
// 사용자 검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 조회 버튼 클릭 이벤트
$P.fnFindUser = () => {
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.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
@ -594,10 +570,9 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
@ -609,58 +584,70 @@
$P.control.download();
}
// 사용자 조회 버튼 클릭 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 수정 버튼 클릭 이벤트
$P.fnUpdateLevyExcl = (title) => {
$P.fnUpdate = (title) => {
// 부과제외 ID
let levyExclId = $P.control.dataset.getValue("LEVY_EXCL_ID");
// 부과제외 ID 가 없다면.. return
if (typeof levyExclId == "undefined" || levyExclId == null || levyExclId == "") return;
let params = {
title : title
, callPurpose : "update"
, levyExclId : levyExclId // 부과제외 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclSeCd : $P.control.dataset.getValue("LEVY_EXCL_SE_CD") // 부과제외 구분 코드
title: title
, callPurpose: "update" // 호출용도: 수정
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId: levyExclId // 부과제외 ID
, levyExclSeCd: $P.control.dataset.getValue("LEVY_EXCL_SE_CD") // 부과제외 구분 코드
};
$P.control.getInfo(params);
}
// 삭제 사유 callback
$P.callbackRsn = (obj) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성
let params = {};
params[$P.control.prefixed("Ids")] = selected.join(","); // Ids
params.sggCd = $("#sggCd--${pageName}").val(); // sggCd
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // taskSeCd
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
// 삭제 버튼 클릭 이벤트
$P.fnRemoveLevyExcl = (title) => {
$P.fnRemove = (title) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) {
dialog.alert({
content : "선택하신 부과제외 정보가 없습니다."
, onOK : () => { }
content: "선택하신 부과제외 정보가 없습니다."
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK: async() => {
// 삭제 사유 입력
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog"
id: "inputDelRsnDialog"
, title: title
, size : "lg"
, size: "lg"
, content: template
, init : () => { setDialogZindex(); }
, onOK : () => {
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() });
}
});
@ -700,12 +687,12 @@
});
// 부과제외 수정 버튼 이벤트
$("#btnUpdateLevyExcl--${pageName}").on("click", function() {
$P.fnUpdateLevyExcl($(this).attr("title"));
$("#btnUpdate--${pageName}").on("click", function() {
$P.fnUpdate($(this).attr("title"));
});
// 부과제외 삭제 버튼 이벤트
$("#btnRemoveLevyExcl--${pageName}").on("click", function() {
$P.fnRemoveLevyExcl($(this).attr("title"));
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title"));
});
// DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
@ -735,14 +722,13 @@
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
// 기본 데이터 설정(업무구분)
$P.initData($("input[name=taskSeCd]:checked").val());
}
// 기본 데이터 설정
@ -751,7 +737,6 @@
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
@ -759,6 +744,9 @@
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase();
// 업무별 조회조건
@ -772,17 +760,8 @@
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/list.do"); // 조회
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/info.do"); // 수정
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/remove.do"); // 삭제
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
}
/**************************************************************************

@ -9,12 +9,13 @@
<div class="container flex-grow-1 px-0">
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="levyExclId--${pageName}" name="levyExclId" data-map="LEVY_EXCL_ID" />
<div class="row g-1">
@ -91,10 +92,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -104,14 +103,10 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "levyExcl"
, prefixName : "부과제외"
, keymapper : info => info ? info.LEVY_EXCL_ID : ""
, dataGetter : obj => obj.${infoPrefix}Info
, urls : {
create : wctx.url("/" + $P.PrefixUrl + "/020/create.do") // 등록
, update : wctx.url("/" + $P.PrefixUrl + "/020/update.do") // 수정
}
prefix: "levyExcl"
, prefixName: "부과제외"
, keymapper: info => info ? info.LEVY_EXCL_ID : ""
, dataGetter: obj => obj.${infoPrefix}Info
});
/**************************************************************************
@ -123,12 +118,10 @@
// Dataset 셋팅
$P.formFields.set($P.control,item);
// 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD);
$P.fnSetURL(item.data.TASK_SE_CD);
// 부과제외구분에 따른 부과제외사유 설정
$P.setFim021(item.data.LEVY_EXCL_SE_CD, item.data.LEVY_EXCL_RSN_CD);
$P.fnSetFim021(item.data.LEVY_EXCL_SE_CD, item.data.LEVY_EXCL_RSN_CD);
// 호출용도가 등록 이라면..
if ($P.callPurpose == "create") {
@ -143,8 +136,8 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
@ -167,9 +160,9 @@
${saveCallbackFuncName}(info);
} else {
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)
});
}
}
@ -177,8 +170,14 @@
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/update.do"); // 수정
}
// 부과제외 구분에 따른 부과제외 사유 코드 설정
$P.setFim021 = (seCode, rsnCode) => {
$P.fnSetFim021 = (seCode, rsnCode) => {
let cmnCode = FIM021[seCode];
$("#levyExclSeCd--${pageName}").val(cmnCode.code);
@ -196,18 +195,14 @@
* 버튼 clickEvent
**************************************************************************/
// 저장 버튼 클릭 이벤트
$P.fnSave = (title) => {
$P.fnSave = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
// 파리미터 설정
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK: () => {
$P.control.save($P.formFields.get()); // formFields
}
});
}
@ -231,9 +226,7 @@
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
}
// 초기 화면 설정
@ -246,11 +239,12 @@
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
// 화면 활성화 설정
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일시
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일시
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분
if ($P.callPurpose == "view") { // view
// View로 호출
if ($P.callPurpose == "view") {
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
@ -259,12 +253,6 @@
}
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/update.do"); // 수정
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/

@ -35,7 +35,6 @@
</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"
@ -48,7 +47,6 @@
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>

@ -157,8 +157,8 @@
<thead class="sticky-thead">
<tr id="theadTrCrdnSttsHstry--${pageName}">
<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: 120px;">등록사용자</th>
<th class="cmn" style="width: 160px;">단속상태</th>
<th class="cmn" style="width: 280px;">기타내용</th>
<th class="cmn" style="width: 100px;">사용여부</th>
<th class="cmn dummy-th"></th>
@ -358,9 +358,9 @@
if (!params) return;
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/levy/levy02/020/info.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/levy/levy02/020/info.do")
, data: params || {}
, success: resp => {
if ((typeof resp) != "string") {
if (resp.rtnMsg != "") {
dialog.alert(resp.rtnMsg);
@ -368,11 +368,11 @@
return;
} else {
dialog.open({
id : $P.rductControl.prefixed("Dialog")
, title : params.title
, content : resp
, size : "lg"
, onClose : () => { $P.refreshDataInfo(); }
id: $P.rductControl.prefixed("Dialog")
, title: params.title
, content: resp
, size: "lg"
, onClose: () => { $P.fnRefreshDataInfo(); }
});
}
}
@ -386,13 +386,13 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
// 자료 재조회
if (resp.saved) {
$P.refreshDataInfo();
$P.fnRefreshDataInfo();
}
}
@ -422,11 +422,11 @@
return;
} else {
dialog.open({
id : $P.levyExclControl.prefixed("Dialog")
, title : params.title
, content : resp
, size : "md"
, onClose : () => { $P.refreshDataInfo(); }
id: $P.levyExclControl.prefixed("Dialog")
, title: params.title
, content: resp
, size: "md"
, onClose: () => { $P.fnRefreshDataInfo(); }
});
}
}
@ -440,13 +440,13 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
// 자료 재조회
if (resp.saved) {
$P.refreshDataInfo(); // 자료 재조회
$P.fnRefreshDataInfo();
}
}
@ -455,9 +455,9 @@
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + "/excl/excl01/010/remove.do")
, data : params
, success : resp => $P.levyExclControl.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "/excl/excl01/010/remove.do")
, data: params || {}
, success: resp => $P.levyExclControl.onRemove(resp)
});
}
@ -500,7 +500,7 @@
* 사용자 함수(function)
**************************************************************************/
// 자료 재조회
$P.refreshDataInfo = () => {
$P.fnRefreshDataInfo = () => {
let crdnId = $("#crdnId--${pageNameMain}").val();
// 단속 ID 가 없다면.. return
@ -548,32 +548,6 @@
});
}
// 사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
if (obj.prefix == $P.rductControl.prefix) {
params.callPurpose = obj.callPurpose;
params.sggCd = $P.rductControl.dataset.getValue("SGG_CD"); // 시군구 코드
params.taskSeCd = $P.rductControl.dataset.getValue("TASK_SE_CD"); // 업무 구분 코드
params.rductId = $P.rductControl.dataset.getValue("RDUCT_ID") // 감경 ID
params.delRsn = obj.reason; // 삭제 사유
$P.rductControl.remove(params);
} else if (obj.prefix == $P.levyExclControl.prefix) {
params.callPurpose = obj.callPurpose;
params.sggCd = $P.levyExclControl.dataset.getValue("SGG_CD"); // 시군구 코드
params.taskSeCd = $P.levyExclControl.dataset.getValue("TASK_SE_CD"); // 업무 구분 코드
params.levyExclId = $P.levyExclControl.dataset.getValue("LEVY_EXCL_ID");// 부과제외 ID
params.delRsn = obj.reason; // 삭제 사유
$P.levyExclControl.remove(params);
} else {
return;
}
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -601,22 +575,22 @@
// 단속 상태 코드 확인
if (Number(crdnSttsCd) < 21 || Number(crdnSttsCd) > 45) {
dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '납부자등록', '본부과 이전' 자료만 처리 가능합니다."
content: "[" + title + "]" + " 작업은 단속상태가 '납부자등록', '본부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
let params = {
callPurpose : "create"
, title : title
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, rtpyrId : rtpyrId
, delYn : "N"
callPurpose: "create"
, title: title
, crdnId: crdnId
, sggCd: $("#sggCd--${pageNameMain}").val()
, taskSeCd: $("#taskSeCd--${pageNameMain}").val()
, rtpyrId: rtpyrId
, delYn: "N"
};
$P.rductControl.getInfo(params);
@ -629,9 +603,9 @@
// 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") {
dialog.alert({
content : "조회된 감경 대장 정보가 없습니다."
content: "조회된 감경 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
@ -642,27 +616,41 @@
// 단속 상태 코드 확인
if (Number(crdnSttsCd) > 45) {
dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '본부과 이전' 자료만 처리 가능합니다."
content: "[" + title + "]" + " 작업은 단속상태가 '본부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
let params = {
callPurpose : "update"
, title : title
, crdnId : $P.rductControl.dataset.getValue("CRDN_ID")
, sggCd : $P.rductControl.dataset.getValue("SGG_CD")
, taskSeCd : $P.rductControl.dataset.getValue("TASK_SE_CD")
, rductId : rductId
, delYn : "N"
, title: title
, crdnId: $P.rductControl.dataset.getValue("CRDN_ID")
, sggCd: $P.rductControl.dataset.getValue("SGG_CD")
, taskSeCd: $P.rductControl.dataset.getValue("TASK_SE_CD")
, rductId: rductId
, delYn: "N"
};
$P.rductControl.getInfo(params);
}
// 사유 callback
$P.callbackRsnRduct = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {
sggCd: $P.rductControl.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.rductControl.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rductId: $P.rductControl.dataset.getValue("RDUCT_ID") // 감경 ID
, delRsn: obj.reason // 삭제 사유
};
$P.rductControl.remove(params);
}
// 감경 삭제
$P.fnRemoveRduct = (title) => {
// 감경 ID
@ -670,9 +658,9 @@
// 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") {
dialog.alert({
content : "조회된 감경 대장 정보가 없습니다."
content: "조회된 감경 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
@ -680,13 +668,14 @@
// 단속 상태 코드
let crdnSttsCd = $("#crdnSttsCd--${pageNameMain}").val();
let crdnSttsNm = $("#crdnSttsNm--${pageNameMain}").val();
// 단속 상태 코드 확인
if (Number(crdnSttsCd) > 45) {
dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '본부과 이전' 자료만 처리 가능합니다."
content: "[" + title + "]" + " 작업은 단속상태가 '본부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
@ -696,19 +685,17 @@
content : "선택한 " + $P.rductControl.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
// 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: title,
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() });
id: "inputDelRsnDialog"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsnRduct({ reason : $("#reason").val() });
}
});
}
@ -719,7 +706,7 @@
$P.fnCreateWrng = (title) => {
// 단속 ID
let crdnId = $("#crdnId--${pageNameMain}").val();
// 단속 ID 가 없다면.. return
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
// 단속 상태 코드
@ -737,13 +724,13 @@
}
let params = {
callPurpose : "create"
, title : title
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, levyExclSeCd : "2"
, delYn : "N"
callPurpose: "create"
, title: title
, crdnId: crdnId
, sggCd: $("#sggCd--${pageNameMain}").val()
, taskSeCd: $("#taskSeCd--${pageNameMain}").val()
, levyExclSeCd: "2"
, delYn: "N"
};
$P.levyExclControl.getInfo(params);
@ -753,7 +740,7 @@
$P.fnCreateLevyExcl = (title) => {
// 단속 ID
let crdnId = $("#crdnId--${pageNameMain}").val();
// 단속 ID 가 없다면.. return
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
// 단속 상태 코드
@ -771,13 +758,13 @@
}
let params = {
callPurpose : "create"
, title : title
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, levyExclSeCd : "1"
, delYn : "N"
callPurpose: "create"
, title: title
, crdnId: crdnId
, sggCd: $("#sggCd--${pageNameMain}").val()
, taskSeCd: $("#taskSeCd--${pageNameMain}").val()
, levyExclSeCd: "1"
, delYn: "N"
};
$P.levyExclControl.getInfo(params);
@ -787,7 +774,7 @@
$P.fnUpdateLevyExcl = (title) => {
// 부과제외 ID
let levyExclId = $P.levyExclControl.dataset.getValue("LEVY_EXCL_ID");
// 부과 제외 ID 가 없다면.. return
if (typeof levyExclId == "undefined" || levyExclId == null || levyExclId == "") {
dialog.alert({
content : "조회된 부과제외 대장 정보가 없습니다."
@ -798,28 +785,41 @@
}
let params = {
callPurpose : "update"
, title : title
, crdnId : $P.levyExclControl.dataset.getValue("CRDN_ID")
, sggCd : $P.levyExclControl.dataset.getValue("SGG_CD")
, taskSeCd : $P.levyExclControl.dataset.getValue("TASK_SE_CD")
, levyExclId : levyExclId
, delYn : "N"
callPurpose: "update"
, title: title
, crdnId: $P.levyExclControl.dataset.getValue("CRDN_ID")
, sggCd: $P.levyExclControl.dataset.getValue("SGG_CD")
, taskSeCd: $P.levyExclControl.dataset.getValue("TASK_SE_CD")
, levyExclId: levyExclId
, delYn: "N"
};
$P.levyExclControl.getInfo(params);
}
// 부과제외 삭제 사유 callback
$P.callbackRsnLevyExcl = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {
sggCd: $P.levyExclControl.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.levyExclControl.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, levyExclId: $P.levyExclControl.dataset.getValue("LEVY_EXCL_ID") // 부과제외 ID
, delRsn: obj.reason // 삭제 사유
};
$P.levyExclControl.remove(params);
}
// 부과제외 삭제
$P.fnRemoveLevyExcl = (title) => {
// 부과제외 ID
let levyExclId = $P.levyExclControl.dataset.getValue("LEVY_EXCL_ID");
// 부과제외 ID 가 없다면.. return
if (typeof levyExclId == "undefined" || levyExclId == null || levyExclId == "") {
dialog.alert({
content : "조회된 부과제외 대장 정보가 없습니다."
content: "조회된 부과제외 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
@ -828,20 +828,18 @@
dialog.alert({
content : "선택한 " + $P.levyExclControl.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
// 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
// 삭제 사유 입력
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: title,
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() });
id: "inputDelRsnDialog"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsnLevyExcl({ reason : $("#reason").val() });
}
});
}

Loading…
Cancel
Save