부과제외 등록, 수정, 삭제 작업시 자료 검증에 이상이 생기면 메세지 발생 후 종료하도록 수정.

main
jjh 1 year ago
parent f6db42e912
commit e0e9509b91

@ -206,8 +206,8 @@ public class CrdnServiceBean extends AbstractServiceBean implements CrdnService
excl01.setLevyExclRsnCd("192"); excl01.setLevyExclRsnCd("192");
excl01.setEtcCn(""); excl01.setEtcCn("");
result = excl01Bean.createLevyExcl(excl01); String retMessage = excl01Bean.createLevyExcl(excl01);
if (!result) { if (retMessage.contains("[F]")) {
throw new RuntimeException("단속자료 수기 등록 중 부과제외 자료 등록에 실패하였습니다."); throw new RuntimeException("단속자료 수기 등록 중 부과제외 자료 등록에 실패하였습니다.");
} }

@ -43,7 +43,7 @@ public interface Excl01Service {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean createLevyExcl(LevyExcl levyExcl); String createLevyExcl(LevyExcl levyExcl);
/** . /** .
* @param excl * @param excl
@ -52,7 +52,7 @@ public interface Excl01Service {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean updateLevyExcl(LevyExcl levyExcl); String updateLevyExcl(LevyExcl levyExcl);
/** . /** .
* @param excl * @param excl
@ -61,7 +61,7 @@ public interface Excl01Service {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean removeLevyExcl(LevyExcl levyExcl); String removeLevyExcl(LevyExcl levyExcl);
/** . /** .
* @param excl * @param excl
@ -70,6 +70,6 @@ public interface Excl01Service {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean removeLevyExclList(ExclQuery req); String removeLevyExclList(ExclQuery req);
} }

@ -1,7 +1,5 @@
package cokr.xit.fims.excl.service.bean; package cokr.xit.fims.excl.service.bean;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -12,12 +10,9 @@ import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.cmmn.CrdnSttsHstry; import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean; import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.dao.LevyExclMapper; import cokr.xit.fims.excl.dao.LevyExclMapper;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.UserInfo;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
/** Bean /** Bean
@ -95,33 +90,41 @@ public class Excl01Bean extends AbstractComponent {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean createLevyExcl(LevyExcl levyExcl) { public String createLevyExcl(LevyExcl levyExcl) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD) String retMessagae = ""; // 처리 결과 메시지
String newCvlcptPrcsCd = ""; // 신규 민원 처리 코드(CVLCPT_PRCS_CD) String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
String newCvlcptTrsmCd = ""; // 민원 전송 코드(CVLCPT_TRSM_CD)
// 단속 ID로 단속, 단속민원, 부과제외 정보 조회 // 단속 ID로 단속, 부과제외 정보 조회
DataObject infoCrdnLevyExcl = levyExclMapper.selectCrdnInfo(levyExcl.getCrdnId()); DataObject infoCrdnLevyExcl = levyExclMapper.selectCrdnInfo(levyExcl.getCrdnId());
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) { if (!infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback retMessagae = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
throw new RuntimeException("부과제외 정보가 이미 존재합니다."); return retMessagae;
} }
// 단속 상태 코드(CRDN_STTS_CD) 확인.. // 단속 상태 코드(CRDN_STTS_CD) 확인..
if (levyExcl.getLevyExclSeCd().equals("1") || levyExcl.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고 if (levyExcl.getLevyExclSeCd().equals("1") || levyExcl.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고
// 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고를 등록 할 수 없다. 종료.. // 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고를 등록 할 수 없다. 종료..
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() > 50) { if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() > 50) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback retMessagae = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다.";
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다"); return retMessagae;
} }
} else if (levyExcl.getLevyExclSeCd().equals("5")) { } else if (levyExcl.getLevyExclSeCd().equals("5")) {
// 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후... // 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후...
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() < 51) { if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() < 51) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다"); retMessagae = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다.";
return retMessagae;
}
}
// 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
if (infoCrdnLevyExcl.string("CVLCPT_PRCS_CD").equals("00")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
retMessagae = "[F] 작업 중 단속 민원 자료가 처리 되지 않았습니다.<br>단속 민원 업무를 먼저 처리 하시기 바랍니다.<br>";
return retMessagae;
} }
} }
@ -154,121 +157,283 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속대장의 단속상태코드 변경에 실패하였습니다."); throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태코드 변경에 실패하였습니다.");
} }
// 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리 // 전액 감액일 경우 부과(TB_LEVY)에 감액금액 입력이 필요..
if (levyExcl.getLevyExclSeCd().equals("1")) { if (levyExcl.getLevyExclSeCd().equals("5")) {
// 단속민원ID가 있다면..
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
// 자동등록 자료만 단속민원(TB_CRDN_CVLCPT) 답변 부분을 처리
if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02")) {
// 단속민원(TB_CRDN_CVLCPT) 대장
CrdnCvlcpt crdnCvlcpt = new CrdnCvlcpt();
crdnCvlcpt.setCvlcptLinkId(infoCrdnLevyExcl.string("CVLCPT_LINK_ID")); // 민원 연계 ID
// 답변내용을 초기화, 답변대상이었다가 답변내용보기를 했다가 서손처리하면 답변내용이 이미 세팅되어 있으므로 초기화해야 한다.
// 서손사유 수정시도 답변내용보기를 했을 수 있으므로 초기화해야 한다.
// 서손취소시도 답변내용이 부과 기본 내용으로 바꾸이야 하므로 초기화해야 한다.
// 단속민원 민원처리결과내용 수정
retSuccess = levyExclMapper.updateCvlcptPrcsRsltCn(crdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원처리결과내용 초기화에 실패하였습니다.");
}
// 답변완료 후 서손처리에 대해서는 답변 상태를 업데이트 하지 않는다 }
// 전송대상, 전송 미대상 자료에 대해서 업데이트한다.
if (infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("01")
|| infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("02")
|| infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("03")) {
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
DataObject infoCvlcptAnsWords = levyExclMapper.selectCvlcptAnsWordsInfo(levyExcl.getLevyExclRsnCd());
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면.. retMessagae = "[S] 작업이 정상 처리 되었습니다.";
if (!infoCvlcptAnsWords.string("ANS_WORDS_ID").equals("")) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
} else {
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
// 현재 날짜 구하기 return retMessagae;
LocalDate now = LocalDate.now(); }
// 포맷 정의
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // yyyy년 MM월 dd일 HH시 mm분 ss초
// 포맷 적용
String formatedNow = now.format(formatter);
// 단속민원(TB_CRDN_CVLCPT) 대장을 수정 한다. /** .
crdnCvlcpt.setCvlcptPrcsCd(newCvlcptPrcsCd); // 민원 처리 코드 * @param excl
crdnCvlcpt.setCvlcptPrcsSumry(infoCvlcptAnsWords.string("PRCS_SUMRY")); // 민원 처리 요약 * @return
crdnCvlcpt.setCvlcptPrcsRsltCn(infoCvlcptAnsWords.string("PRCS_RSLT_CN")); // 민원 처리 결과 내용 * <ul><li> true</li>
crdnCvlcpt.setCvlcptPrcsCmptnDt(formatedNow); // 민원 처리 완료 일시 * <li> false</li>
crdnCvlcpt.setCvlcptPrcsPic(UserInfo.current().getId()); // 민원 처리 담당자 * </ul>
crdnCvlcpt.setCvlcptTrsmCd(newCvlcptTrsmCd); // 민원 전송 코드 */
public String updateLevyExcl(LevyExcl levyExcl) {
// 단속민원 민원처리코드 수정 // 변수 선언
retSuccess = levyExclMapper.updateCrdnCvlcpt(crdnCvlcpt); boolean retSuccess = false; // DB 처리 결과
if (!retSuccess) { String retMessagae = ""; // 처리 결과 메시지
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원답변 수정에 실패하였습니다."); // 부과제외(TB_LEVY_EXCL) 대장을 수정 한다.
} retSuccess = levyExclMapper.update(levyExcl);
} if (!retSuccess) {
} // if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02")) // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
} // 단속민원ID가 있다면.. throw new RuntimeException("부과제외 대장 수정에 실패하였습니다.");
}
retMessagae = "[S] 작업이 정상 처리 되었습니다.";
return retMessagae;
}
/** .
* @param excl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeLevyExcl(LevyExcl levyExcl) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessagae = ""; // 처리 결과 메시지
String newHstrySttsCd = ""; // 신규 상태 코드
// 표지정보 확인여부가 미확인이면 -> 조회미대상 으로 // 단속 ID로 단속, 부과제외 정보 조회
if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("0")) { DataObject infoCrdnLevyExcl = levyExclMapper.selectCrdnInfo(levyExcl.getCrdnId());
// 단속(TB_CRDN) 대장
Crdn crdn = new Crdn();
crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID // 단속 상태 코드(CRDN_STTS_CD) 확인..
crdn.setParkngPsbltyRsltCd("9"); // 주차 가능 결과 코드 if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손)
retMessagae = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.";
return retMessagae;
} else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("2") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고
retMessagae = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.";
return retMessagae;
} else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("5") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("80")) { // 부과취소
retMessagae = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.";
return retMessagae;
}
// 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다.
retSuccess = levyExclMapper.delete(levyExcl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다.");
}
if (infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손)
newHstrySttsCd = "91";
} else if (infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고
newHstrySttsCd = "93";
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다.
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnLevyExcl.string("CRDN_ID"), newHstrySttsCd);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 삭제 중 단속 대장의 단속상태코드 변경에 실패하였습니다.");
}
// 부과제외 구분이 비부과(서손)일 경우
if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1")) {
// 표지정보 확인여부가 조회미대상이면 -> 미확인 으로
// 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니
if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상
Crdn crdn = new Crdn(); // 단속(TB_CRDN) 대장
crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID
crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인
retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn); retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
}
}
retMessagae = "[S] 작업이 정상 처리 되었습니다.";
return retMessagae;
}
}
/** .
public boolean createLevyExcl(LevyExcl levyExcl) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
String newCvlcptPrcsCd = ""; // 신규 민원 처리 코드(CVLCPT_PRCS_CD)
String newCvlcptTrsmCd = ""; // 민원 전송 코드(CVLCPT_TRSM_CD)
// 단속 ID로 단속, 부과제외 정보 조회
DataObject infoCrdnLevyExcl = levyExclMapper.selectCrdnInfo(levyExcl.getCrdnId());
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 정보가 이미 존재합니다.");
}
// 단속 상태 코드(CRDN_STTS_CD) 확인..
if (levyExcl.getLevyExclSeCd().equals("1") || levyExcl.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고
// 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고를 등록 할 수 없다. 종료..
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() > 50) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
} else if (levyExcl.getLevyExclSeCd().equals("5")) {
// 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후...
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() < 51) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
}
// 단속 상태 코드 설정.
if (levyExcl.getLevyExclSeCd().equals("1")) { // 비부과
newCrdnSttsCd = "81"; // 비부과(서손)
} else if (levyExcl.getLevyExclSeCd().equals("2")) { // 계고
newCrdnSttsCd = "83"; // 계고
} else if (levyExcl.getLevyExclSeCd().equals("5")) { // 전액감액
newCrdnSttsCd = "80"; // 부과취소
}
// 부과제외(TB_LEVY_EXCL) 대장을 등록 한다.
retSuccess = levyExclMapper.insert(levyExcl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 대장 등록에 실패하였습니다.");
}
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnLevyExcl.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnLevyExcl.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnLevyExcl.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속대장의 단속상태코드 변경에 실패하였습니다.");
}
// 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
if (levyExcl.getLevyExclSeCd().equals("1")) {
// 단속민원ID가 있다면..
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
// 자동등록 자료만 단속민원(TB_CRDN_CVLCPT) 답변 부분을 처리
if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02")) {
// 단속민원(TB_CRDN_CVLCPT) 대장
CrdnCvlcpt crdnCvlcpt = new CrdnCvlcpt();
crdnCvlcpt.setCvlcptLinkId(infoCrdnLevyExcl.string("CVLCPT_LINK_ID")); // 민원 연계 ID
// 답변내용을 초기화, 답변대상이었다가 답변내용보기를 했다가 서손처리하면 답변내용이 이미 세팅되어 있으므로 초기화해야 한다.
// 서손사유 수정시도 답변내용보기를 했을 수 있으므로 초기화해야 한다.
// 서손취소시도 답변내용이 부과 기본 내용으로 바꾸이야 하므로 초기화해야 한다.
// 단속민원 민원처리결과내용 수정
retSuccess = levyExclMapper.updateCvlcptPrcsRsltCn(crdnCvlcpt);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속대장의 표지정보확인여부 수정에 실패하였습니다."); throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원처리결과내용 초기화에 실패하였습니다.");
} }
}
// 단속 ID로 발송 상세(TB_SNDNG_DTL) 대장 정보 조회 // 답변완료 후 서손처리에 대해서는 답변 상태를 업데이트 하지 않는다
DataObject infoSndngDtl = levyExclMapper.selectSndngDtlInfo(levyExcl.getCrdnId(), "1"); // 전송대상, 전송 미대상 자료에 대해서 업데이트한다.
if (infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("01")
|| infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("02")
|| infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("03")) {
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
DataObject infoCvlcptAnsWords = levyExclMapper.selectCvlcptAnsWordsInfo(levyExcl.getLevyExclRsnCd());
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면..
if (!infoCvlcptAnsWords.string("ANS_WORDS_ID").equals("")) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
} else {
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
if (infoSndngDtl != null) { // 현재 날짜 구하기
// 발송 상세(TB_SNDNG_DTL) 대장 LocalDate now = LocalDate.now();
SndngDtl sndngDtl = new SndngDtl(); // 포맷 정의
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // yyyy년 MM월 dd일 HH시 mm분 ss초
// 포맷 적용
String formatedNow = now.format(formatter);
// 단속민원(TB_CRDN_CVLCPT) 대장을 수정 한다.
crdnCvlcpt.setCvlcptPrcsCd(newCvlcptPrcsCd); // 민원 처리 코드
crdnCvlcpt.setCvlcptPrcsSumry(infoCvlcptAnsWords.string("PRCS_SUMRY")); // 민원 처리 요약
crdnCvlcpt.setCvlcptPrcsRsltCn(infoCvlcptAnsWords.string("PRCS_RSLT_CN")); // 민원 처리 결과 내용
crdnCvlcpt.setCvlcptPrcsCmptnDt(formatedNow); // 민원 처리 완료 일시
crdnCvlcpt.setCvlcptPrcsPic(UserInfo.current().getId()); // 민원 처리 담당자
crdnCvlcpt.setCvlcptTrsmCd(newCvlcptTrsmCd); // 민원 전송 코드
// 단속민원 민원처리코드 수정
retSuccess = levyExclMapper.updateCrdnCvlcpt(crdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원답변 수정에 실패하였습니다.");
}
}
} // if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02"))
} // 단속민원ID가 있다면..
sndngDtl.setCrdnId(levyExcl.getCrdnId()); // 단속 ID // 표지정보 확인여부가 미확인이면 -> 조회미대상 으로
if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("0")) {
// 단속(TB_CRDN) 대장
Crdn crdn = new Crdn();
// 발송상세 수납코드를 수정 crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID
retSuccess = levyExclMapper.updateRcvmtCd(sndngDtl); crdn.setParkngPsbltyRsltCd("9"); // 주차 가능 결과 코드
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 발송상세대장의 수납코드 수정에 실패하였습니다.");
}
}
// 계고
} else if (levyExcl.getLevyExclSeCd().equals("2")) {
// 전액감액 retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
} else if (levyExcl.getLevyExclSeCd().equals("5")) { if (!retSuccess) {
// 부과(TB_LEVY)에 감액금액 입력이 필요.. // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속대장의 표지정보확인여부 수정에 실패하였습니다.");
}
} }
return true; // 단속 ID로 발송 상세(TB_SNDNG_DTL) 대장 정보 조회
DataObject infoSndngDtl = levyExclMapper.selectSndngDtlInfo(levyExcl.getCrdnId(), "1");
if (infoSndngDtl != null) {
// 발송 상세(TB_SNDNG_DTL) 대장
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setCrdnId(levyExcl.getCrdnId()); // 단속 ID
// 발송상세 수납코드를 수정
retSuccess = levyExclMapper.updateRcvmtCd(sndngDtl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 발송상세대장의 수납코드 수정에 실패하였습니다.");
}
}
// 계고
} else if (levyExcl.getLevyExclSeCd().equals("2")) {
// 전액감액
} else if (levyExcl.getLevyExclSeCd().equals("5")) {
// 부과(TB_LEVY)에 감액금액 입력이 필요..
} }
/** . return true;
* @param excl }
* @return */
* <ul><li> true</li>
* <li> false</li> /** .
* </ul>
*/
public boolean updateLevyExcl(LevyExcl levyExcl) { public boolean updateLevyExcl(LevyExcl levyExcl) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
@ -353,14 +518,9 @@ public class Excl01Bean extends AbstractComponent {
return true; return true;
} }
*/
/** . /** .
* @param excl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean removeLevyExcl(LevyExcl levyExcl) { public boolean removeLevyExcl(LevyExcl levyExcl) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
@ -448,5 +608,5 @@ public class Excl01Bean extends AbstractComponent {
return true; return true;
} }
*/
}

@ -53,28 +53,29 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
} }
@Override @Override
public boolean createLevyExcl(LevyExcl levyExcl) { public String createLevyExcl(LevyExcl levyExcl) {
return excl01Bean.createLevyExcl(levyExcl); return excl01Bean.createLevyExcl(levyExcl);
} }
@Override @Override
public boolean updateLevyExcl(LevyExcl levyExcl) { public String updateLevyExcl(LevyExcl levyExcl) {
return excl01Bean.updateLevyExcl(levyExcl); return excl01Bean.updateLevyExcl(levyExcl);
} }
@Override @Override
public boolean removeLevyExcl(LevyExcl levyExcl) { public String removeLevyExcl(LevyExcl levyExcl) {
return excl01Bean.removeLevyExcl(levyExcl); return excl01Bean.removeLevyExcl(levyExcl);
} }
@Override @Override
public boolean removeLevyExclList(ExclQuery req) { public String removeLevyExclList(ExclQuery req) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 String retMessage = ""; // 처리 결과 메시지
// 부과제외IDs 건수를 확인하여 1건이하면.. 종료 // 부과제외IDs 건수를 확인하여 1건이하면.. 종료
if (req.getLevyExclIDs().length < 1 ) { if (req.getLevyExclIDs().length < 1 ) {
return retSuccess; retMessage = "";
return retMessage;
} }
// 부과제외IDs 만큼 반복.. // 부과제외IDs 만큼 반복..
@ -85,13 +86,15 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
levyExcl.setDelRsn(req.getDelRsn()); // 삭제 사유 levyExcl.setDelRsn(req.getDelRsn()); // 삭제 사유
// 부과제외 삭제 호출 // 부과제외 삭제 호출
retSuccess = excl01Bean.removeLevyExcl(levyExcl); retMessage = excl01Bean.removeLevyExcl(levyExcl);
if (!retSuccess) {
return retSuccess; // 오류가 발생하였으면 종료..
if (retMessage.contains("[F]")) {
return retMessage;
} }
} }
return true; return retMessage;
} }
} }

@ -86,7 +86,7 @@ public class Excl01Controller extends ApplicationController {
return mav return mav
.addObject("message", "이미 등록된 부과제외 정보가 있습니다.") .addObject("message", "이미 등록된 부과제외 정보가 있습니다.")
.addObject("errorMessage", "이미 등록된 부과제외 정보가 있습니다.") .addObject("retMessage", "이미 등록된 부과제외 정보가 있습니다.")
; ;
} else { } else {
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -119,10 +119,18 @@ public class Excl01Controller extends ApplicationController {
*/ */
@PostMapping(name = "부과제외 대장 등록", value = "/020/create.do") @PostMapping(name = "부과제외 대장 등록", value = "/020/create.do")
public ModelAndView createLevyExcl(LevyExcl excl01) { public ModelAndView createLevyExcl(LevyExcl excl01) {
boolean saved = excl01Service.createLevyExcl(excl01); boolean saved = false;
String retMessage = excl01Service.createLevyExcl(excl01);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved); .addObject("saved", saved)
.addObject("retMessage", retMessage);
} }
/** . /** .
@ -134,10 +142,18 @@ public class Excl01Controller extends ApplicationController {
*/ */
@PostMapping(name = "부과제외 대장 수정", value = "/020/update.do") @PostMapping(name = "부과제외 대장 수정", value = "/020/update.do")
public ModelAndView updateLevyExcl(LevyExcl excl01) { public ModelAndView updateLevyExcl(LevyExcl excl01) {
boolean saved = excl01Service.updateLevyExcl(excl01); boolean saved = false;
String retMessage = excl01Service.updateLevyExcl(excl01);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved); .addObject("saved", saved)
.addObject("retMessage", retMessage);
} }
/** ID . /** ID .
@ -150,10 +166,18 @@ public class Excl01Controller extends ApplicationController {
*/ */
@PostMapping(name = "부과제외 대장 제거", value = "/010/remove.do") @PostMapping(name = "부과제외 대장 제거", value = "/010/remove.do")
public ModelAndView removeLevyExcl(LevyExcl excl01) { public ModelAndView removeLevyExcl(LevyExcl excl01) {
boolean saved = excl01Service.removeLevyExcl(excl01); boolean saved = false;
String retMessage = excl01Service.removeLevyExcl(excl01);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved); .addObject("saved", saved)
.addObject("retMessage", retMessage);
} }
/** ID . /** ID .
@ -166,10 +190,18 @@ public class Excl01Controller extends ApplicationController {
*/ */
@PostMapping(name = "부과제외 대장 제거", value = "/010/removes.do") @PostMapping(name = "부과제외 대장 제거", value = "/010/removes.do")
public ModelAndView removeLevyExclList(ExclQuery req) { public ModelAndView removeLevyExclList(ExclQuery req) {
boolean saved = excl01Service.removeLevyExclList(req); boolean saved = false;
String retMessage = excl01Service.removeLevyExclList(req);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("saved", saved); .addObject("saved", saved)
.addObject("retMessage", retMessage);
} }
} }

@ -232,6 +232,9 @@
FROM TB_CRDN C FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
<if test="delYn != null">
AND C.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</select> </select>
</mapper> </mapper>

@ -287,14 +287,35 @@
, C.CRDN_STTS_CD /* 단속 상태 코드 */ , C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */ , C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, CA.CRDN_SE_CD /* 단속 구분 코드 */
, CA.CRDN_SPAREA_CD /* 단속 특별구역 코드 */
, CA.PARKNG_PSBLTY_RSLT_CD /* 주차 가능 결과 코드 */
, CC.CVLCPT_LINK_ID /* 민원 연계 ID */
, CC.CVLCPT_PRCS_RSLT_CN /* 민원 처리 결과 내용 */
, CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */
, P.RTPYR_ID /* 납부자 ID */ , P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NM /* 납부자 명 */ , P.RTPYR_NM /* 납부자 명 */
, LE.LEVY_EXCL_ID /* 부과 제외 ID */ , LE.LEVY_EXCL_ID /* 부과 제외 ID */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */ , <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
FROM TB_CRDN C FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ <where>
<if test="levyExclId != null">
AND LE.LEVY_EXCL_ID = #{levyExclId} /* 부과 제외 ID */
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
<if test="delYn != null">
AND C.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</if>
</where>
</select> </select>
<select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(levyExclMapper.selectCvlcptAnsWords) */ <select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(levyExclMapper.selectCvlcptAnsWords) */

@ -431,7 +431,20 @@
FROM TB_CRDN C FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N') LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ <where>
<if test="levyExclId != null">
AND OS.OPNN_ID = #{levyExclId} /* 의견 ID */
<if test="delYn != null">
AND OS.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
<if test="delYn != null">
AND C.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</if>
</where>
</select> </select>
<update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */ <update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */

@ -221,8 +221,20 @@
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.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_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N') LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ <where>
AND C.DEL_YN = 'N' /* 삭제 여부 */ <if test="levyExclId != null">
AND R.RDUCT_ID = #{rductId} /* 감경 ID */
<if test="delYn != null">
AND R.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
<if test="delYn != null">
AND C.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</if>
</where>
</select> </select>
<update id="updateCrdnRduct" parameterType="map">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */ <update id="updateCrdnRduct" parameterType="map">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */
@ -236,7 +248,6 @@
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="updateLevyRduct" parameterType="map">/* 부과 대장 과태료 감경 금액 수정(rductMapper.updateLevyRduct) */ <update id="updateLevyRduct" parameterType="map">/* 부과 대장 과태료 감경 금액 수정(rductMapper.updateLevyRduct) */
UPDATE TB_LEVY UPDATE TB_LEVY
SET FFNLG_AMT = #{levy.ffnlgAmt} /* 과태료 금액 */ SET FFNLG_AMT = #{levy.ffnlgAmt} /* 과태료 금액 */
@ -248,5 +259,4 @@
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
</mapper> </mapper>

@ -365,8 +365,18 @@
}); });
} }
/* // 삭제 callback
// 삭제 -> callback 추가 sample ${pageName}Control.onRemove = (selected, resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
if (resp.saved)
${pageName}Control._load();
}
// 삭제
${pageName}Control.remove = (params) => { ${pageName}Control.remove = (params) => {
let selected = ${pageName}Control.dataset.getKeys("selected"); let selected = ${pageName}Control.dataset.getKeys("selected");
@ -383,12 +393,7 @@
, success : resp => ${pageName}Control.onRemove(selected, resp) , success : resp => ${pageName}Control.onRemove(selected, resp)
}); });
} }
// 삭제
${pageName}Control.onRemove = (selected, resp) => {
if (resp.saved)
${pageName}Control._load();
}
*/
/************************************************************************** /**************************************************************************
* *
**************************************************************************/ **************************************************************************/

@ -105,8 +105,12 @@
**************************************************************************/ **************************************************************************/
// 저장 callback // 저장 callback
${pageName}Control.onSave = (resp) => { ${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
if (resp.saved) { if (resp.saved) {
dialog.alert("저장됐습니다.");
dialog.close(${pageName}Control.prefix + "Dialog"); dialog.close(${pageName}Control.prefix + "Dialog");
if ("${savedCallbackFuncName}" != "") { if ("${savedCallbackFuncName}" != "") {

@ -406,8 +406,8 @@
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
if ((typeof resp) != "string") { if ((typeof resp) != "string") {
if (resp.errorMessage != "") { if (resp.retMessage != "") {
dialog.alert(resp.errorMessage); dialog.alert(resp.retMessage);
return; return;
} }

Loading…
Cancel
Save