1. serviceBean 에 작성된 코드 bean 으로 소스 변경.

2. 쿼리문 수정.
main
jjh 1 year ago
parent fde80e2739
commit bb266513c4

@ -514,6 +514,16 @@ public class ExclQuery extends QueryRequest {
// 동적 검색 조건 /////////////////////////////////////////////////////////////// // 동적 검색 조건 ///////////////////////////////////////////////////////////////
// ETC ///////////////////////////////////////////////////////////////////// // ETC /////////////////////////////////////////////////////////////////////
public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null);
}
public <T extends ExclQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
public String getAnsRsnCd() { public String getAnsRsnCd() {
return ifEmpty(ansRsnCd, () -> null); return ifEmpty(ansRsnCd, () -> null);
} }
@ -544,15 +554,6 @@ public class ExclQuery extends QueryRequest {
return self(); return self();
} }
public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null);
}
public <T extends ExclQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
// ETC ///////////////////////////////////////////////////////////////////// // ETC /////////////////////////////////////////////////////////////////////
} }

@ -92,70 +92,4 @@ public class LevyExcl extends AbstractEntity {
*/ */
private String delRsn; private String delRsn;
// 추가 /////////////////////////////////////////////////////////////////////
/**
* (TB_CRDN) -
*/
private String crdnRegSeCd;
/**
* (TB_CRDN) -
*/
private String crdnYmd;
/**
* (TB_CRDN) -
*/
private String crdnTm;
/**
* (TB_CRDN) -
*/
private String vhrno;
/**
* (TB_CRDN) -
*/
private String parkngPsbltyRsltCd;
/**
* (TB_CRDN_CVLCPT) - ID
*/
private String cvlcptLinkId;
/**
* (TB_CRDN_CVLCPT) -
*/
private String cvlcptPrcsCd;
/**
* (TB_CRDN_CVLCPT) -
*/
private String cvlcptPrcsSumry;
/**
* (TB_CRDN_CVLCPT) -
*/
private String cvlcptPrcsRsltCn;
/**
* (TB_CRDN_CVLCPT) -
*/
private String cvlcptPrcsCmptnDt;
/**
* (TB_CRDN_CVLCPT) -
*/
private String cvlcptPrcsPic;
/**
* (TB_CRDN_CVLCPT) -
*/
private String cvlcptTrsmCd;
/**
* (TB_SNDNG_DTL) -
*/
private String sndngRcvmtCd;
} }

@ -6,6 +6,9 @@ import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper; import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.excl.LevyExcl; 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.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.foundation.component.AbstractMapper; import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -61,8 +64,8 @@ public interface LevyExclMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean insert(LevyExcl excl01) { default boolean insert(LevyExcl levyExcl) {
return excl01 != null && insertLevyExcl(params().set("excl01", excl01)) == 1; return levyExcl != null && insertLevyExcl(params().set("levyExcl", levyExcl)) == 1;
} }
/** . /** .
@ -71,8 +74,8 @@ public interface LevyExclMapper extends AbstractMapper {
*/ */
int updateLevyExcl(Map<String, Object> params); int updateLevyExcl(Map<String, Object> params);
default boolean update(LevyExcl excl01) { default boolean update(LevyExcl levyExcl) {
return excl01 != null && updateLevyExcl(params().set("excl01", excl01)) == 1; return levyExcl != null && updateLevyExcl(params().set("levyExcl", levyExcl)) == 1;
} }
/** . /** .
@ -84,8 +87,8 @@ public interface LevyExclMapper extends AbstractMapper {
*/ */
int deleteLevyExcl(Map<String, Object> params); int deleteLevyExcl(Map<String, Object> params);
default boolean delete(LevyExcl excl01) { default boolean delete(LevyExcl levyExcl) {
return excl01 != null && deleteLevyExcl(params().set("excl01", excl01)) >= 1; return levyExcl != null && deleteLevyExcl(params().set("levyExcl", levyExcl)) >= 1;
} }
/** ID , . /** ID , .
@ -112,24 +115,14 @@ public interface LevyExclMapper extends AbstractMapper {
return cvlcptAnsWordsInfo; return cvlcptAnsWordsInfo;
} }
/**(TB_CRDN_CVLCPT) , .
* @param excl
* @return
*/
int updateCrdnCvlcptPrcs(Map<String, Object> params);
default boolean updateCrdnCvlcptPrcs(LevyExcl excl01) {
return excl01 != null && updateCrdnCvlcptPrcs(params().set("excl01", excl01)) == 1;
}
/**(TB_CRDN_CVLCPT) (CVLCPT_PRCS_RSLT_CN) . /**(TB_CRDN_CVLCPT) (CVLCPT_PRCS_RSLT_CN) .
* @param excl * @param excl
* @return * @return
*/ */
int updateCvlcptPrcsRsltCn(Map<String, Object> params); int updateCvlcptPrcsRsltCn(Map<String, Object> params);
default boolean updateCvlcptPrcsRsltCn(LevyExcl excl01) { default boolean updateCvlcptPrcsRsltCn(CrdnCvlcpt crdnCvlcpt) {
return excl01 != null && updateCvlcptPrcsRsltCn(params().set("excl01", excl01)) == 1; return crdnCvlcpt != null && updateCvlcptPrcsRsltCn(params().set("crdnCvlcpt", crdnCvlcpt)) == 1;
} }
/**(TB_CRDN_CVLCPT) . /**(TB_CRDN_CVLCPT) .
@ -138,8 +131,8 @@ public interface LevyExclMapper extends AbstractMapper {
*/ */
int updateCrdnCvlcpt(Map<String, Object> params); int updateCrdnCvlcpt(Map<String, Object> params);
default boolean updateCrdnCvlcpt(LevyExcl excl01) { default boolean updateCrdnCvlcpt(CrdnCvlcpt crdnCvlcpt) {
return excl01 != null && updateCrdnCvlcpt(params().set("excl01", excl01)) == 1; return crdnCvlcpt != null && updateCrdnCvlcpt(params().set("crdnCvlcpt", crdnCvlcpt)) == 1;
} }
/**(TB_CRDN) . /**(TB_CRDN) .
@ -148,8 +141,8 @@ public interface LevyExclMapper extends AbstractMapper {
*/ */
int updateParkngPsbltyRsltCd(Map<String, Object> params); int updateParkngPsbltyRsltCd(Map<String, Object> params);
default boolean updateParkngPsbltyRsltCd(LevyExcl excl01) { default boolean updateParkngPsbltyRsltCd(Crdn crdn) {
return excl01 != null && updateParkngPsbltyRsltCd(params().set("excl01", excl01)) == 1; return crdn != null && updateParkngPsbltyRsltCd(params().set("crdn", crdn)) == 1;
} }
/** . /** .
@ -171,8 +164,8 @@ public interface LevyExclMapper extends AbstractMapper {
*/ */
int updateRcvmtCd(Map<String, Object> params); int updateRcvmtCd(Map<String, Object> params);
default boolean updateRcvmtCd(LevyExcl excl01) { default boolean updateRcvmtCd(SndngDtl sndngDtl) {
return excl01 != null && updateRcvmtCd(params().set("excl01", excl01)) >= 1; return sndngDtl != null && updateRcvmtCd(params().set("sndngDtl", sndngDtl)) >= 1;
} }
} }

@ -6,6 +6,7 @@ import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper; import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.foundation.component.AbstractMapper; import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -73,8 +74,8 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean insert(OpnnSbmsn excl02) { default boolean insert(OpnnSbmsn opnnSbmsn) {
return excl02 != null && insertOpnnSbmsn(params().set("excl02", excl02)) == 1; return opnnSbmsn != null && insertOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
/** . /** .
@ -93,68 +94,68 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean update(OpnnSbmsn excl02) { default boolean update(OpnnSbmsn opnnSbmsn) {
return excl02 != null && updateOpnnSbmsn(params().set("excl02", excl02)) == 1; return opnnSbmsn != null && updateOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
/** . /** () .
* @param params * @param params
* <ul><li>"opnnSbmsn" - </li> * <ul><li>"opnnSbmsn" - </li>
* <li>"currentUser" - </li> * <li>"currentUser" - </li>
* </ul> * </ul>
* @return * @return
*/ */
int deleteOpnnSbmsn(Map<String, ?> params); int updateAnsSttsCd(Map<String, Object> params);
/** . /** () .
* @param opnnSbmsn * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean delete(OpnnSbmsn excl02) { default boolean updateOpnnSbmsnAnswer(OpnnSbmsn excl02) {
return excl02 != null && deleteOpnnSbmsn(params().set("excl02", excl02)) == 1; return excl02 != null && updateAnsSttsCd(params().set("excl02", excl02)) == 1;
} }
/** . /** .
* @param params * @param params
* <ul><li>"opnnSbmsn" - </li> * <ul><li>"crdn" - </li>
* <li>"currentUser" - </li> * <li>"currentUser" - </li>
* </ul> * </ul>
* @return * @return
*/ */
int updateOpnnSbmsnYn(Map<String, Object> params); int updateCrdnOpnnSbmsnYn(Map<String, Object> params);
/** . /** .
* @param opnnSbmsn * @param crdn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean updateCrdn(OpnnSbmsn excl02) { default boolean updateCrdn(Crdn crdn) {
return excl02 != null && updateOpnnSbmsnYn(params().set("excl02", excl02)) == 1; return crdn != null && updateCrdnOpnnSbmsnYn(params().set("crdn", crdn)) == 1;
} }
/** . /** .
* @param params * @param params
* <ul><li>"opnnSbmsn" - </li> * <ul><li>"opnnSbmsn" - </li>
* <li>"currentUser" - </li> * <li>"currentUser" - </li>
* </ul> * </ul>
* @return * @return
*/ */
int updateAnsSttsCd(Map<String, Object> params); int deleteOpnnSbmsn(Map<String, ?> params);
/** . /** .
* @param opnnSbmsn * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean updateOpnnSbmsnAnswer(OpnnSbmsn excl02) { default boolean delete(OpnnSbmsn opnnSbmsn) {
return excl02 != null && updateAnsSttsCd(params().set("excl02", excl02)) == 1; return opnnSbmsn != null && deleteOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
} }

@ -44,7 +44,7 @@ public interface Excl02Service {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean createOpnnSbmsn(OpnnSbmsn excl02, List<FileInfo> fileInfoList); boolean createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList);
/** . /** .
* @param opnnSbmsn * @param opnnSbmsn
@ -53,33 +53,34 @@ public interface Excl02Service {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean updateOpnnSbmsn(OpnnSbmsn excl02, List<FileInfo> fileInfoList); boolean updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList);
/** . /** () .
* @param opnnSbmsn * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean removeOpnnSbmsn(OpnnSbmsn excl02); boolean updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn);
/** . /** .
* @param excl * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean removeOpnnSbmsnList(ExclQuery req); boolean removeOpnnSbmsn(OpnnSbmsn opnnSbmsn);
/** () . /** .
* @param opnnSbmsn * @param excl
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
boolean updateOpnnSbmsnAnswer(OpnnSbmsn excl02); boolean removeOpnnSbmsnList(ExclQuery req);
} }

@ -1,5 +1,7 @@
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;
@ -7,9 +9,15 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cokr.xit.fims.excl.LevyExcl; import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
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
@ -29,6 +37,10 @@ public class Excl01Bean extends AbstractComponent {
@Resource(name = "levyExclMapper") @Resource(name = "levyExclMapper")
private LevyExclMapper levyExclMapper; private LevyExclMapper levyExclMapper;
/** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
/** . /** .
* @param req * @param req
* @return * @return
@ -47,7 +59,7 @@ public class Excl01Bean extends AbstractComponent {
if (req.getLevyExclId() != null) { if (req.getLevyExclId() != null) {
return levyExclMapper.selectLevyExclInfo(req.getLevyExclId()); // 수정(부과제외 조회) return levyExclMapper.selectLevyExclInfo(req.getLevyExclId()); // 수정(부과제외 조회)
} else { } else {
DataObject dataCrdn = levyExclMapper.selectCrdn(req); // 등록(단속 조회) DataObject dataCrdn = levyExclMapper.selectCrdn(req); // 등록(단속 조회)
// 초기 데이터 설정 // 초기 데이터 설정
dataCrdn.set("LEVY_EXCL_YMD", dataCrdn.get("TODAY")); // 부과 제외 일자 dataCrdn.set("LEVY_EXCL_YMD", dataCrdn.get("TODAY")); // 부과 제외 일자
@ -64,8 +76,172 @@ public class Excl01Bean extends AbstractComponent {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean createLevyExcl(LevyExcl excl01) { public boolean createLevyExcl(LevyExcl levyExcl) {
return levyExclMapper.insert(excl01); // 변수 선언
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 (Integer.parseInt(infoCrdnLevyExcl.string("CRDN_STTS_CD")) > 50) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
} else if (levyExcl.getLevyExclSeCd().equals("5")) {
// 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후...
if (Integer.parseInt(infoCrdnLevyExcl.string("CRDN_STTS_CD")) < 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());
crdnSttsHstry.setEtcCn("부과제외 대장 등록");
// 단속 상태 이력(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) {
// 예외를 발생시켜서 오류메세지를 보내고 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) 대장에 답변 사유 코드가 존재한다면..
if (!infoCvlcptAnsWords.string("ANS_WORDS_ID").equals("")) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
} else {
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
// 현재 날짜 구하기
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); // 민원 처리 코드
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가 있다면..
// 표지정보 확인여부가 미확인이면 -> 조회미대상 으로
if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("0")) {
// 단속(TB_CRDN) 대장
Crdn crdn = new Crdn();
crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID
crdn.setParkngPsbltyRsltCd("9"); // 주차 가능 결과 코드
retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속 대장의 표지정보확인여부 수정에 실패하였습니다.");
}
}
// 단속 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;
} }
/** . /** .
@ -75,8 +251,84 @@ public class Excl01Bean extends AbstractComponent {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean updateLevyExcl(LevyExcl excl01) { public boolean updateLevyExcl(LevyExcl levyExcl) {
return levyExclMapper.update(excl01); // 변수 선언
boolean retSuccess = false; // DB 처리 결과
String newCvlcptPrcsCd = ""; // 신규 민원 처리 코드(CVLCPT_PRCS_CD)
String newCvlcptTrsmCd = ""; // 민원 전송 코드(CVLCPT_TRSM_CD)
// 부과제외(TB_LEVY_EXCL) 자료 조회
DataObject infoCrdnLevyExcl = levyExclMapper.selectLevyExclInfo(levyExcl.getLevyExclId());
// 부과제외(TB_LEVY_EXCL) 대장을 수정 한다.
retSuccess = levyExclMapper.update(levyExcl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 대장 수정에 실패하였습니다.");
}
// 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
if (levyExcl.getLevyExclSeCd().equals("1") ) {
// 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
// 단속 민원 대장
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("CRDN_REG_SE_CD").equals("02")) {
// 민원전송코드가 전송대상(01) 또는 전송미대상(03) 자료만 민원답변 부분을 처리
if (infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("01") || infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("03")) {
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
DataObject infoCvlcptAnsWords = levyExclMapper.selectCvlcptAnsWordsInfo(levyExcl.getLevyExclRsnCd());
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면..
if (infoCvlcptAnsWords != null) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
// 답변 문구가 필요해 보임..
} else {
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
// 현재 날짜 구하기
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); // 민원 처리 코드
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("부과제외 등록 중 민원처리코드 수정에 실패하였습니다.");
}
}
} // 자동등록 자료만..
} // 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
} // 비부과(서손)일 경우..
return true;
} }
/** . /** .
@ -86,87 +338,80 @@ public class Excl01Bean extends AbstractComponent {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean removeLevyExcl(LevyExcl excl01) { public boolean removeLevyExcl(LevyExcl levyExcl) {
return levyExclMapper.delete(excl01); // 변수 선언
} boolean retSuccess = false; // DB 처리 결과
/** . // 부과제외(TB_LEVY_EXCL) 자료 조회
* @param crdnId ID DataObject infoLevyExcl = levyExclMapper.selectLevyExclInfo(levyExcl.getLevyExclId());
* @return ,
*/
public DataObject getCrdnLevyExcl(String crdnId) {
return levyExclMapper.selectCrdnInfo(crdnId);
}
/** . // 단속 상태 코드(CRDN_STTS_CD) 확인..
* @param crdnId ID if (infoLevyExcl.string("LEVY_EXCL_SE_CD").equals("1") && !infoLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손)
* @return , // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
*/ throw new RuntimeException("단속 상태가 " + infoLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.");
public DataObject selectCvlcptAnsWordsInfo(String ansRsnCd) { } else if (infoLevyExcl.string("LEVY_EXCL_SE_CD").equals("2") && !infoLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고
return levyExclMapper.selectCvlcptAnsWordsInfo(ansRsnCd); throw new RuntimeException("단속 상태가 " + infoLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.");
} } else if (infoLevyExcl.string("LEVY_EXCL_SE_CD").equals("5") && !infoLevyExcl.string("CRDN_STTS_CD").equals("80")) { // 부과취소
throw new RuntimeException("단속 상태가 " + infoLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.");
}
/**(TB_CRDN_CVLCPT) , . // 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다.
* @param excl retSuccess = levyExclMapper.delete(levyExcl);
* @return if (!retSuccess) {
* <ul><li> true</li> // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
* <li> false</li> throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다.");
* </ul> }
*/
public boolean updateCrdnCvlcptPrcs(LevyExcl excl01) {
return levyExclMapper.updateCrdnCvlcptPrcs(excl01);
}
/**(TB_CRDN_CVLCPT) (CVLCPT_PRCS_RSLT_CN) . // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다.
* @param excl retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoLevyExcl.string("CRDN_ID"));
* @return if (!retSuccess) {
* <ul><li> true</li> // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
* <li> false</li> throw new RuntimeException("부과제외 삭제 중 단속상태 변경에 실패하였습니다.");
* </ul> }
*/
public boolean updateCvlcptPrcsRsltCn(LevyExcl excl01) {
return levyExclMapper.updateCvlcptPrcsRsltCn(excl01);
}
/**(TB_CRDN_CVLCPT) . // 부과제외 구분이 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
* @param excl if (infoLevyExcl.string("LEVY_EXCL_SE_CD").equals("1")) {
* @return // 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
* <ul><li> true</li> if (!infoLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
* <li> false</li> // 자동등록 자료만 민원답변 부분을 처리
* </ul> if (infoLevyExcl.string("CRDN_REG_SE_CD").equals("02")) {
*/ // 비부과(서손) 취소하는데, 단속민원 전송상태가 전송대상(01) 또는 전송미대상(03), 전송요청(04) 자료이면 초기상태(전송대상)로 되돌린다
public boolean updateCrdnCvlcpt(LevyExcl excl01) { if (infoLevyExcl.string("CVLCPT_TRSM_CD").equals("01")
return levyExclMapper.updateCrdnCvlcpt(excl01); || infoLevyExcl.string("CVLCPT_TRSM_CD").equals("03")
} || infoLevyExcl.string("CVLCPT_TRSM_CD").equals("04")) {
CrdnCvlcpt crdnCvlcpt = new CrdnCvlcpt();
/**(TB_CRDN) . crdnCvlcpt.setCvlcptLinkId(infoLevyExcl.string("CVLCPT_LINK_ID"));
* @param excl crdnCvlcpt.setCvlcptPrcsCd("00"); // 민원 처리 코드 - 00 접수
* @return crdnCvlcpt.setCvlcptPrcsSumry(""); // 민원 처리 요약
* <ul><li> true</li> crdnCvlcpt.setCvlcptPrcsRsltCn(""); // 민원 처리 결과 내용
* <li> false</li> crdnCvlcpt.setCvlcptPrcsCmptnDt(""); // 민원 처리 완료 일시
* </ul> crdnCvlcpt.setCvlcptPrcsPic(""); // 민원 처리 담당자
*/ crdnCvlcpt.setCvlcptTrsmCd("01"); // 민원 전송 코드 - 01 전송대상
public boolean updateParkngPsbltyRsltCd(LevyExcl excl01) {
return levyExclMapper.updateParkngPsbltyRsltCd(excl01);
}
/** . // 민원답변 정보 초기화
* @param crdnId ID retSuccess = levyExclMapper.updateCrdnCvlcpt(crdnCvlcpt);
* @return , if (!retSuccess) {
*/ // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
public DataObject selectSndngDtlInfo(String crdnId, String sndngRcvmtCd) { throw new RuntimeException("부과제외 삭제 중 민원답변 정보 초기화에 실패하였습니다.");
return levyExclMapper.selectSndngDtlInfo(crdnId, sndngRcvmtCd); }
} }
} // 자동등록 자료만 민원답변 부분을 처리
} // 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
/**(TB_SNDNG_DTL) . // 표지정보 확인여부가 조회미대상이면 -> 미확인 으로
* @param excl // 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니
* @return if (infoLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상
* <ul><li> true</li> Crdn crdn = new Crdn(); // 단속(TB_CRDN) 대장
* <li> false</li>
* </ul> crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID
*/ crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인
public boolean updateRcvmtCd(LevyExcl excl01) {
return levyExclMapper.updateRcvmtCd(excl01); retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
}
} // 부과제외 구분이 비부과(서손)일 경우
return true;
} }
} }

@ -1,19 +1,14 @@
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;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.excl.LevyExcl; import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.Excl01Service; import cokr.xit.fims.excl.service.Excl01Service;
import cokr.xit.foundation.UserInfo;
import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -34,10 +29,6 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
@Resource(name = "excl01Bean") @Resource(name = "excl01Bean")
protected Excl01Bean excl01Bean; protected Excl01Bean excl01Bean;
/** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
@Override @Override
public List<DataObject> getLevyExclList(ExclQuery req) { public List<DataObject> getLevyExclList(ExclQuery req) {
return excl01Bean.getLevyExclList(req); return excl01Bean.getLevyExclList(req);
@ -49,315 +40,18 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
} }
@Override @Override
public boolean createLevyExcl(LevyExcl excl01) { public boolean createLevyExcl(LevyExcl levyExcl) {
// 변수 선언 return excl01Bean.createLevyExcl(levyExcl);
boolean retSuccess = false; // DB 처리 결과
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
String newCvlcptPrcsCd = ""; // 신규 민원 처리 코드(CVLCPT_PRCS_CD)
String newCvlcptTrsmCd = ""; // 민원 전송 코드(CVLCPT_TRSM_CD)
// 단속 ID로 단속, 단속민원, 부과제외 정보 조회
DataObject infoCrdnLevyExcl = excl01Bean.getCrdnLevyExcl(excl01.getCrdnId());
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 정보가 이미 존재합니다.");
}
// 단속 상태 코드(CRDN_STTS_CD) 확인..
if (excl01.getLevyExclSeCd().equals("1") || excl01.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고
// 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고를 등록 할 수 없다. 종료..
if (Integer.parseInt(infoCrdnLevyExcl.string("CRDN_STTS_CD")) > 50) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
} else if (excl01.getLevyExclSeCd().equals("5")) {
// 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후...
if (Integer.parseInt(infoCrdnLevyExcl.string("CRDN_STTS_CD")) < 51) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
}
// 단속 상태 코드 설정.
if (excl01.getLevyExclSeCd().equals("1")) { // 비부과
newCrdnSttsCd = "81"; // 비부과(서손)
} else if (excl01.getLevyExclSeCd().equals("2")) { // 계고
newCrdnSttsCd = "83"; // 계고
} else if (excl01.getLevyExclSeCd().equals("5")) { // 전액감액
newCrdnSttsCd = "80"; // 부과취소
}
// 부과제외(TB_LEVY_EXCL) 대장을 등록 한다.
retSuccess = excl01Bean.createLevyExcl(excl01);
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(excl01.getLevyExclId());
crdnSttsHstry.setEtcCn("부과제외 대장 등록");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속상태코드 변경에 실패하였습니다.");
}
// 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
if (excl01.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) 대장
LevyExcl updtCrdnCvlcpt = new LevyExcl();
updtCrdnCvlcpt.setCvlcptLinkId(infoCrdnLevyExcl.string("CVLCPT_LINK_ID")); // 민원 연계 ID
// 답변내용을 초기화, 답변대상이었다가 답변내용보기를 했다가 서손처리하면 답변내용이 이미 세팅되어 있으므로 초기화해야 한다.
// 서손사유 수정시도 답변내용보기를 했을 수 있으므로 초기화해야 한다.
// 서손취소시도 답변내용이 부과 기본 내용으로 바꾸이야 하므로 초기화해야 한다.
// 단속민원 민원처리결과내용 수정
retSuccess = excl01Bean.updateCvlcptPrcsRsltCn(updtCrdnCvlcpt);
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 = excl01Bean.selectCvlcptAnsWordsInfo(excl01.getLevyExclRsnCd());
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면..
if (!infoCvlcptAnsWords.string("ANS_WORDS_ID").equals("")) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
} else {
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
// 현재 날짜 구하기
LocalDate now = LocalDate.now();
// 포맷 정의
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // yyyy년 MM월 dd일 HH시 mm분 ss초
// 포맷 적용
String formatedNow = now.format(formatter);
// 단속민원(TB_CRDN_CVLCPT) 대장을 수정 한다.
updtCrdnCvlcpt.setCvlcptPrcsCd(newCvlcptPrcsCd); // 민원 처리 코드
updtCrdnCvlcpt.setCvlcptPrcsSumry(infoCvlcptAnsWords.string("PRCS_SUMRY")); // 민원 처리 요약
updtCrdnCvlcpt.setCvlcptPrcsRsltCn(infoCvlcptAnsWords.string("PRCS_RSLT_CN")); // 민원 처리 결과 내용
updtCrdnCvlcpt.setCvlcptPrcsCmptnDt(formatedNow); // 민원 처리 완료 일시
updtCrdnCvlcpt.setCvlcptPrcsPic(UserInfo.current().getId()); // 민원 처리 담당자
updtCrdnCvlcpt.setCvlcptTrsmCd(newCvlcptTrsmCd); // 민원 전송 코드
// 단속민원 민원처리코드 수정
retSuccess = excl01Bean.updateCrdnCvlcpt(updtCrdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원답변 수정에 실패하였습니다.");
}
}
} // if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02"))
} // 단속민원ID가 있다면..
// 표지정보 확인여부가 미확인이면 -> 조회미대상 으로
if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("0")) {
// 단속(TB_CRDN) 대장
LevyExcl updtCrdn = new LevyExcl();
updtCrdn.setCrdnId(excl01.getCrdnId()); // 단속 ID
updtCrdn.setParkngPsbltyRsltCd("9"); // 주차 가능 결과 코드
retSuccess = excl01Bean.updateParkngPsbltyRsltCd(updtCrdn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속 대장의 표지정보확인여부 수정에 실패하였습니다.");
}
}
// 단속 ID로 발송 상세(TB_SNDNG_DTL) 대장 정보 조회
DataObject infoSndngDtl = excl01Bean.selectSndngDtlInfo(excl01.getCrdnId(), "1");
if (infoSndngDtl != null) {
// 발송 상세(TB_SNDNG_DTL) 대장
LevyExcl updtSndngDtl = new LevyExcl();
updtSndngDtl.setCrdnId(excl01.getCrdnId()); // 단속 ID
// 발송상세 수납코드를 수정
retSuccess = excl01Bean.updateRcvmtCd(updtSndngDtl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 발송상세 대장의 수납코드 수정에 실패하였습니다.");
}
}
// 계고
} else if (excl01.getLevyExclSeCd().equals("2")) {
// 전액감액
} else if (excl01.getLevyExclSeCd().equals("5")) {
// 부과(TB_LEVY)에 감액금액 입력이 필요..
}
return true;
} }
@Override @Override
public boolean updateLevyExcl(LevyExcl excl01) { public boolean updateLevyExcl(LevyExcl levyExcl) {
// 변수 선언 return excl01Bean.updateLevyExcl(levyExcl);
boolean retSuccess = false; // DB 처리 결과
String newCvlcptPrcsCd = ""; // 신규 민원 처리 코드(CVLCPT_PRCS_CD)
String newCvlcptTrsmCd = ""; // 민원 전송 코드(CVLCPT_TRSM_CD)
// 부과제외(TB_LEVY_EXCL) + 단속(TB_CRDN) 자료 조회
DataObject infoCrdnLevyExcl = excl01Bean.getLevyExclInfo(new ExclQuery().setLevyExclId(excl01.getLevyExclId()));
// 부과제외(TB_LEVY_EXCL) 대장을 수정 한다.
retSuccess = excl01Bean.updateLevyExcl(excl01);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 대장 수정에 실패하였습니다.");
}
// 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
if (excl01.getLevyExclSeCd().equals("1") ) {
// 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
// 단속 민원 대장
LevyExcl updtCrdnCvlcpt = new LevyExcl();
updtCrdnCvlcpt.setCrdnId(infoCrdnLevyExcl.string("CRDN_ID")); // 단속 ID
updtCrdnCvlcpt.setCvlcptLinkId(infoCrdnLevyExcl.string("CVLCPT_LINK_ID")); // 민원 연계 ID
// 답변대상이었다가 답변내용보기를 했다가 서손처리하면 답변내용이 이미 세팅되어 있으므로 초기화해야 한다.
// 서손사유 수정시도 답변내용보기를 했을 수 있으므로 초기화해야 한다.
// 서손취소시도 답변내용이 부과 기본 내용으로 바꾸이야 하므로 초기화해야 한다.
retSuccess = excl01Bean.updateCvlcptPrcsRsltCn(updtCrdnCvlcpt); // 단속민원 민원처리결과내용 초기화
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 수정 중 단속민원 대장의 민원처리결과내용 초기화에 실패하였습니다.");
}
// 자동등록 자료만..
if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02")) {
// 민원전송코드가 전송대상(01) 또는 전송미대상(03) 자료만 민원답변 부분을 처리
if (infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("01") || infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("03")) {
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
DataObject infoCvlcptAnsWords = excl01Bean.selectCvlcptAnsWordsInfo(excl01.getLevyExclRsnCd());
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면..
if (infoCvlcptAnsWords != null) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
// 답변 문구가 필요해 보임..
} else {
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
// 현재 날짜 구하기
LocalDate now = LocalDate.now();
// 포맷 정의
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // yyyy년 MM월 dd일 HH시 mm분 ss초
// 포맷 적용
String formatedNow = now.format(formatter);
// 단속민원(TB_CRDN_CVLCPT) 대장을 수정 한다.
updtCrdnCvlcpt.setCvlcptPrcsCd(newCvlcptPrcsCd); // 민원 처리 코드
updtCrdnCvlcpt.setCvlcptPrcsSumry(infoCvlcptAnsWords.string("PRCS_SUMRY")); // 민원 처리 요약
updtCrdnCvlcpt.setCvlcptPrcsRsltCn(infoCvlcptAnsWords.string("PRCS_RSLT_CN")); // 민원 처리 결과 내용
updtCrdnCvlcpt.setCvlcptPrcsCmptnDt(formatedNow); // 민원 처리 완료 일시
updtCrdnCvlcpt.setCvlcptPrcsPic(UserInfo.current().getId()); // 민원 처리 담당자
updtCrdnCvlcpt.setCvlcptTrsmCd(newCvlcptTrsmCd); // 민원 전송 코드
retSuccess = excl01Bean.updateCrdnCvlcpt(updtCrdnCvlcpt); // 단속민원 민원처리코드 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 민원처리코드 수정에 실패하였습니다.");
}
}
} // 자동등록 자료만..
} // 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
} // 비부과(서손)일 경우..
return true;
} }
@Override @Override
public boolean removeLevyExcl(LevyExcl excl01) { public boolean removeLevyExcl(LevyExcl levyExcl) {
// 변수 선언 return excl01Bean.removeLevyExcl(levyExcl);
boolean retSuccess = false; // DB 처리 결과
// 부과제외(TB_LEVY_EXCL) + 단속(TB_CRDN) 자료 조회
DataObject infoCrdnLevyExcl = excl01Bean.getLevyExclInfo(new ExclQuery().setLevyExclId(excl01.getLevyExclId()));
// 단속 상태 코드(CRDN_STTS_CD) 확인..
if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손)
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.");
} else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("2") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.");
} else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("5") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("80")) { // 부과취소
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다.");
}
// 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다.
retSuccess = excl01Bean.removeLevyExcl(excl01);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다.");
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다.
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnLevyExcl.string("CRDN_ID"));
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 삭제 중 단속상태 변경에 실패하였습니다.");
}
// 부과제외 구분이 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1")) {
// 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
// 자동등록 자료만 민원답변 부분을 처리
if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02")) {
// 비부과(서손) 취소하는데, 단속민원 전송상태가 전송대상(01) 또는 전송미대상(03), 전송요청(04) 자료이면 초기상태(전송대상)로 되돌린다
if (infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("01")
|| infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("03") || infoCrdnLevyExcl.string("CVLCPT_TRSM_CD").equals("04")) {
LevyExcl updtCrdnCvlcpt = new LevyExcl();
updtCrdnCvlcpt.setCvlcptLinkId(infoCrdnLevyExcl.string("CVLCPT_LINK_ID"));
updtCrdnCvlcpt.setCvlcptPrcsCd("00"); // 민원 처리 코드 - 00 접수
updtCrdnCvlcpt.setCvlcptTrsmCd("01"); // 민원 전송 코드 - 01 전송대상
retSuccess = excl01Bean.updateCrdnCvlcptPrcs(updtCrdnCvlcpt); // 민원답변 정보 초기화
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 삭제 중 민원답변 정보 초기화에 실패하였습니다.");
}
}
} // 자동등록 자료만 민원답변 부분을 처리
} // 단속민원(TB_CRDN_CVLCPT)에 자료가 있는지 확인
} // 부과제외 구분이 비부과(서손)일 경우
return true;
} }
@Override @Override
@ -372,13 +66,13 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
// 부과제외IDs 만큼 반복.. // 부과제외IDs 만큼 반복..
for (int iLoop = 0; iLoop < req.getLevyExclIDs().length; iLoop++) { for (int iLoop = 0; iLoop < req.getLevyExclIDs().length; iLoop++) {
LevyExcl infoLevyExcl = new LevyExcl(); // 부과제외(TB_LEVY_EXCL) LevyExcl levyExcl = new LevyExcl(); // 부과제외(TB_LEVY_EXCL)
infoLevyExcl.setLevyExclId(req.getLevyExclIDs()[iLoop]); // 부과제외 ID levyExcl.setLevyExclId(req.getLevyExclIDs()[iLoop]); // 부과제외 ID
infoLevyExcl.setDelRsn(req.getDelRsn()); // 삭제 사유 levyExcl.setDelRsn(req.getDelRsn()); // 삭제 사유
// 부과제외 삭제 호출 // 부과제외 삭제 호출
retSuccess = removeLevyExcl(infoLevyExcl); retSuccess = excl01Bean.removeLevyExcl(levyExcl);
if (!retSuccess) { if (!retSuccess) {
return retSuccess; return retSuccess;
} }

@ -7,6 +7,12 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.dao.OpnnSbmsnMapper; import cokr.xit.fims.excl.dao.OpnnSbmsnMapper;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
@ -29,6 +35,14 @@ public class Excl02Bean extends AbstractComponent {
@Resource(name = "opnnSbmsnMapper") @Resource(name = "opnnSbmsnMapper")
private OpnnSbmsnMapper opnnSbmsnMapper; private OpnnSbmsnMapper opnnSbmsnMapper;
/* 첨부파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
/** . /** .
* @param req * @param req
* @return * @return
@ -68,66 +82,238 @@ public class Excl02Bean extends AbstractComponent {
} }
/** . /** .
* @param excl02 * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean createOpnnSbmsn(OpnnSbmsn excl02) { public boolean createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
return opnnSbmsnMapper.insert(excl02); // 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 단속 ID로 단속, 의견제출 정보 조회
DataObject infoCrdnOpnnSbmsn = getCrdnOpnnSbmsn(opnnSbmsn.getCrdnId());
// 의견제출ID가 있다면 이미 자료가 존재하므로 종료..
if (!infoCrdnOpnnSbmsn.string("OPNN_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장에 정보가 이미 존재합니다.");
}
// 의견제출 대장 필수값 입력
opnnSbmsn.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수
// 의견제출 대장을 등록 한다.
retSuccess = opnnSbmsnMapper.insert(opnnSbmsn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다.");
}
// 의견제출 파일 첨부하기
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE).setInfoKey(opnnSbmsn.getOpnnId()));
fileBean.create(fileInfoList);
}
// 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견진술중으로 수정 한다.
if (Integer.parseInt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD")) <= 42) { // 사전통보 완료
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견진술 접수
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 대장 등록");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 등록 중 단속상태코드 변경에 실패하였습니다.");
}
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("Y");
retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 등록 중 의견제출여부 변경에 실패하였습니다.");
}
return true;
} }
/** . /** .
* @param excl02 * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean updateOpnnSbmsn(OpnnSbmsn excl02) { public boolean updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
return opnnSbmsnMapper.update(excl02); // 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 의견제출 첨부파일 등록
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKey(opnnSbmsn.getOpnnId()));
// 파일 등록
fileBean.create(fileInfoList);
// 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKeys(opnnSbmsn.getOpnnId()).setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
}
// 의견제출 대장을 수정 한다.
retSuccess = opnnSbmsnMapper.update(opnnSbmsn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다.");
}
return true;
} }
/** . /** () .
* @param excl02 * @param opnnSbmsn
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean removeOpnnSbmsn(OpnnSbmsn excl02) { public boolean updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.delete(excl02); // 변수 선언
} boolean retSuccess = false; // DB 처리 결과
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
/** . // 의견제출(TB_OPNN_SBMSN) 자료 조회
* @param crdnId ID DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(opnnSbmsn.getOpnnId());
* @return ,
*/ // 수납 또는 취소된 자료를 의견진술 수용할 수 없다
public DataObject getCrdnOpnnSbmsn(String crdnId) { if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() >= 71) {
return opnnSbmsnMapper.selectCrdnInfo(crdnId); // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException(infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 자료는 의견진술 수용으로 처리할 수 없습니다.");
}
// 의견제출 답변을 수정 한다.
retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장의 답변 수정에 실패하였습니다.");
}
// 의견제출 처리 결과가 과태료감경(04) 이라면.. 감경 등록이 필요하다.. 2023.08.16 JoJH
// 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면..
if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) {
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용
newCrdnSttsCd = "82"; // 의견진술 수용으로 변경
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03")) { // 미수용, 자진취하
newCrdnSttsCd = infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"); // 이전 단속상태코드 유지
}
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 답변 수정");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 답변 수정 중 단속상태코드 변경에 실패하였습니다.");
}
}
return true;
} }
/** (OPNN_SBMSN_YN) . /** .
* @param excl02 * @param excl02
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public boolean updateCrdn(OpnnSbmsn excl02) { public boolean removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.updateCrdn(excl02); // 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(opnnSbmsn.getOpnnId());
// 단속 상태 코드가 의견진술 접수(31) 또는 의견진술 수용(82) 이라면... 이전 단속 상태 코드로 복원 한다.
if (infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") || infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다.
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnOpnnSbmsn.string("CRDN_ID"));
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 삭제 중 단속상태 변경에 실패하였습니다.");
}
}
// 첨부파일 삭제
String[] deleteFiles = {opnnSbmsn.getOpnnId()};
fileBean.remove(OpnnSbmsn.INF_TYPE, deleteFiles);
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다.
retSuccess = opnnSbmsnMapper.delete(opnnSbmsn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다.");
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("N");
retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 삭제 중 의견제출여부 변경에 실패하였습니다.");
}
return true;
} }
/** () . /** .
* @param excl02 * @param crdnId ID
* @return * @return ,
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/ */
public boolean updateOpnnSbmsnAnswer(OpnnSbmsn excl02) { public DataObject getCrdnOpnnSbmsn(String crdnId) {
return opnnSbmsnMapper.updateOpnnSbmsnAnswer(excl02); return opnnSbmsnMapper.selectCrdnInfo(crdnId);
} }
} }

@ -7,10 +7,6 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.Excl02Service; import cokr.xit.fims.excl.service.Excl02Service;
@ -34,14 +30,6 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv
@Resource(name = "excl02Bean") @Resource(name = "excl02Bean")
protected Excl02Bean excl02Bean; protected Excl02Bean excl02Bean;
/* 첨부파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
@Override @Override
public List<DataObject> getOpnnSbmsnList(ExclQuery req) { public List<DataObject> getOpnnSbmsnList(ExclQuery req) {
return excl02Bean.getOpnnSbmsnList(req); return excl02Bean.getOpnnSbmsnList(req);
@ -66,148 +54,23 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv
} }
@Override @Override
public boolean createOpnnSbmsn(OpnnSbmsn excl02, List<FileInfo> fileInfoList) { public boolean createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언 return excl02Bean.createOpnnSbmsn(opnnSbmsn, fileInfoList);
boolean retSuccess = false; // DB 처리 결과
// 단속 ID로 단속, 의견제출 정보 조회
DataObject infoCrdnOpnnSbmsn = excl02Bean.getCrdnOpnnSbmsn(excl02.getCrdnId());
// 의견제출ID가 있다면 이미 자료가 존재하므로 종료..
if (!infoCrdnOpnnSbmsn.string("OPNN_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장에 정보가 이미 존재합니다.");
}
excl02.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수
// 의견제출 대장을 등록 한다.
retSuccess = excl02Bean.createOpnnSbmsn(excl02);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다.");
}
// 의견제출 파일 첨부하기
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE).setInfoKey(excl02.getOpnnId()));
fileBean.create(fileInfoList);
}
// 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견진술중으로 수정 한다.
if (Integer.parseInt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD")) <= 42) { // 사전통보 완료
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견진술 접수
crdnSttsHstry.setTaskDtlId(excl02.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 대장 등록");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 등록 중 단속상태코드 변경에 실패하였습니다.");
}
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
OpnnSbmsn updtCrdn = new OpnnSbmsn();
updtCrdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
updtCrdn.setOpnnSbmsnYn("Y");
retSuccess = excl02Bean.updateCrdn(updtCrdn); // 단속 대장 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 등록 중 의견제출여부 변경에 실패하였습니다.");
}
return true;
} }
@Override @Override
public boolean updateOpnnSbmsn(OpnnSbmsn excl02, List<FileInfo> fileInfoList) { public boolean updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언 return excl02Bean.updateOpnnSbmsn(opnnSbmsn, fileInfoList);
boolean retSuccess = false; // DB 처리 결과
// 의견제출 첨부파일 등록
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE).setInfoKey(excl02.getOpnnId()));
fileBean.create(fileInfoList); // 파일 등록
// 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE).setInfoKeys(excl02.getOpnnId()).setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
}
// 의견제출 대장을 수정 한다.
retSuccess = excl02Bean.updateOpnnSbmsn(excl02);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다.");
}
return true;
} }
@Override @Override
public boolean removeOpnnSbmsn(OpnnSbmsn excl02) { public boolean updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
// 변수 선언 return excl02Bean.updateOpnnSbmsnAnswer(opnnSbmsn);
boolean retSuccess = false; // DB 처리 결과 }
// 의견제출(TB_OPNN_SBMSN) + 단속(TB_CRDN) 자료 조회
DataObject infoCrdnOpnnSbmsn = excl02Bean.getOpnnSbmsnInfo(new ExclQuery().setOpnnId(excl02.getOpnnId()));
// 단속 상태 코드가 의견진술 접수(31) 또는 의견진술 수용(82) 이라면... 이전 단속 상태 코드로 복원 한다.
if (infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") || infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다.
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnOpnnSbmsn.string("CRDN_ID"));
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 삭제 중 단속상태 변경에 실패하였습니다.");
}
}
// 첨부파일 삭제
String[] deleteFiles = {excl02.getOpnnId()};
fileBean.remove(OpnnSbmsn.INF_TYPE, deleteFiles);
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다.
retSuccess = excl02Bean.removeOpnnSbmsn(excl02);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다.");
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
OpnnSbmsn updtCrdn = new OpnnSbmsn();
updtCrdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
updtCrdn.setOpnnSbmsnYn("N");
retSuccess = excl02Bean.updateCrdn(updtCrdn); // 단속 대장 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 삭제 중 의견제출여부 변경에 실패하였습니다.");
}
return true; @Override
public boolean removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return excl02Bean.removeOpnnSbmsn(opnnSbmsn);
} }
@Override @Override
@ -222,13 +85,13 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv
// 의견제출IDs 만큼 반복.. // 의견제출IDs 만큼 반복..
for (int iLoop = 0; iLoop < req.getOpnnIDs().length; iLoop++) { for (int iLoop = 0; iLoop < req.getOpnnIDs().length; iLoop++) {
OpnnSbmsn infoOpnnSbmsn = new OpnnSbmsn(); OpnnSbmsn opnnSbmsn = new OpnnSbmsn();
infoOpnnSbmsn.setOpnnId(req.getOpnnIDs()[iLoop]); // 의견제출 ID opnnSbmsn.setOpnnId(req.getOpnnIDs()[iLoop]); // 의견제출 ID
infoOpnnSbmsn.setDelRsn(req.getDelRsn()); // 삭제 사유 opnnSbmsn.setDelRsn(req.getDelRsn()); // 삭제 사유
// 의견제출 삭제 호출 // 의견제출 삭제 호출
retSuccess = removeOpnnSbmsn(infoOpnnSbmsn); retSuccess = excl02Bean.removeOpnnSbmsn(opnnSbmsn);
if (!retSuccess) { if (!retSuccess) {
return retSuccess; return retSuccess;
} }
@ -237,58 +100,4 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv
return true; return true;
} }
@Override
public boolean updateOpnnSbmsnAnswer(OpnnSbmsn excl02) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
// 의견제출(TB_OPNN_SBMSN) + 단속(TB_CRDN) 자료 조회
DataObject infoCrdnOpnnSbmsn = excl02Bean.getOpnnSbmsnInfo(new ExclQuery().setOpnnId(excl02.getOpnnId()));
// 수납 또는 취소된 자료를 의견진술 수용할 수 없다
if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() >= 71) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException(infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 자료는 의견진술 수용으로 처리할 수 없습니다.");
}
// 의견제출 답변을 수정 한다.
retSuccess = excl02Bean.updateOpnnSbmsnAnswer(excl02);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장의 답변 수정에 실패하였습니다.");
}
// 의견제출 처리 결과가 과태료감경(04) 이라면.. 감경 등록이 필요하다.. 2023.08.16 JoJH
// 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면..
if (!excl02.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) {
if (excl02.getOpnnSbmsnSttsCd().equals("02")) { // 수용
newCrdnSttsCd = "82"; // 의견진술 수용으로 변경
} else if (excl02.getOpnnSbmsnSttsCd().equals("01") || excl02.getOpnnSbmsnSttsCd().equals("03")) { // 미수용, 자진취하
newCrdnSttsCd = infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"); // 이전 단속상태코드 유지
}
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(excl02.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 답변 수정");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 답변 수정 중 단속상태코드 변경에 실패하였습니다.");
}
}
return true;
}
} }

@ -193,14 +193,14 @@ public class Excl02Controller extends ApplicationController {
.addObject("saved", saved); .addObject("saved", saved);
} }
/** ID . /** ID .
* @param opnnId ID * @param opnnId ID
* @return fims/excl/excl02030-info jsonView * @return fims/excl/excl02030-info jsonView
* <pre>{ * <pre>{
* "opnnSbmsnSttsInfo": * "opnnSbmsnSttsInfo":
* }</pre> * }</pre>
*/ */
@RequestMapping(name = "의견제출 결과 처리 조회", value = "/030/info.do") @RequestMapping(name = "의견제출 심의 결과 처리 조회", value = "/030/info.do")
public ModelAndView getOpnnSbmsnSttsInfo(ExclQuery req) { public ModelAndView getOpnnSbmsnSttsInfo(ExclQuery req) {
DataObject opnnSbmsnInfo = excl02Service.getOpnnSbmsnInfo(req); DataObject opnnSbmsnInfo = excl02Service.getOpnnSbmsnInfo(req);

@ -26,6 +26,9 @@ public class Sndb01Query extends QueryRequest {
private String sndngId; // 발송 ID private String sndngId; // 발송 ID
private String[] sndngDtlIDs; // 발송 상세 IDs private String[] sndngDtlIDs; // 발송 상세 IDs
private String sndngDtlId; // 발송 상세 ID private String sndngDtlId; // 발송 상세 ID
// ETC
private String callPurpose; // 호출용도 필요시 사용(select, create, update)
private String delRsn; // 삭제 사유
public String getSggCd() { public String getSggCd() {
return ifEmpty(sggCd, () -> null); return ifEmpty(sggCd, () -> null);
@ -107,4 +110,25 @@ public class Sndb01Query extends QueryRequest {
return self(); return self();
} }
// ETC /////////////////////////////////////////////////////////////////////
public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null);
}
public <T extends Sndb01Query> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
public String getDelRsn() {
return ifEmpty(delRsn, () -> null);
}
public <T extends Sndb01Query> T setDelRsn(String delRsn) {
this.delRsn = delRsn;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////
} }

@ -6,13 +6,47 @@ public class SprtQuery extends QueryRequest {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
// 필수조건
private String sggCd; // 시군구 코드
private String taskSeCd; // 업무 구분 코드
private String delYn; // 삭제 여부
// ID // ID
private String crdnId; // 단속 ID private String crdnId; // 단속 ID
private String opnnId; // 의견 ID private String opnnId; // 의견 ID
// ETC // ETC
private String delYn; // 삭제 여부 private String callPurpose; // 호출용도 필요시 사용(select, create, update)
private String delRsn; // 삭제 사유 private String delRsn; // 삭제 사유
public String getSggCd() {
return ifEmpty(sggCd, () -> null);
}
public <T extends SprtQuery> T setSggCd(String sggCd) {
this.sggCd = sggCd;
return self();
}
public String getTaskSeCd() {
return ifEmpty(taskSeCd, () -> null);
}
public <T extends SprtQuery> T setTaskSeCd(String taskSeCd) {
this.taskSeCd = taskSeCd;
return self();
}
public String getDelYn() {
return ifEmpty(delYn, () -> null);
}
public <T extends SprtQuery> T setDelYn(String delYn) {
this.delYn = delYn;
return self();
}
public String getCrdnId() { public String getCrdnId() {
return ifEmpty(crdnId, () -> null); return ifEmpty(crdnId, () -> null);
} }
@ -34,12 +68,12 @@ public class SprtQuery extends QueryRequest {
} }
// ETC ///////////////////////////////////////////////////////////////////// // ETC /////////////////////////////////////////////////////////////////////
public String getDelYn() { public String getCallPurpose() {
return ifEmpty(delYn, () -> null); return ifEmpty(callPurpose, () -> null);
} }
public <T extends SprtQuery> T setDelYn(String delYn) { public <T extends SprtQuery> T setCallPurpose(String callPurpose) {
this.delYn = delYn; this.callPurpose = callPurpose;
return self(); return self();
} }

@ -1,7 +1,5 @@
package cokr.xit.fims.sprt.dao; package cokr.xit.fims.sprt.dao;
import java.util.List;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper; import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.SprtQuery;
@ -25,18 +23,12 @@ public interface Sprt02Mapper extends AbstractMapper {
* @param crdnId ID * @param crdnId ID
* @return * @return
*/ */
DataObject selectCrdnInfo(String crdnId); DataObject selectCrdnInfo(SprtQuery req);
/** ID , , . /** ID , , .
* @param crdnId * @param crdnId
* @return , , * @return , ,
*/ */
List<DataObject> selectCrdnPayerInfo(SprtQuery req); DataObject selectCrdnPayerInfo(SprtQuery req);
default DataObject selectCrdnPayerInfo(String crdnId) {
List<DataObject> crdnPayer = selectCrdnPayerInfo(new SprtQuery().setCrdnId(crdnId));
return !crdnPayer.isEmpty() ? crdnPayer.get(0) : null;
}
} }

@ -1,5 +1,6 @@
package cokr.xit.fims.sprt.service; package cokr.xit.fims.sprt.service;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
/** . /** .
@ -13,24 +14,24 @@ public interface Sprt02Service {
* @param crdnId ID * @param crdnId ID
* @return * @return
*/ */
DataObject getCrdnInfo(String crdnId); DataObject getCrdnInfo(SprtQuery req);
/** ID , , . /** ID , , .
* @param crdnId ID * @param crdnId ID
* @return , , * @return , ,
*/ */
DataObject getCrdnPayerInfo(String crdnId); DataObject getCrdnPayerInfo(SprtQuery req);
/** ID . /** ID .
* @param crdnId ID * @param crdnId ID
* @return * @return
*/ */
DataObject getOpnnSbmsnInfo(String crdnId); DataObject getOpnnSbmsnInfo(SprtQuery req);
/** ID . /** ID .
* @param crdnId ID * @param crdnId ID
* @return * @return
*/ */
DataObject getSndngInfo(String crdnId); DataObject getSndngInfo(SprtQuery req);
} }

@ -4,6 +4,7 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.dao.Sprt02Mapper; import cokr.xit.fims.sprt.dao.Sprt02Mapper;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -21,16 +22,16 @@ public class Sprt02Bean extends AbstractComponent {
* @param crdnId * @param crdnId
* @return * @return
*/ */
public DataObject getCrdnInfo(String crdnId) { public DataObject getCrdnInfo(SprtQuery req) {
return sprt02Mapper.selectCrdnInfo(crdnId); return sprt02Mapper.selectCrdnInfo(req);
} }
/** ID , , . /** ID , , .
* @param crdnId ID * @param crdnId ID
* @return , , * @return , ,
*/ */
public DataObject getCrdnPayerInfo(String crdnId) { public DataObject getCrdnPayerInfo(SprtQuery req) {
return sprt02Mapper.selectCrdnPayerInfo(crdnId); return sprt02Mapper.selectCrdnPayerInfo(req);
} }
} }

@ -8,6 +8,7 @@ import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.bean.Excl02Bean; import cokr.xit.fims.excl.service.bean.Excl02Bean;
import cokr.xit.fims.sndb.Sndb01Query; import cokr.xit.fims.sndb.Sndb01Query;
import cokr.xit.fims.sndb.service.bean.Sndb01Bean; import cokr.xit.fims.sndb.service.bean.Sndb01Bean;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.service.Sprt02Service; import cokr.xit.fims.sprt.service.Sprt02Service;
import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -31,27 +32,39 @@ public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Serv
private Sndb01Bean sndb01Bean; private Sndb01Bean sndb01Bean;
@Override @Override
public DataObject getCrdnInfo(String crdnId) { public DataObject getCrdnInfo(SprtQuery req) {
return sprt02Bean.getCrdnInfo(crdnId); return sprt02Bean.getCrdnInfo(req);
} }
@Override @Override
public DataObject getCrdnPayerInfo(String crdnId) { public DataObject getCrdnPayerInfo(SprtQuery req) {
return sprt02Bean.getCrdnPayerInfo(crdnId); return sprt02Bean.getCrdnPayerInfo(req);
} }
@Override @Override
public DataObject getOpnnSbmsnInfo(String crdnId) { public DataObject getOpnnSbmsnInfo(SprtQuery req) {
return excl02Bean.getOpnnSbmsnInfo(new ExclQuery().setCallPurpose("select") ExclQuery exclQuery = new ExclQuery();
.setCrdnId(crdnId));
exclQuery.setCallPurpose(req.getCallPurpose());
exclQuery.setCrdnId(req.getCrdnId());
return excl02Bean.getOpnnSbmsnInfo(exclQuery);
} }
@Override @Override
public DataObject getSndngInfo(String crdnId) { public DataObject getSndngInfo(SprtQuery req) {
return excl02Bean.getOpnnSbmsnInfo(new ExclQuery().setCallPurpose("select") // Sndb01Query sndb01Query = new Sndb01Query();
.setCrdnId(crdnId)); //
// sndb01Query.setCallPurpose(req.getCallPurpose());
// sndb01Query.setCrdnId(req.getCrdnId());
//
// return sndb01Bean.getSndngInfo(sndb01Query);
ExclQuery exclQuery = new ExclQuery();
exclQuery.setCallPurpose(req.getCallPurpose());
exclQuery.setCrdnId(req.getCrdnId());
// return sndb01Bean.getSndngInfo(new SndbQuery().setCrdnId(crdnId)); return excl02Bean.getOpnnSbmsnInfo(exclQuery);
} }
} }

@ -4,6 +4,8 @@ import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.service.Sprt02Service; import cokr.xit.fims.sprt.service.Sprt02Service;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
import cokr.xit.base.web.ApplicationController; import cokr.xit.base.web.ApplicationController;
@ -26,8 +28,8 @@ public class Sprt02Controller extends ApplicationController {
/** (sprt/sprt02/010-main) . /** (sprt/sprt02/010-main) .
* @return /sprt/sprt02/010-main * @return /sprt/sprt02/010-main
*/ */
public ModelAndView indivTotalInfoMain(String crdnId) { public ModelAndView indivTotalInfoMain(SprtQuery req) {
DataObject totalInfo = sprt02Service.getCrdnInfo(crdnId); DataObject totalInfo = sprt02Service.getCrdnInfo(req);
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -47,8 +49,8 @@ public class Sprt02Controller extends ApplicationController {
* }</code></pre> * }</code></pre>
*/ */
@RequestMapping(name="단속, 납부자 정보 조회", value="/020/info.do") @RequestMapping(name="단속, 납부자 정보 조회", value="/020/info.do")
public ModelAndView getCrdnPayerInfo(String crdnId) { public ModelAndView getCrdnPayerInfo(SprtQuery req) {
DataObject crdnPayerInfo = sprt02Service.getCrdnPayerInfo(crdnId); DataObject crdnPayerInfo = sprt02Service.getCrdnPayerInfo(req);
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -68,8 +70,8 @@ public class Sprt02Controller extends ApplicationController {
* }</code></pre> * }</code></pre>
*/ */
@RequestMapping(name="의견제출 정보 조회", value="/030/info.do") @RequestMapping(name="의견제출 정보 조회", value="/030/info.do")
public ModelAndView getOpnnSbmsnInfo(String crdnId) { public ModelAndView getOpnnSbmsnInfo(SprtQuery req) {
DataObject opnnSbmsnInfo = sprt02Service.getOpnnSbmsnInfo(crdnId); DataObject opnnSbmsnInfo = sprt02Service.getOpnnSbmsnInfo(req);
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -89,8 +91,8 @@ public class Sprt02Controller extends ApplicationController {
* }</code></pre> * }</code></pre>
*/ */
@RequestMapping(name="발송 정보 조회", value="/040/info.do") @RequestMapping(name="발송 정보 조회", value="/040/info.do")
public ModelAndView getSndngInfo(String crdnId) { public ModelAndView getSndngInfo(SprtQuery req) {
DataObject sndngInfo = sprt02Service.getSndngInfo(crdnId); DataObject sndngInfo = sprt02Service.getSndngInfo(req);
boolean json = jsonResponse(); boolean json = jsonResponse();

@ -5,6 +5,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import cokr.xit.fims.sprt.SprtQuery;
@Controller @Controller
public class CmnController { public class CmnController {
@ -202,8 +204,8 @@ public class CmnController {
*/ */
@Override @Override
@RequestMapping(name="개별총정보 메인", value="/010/main.do") @RequestMapping(name="개별총정보 메인", value="/010/main.do")
public ModelAndView indivTotalInfoMain(String crdnId) { public ModelAndView indivTotalInfoMain(SprtQuery req) {
return super.indivTotalInfoMain(crdnId); return super.indivTotalInfoMain(req);
} }
} }

@ -30,101 +30,105 @@
</resultMap> </resultMap>
<sql id="selectList"> <sql id="selectList">
SELECT A.LEVY_EXCL_ID /* 부과제외 ID */ SELECT LE.LEVY_EXCL_ID /* 부과제외 ID */
, A.SGG_CD /* 시군구 코드 */ , LE.SGG_CD /* 시군구 코드 */
, A.TASK_SE_CD /* 업무 구분 코드 */ , LE.TASK_SE_CD /* 업무 구분 코드 */
, A.CRDN_ID /* 단속 ID */ , LE.CRDN_ID /* 단속 ID */
, A.LEVY_EXCL_YMD /* 부과제외 일자 */ , LE.LEVY_EXCL_YMD /* 부과제외 일자 */
, A.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */ , LE.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM021', A.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */ , (SELECT FN_GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */
, A.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */ , LE.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */
, (SELECT FN_GET_CODE_NM('FIM022', A.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */ , (SELECT FN_GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */
, A.ETC_CN /* 기타 내용 */ , LE.ETC_CN /* 기타 내용 */
, A.DEL_YN /* 삭제 여부 */ , LE.DEL_YN /* 삭제 여부 */
, A.REG_DT /* 등록 일시 */ , LE.REG_DT /* 등록 일시 */
, A.RGTR /* 등록자 */ , LE.RGTR /* 등록자 */
, A.MDFCN_DT /* 수정 일시 */ , LE.MDFCN_DT /* 수정 일시 */
, A.MDFR /* 수정자 */ , LE.MDFR /* 수정자 */
, A.DEL_DT /* 삭제 일시 */ , LE.DEL_DT /* 삭제 일시 */
, A.DLTR /* 삭제자 */ , LE.DLTR /* 삭제자 */
, A.DEL_RSN /* 삭제 사유 */ , LE.DEL_RSN /* 삭제 사유 */
, H.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */ , C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM026', H.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */ , (SELECT FN_GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */
, H.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */ , C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM003', H.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */ , (SELECT FN_GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */
, H.CRDN_YMD /* 단속 일자 */ , C.CRDN_YMD /* 단속 일자 */
, H.CRDN_TM /* 단속 시각 */ , C.CRDN_TM /* 단속 시각 */
, (CONCAT(H.CRDN_YMD, H.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */ , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, H.VHRNO /* 차량번호 */ , C.VHRNO /* 차량번호 */
, H.CRDN_STDG_NM /* 단속 법정동 명 */ , C.CRDN_STDG_NM /* 단속 법정동 명 */
, H.CRDN_ROAD_NM /* 단속 도로 명 */ , C.CRDN_ROAD_NM /* 단속 도로 명 */
, H.CRDN_PLC /* 단속 장소 */ , C.CRDN_PLC /* 단속 장소 */
, H.FFNLG_CRDN_AMT /* 과태료 단속 금액 */ , C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, H.FFNLG_AMT /* 과태료 금액 */ , C.FFNLG_AMT /* 과태료 금액 */
, H.CRDN_STTS_CD /* 단속 상태 코드 */ , C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', H.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 /* 단속 상태 명 */
, J.RTPYR_ID /* 납부자 ID */ , CA.CRDN_SE_CD /* 단속 구분 코드 */
, J.RTPYR_SE_CD /* 납부자 구분 코드 */ , (SELECT FN_GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */
, (SELECT FN_GET_CODE_NM('FIM011', J.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */ , CA.PARKNG_PSBLTY_RSLT_CD /* 주차 가능 결과 코드 */
, J.RTPYR_NO /* 납부자 번호 */ , (SELECT FN_GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM/* 단속 구분 명 */
, J.RTPYR_NM /* 납부자 명 */ , P.RTPYR_ID /* 납부자 ID */
, J.RTPYR_BRDT /* 납부자 생년월일 */ , P.RTPYR_SE_CD /* 납부자 구분 코드 */
, (SELECT FN_GET_BRDT_FORMAT(J.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_FORMAT /* 납부자 생년월일 */ , (SELECT FN_GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */
, J.ZIP /* 우편번호 */ , P.RTPYR_NO /* 납부자 번호 */
, J.ADDR /* 주소 */ , P.RTPYR_NM /* 납부자 명 */
, J.DTL_ADDR /* 상세 주소 */ , P.RTPYR_BRDT /* 납부자 생년월일 */
, K.CVLCPT_LINK_ID /* 민원 연계 ID */ , (SELECT FN_GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_FORMAT /* 납부자 생년월일 */
, K.CVLCPT_RCPT_YMD /* 민원 접수 일자 */ , P.ZIP /* 우편번호 */
, K.CVLCPT_APLY_NO /* 민원 신청 번호 */ , P.ADDR /* 주소 */
, K.CVLCPT_RCPT_NO /* 민원 접수 번호 */ , P.DTL_ADDR /* 상세 주소 */
FROM TB_LEVY_EXCL A , CC.CVLCPT_LINK_ID /* 민원 연계 ID */
INNER JOIN TB_CRDN H ON (A.CRDN_ID = H.CRDN_ID) , CC.CVLCPT_RCPT_YMD /* 민원 접수 일자 */
INNER JOIN TB_CRDN_ADI I ON (H.CRDN_ID = I.CRDN_ID) , CC.CVLCPT_APLY_NO /* 민원 신청 번호 */
LEFT OUTER JOIN TB_PAYER J ON (H.RTPYR_ID = J.RTPYR_ID) , CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */
LEFT OUTER JOIN TB_CRDN_CVLCPT K ON (H.LINK_ID = K.CVLCPT_LINK_ID AND H.CVLCPT_LINK_YN = 'Y' AND K.DEL_YN = 'N') FROM TB_LEVY_EXCL LE
INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_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')
</sql> </sql>
<select id="selectLevyExclList" parameterType="map" resultType="dataobject">/* 부과제외 대장 목록 조회(excl01Mapper.selectLevyExclList) */ <select id="selectLevyExclList" parameterType="map" resultType="dataobject">/* 부과제외 대장 목록 조회(levyExclMapper.selectLevyExclList) */
<include refid="utility.paging-prefix" /> <include refid="utility.paging-prefix" />
<include refid="selectList" /> <include refid="selectList" />
WHERE H.SGG_CD = #{sggCd} /* 시군구 코드 */ WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
AND H.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */ AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
<if test="schLevyExclYmdFrom != null"> <if test="schLevyExclYmdFrom != null">
AND A.LEVY_EXCL_YMD <![CDATA[ >= ]]> #{schLevyExclYmdFrom} /* 부과제외 일자 시작 */ AND LE.LEVY_EXCL_YMD <![CDATA[ >= ]]> #{schLevyExclYmdFrom} /* 부과제외 일자 시작 */
</if> </if>
<if test="schLevyExclYmdTo != null"> <if test="schLevyExclYmdTo != null">
AND A.LEVY_EXCL_YMD <![CDATA[ <= ]]> #{schLevyExclYmdTo} /* 부과제외 일자 종료 */ AND LE.LEVY_EXCL_YMD <![CDATA[ <= ]]> #{schLevyExclYmdTo} /* 부과제외 일자 종료 */
</if>
<if test="schLevyExclSeCd != null">
AND LE.LEVY_EXCL_SE_CD = #{schLevyExclSeCd} /* 부과 제외 구분 코드 */
</if> </if>
<if test="schCrdnYmdFrom != null"> <if test="schCrdnYmdFrom != null">
AND H.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} /* 단속 일자 시작 */ AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} /* 단속 일자 시작 */
</if> </if>
<if test="schCrdnYmdTo != null"> <if test="schCrdnYmdTo != null">
AND H.CRDN_YMD <![CDATA[ <= ]]> #{schCrdnYmdTo} /* 단속 일자 종료 */ AND C.CRDN_YMD <![CDATA[ <= ]]> #{schCrdnYmdTo} /* 단속 일자 종료 */
</if>
<if test="schLevyExclSeCd != null">
AND A.LEVY_EXCL_SE_CD = #{schLevyExclSeCd} /* 부과 제외 구분 코드 */
</if> </if>
<if test="schVhrno != null"> <if test="schVhrno != null">
AND H.VHRNO = #{schVhrno} /* 차량번호 */ AND C.VHRNO = #{schVhrno} /* 차량번호 */
</if> </if>
<if test="schRtpyrNm != null"> <if test="schRtpyrNm != null">
AND J.RTPYR_NM = #{schRtpyrNm} /* 납부자 명 */ AND P.RTPYR_NM = #{schRtpyrNm} /* 납부자 명 */
</if> </if>
<choose> <choose>
<when test="schRegDateOpt == 'regDt'"> <when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null"> <if test="schRegDateFrom != null">
AND SUBSTR(A.REG_DT,1,8) <![CDATA[ >= ]]> #{schRegDateFrom} /* 등록 일자 시작 */ AND SUBSTR(LE.REG_DT,1,8) <![CDATA[ >= ]]> #{schRegDateFrom} /* 등록 일자 시작 */
</if> </if>
<if test="schRegDateTo != null"> <if test="schRegDateTo != null">
AND SUBSTR(A.REG_DT,1,8) <![CDATA[ <= ]]> #{schRegDateTo} /* 등록 일자 종료 */ AND SUBSTR(LE.REG_DT,1,8) <![CDATA[ <= ]]> #{schRegDateTo} /* 등록 일자 종료 */
</if> </if>
</when> </when>
<when test="schRegDateOpt == 'mdfcnDt'"> <when test="schRegDateOpt == 'mdfcnDt'">
<if test="schRegDateFrom != null"> <if test="schRegDateFrom != null">
AND SUBSTR(A.MDFCN_DT,1,8) <![CDATA[ >= ]]> #{schRegDateFrom} /* 수정 일자 시작 */ AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[ >= ]]> #{schRegDateFrom} /* 수정 일자 시작 */
</if> </if>
<if test="schRegDateTo != null"> <if test="schRegDateTo != null">
AND SUBSTR(A.MDFCN_DT,1,8) <![CDATA[ <= ]]> #{schRegDateTo} /* 수정 일자 종료 */ AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[ <= ]]> #{schRegDateTo} /* 수정 일자 종료 */
</if> </if>
</when> </when>
<otherwise> <otherwise>
@ -133,12 +137,12 @@
<choose> <choose>
<when test="schDetailUserOpt == 'rgtr'"> <when test="schDetailUserOpt == 'rgtr'">
<if test="schDetailUserCd != null"> <if test="schDetailUserCd != null">
AND A.RGTR = #{schDetailUserCd} /* 등록자 코드 */ AND LE.RGTR = #{schDetailUserCd} /* 등록자 코드 */
</if> </if>
</when> </when>
<when test="schDetailUserOpt == 'mdfr'"> <when test="schDetailUserOpt == 'mdfr'">
<if test="schDetailUserCd != null"> <if test="schDetailUserCd != null">
AND A.MDFR = #{schDetailUserCd} /* 수정자 코드 */ AND LE.MDFR = #{schDetailUserCd} /* 수정자 코드 */
</if> </if>
</when> </when>
<otherwise> <otherwise>
@ -149,20 +153,20 @@
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'"> <when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" /> <include refid="dynamicSearch.start" />
<choose> <choose>
<when test="by == 'levyExclYmd'"> A.LEVY_EXCL_YMD </when> <when test="by == 'levyExclYmd'"> LE.LEVY_EXCL_YMD </when>
<when test="by == 'levyExclSeNm'"> A.LEVY_EXCL_SE_CD </when> <when test="by == 'levyExclSeNm'"> LE.LEVY_EXCL_SE_CD </when>
<when test="by == 'levyExclRsnNm'"> A.LEVY_EXCL_RSN_CD </when> <when test="by == 'levyExclRsnNm'"> LE.LEVY_EXCL_RSN_CD </when>
<when test="by == 'etcCn'"> A.ETC_CN </when> <when test="by == 'etcCn'"> LE.ETC_CN </when>
<when test="by == 'crdnYmd'"> H.CRDN_YMD </when> <when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
<when test="by == 'vhrno'"> H.VHRNO </when> <when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'crdnStdgNm'"> H.CRDN_STDG_NM </when> <when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
<when test="by == 'crdnPlc'"> H.CRDN_PLC </when> <when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
<when test="by == 'crdnSttsNm'"> H.CRDN_STTS_CD </when> <when test="by == 'crdnSttsNm'"> C.CRDN_STTS_CD </when>
<when test="by == 'rtpyrNm'"> J.RTPYR_NM </when> <when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> J.RTPYR_NO </when> <when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> J.RTPYR_BRDT </when> <when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'cvlcptRcptNo'"> K.CVLCPT_RCPT_NO </when> <when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptRcptYmd'"> K.CVLCPT_RCPT_YMD </when> <when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
</choose> </choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" /> <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when> </when>
@ -172,10 +176,10 @@
</if> </if>
<choose> <choose>
<when test="delYn != null"> <when test="delYn != null">
AND A.DEL_YN = #{delYn} /* 삭제 여부 */ AND LE.DEL_YN = #{delYn} /* 삭제 여부 */
</when> </when>
<otherwise> <otherwise>
AND A.DEL_YN = 'N' /* 삭제 여부 */ AND LE.DEL_YN = 'N' /* 삭제 여부 */
</otherwise> </otherwise>
</choose> </choose>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
@ -183,70 +187,76 @@
</select> </select>
<sql id="select"> <sql id="select">
SELECT A.LEVY_EXCL_ID /* 부과제외 ID */ SELECT LE.LEVY_EXCL_ID /* 부과제외 ID */
, A.SGG_CD /* 시군구 코드 */ , LE.SGG_CD /* 시군구 코드 */
, A.TASK_SE_CD /* 업무 구분 코드 */ , LE.TASK_SE_CD /* 업무 구분 코드 */
, A.CRDN_ID /* 단속 ID */ , LE.CRDN_ID /* 단속 ID */
, A.LEVY_EXCL_YMD /* 부과제외 일자 */ , LE.LEVY_EXCL_YMD /* 부과제외 일자 */
, A.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */ , LE.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM021', A.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */ , (SELECT FN_GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */
, A.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */ , LE.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */
, (SELECT FN_GET_CODE_NM('FIM022', A.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */ , (SELECT FN_GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */
, A.ETC_CN /* 기타 내용 */ , LE.ETC_CN /* 기타 내용 */
, A.DEL_YN /* 삭제 여부 */ , LE.DEL_YN /* 삭제 여부 */
, A.REG_DT /* 등록 일시 */ , LE.REG_DT /* 등록 일시 */
, A.RGTR /* 등록자 */ , LE.RGTR /* 등록자 */
, A.MDFCN_DT /* 수정 일시 */ , LE.MDFCN_DT /* 수정 일시 */
, A.MDFR /* 수정자 */ , LE.MDFR /* 수정자 */
, A.DEL_DT /* 삭제 일시 */ , LE.DEL_DT /* 삭제 일시 */
, A.DLTR /* 삭제자 */ , LE.DLTR /* 삭제자 */
, A.DEL_RSN /* 삭제 사유 */ , LE.DEL_RSN /* 삭제 사유 */
, H.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */ , C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, H.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */ , (SELECT FN_GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */
, H.CRDN_YMD /* 단속 일자 */ , C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, H.CRDN_TM /* 단속 시각 */ , (SELECT FN_GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */
, H.VHRNO /* 차량번호 */ , C.CRDN_YMD /* 단속 일자 */
, H.CRDN_STTS_CD /* 단속 상태 코드 */ , C.CRDN_TM /* 단속 시각 */
, (SELECT FN_GET_CODE_NM('FIM010', H.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ , C.VHRNO /* 차량번호 */
, I.CRDN_SE_CD /* 단속 구분 코드 */ , C.CRDN_STTS_CD /* 단속 상태 코드 */
, J.RTPYR_NM /* 납부자 명 */ , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, K.CVLCPT_LINK_ID /* 민원 연계 ID */ , CA.CRDN_SE_CD /* 단속 구분 코드 */
, K.CVLCPT_PRCS_CD /* 민원 처리 코드 */ , (SELECT FN_GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */
, K.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */ , CA.PARKNG_PSBLTY_RSLT_CD /* 주차 가능 결과 코드 */
, K.CVLCPT_PRCS_RSLT_CN /* 민원 처리 결과 내용 */ , (SELECT FN_GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM/* 단속 구분 명 */
, K.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */ , P.RTPYR_ID /* 납부자 ID */
, K.CVLCPT_TRSM_CD /* 민원 전송 코드 */ , P.RTPYR_NM /* 납부자 명 */
, K.CVLCPT_TRSM_DT /* 민원 전송 일시 */ , CC.CVLCPT_LINK_ID /* 민원 연계 ID */
FROM TB_LEVY_EXCL A , CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */
INNER JOIN TB_CRDN H ON (A.CRDN_ID = H.CRDN_ID) , CC.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */
INNER JOIN TB_CRDN_ADI I ON (H.CRDN_ID = I.CRDN_ID) , CC.CVLCPT_PRCS_RSLT_CN /* 민원 처리 결과 내용 */
LEFT OUTER JOIN TB_PAYER J ON (H.RTPYR_ID = J.RTPYR_ID) , CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */
LEFT OUTER JOIN TB_CRDN_CVLCPT K ON (H.LINK_ID = K.CVLCPT_LINK_ID AND H.CVLCPT_LINK_YN = 'Y' AND K.DEL_YN = 'N') , CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */
, CC.CVLCPT_TRSM_DT /* 민원 전송 일시 */
FROM TB_LEVY_EXCL LE
INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_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')
</sql> </sql>
<select id="selectLevyExcls" parameterType="map" resultType="dataobject">/* 부과제외 대장 객체 가져오기(excl01Mapper.selectLevyExcl) */ <select id="selectLevyExcls" parameterType="map" resultType="dataobject">/* 부과제외 대장 객체 가져오기(levyExclMapper.selectLevyExcl) */
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="levyExclId != null"> <if test="levyExclId != null">
AND A.LEVY_EXCL_ID = #{levyExclId} /* 부과 제외 ID */ AND LE.LEVY_EXCL_ID = #{levyExclId} /* 부과 제외 ID */
</if> </if>
<if test="crdnId != null"> <if test="crdnId != null">
AND A.CRDN_ID = #{crdnId} /* 단속 ID */ AND LE.CRDN_ID = #{crdnId} /* 단속 ID */
</if> </if>
<choose> <choose>
<when test="delYn != null"> <when test="delYn != null">
AND A.DEL_YN = #{delYn} /* 삭제 여부 */ AND LE.DEL_YN = #{delYn} /* 삭제 여부 */
</when> </when>
<otherwise> <otherwise>
AND A.DEL_YN = 'N' /* 삭제 여부 */ AND LE.DEL_YN = 'N' /* 삭제 여부 */
</otherwise> </otherwise>
</choose> </choose>
</where> </where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
<insert id="insertLevyExcl" parameterType="map">/* 부과제외 대장 등록(excl01Mapper.insertLevyExcl) */ <insert id="insertLevyExcl" parameterType="map">/* 부과제외 대장 등록(levyExclMapper.insertLevyExcl) */
<selectKey resultType="string" keyProperty="excl01.levyExclId" keyColumn="NEW_ID" order="BEFORE"> <selectKey resultType="string" keyProperty="levyExcl.levyExclId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(LEVY_EXCL_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(LEVY_EXCL_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
FROM TB_LEVY_EXCL FROM TB_LEVY_EXCL
WHERE LEVY_EXCL_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') WHERE LEVY_EXCL_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
@ -268,128 +278,128 @@
, MDFR /* 수정자 */ , MDFR /* 수정자 */
) )
VALUES ( VALUES (
#{excl01.levyExclId} /* 부과 제외 ID */ #{levyExcl.levyExclId} /* 부과 제외 ID */
, #{excl01.sggCd} /* 시군구 코드 */ , #{levyExcl.sggCd} /* 시군구 코드 */
, #{excl01.taskSeCd} /* 업무 구분 코드 */ , #{levyExcl.taskSeCd} /* 업무 구분 코드 */
, #{excl01.crdnId} /* 단속 ID */ , #{levyExcl.crdnId} /* 단속 ID */
, #{excl01.levyExclYmd} /* 부과 제외 일자 */ , #{levyExcl.levyExclYmd} /* 부과 제외 일자 */
, #{excl01.levyExclSeCd} /* 부과 제외 구분 코드 */ , #{levyExcl.levyExclSeCd} /* 부과 제외 구분 코드 */
, #{excl01.levyExclRsnCd} /* 부과 제외 사유 코드 */ , #{levyExcl.levyExclRsnCd} /* 부과 제외 사유 코드 */
, #{excl01.etcCn} /* 기타 내용 */ , #{levyExcl.etcCn} /* 기타 내용 */
, 'N' /* 삭제 여부 */ , 'N' /* 삭제 여부 */
, #{excl01.createdAt} /* 등록 일시 */ , #{levyExcl.createdAt} /* 등록 일시 */
, #{excl01.createdBy} /* 등록자 */ , #{levyExcl.createdBy} /* 등록자 */
, #{excl01.lastModified} /* 수정 일시 */ , #{levyExcl.lastModified} /* 수정 일시 */
, #{excl01.modifiedBy} /* 수정자 */ , #{levyExcl.modifiedBy} /* 수정자 */
) )
</insert> </insert>
<update id="updateLevyExcl" parameterType="map">/* 부과제외 대장 수정(excl01Mapper.updateLevyExcl) */ <update id="updateLevyExcl" parameterType="map">/* 부과제외 대장 수정(levyExclMapper.updateLevyExcl) */
UPDATE TB_LEVY_EXCL UPDATE TB_LEVY_EXCL
SET LEVY_EXCL_YMD = #{excl01.levyExclYmd} /* 부과 제외 일자 */ SET LEVY_EXCL_YMD = #{levyExcl.levyExclYmd} /* 부과 제외 일자 */
, LEVY_EXCL_RSN_CD = #{excl01.levyExclRsnCd} /* 부과 제외 사유 코드 */ , LEVY_EXCL_RSN_CD = #{levyExcl.levyExclRsnCd} /* 부과 제외 사유 코드 */
, ETC_CN = #{excl01.etcCn} /* 기타 내용 */ , ETC_CN = #{levyExcl.etcCn} /* 기타 내용 */
, MDFCN_DT = #{excl01.lastModified} /* 수정 일시 */ , MDFCN_DT = #{levyExcl.lastModified} /* 수정 일시 */
, MDFR = #{excl01.modifiedBy} /* 수정자 */ , MDFR = #{levyExcl.modifiedBy} /* 수정자 */
WHERE LEVY_EXCL_ID = #{excl01.levyExclId} /* 부과 제외 ID */ WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} /* 부과 제외 ID */
AND LEVY_EXCL_SE_CD = #{excl01.levyExclSeCd} /* 부과 제외 구분 코드 */ AND LEVY_EXCL_SE_CD = #{levyExcl.levyExclSeCd} /* 부과 제외 구분 코드 */
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="deleteLevyExcl" parameterType="map">/* 부과제외 대장 삭제(excl01Mapper.deleteLevyExcl) */ <update id="deleteLevyExcl" parameterType="map">/* 부과제외 대장 삭제(levyExclMapper.deleteLevyExcl) */
UPDATE TB_LEVY_EXCL UPDATE TB_LEVY_EXCL
SET DEL_YN = 'Y' /* 삭제 여부 */ SET DEL_YN = 'Y' /* 삭제 여부 */
, DEL_DT = #{excl01.lastModified} /* 삭제 일시 */ , DEL_DT = #{levyExcl.lastModified} /* 삭제 일시 */
, DLTR = #{excl01.modifiedBy} /* 삭제자 */ , DLTR = #{levyExcl.modifiedBy} /* 삭제자 */
, DEL_RSN = #{excl01.delRsn} /* 삭제 사유 */ , DEL_RSN = #{levyExcl.delRsn} /* 삭제 사유 */
WHERE LEVY_EXCL_ID = #{excl01.levyExclId} /* 부과 제외 ID */ WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} /* 부과 제외 ID */
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(excl01Mapper.selectCrdn) */ <select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdn) */
SELECT A.CRDN_ID /* 단속 ID */ SELECT C.CRDN_ID /* 단속 ID */
, A.SGG_CD /* 시군구 코드 */ , C.SGG_CD /* 시군구 코드 */
, A.TASK_SE_CD /* 업무 구분 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */
, A.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */ , C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, A.CRDN_YMD /* 단속 일자 */ , C.CRDN_YMD /* 단속 일자 */
, A.CRDN_TM /* 단속 시각 */ , C.CRDN_TM /* 단속 시각 */
, A.VHRNO /* 차량번호 */ , C.VHRNO /* 차량번호 */
, A.CRDN_STTS_CD /* 단속 상태 코드 */ , C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', A.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 /* 단속 상태 명 */
, A.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */ , C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, C.RTPYR_ID /* 납부자 ID */ , P.RTPYR_ID /* 납부자 ID */
, C.RTPYR_NM /* 납부자 명 */ , P.RTPYR_NM /* 납부자 명 */
, H.LEVY_EXCL_ID /* 부과 제외 ID */ , LE.LEVY_EXCL_ID /* 부과 제외 ID */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */ , <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
FROM TB_CRDN A FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER C ON (A.RTPYR_ID = C.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY_EXCL H ON (A.CRDN_ID = H.CRDN_ID AND H.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE A.CRDN_ID = #{crdnId} /* 단속 ID */ WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</select> </select>
<select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(excl01Mapper.selectCvlcptAnsWords) */ <select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(levyExclMapper.selectCvlcptAnsWords) */
SELECT A.ANS_WORDS_ID /* 답변 문구 ID */ SELECT CAW.ANS_WORDS_ID /* 답변 문구 ID */
, A.ANS_SE_CD /* 답변 구분 코드 */ , CAW.ANS_SE_CD /* 답변 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM060', A.ANS_SE_CD) FROM DUAL) AS ANS_SE_NM /* 답변 구분 명 */ , (SELECT FN_GET_CODE_NM('FIM060', CAW.ANS_SE_CD) FROM DUAL) AS ANS_SE_NM /* 답변 구분 명 */
, A.ANS_RSN_CD /* 답변 사유 코드 */ , CAW.ANS_RSN_CD /* 답변 사유 코드 */
, A.ANS_RSN_NM /* 답변 사유 명 */ , CAW.ANS_RSN_NM /* 답변 사유 명 */
, A.PRCS_SUMRY /* 처리 요약 */ , CAW.PRCS_SUMRY /* 처리 요약 */
, A.PRCS_RSLT_CN /* 처리 결과 내용 */ , CAW.PRCS_RSLT_CN /* 처리 결과 내용 */
FROM TB_CVLCPT_ANS_WORDS A FROM TB_CVLCPT_ANS_WORDS CAW
WHERE A.SGG_CD = #{sggCd} /* 시군구 코드 */ WHERE CAW.SGG_CD = #{sggCd} /* 시군구 코드 */
AND A.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */ AND CAW.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
AND A.ANS_RSN_CD = #{ansRsnCd} /* 답변 사유 코드 */ AND CAW.ANS_RSN_CD = #{ansRsnCd} /* 답변 사유 코드 */
AND A.USE_YN = 'Y' /* 사용 여부 */ AND CAW.USE_YN = 'Y' /* 사용 여부 */
</select> </select>
<update id="updateCvlcptPrcsRsltCn" parameterType="map">/* 단속민원 대장 민원처리결과내용 초기화(excl01Mapper.updateCvlcptPrcsRsltCn) */ <update id="updateCvlcptPrcsRsltCn" parameterType="map">/* 단속민원 대장 민원처리결과내용 초기화(levyExclMapper.updateCvlcptPrcsRsltCn) */
UPDATE TB_CRDN_CVLCPT UPDATE TB_CRDN_CVLCPT
SET CVLCPT_PRCS_SUMRY = NULL /* 민원 처리 요약 */ SET CVLCPT_PRCS_SUMRY = NULL /* 민원 처리 요약 */
, CVLCPT_PRCS_RSLT_CN = NULL /* 민원 처리 결과 내용 */ , CVLCPT_PRCS_RSLT_CN = NULL /* 민원 처리 결과 내용 */
, MDFCN_DT = #{excl01.lastModified} /* 수정 일시 */ , MDFCN_DT = #{crdnCvlcpt.lastModified} /* 수정 일시 */
, MDFR = #{excl01.modifiedBy} /* 수정자 */ , MDFR = #{crdnCvlcpt.modifiedBy} /* 수정자 */
WHERE CVLCPT_LINK_ID = #{excl01.cvlcptLinkId} /* 민원 연계 ID */ WHERE CVLCPT_LINK_ID = #{crdnCvlcpt.cvlcptLinkId} /* 민원 연계 ID */
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="updateCrdnCvlcpt" parameterType="map">/* 단속민원 대장 민원답변 수정(excl01Mapper.updateCrdnCvlcpt) */ <update id="updateCrdnCvlcpt" parameterType="map">/* 단속민원 대장 민원답변 수정(levyExclMapper.updateCrdnCvlcpt) */
UPDATE TB_CRDN_CVLCPT UPDATE TB_CRDN_CVLCPT
SET CVLCPT_PRCS_CD = #{excl01.cvlcptPrcsCd} /* 민원 처리 코드 */ SET CVLCPT_PRCS_CD = #{crdnCvlcpt.cvlcptPrcsCd} /* 민원 처리 코드 */
, CVLCPT_PRCS_SUMRY = #{excl01.cvlcptPrcsSumry} /* 민원 처리 요약 */ , CVLCPT_PRCS_SUMRY = #{crdnCvlcpt.cvlcptPrcsSumry} /* 민원 처리 요약 */
, CVLCPT_PRCS_RSLT_CN = #{excl01.cvlcptPrcsRsltCn} /* 민원 처리 결과 내용 */ , CVLCPT_PRCS_RSLT_CN = #{crdnCvlcpt.cvlcptPrcsRsltCn} /* 민원 처리 결과 내용 */
, CVLCPT_PRCS_CMPTN_DT = #{excl01.cvlcptPrcsCmptnDt} /* 민원 처리 완료 일시 */ , CVLCPT_PRCS_CMPTN_DT = #{crdnCvlcpt.cvlcptPrcsCmptnDt} /* 민원 처리 완료 일시 */
, CVLCPT_PRCS_PIC = #{excl01.cvlcptPrcsPic} /* 민원 처리 담당자 */ , CVLCPT_PRCS_PIC = #{crdnCvlcpt.cvlcptPrcsPic} /* 민원 처리 담당자 */
, CVLCPT_TRSM_CD = #{excl01.cvlcptTrsmCd} /* 민원 전송 코드 */ , CVLCPT_TRSM_CD = #{crdnCvlcpt.cvlcptTrsmCd} /* 민원 전송 코드 */
, MDFCN_DT = #{excl01.lastModified} /* 수정 일시 */ , MDFCN_DT = #{crdnCvlcpt.lastModified} /* 수정 일시 */
, MDFR = #{excl01.modifiedBy} /* 수정자 */ , MDFR = #{crdnCvlcpt.modifiedBy} /* 수정자 */
WHERE CVLCPT_LINK_ID = #{excl01.cvlcptLinkId} /* 민원 연계 ID */ WHERE CVLCPT_LINK_ID = #{crdnCvlcpt.cvlcptLinkId} /* 민원 연계 ID */
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="updateParkngPsbltyRsltCd" parameterType="map">/* 단속 대장 주차가능결과코드를 수정(excl01Mapper.updateParkngPsbltyRsltCd) */ <update id="updateParkngPsbltyRsltCd" parameterType="map">/* 단속 대장 주차가능결과코드를 수정(levyExclMapper.updateParkngPsbltyRsltCd) */
UPDATE TB_CRDN_ADI UPDATE TB_CRDN_ADI
SET PARKNG_PSBLTY_RSLT_CD = #{excl01.parkngPsbltyRsltCd} /* 주차 가능 결과 코드 */ SET PARKNG_PSBLTY_RSLT_CD = #{crdn.parkngPsbltyRsltCd} /* 주차 가능 결과 코드 */
, MDFCN_DT = #{excl01.lastModified} /* 수정 일시 */ , MDFCN_DT = #{crdn.lastModified} /* 수정 일시 */
, MDFR = #{excl01.modifiedBy} /* 수정자 */ , MDFR = #{crdn.modifiedBy} /* 수정자 */
WHERE CRDN_ID = #{excl01.crdnId} /* 단속 ID */ WHERE CRDN_ID = #{crdn.crdnId} /* 단속 ID */
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<select id="selectSndngDtl" parameterType="map" resultType="dataobject">/* 발송상세 대장 객체 가져오기(excl01Mapper.selectSndngDtl) */ <select id="selectSndngDtl" parameterType="map" resultType="dataobject">/* 발송상세 대장 객체 가져오기(levyExclMapper.selectSndngDtl) */
SELECT A.SNDNG_ID /* 발송 ID */ SELECT SD.SNDNG_ID /* 발송 ID */
, A.CRDN_ID /* 단속 ID */ , SD.CRDN_ID /* 단속 ID */
, A.SNDNG_RCVMT_CD /* 발송 수납 코드 */ , SD.SNDNG_RCVMT_CD /* 발송 수납 코드 */
FROM TB_SNDNG_DTL A FROM TB_SNDNG_DTL SD
WHERE A.CRDN_ID = #{crdnId} /* 단속 ID */ WHERE SD.CRDN_ID = #{crdnId} /* 단속 ID */
AND A.SNDNG_RCVMT_CD = #{sndngRcvmtCd} AND SD.SNDNG_RCVMT_CD = #{sndngRcvmtCd}
</select> </select>
<update id="updateRcvmtCd" parameterType="map">/* 발송상세 대장 수납코드를 수정(excl01Mapper.updateRcvmtCd) */ <update id="updateRcvmtCd" parameterType="map">/* 발송상세 대장 수납코드를 수정(levyExclMapper.updateRcvmtCd) */
UPDATE TB_SNDNG_DTL UPDATE TB_SNDNG_DTL
SET SNDNG_RCVMT_CD = NULL /* 발송 수납 코드 */ SET SNDNG_RCVMT_CD = NULL /* 발송 수납 코드 */
, MDFCN_DT = #{excl01.lastModified} /* 수정 일시 */ , MDFCN_DT = #{sndngDtl.lastModified} /* 수정 일시 */
, MDFR = #{excl01.modifiedBy} /* 수정자 */ , MDFR = #{sndngDtl.modifiedBy} /* 수정자 */
WHERE CRDN_ID = #{excl01.crdnId} /* 단속 ID */ WHERE CRDN_ID = #{sndngDtl.crdnId} /* 단속 ID */
</update> </update>
</mapper> </mapper>

@ -120,7 +120,7 @@
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)
</sql> </sql>
<select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(excl02Mapper.selectOpnnSbmsnList) */ <select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(opnnSbmsnMapper.selectOpnnSbmsnList) */
<include refid="utility.paging-prefix" /> <include refid="utility.paging-prefix" />
<include refid="selectList" /> <include refid="selectList" />
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */ WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
@ -281,7 +281,7 @@
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)
</sql> </sql>
<select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(excl02Mapper.selectOpnnSbmsns) */ <select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="opnnIDs != null"> <if test="opnnIDs != null">
@ -307,7 +307,7 @@
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(excl02Mapper.selectCrdn) */ <select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(opnnSbmsnMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */ SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */ , C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */
@ -368,8 +368,8 @@
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</select> </select>
<insert id="insertOpnnSbmsn" parameterType="map">/* 의견제출 대장 등록(excl02Mapper.insertOpnnSbmsn) */ <insert id="insertOpnnSbmsn" parameterType="map">/* 의견제출 대장 등록(opnnSbmsnMapper.insertOpnnSbmsn) */
<selectKey resultType="string" keyProperty="excl02.opnnId" keyColumn="NEW_ID" order="BEFORE"> <selectKey resultType="string" keyProperty="opnnSbmsn.opnnId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(OPNN_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(OPNN_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
FROM TB_OPNN_SBMSN FROM TB_OPNN_SBMSN
WHERE OPNN_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') WHERE OPNN_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
@ -408,95 +408,95 @@
, MDFR /* 수정자 */ , MDFR /* 수정자 */
) )
VALUES ( VALUES (
#{excl02.opnnId} /* 의견 ID */ #{opnnSbmsn.opnnId} /* 의견 ID */
, #{excl02.crdnId} /* 단속 ID */ , #{opnnSbmsn.crdnId} /* 단속 ID */
, #{excl02.rcptNo} /* 접수 번호 */ , #{opnnSbmsn.rcptNo} /* 접수 번호 */
, #{excl02.rcptYmd} /* 접수 일자 */ , #{opnnSbmsn.rcptYmd} /* 접수 일자 */
, #{excl02.rcptSeCd} /* 접수 구분 코드 */ , #{opnnSbmsn.rcptSeCd} /* 접수 구분 코드 */
, #{excl02.ownrRelCd} /* 소유주 관계 코드 */ , #{opnnSbmsn.ownrRelCd} /* 소유주 관계 코드 */
, #{excl02.sttrNm} /* 진술자 명 */ , #{opnnSbmsn.sttrNm} /* 진술자 명 */
, #{excl02.sttrBrdt} /* 진술자 생년월일 */ , #{opnnSbmsn.sttrBrdt} /* 진술자 생년월일 */
, #{excl02.sttrRrno} /* 진술자 주민등록번호 */ , #{opnnSbmsn.sttrRrno} /* 진술자 주민등록번호 */
, #{excl02.sttrAddr} /* 진술자 주소 */ , #{opnnSbmsn.sttrAddr} /* 진술자 주소 */
, #{excl02.sttrDaddr} /* 진술자 상세주소 */ , #{opnnSbmsn.sttrDaddr} /* 진술자 상세주소 */
, #{excl02.sttrZip} /* 진술자 우편번호 */ , #{opnnSbmsn.sttrZip} /* 진술자 우편번호 */
, #{excl02.sttrCttpc} /* 진술자 연락처 */ , #{opnnSbmsn.sttrCttpc} /* 진술자 연락처 */
, #{excl02.sttrEml} /* 진술자 이메일 */ , #{opnnSbmsn.sttrEml} /* 진술자 이메일 */
, #{excl02.opnnSbmsnCn} /* 의견 제출 내용 */ , #{opnnSbmsn.opnnSbmsnCn} /* 의견 제출 내용 */
, #{excl02.opnnSbmsnSeCd} /* 의견 제출 구분 코드 */ , #{opnnSbmsn.opnnSbmsnSeCd} /* 의견 제출 구분 코드 */
, #{excl02.opnnSbmsnGist} /* 의견 제출 요지 */ , #{opnnSbmsn.opnnSbmsnGist} /* 의견 제출 요지 */
, #{excl02.atchFileCnt} /* 첨부 파일 수 */ , #{opnnSbmsn.atchFileCnt} /* 첨부 파일 수 */
, #{excl02.docNo} /* 문서 번호 */ , #{opnnSbmsn.docNo} /* 문서 번호 */
, #{excl02.ntfctnSeCd} /* 통보 구분 코드 */ , #{opnnSbmsn.ntfctnSeCd} /* 통보 구분 코드 */
, #{excl02.picRvwOpnn} /* 담당자 검토 의견 */ , #{opnnSbmsn.picRvwOpnn} /* 담당자 검토 의견 */
, #{excl02.ansCn} /* 답변 내용 */ , #{opnnSbmsn.ansCn} /* 답변 내용 */
, #{excl02.ansYmd} /* 답변 일시 */ , #{opnnSbmsn.ansYmd} /* 답변 일시 */
, #{excl02.ansTm} /* 답변 일시 */ , #{opnnSbmsn.ansTm} /* 답변 일시 */
, #{excl02.opnnSbmsnSttsCd} /* 의견 제출 상태 코드 */ , #{opnnSbmsn.opnnSbmsnSttsCd} /* 의견 제출 상태 코드 */
, 'N' /* 삭제 여부 */ , 'N' /* 삭제 여부 */
, #{excl02.createdAt} /* 등록 일시 */ , #{opnnSbmsn.createdAt} /* 등록 일시 */
, #{excl02.createdBy} /* 등록자 */ , #{opnnSbmsn.createdBy} /* 등록자 */
, #{excl02.lastModified} /* 수정 일시 */ , #{opnnSbmsn.lastModified} /* 수정 일시 */
, #{excl02.modifiedBy} /* 수정자 */ , #{opnnSbmsn.modifiedBy} /* 수정자 */
) )
</insert> </insert>
<update id="updateOpnnSbmsn" parameterType="map">/* 의견제출 대장 수정(excl02Mapper.updateOpnnSbmsn) */ <update id="updateOpnnSbmsn" parameterType="map">/* 의견제출 대장 수정(opnnSbmsnMapper.updateOpnnSbmsn) */
UPDATE TB_OPNN_SBMSN UPDATE TB_OPNN_SBMSN
SET RCPT_NO = #{excl02.rcptNo} /* 접수 번호 */ SET RCPT_NO = #{opnnSbmsn.rcptNo} /* 접수 번호 */
, RCPT_YMD = #{excl02.rcptYmd} /* 접수 일자 */ , RCPT_YMD = #{opnnSbmsn.rcptYmd} /* 접수 일자 */
, RCPT_SE_CD = #{excl02.rcptSeCd} /* 접수 구분 코드 */ , RCPT_SE_CD = #{opnnSbmsn.rcptSeCd} /* 접수 구분 코드 */
, OWNR_REL_CD = #{excl02.ownrRelCd} /* 소유주 관계 코드 */ , OWNR_REL_CD = #{opnnSbmsn.ownrRelCd} /* 소유주 관계 코드 */
, STTR_NM = #{excl02.sttrNm} /* 진술자 명 */ , STTR_NM = #{opnnSbmsn.sttrNm} /* 진술자 명 */
, STTR_BRDT = #{excl02.sttrBrdt} /* 진술자 생년월일 */ , STTR_BRDT = #{opnnSbmsn.sttrBrdt} /* 진술자 생년월일 */
, STTR_RRNO = #{excl02.sttrRrno} /* 진술자 주민등록번호 */ , STTR_RRNO = #{opnnSbmsn.sttrRrno} /* 진술자 주민등록번호 */
, STTR_ADDR = #{excl02.sttrAddr} /* 진술자 주소 */ , STTR_ADDR = #{opnnSbmsn.sttrAddr} /* 진술자 주소 */
, STTR_DADDR = #{excl02.sttrDaddr} /* 진술자 상세주소 */ , STTR_DADDR = #{opnnSbmsn.sttrDaddr} /* 진술자 상세주소 */
, STTR_ZIP = #{excl02.sttrZip} /* 진술자 우편번호 */ , STTR_ZIP = #{opnnSbmsn.sttrZip} /* 진술자 우편번호 */
, STTR_CTTPC = #{excl02.sttrCttpc} /* 진술자 연락처 */ , STTR_CTTPC = #{opnnSbmsn.sttrCttpc} /* 진술자 연락처 */
, STTR_EML = #{excl02.sttrEml} /* 진술자 이메일 */ , STTR_EML = #{opnnSbmsn.sttrEml} /* 진술자 이메일 */
, OPNN_SBMSN_CN = #{excl02.opnnSbmsnCn} /* 의견 제출 내용 */ , OPNN_SBMSN_CN = #{opnnSbmsn.opnnSbmsnCn} /* 의견 제출 내용 */
, OPNN_SBMSN_SE_CD = #{excl02.opnnSbmsnSeCd} /* 의견 제출 구분 코드 */ , OPNN_SBMSN_SE_CD = #{opnnSbmsn.opnnSbmsnSeCd} /* 의견 제출 구분 코드 */
, OPNN_SBMSN_GIST = #{excl02.opnnSbmsnGist} /* 의견 제출 요지 */ , OPNN_SBMSN_GIST = #{opnnSbmsn.opnnSbmsnGist} /* 의견 제출 요지 */
, ATCH_FILE_CNT = #{excl02.atchFileCnt} /* 첨부 파일 수 */ , ATCH_FILE_CNT = #{opnnSbmsn.atchFileCnt} /* 첨부 파일 수 */
, DOC_NO = #{excl02.docNo} /* 문서 번호 */ , DOC_NO = #{opnnSbmsn.docNo} /* 문서 번호 */
, NTFCTN_SE_CD = #{excl02.ntfctnSeCd} /* 통보 구분 코드 */ , NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} /* 통보 구분 코드 */
, PIC_RVW_OPNN = #{excl02.picRvwOpnn} /* 담당자 검토 의견 */ , PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} /* 담당자 검토 의견 */
, MDFCN_DT = #{excl02.lastModified} /* 수정 일시 */ , MDFCN_DT = #{opnnSbmsn.lastModified} /* 수정 일시 */
, MDFR = #{excl02.modifiedBy} /* 수정자 */ , MDFR = #{opnnSbmsn.modifiedBy} /* 수정자 */
WHERE OPNN_ID = #{excl02.opnnId} /* 의견 ID */ WHERE OPNN_ID = #{opnnSbmsn.opnnId} /* 의견 ID */
</update> </update>
<update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(excl02Mapper.deleteOpnnSbmsn) */ <update id="updateAnsSttsCd" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateAnsSttsCd) */
UPDATE TB_OPNN_SBMSN
SET OPNN_SBMSN_GIST = #{opnnSbmsn.opnnSbmsnGist} /* 의견 제출 요지 */
, PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} /* 담당자 검토 의견 */
, NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} /* 통보 구분 코드 */
, OPNN_SBMSN_STTS_CD = #{opnnSbmsn.opnnSbmsnSttsCd} /* 의견 제출 상태 코드 */
, ANS_YMD = #{opnnSbmsn.ansYmd} /* 답변 일자 */
, ANS_TM = #{opnnSbmsn.ansTm} /* 답변 시각 */
, ANS_CN = #{opnnSbmsn.ansCn} /* 답변 내용 */
, MDFCN_DT = #{opnnSbmsn.lastModified} /* 수정 일시 */
, MDFR = #{opnnSbmsn.modifiedBy} /* 수정자 */
WHERE OPNN_ID = #{opnnSbmsn.opnnId} /* 의견 ID */
</update>
<update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */
UPDATE TB_OPNN_SBMSN UPDATE TB_OPNN_SBMSN
SET DEL_YN = 'Y' SET DEL_YN = 'Y'
, DEL_DT = #{excl02.lastModified} /* 삭제 일시 */ , DEL_DT = #{opnnSbmsn.lastModified} /* 삭제 일시 */
, DLTR = #{excl02.modifiedBy} /* 삭제자 */ , DLTR = #{opnnSbmsn.modifiedBy} /* 삭제자 */
, DEL_RSN = #{excl02.delRsn} /* 삭제 사유 */ , DEL_RSN = #{opnnSbmsn.delRsn} /* 삭제 사유 */
WHERE OPNN_ID = #{excl02.opnnId} /* 의견 ID */ WHERE OPNN_ID = #{opnnSbmsn.opnnId} /* 의견 ID */
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="updateOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(excl02Mapper.updateOpnnSbmsnYn) */ <update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */
UPDATE TB_CRDN UPDATE TB_CRDN
SET OPNN_SBMSN_YN = #{excl02.opnnSbmsnYn} /* 의견 제출 여부 */ SET OPNN_SBMSN_YN = #{crdn.opnnSbmsnYn} /* 의견 제출 여부 */
, MDFCN_DT = #{excl02.lastModified} /* 수정 일시 */ , MDFCN_DT = #{crdn.lastModified} /* 수정 일시 */
, MDFR = #{excl02.modifiedBy} /* 수정자 */ , MDFR = #{crdn.modifiedBy} /* 수정자 */
WHERE CRDN_ID = #{excl02.crdnId} /* 단속 ID */ WHERE CRDN_ID = #{crdn.crdnId} /* 단속 ID */
</update>
<update id="updateAnsSttsCd" parameterType="map">/* 의견제출 대장 답변 수정(excl02Mapper.updateAnsSttsCd) */
UPDATE TB_OPNN_SBMSN
SET OPNN_SBMSN_GIST = #{excl02.opnnSbmsnGist} /* 의견 제출 요지 */
, PIC_RVW_OPNN = #{excl02.picRvwOpnn} /* 담당자 검토 의견 */
, NTFCTN_SE_CD = #{excl02.ntfctnSeCd} /* 통보 구분 코드 */
, OPNN_SBMSN_STTS_CD = #{excl02.opnnSbmsnSttsCd} /* 의견 제출 상태 코드 */
, ANS_YMD = #{excl02.ansYmd} /* 답변 일자 */
, ANS_TM = #{excl02.ansTm} /* 답변 시각 */
, ANS_CN = #{excl02.ansCn} /* 답변 내용 */
, MDFCN_DT = #{excl02.lastModified} /* 수정 일시 */
, MDFR = #{excl02.modifiedBy} /* 수정자 */
WHERE OPNN_ID = #{excl02.opnnId} /* 의견 ID */
</update> </update>
</mapper> </mapper>

@ -385,7 +385,7 @@
, content : resp , content : resp
, size : ${pageName}Control.infoSize , size : ${pageName}Control.infoSize
, init : () => ${pageName}Control.setInfo(info) , init : () => ${pageName}Control.setInfo(info)
, onClose : () => { ${pageName}Control.load("1"); } // callback , onClose : () => { ${pageName}Control.load(1); } // callback
}); });
} }
}); });
@ -417,6 +417,26 @@
${pageName}Control._load(); ${pageName}Control._load();
} }
*/ */
/**************************************************************************
*
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
}
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
@ -454,29 +474,11 @@
if (el.scrollTop() == 0) return; if (el.scrollTop() == 0) return;
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) { if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
fnBtnSearchList${pageName}(${pageName}Control.query.pageNum + 1); ${pageName}Control.load(${pageName}Control.query.pageNum + 1);
} }
}); });
} }
// DataTables에 click, dbclick 이벤트
function renderList${pageName}() {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
}
/************************************************************************** /**************************************************************************
* function * function
**************************************************************************/ **************************************************************************/
@ -501,14 +503,13 @@
} }
// 검색 // 검색
function fnBtnSearchList${pageName}(pageNumber) { function fnBtnSearchList${pageName}() {
// pageNumber 값 확인 // 검색조건
if (!pageNumber) pageNumber = 1; ${pageName}Control.query = fnGetParams${pageName}();
// 한번에 조회되는 건수 - 30건
${pageName}Control.query = fnGetParams${pageName}(); // 검색조건 ${pageName}Control.query.fetchSize = FETCH_XS;
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 건수 - 30건
${pageName}Control.load(pageNumber); ${pageName}Control.load(1);
} }
// 엑셀 // 엑셀
@ -543,7 +544,7 @@
// 삭제 // 삭제
function fnBtnRemove${pageName}() { function fnBtnRemove${pageName}() {
dialog.alert({ dialog.alert({
content : "선택한 ${prefixName} 정보를 삭제하시겠습니까?" content : "선택한 부과제외 정보를 삭제하시겠습니까?"
, onOK : () => { , onOK : () => {
${pageName}Control.remove(); ${pageName}Control.remove();
} }

@ -185,7 +185,7 @@
let data = formFields.get(); let data = formFields.get();
dialog.alert({ dialog.alert({
content : "현재 ${prefixName} 정보를 저장하시겠습니까?" content : "현재 부과제외 정보를 저장하시겠습니까?"
, onOK : () => { , onOK : () => {
${pageName}Control.save(formFields.get()); ${pageName}Control.save(formFields.get());
} }

@ -298,7 +298,7 @@
, urls : { , urls : {
load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 검색 load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 검색
, getInfo : wctx.url(${pageName}PrefixUrl + "/020/info.do") // 등록 및 수정 팝업 , getInfo : wctx.url(${pageName}PrefixUrl + "/020/info.do") // 등록 및 수정 팝업
, remove : wctx.url(${pageName}PrefixUrl + "/010/removes.do") // 선택(체크) 자료 삭제 , remove : wctx.url(${pageName}PrefixUrl + "/010/removes.do") // 선택 자료 삭제
} }
, formats : { , formats : {
RCPT_YMD : dateFormat RCPT_YMD : dateFormat
@ -378,10 +378,10 @@
} }
// 심의 dialog // 심의 dialog
${pageName}Control.getOpnnSbmsnDlbrtInfo = (opnnId) => { ${pageName}Control.getOpnnSbmsnDlbrtInfo = (params) => {
ajax.get({ ajax.get({
url : wctx.url(prefixUrl + "/030/info.do") url : wctx.url(${pageName}PrefixUrl + "/030/info.do")
, data : { opnnId : opnnId } , data : params || {}
, success : resp => { , success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix) resp = resp.replace(/infoPrefix/g, this.prefix)
.replace(/prefixName/g, this.prefixName) .replace(/prefixName/g, this.prefixName)
@ -551,7 +551,12 @@
return; return;
} }
${pageName}Control.getOpnnSbmsnDlbrtInfo(opnnId); let params = {
callPurpose : "update"
, opnnId : opnnId
};
${pageName}Control.getOpnnSbmsnDlbrtInfo(params);
} }
/************************************************************************** /**************************************************************************

@ -106,7 +106,7 @@
**************************************************************************/ **************************************************************************/
// URL // URL
var ${pageName}PrefixUrl = "/excl/excl02"; var ${pageName}PrefixUrl = "/excl/excl02";
// // FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}"); var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/************************************************************************** /**************************************************************************

@ -164,13 +164,18 @@
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") { if (crdnId == null || crdnId == "") {
return; return;
} }
let params = {
callPurpose : "view"
, crdnId : crdnId
};
ajax.get({ ajax.get({
url : wctx.url("/sprt/sprt02/020/info.do") url : wctx.url("/sprt/sprt02/020/info.do")
, data : { crdnId : crdnId } , data : params || {}
, success : resp => { , success : resp => {
$("#crdnPayerInfo").html(resp); $("#crdnPayerInfo").html(resp);
} }
@ -182,13 +187,18 @@
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") { if (crdnId == null || crdnId == "") {
return; return;
} }
let params = {
callPurpose : "view"
, crdnId : crdnId
};
ajax.get({ ajax.get({
url : wctx.url("/sprt/sprt02/030/info.do") url : wctx.url("/sprt/sprt02/030/info.do")
, data : { crdnId : crdnId } , data : params || {}
, success : resp => { , success : resp => {
$("#opnnSbmsnInfo").html(resp); $("#opnnSbmsnInfo").html(resp);
} }
@ -200,13 +210,18 @@
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") { if (crdnId == null || crdnId == "") {
return; return;
} }
let params = {
callPurpose : "view"
, crdnId : crdnId
};
ajax.get({ ajax.get({
url : wctx.url("/sprt/sprt02/040/info.do") url : wctx.url("/sprt/sprt02/040/info.do")
, data : { crdnId : crdnId } , data : params || {}
, success : resp => { , success : resp => {
$("#sndngInfo").html(resp); $("#sndngInfo").html(resp);
} }

@ -319,7 +319,24 @@
/************************************************************************** /**************************************************************************
* *
**************************************************************************/ **************************************************************************/
fnBtnOpenCvlcptOrgnl = (params) => {
let taskSeCd = ${pageName}Control.dataset.getValue("TASK_SE_CD");
let dialogId = "cvlcptOrgnlDialog--${pageName}";
ajax.get({
url : wctx.url("/" + taskSeCd + "/cvlc/cvlc01/050/info.do")
, data : params || {}
, success : resp => {
dialog.open({
id : dialogId
, title : "민원내역 원본"
, content : resp
, size : "xl"
});
}
})
}
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
@ -340,21 +357,17 @@
// 민원 원본 보기 // 민원 원본 보기
function fnBtnOpenCvlcptOrgnl${pageName}() { function fnBtnOpenCvlcptOrgnl${pageName}() {
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
let taskSeCd = ${pageName}Control.dataset.getValue("TASK_SE_CD");
let dialogId = "cvlcptOrgnlDialog--${pageName}";
ajax.get({ // 단속 ID 가 없다면.. return
url : wctx.url("/" + taskSeCd + "/cvlc/cvlc01/050/info.do") if (crdnId == null || crdnId == "") {
, data : { crdnId : crdnId } return;
, success : resp => { }
dialog.open({
id : dialogId let params = {
, title : "민원내역 원본" crdnId : crdnId
, content : resp };
, size : "xl"
}); fnBtnOpenCvlcptOrgnl(params);
}
})
} }
// 민원 답변 보기 // 민원 답변 보기

@ -207,6 +207,7 @@
// 의견제출 dialog // 의견제출 dialog
${pageName}Control.getOpnnSbmsnInfo = (params) => { ${pageName}Control.getOpnnSbmsnInfo = (params) => {
let dialogTitle = ""; let dialogTitle = "";
if (params.callPurpose == "create") { if (params.callPurpose == "create") {
dialogTitle = "의견제출 등록"; dialogTitle = "의견제출 등록";
} else if (params.callPurpose == "update") { } else if (params.callPurpose == "update") {
@ -217,7 +218,7 @@
ajax.get({ ajax.get({
url : wctx.url("/excl/excl02/020/info.do") url : wctx.url("/excl/excl02/020/info.do")
, data : params , data : params || {}
, success : resp => { , success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix) resp = resp.replace(/infoPrefix/g, this.prefix)
.replace(/prefixName/g, this.prefixName) .replace(/prefixName/g, this.prefixName)
@ -226,23 +227,25 @@
, title : dialogTitle , title : dialogTitle
, content : resp , content : resp
, size : "xl" , size : "xl"
, onClose : () => { fnDataRefreshInfo(); } // callback , onClose : () => { // callback
fnDataRefreshInfo(); // 자료 조회
}
}); });
} }
}); });
} }
// 삭제 후 재조회 // 삭제 callback
${pageName}Control.onRemoveOpnnSbmsn = (resp) => { ${pageName}Control.onRemoveOpnnSbmsn = (resp) => {
if (resp.saved) { if (resp.saved) {
fnDataRefreshInfo(); fnDataRefreshInfo(); // 자료 조회
} }
} }
// 삭제 // 삭제
${pageName}Control.removeOpnnSbmsn = (opnnId) => { ${pageName}Control.removeOpnnSbmsn = (params) => {
ajax.post({ ajax.post({
url : wctx.url("/excl/excl02/010/remove.do") url : wctx.url("/excl/excl02/010/remove.do")
, data : {opnnId : opnnId} , data : params || {}
, success : resp => ${pageName}Control.onRemoveOpnnSbmsn(resp) , success : resp => ${pageName}Control.onRemoveOpnnSbmsn(resp)
}); });
} }
@ -251,7 +254,7 @@
${pageName}Control.getOpnnSbmsnDlbrtInfo = (params) => { ${pageName}Control.getOpnnSbmsnDlbrtInfo = (params) => {
ajax.get({ ajax.get({
url : wctx.url("/excl/excl02/030/info.do") url : wctx.url("/excl/excl02/030/info.do")
, data : params , data : params || {}
, success : resp => { , success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix) resp = resp.replace(/infoPrefix/g, this.prefix)
.replace(/prefixName/g, this.prefixName) .replace(/prefixName/g, this.prefixName)
@ -266,8 +269,11 @@
} }
// 재조회 // 재조회
function fnDataRefreshInfo() { fnDataRefreshInfo = (crdnId) => {
let crdnId = $("#crdnId--${pageName}").val(); // 단속 ID 확인
if (crdnId == undefined || crdnId == null || crdnId == "") {
crdnId = $("#crdnId--${pageName}").val();
}
ajax.get({ ajax.get({
url : wctx.url("/sprt/sprt02/030/info.do") url : wctx.url("/sprt/sprt02/030/info.do")
@ -301,7 +307,7 @@
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID"); let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
// 단속 ID 가 없다면.. return // 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") { if (crdnId == null || crdnId == "") {
return; return;
} }
@ -319,7 +325,7 @@
let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID") let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID")
// 의견 ID 가 없다면.. return // 의견 ID 가 없다면.. return
if (opnnId == undefined || opnnId == "") { if (opnnId == null || opnnId == "") {
return; return;
} }
@ -336,14 +342,19 @@
let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID"); let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID");
// 의견 ID 가 없다면.. return // 의견 ID 가 없다면.. return
if (opnnId == undefined || opnnId == "") { if (opnnId == null || opnnId == "") {
return; return;
} }
let params = {
callPurpose : "remove"
, opnnId : opnnId
};
dialog.alert({ dialog.alert({
content : "선택한 ${prefixName} 정보를 삭제하시겠습니까?" content : "선택한 의견제출 정보를 삭제하시겠습니까?"
, onOK : () => { , onOK : () => {
${pageName}Control.removeOpnnSbmsn(opnnId); ${pageName}Control.removeOpnnSbmsn(params);
} }
}); });
} }
@ -353,7 +364,7 @@
let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID"); let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID");
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (opnnId == undefined || opnnId == "") { if (opnnId == null || opnnId == "") {
return; return;
} }
@ -377,6 +388,14 @@
return; return;
} }
// 기존 table에 자료가 존재하면 table 삭제
let fileListTable = document.getElementById("fileList--${pageName}"); // table element 찾기
// table 행(Row) 삭제
for (iLoop = 0; iLoop <= fileListTable.rows.length; iLoop++) {
let newRow = fileListTable.deleteRow(fileListTable.rows.length-1);
}
// 첨부파일 리스트 // 첨부파일 리스트
ajax.get({ ajax.get({
url : "file/list.do" url : "file/list.do"

Loading…
Cancel
Save