1. 개별총정보 - 처리상세정보 - 주소 변동 이력 수정.

2. 사전감경부과, 과태료 감경 관리, 부과관리 수정.
3. 기타 소스 정리.
main
jjh 6 months ago
parent ff4b8f66e1
commit af88334393

@ -78,7 +78,7 @@ public class CrdnPayerHstryBean extends AbstractBean {
return crdnPayerHstryMapper.updateCrdnPayer(crdnPayerHstry);
}
/** , .
/** , .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
@ -94,7 +94,38 @@ public class CrdnPayerHstryBean extends AbstractBean {
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장 납부자ID를 변경한다.
// 단속 납부자 주소 이력 정보를 등록한다.
rtnScs = createCrdnPayerAddrHstry(crdnPayerHstry);
if (!rtnScs) {
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장의 납부자 ID, 주소 일련번호를 변경한다.
rtnScs = updateCrdnPayer(crdnPayerHstry);
if (!rtnScs) {
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return rtnScs;
}
/** , .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean createHstryUpdateCrdnPayerAddr(CrdnPayerHstry crdnPayerHstry) {
boolean rtnScs = false; // DB 처리 결과
// 단속 납부자 주소 이력 정보를 등록한다.
rtnScs = createCrdnPayerAddrHstry(crdnPayerHstry);
if (!rtnScs) {
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장의 납부자 ID, 주소 일련번호를 변경한다.
rtnScs = updateCrdnPayer(crdnPayerHstry);
if (!rtnScs) {
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback

@ -48,18 +48,7 @@ public interface CrdnReRegMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertCrdnReReg(Map<String, Object> params);
/** .
* @param crdnReReg
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertCrdnReReg(CrdnReReg crdnReReg) {
return crdnReReg != null && insertCrdnReReg(params().set("crdnReReg", crdnReReg)) == 1;
}
int insertCrdnReReg(CrdnReReg crdnReReg);
/** .
* @param params
@ -68,17 +57,6 @@ public interface CrdnReRegMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteCrdnReReg(Map<String, ?> params);
/** .
* @param crdnReReg
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean deleteCrdnReReg(CrdnReReg crdnReReg) {
return crdnReReg != null && deleteCrdnReReg(params().set("crdnReReg", crdnReReg)) == 1;
}
int deleteCrdnReReg(CrdnReReg crdnReReg);
}

@ -7,7 +7,6 @@ import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;

@ -1,7 +1,6 @@
package cokr.xit.fims.excl.dao;
import java.util.List;
import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
@ -48,18 +47,7 @@ public interface OpnnDlbrMbrMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertOpnnDlbrMbr(Map<String, Object> params);
/** .
* @param opnnDlbrMbr
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertOpnnDlbrMbr(OpnnDlbrMbr opnnDlbrMbr) {
return opnnDlbrMbr != null && insertOpnnDlbrMbr(params().set("opnnDlbrMbr", opnnDlbrMbr)) == 1;
}
int insertOpnnDlbrMbr(OpnnDlbrMbr opnnDlbrMbr);
/** .
* @param params
@ -68,17 +56,6 @@ public interface OpnnDlbrMbrMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateOpnnDlbrMbr(Map<String, Object> params);
/** .
* @param opnnDlbrMbr
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean updateOpnnDlbrMbr(OpnnDlbrMbr opnnDlbrMbr) {
return opnnDlbrMbr != null && updateOpnnDlbrMbr(params().set("opnnDlbrMbr", opnnDlbrMbr)) == 1;
}
int updateOpnnDlbrMbr(OpnnDlbrMbr opnnDlbrMbr);
}

@ -47,7 +47,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
}
// 기본 정렬
if (req.getOrderBy() == null) {
req.setOrderBy("C.CRDN_ID, OS.OPNN_ID DESC");
req.setOrderBy("OS.OPNN_ID DESC");
}
List<DataObject> opnnSbmsns = selectOpnnSbmsns(req);
@ -68,18 +68,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertOpnnSbmsn(Map<String, Object> params);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && insertOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
}
int insertOpnnSbmsn(OpnnSbmsn opnnSbmsn);
/** .
* @param params
@ -88,18 +77,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateOpnnSbmsn(Map<String, Object> params);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean updateOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && updateOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
}
int updateOpnnSbmsn(OpnnSbmsn opnnSbmsn);
/** .
* @param params
@ -108,18 +86,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateOpnnSbmsnAnswer(Map<String, Object> params);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && updateOpnnSbmsnAnswer(params().set("opnnSbmsn", opnnSbmsn)) == 1;
}
int updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn);
/** .
* @param params
@ -128,18 +95,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteOpnnSbmsn(Map<String, ?> params);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean deleteOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && deleteOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
}
int deleteOpnnSbmsn(OpnnSbmsn opnnSbmsn);
/** .
* @param params
@ -148,10 +104,6 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateCrdnOpnnSbmsnYn(Map<String, Object> params);
default boolean updateCrdnOpnnSbmsnYn(Crdn crdn) {
return crdn != null && updateCrdnOpnnSbmsnYn(params().set("crdn", crdn)) == 1;
}
int updateCrdnOpnnSbmsnYn(Crdn crdn);
}

@ -93,10 +93,6 @@ public class CrdnReRegBean extends AbstractBean {
* </ul>
*/
public String createCrdnReReg(CrdnReReg crdnReReg) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
// 단속 ID로 단속(TB_CRDN) 정보 조회
DataObject crdnInfo = crdnReRegMapper.selectCrdnInfo(crdnReReg.getBfrCrdnId());
@ -122,12 +118,11 @@ public class CrdnReRegBean extends AbstractBean {
}
}
// 재등록 단속 정보(TB_CRDN)
Crdn crdn = new Crdn();
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
// 재등록 단속 정보(TB_CRDN)
Crdn crdn = new Crdn();
crdn.setSggCd(crdnInfo.string("SGG_CD")); // 시군구 코드
crdn.setTaskSeCd(crdnInfo.string("TASK_SE_CD")); // 업무 구분 코드
crdn.setCrdnRegSeCd("03"); // 단속 등록 구분 코드(FIM026) - 재 등록
@ -171,7 +166,7 @@ public class CrdnReRegBean extends AbstractBean {
crdn.setTowngYn(crdnInfo.string("TOWNG_YN")); // 견인 여부
// 단속 대장 입력
rtnScs = crdnBean.create(null, crdn, fileInfoList);
boolean rtnScs = crdnBean.create(null, crdn, fileInfoList);
if (!rtnScs) {
throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -180,14 +175,12 @@ public class CrdnReRegBean extends AbstractBean {
crdnReReg.setCrdnId(crdn.getCrdnId());
crdnReReg.setCrdnRegSeCd("03");
rtnScs = crdnReRegMapper.insertCrdnReReg(crdnReReg);
if (!rtnScs) {
int rtnNocs = crdnReRegMapper.insertCrdnReReg(crdnReReg);
if (rtnNocs != 1) {
throw new RuntimeException("재부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -110,7 +110,6 @@ public class LevyExclBean extends AbstractBean {
*/
public String createLevyExcl(LevyExcl levyExcl) {
// 변수 선언
boolean rtnScs = false; // 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
@ -195,7 +194,7 @@ public class LevyExclBean extends AbstractBean {
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId());
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("부과제외 등록 작업 중 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -213,19 +212,13 @@ public class LevyExclBean extends AbstractBean {
* </ul>
*/
public String updateLevyExcl(LevyExcl levyExcl) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 부과제외(TB_LEVY_EXCL) 대장을 수정 한다.
rtnNocs = levyExclMapper.updateLevyExcl(levyExcl);
int rtnNocs = levyExclMapper.updateLevyExcl(levyExcl);
if (rtnNocs != 1) {
throw new RuntimeException("부과제외 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -237,7 +230,6 @@ public class LevyExclBean extends AbstractBean {
*/
public String removeLevyExcl(LevyExcl levyExcl) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
@ -276,7 +268,7 @@ public class LevyExclBean extends AbstractBean {
deltCrdnSttsCd = "93"; // 계고 삭제
}
rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(levyExclInfo.string("CRDN_ID"), levyExclInfo.string("CRDN_STTS_CD"), deltCrdnSttsCd, levyExcl.getDelRsn(), true);
boolean rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(levyExclInfo.string("CRDN_ID"), levyExclInfo.string("CRDN_STTS_CD"), deltCrdnSttsCd, levyExcl.getDelRsn(), true);
if (!rtnScs) {
throw new RuntimeException("부과제외 삭제 작업 중 단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}

@ -84,16 +84,13 @@ public class OpnnDlbrMbrBean extends AbstractBean {
* </ul>
*/
public String createOpnnDlbrMbr(OpnnDlbrMbr opnnDlbrMbr) {
String rtnMsg = ""; // 처리 결과 메시지
boolean rtnScs = opnnDlbrMbrMapper.insertOpnnDlbrMbr(opnnDlbrMbr);
if (!rtnScs) {
// 의견제출 심의 회원 정보를 등록한다.
int rtnNocs = opnnDlbrMbrMapper.insertOpnnDlbrMbr(opnnDlbrMbr);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 심의의원 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -104,16 +101,13 @@ public class OpnnDlbrMbrBean extends AbstractBean {
* </ul>
*/
public String updateOpnnDlbrMbr(OpnnDlbrMbr opnnDlbrMbr) {
String rtnMsg = ""; // 처리 결과 메시지
boolean rtnScs = opnnDlbrMbrMapper.updateOpnnDlbrMbr(opnnDlbrMbr);
if (!rtnScs) {
// 의견제출 심의 회원 정보를 수정한다.
int rtnNocs = opnnDlbrMbrMapper.updateOpnnDlbrMbr(opnnDlbrMbr);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 심의의원 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -119,7 +119,7 @@ public class OpnnSbmsnBean extends AbstractBean {
*/
public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속 ID로 단속, 의견제출 정보 조회
@ -140,8 +140,8 @@ public class OpnnSbmsnBean extends AbstractBean {
// 의견제출 대장을 등록 한다.
opnnSbmsn.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수
rtnScs = opnnSbmsnMapper.insertOpnnSbmsn(opnnSbmsn); // 의견제출 등록
if (!rtnScs) {
rtnNocs = opnnSbmsnMapper.insertOpnnSbmsn(opnnSbmsn); // 의견제출 등록
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -163,7 +163,7 @@ public class OpnnSbmsnBean extends AbstractBean {
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -174,8 +174,8 @@ public class OpnnSbmsnBean extends AbstractBean {
crdn.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("Y");
rtnScs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속 대장 수정
if (!rtnScs) {
rtnNocs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속 대장 수정
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -192,10 +192,6 @@ public class OpnnSbmsnBean extends AbstractBean {
* </ul>
*/
public String updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출 첨부파일 등록
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE)
@ -220,14 +216,12 @@ public class OpnnSbmsnBean extends AbstractBean {
}
// 의견제출 대장을 수정 한다.
rtnScs = opnnSbmsnMapper.updateOpnnSbmsn(opnnSbmsn);
if (!rtnScs) {
int rtnNocs = opnnSbmsnMapper.updateOpnnSbmsn(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** () .
@ -239,7 +233,7 @@ public class OpnnSbmsnBean extends AbstractBean {
*/
public String updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 자료 조회
@ -264,8 +258,8 @@ public class OpnnSbmsnBean extends AbstractBean {
}
// 의견제출 답변을 수정 한다.
rtnScs = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (!rtnScs) {
rtnNocs = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -327,15 +321,13 @@ public class OpnnSbmsnBean extends AbstractBean {
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 심의 처리로 인한 단속상태 변경");
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -347,7 +339,7 @@ public class OpnnSbmsnBean extends AbstractBean {
*/
public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 정보를 조회한다.
@ -369,8 +361,8 @@ public class OpnnSbmsnBean extends AbstractBean {
}
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다.
rtnScs = opnnSbmsnMapper.deleteOpnnSbmsn(opnnSbmsn);
if (!rtnScs) {
rtnNocs = opnnSbmsnMapper.deleteOpnnSbmsn(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -401,7 +393,7 @@ public class OpnnSbmsnBean extends AbstractBean {
deltCrdnSttsCd = "92";
}
rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(opnnSbmsnInfo.string("CRDN_ID"), crdnSttsCd, deltCrdnSttsCd, opnnSbmsn.getDelRsn(), insertBfrSttsYN);
boolean rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(opnnSbmsnInfo.string("CRDN_ID"), crdnSttsCd, deltCrdnSttsCd, opnnSbmsn.getDelRsn(), insertBfrSttsYN);
if (!rtnScs) {
throw new RuntimeException("단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -428,8 +420,8 @@ public class OpnnSbmsnBean extends AbstractBean {
crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("N");
rtnScs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속(TB_CRDN) 대장 수정
if (!rtnScs) {
rtnNocs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속(TB_CRDN) 대장 수정
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}

@ -57,4 +57,9 @@ public class Rduct extends AbstractEntity {
*/
private String delRsn;
/**
* IDs
*/
private String[] rductIds;
}

@ -63,13 +63,5 @@ public interface RductService {
*/
String removeRduct(Rduct rduct);
/** .
* @param rduct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeRducts(LevyQuery req);
}

@ -68,33 +68,4 @@ public class RductServiceBean extends AbstractServiceBean implements RductServic
return rductBean.removeRduct(rduct);
}
@Override
public String removeRducts(LevyQuery req) {
// 변수 선언
String rtnMsg = ""; // 처리 결과 메시지
// 감경 IDs 건수를 확인하여 1건이하면.. 종료
if (req.getRductIds().length < 1 ) {
rtnMsg = "작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 감경 IDs 만큼 반복..
for (int iLoop = 0; iLoop < req.getRductIds().length; iLoop++) {
Rduct rduct = new Rduct();
rduct.setRductId(req.getRductIds()[iLoop]); // 감경 ID
rduct.setDelRsn(req.getDelRsn()); // 삭제 사유
// 과태료 감경 삭제 호출
rtnMsg = rductBean.removeRduct(rduct);
// 오류가 발생하였으면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
}
return rtnMsg;
}
}

@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.stereotype.Controller;
@ -88,7 +89,7 @@ public class Levy01Controller extends ApplicationController {
.addObject("infoPrefix", "rductLevyTrgt") // prefix
.addObject("infoPrefixUrl", "/levy/levy01") // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 업무 구분 코드(TASK_SE_CD)
;
}
@ -171,7 +172,7 @@ public class Levy01Controller extends ApplicationController {
*/
@Task({"PVS","BPV"})
@RequestMapping(name="사전 감경부과 정보 조회", value=METHOD_URL.getReductionLevyTargetInfo)
public ModelAndView getReductionLevyTargetInfo(LevyQuery req) {
public ModelAndView getReductionLevyTargetInfo(HttpServletRequest hReq, LevyQuery req) {
// 감경 부과일자
DataObject info = taskBean.getAdvntceYmdInfo(new CmmnQuery().setSggCd(req.getSggCd())
.setTaskSeCd(req.getTaskSeCd()));
@ -185,10 +186,11 @@ public class Levy01Controller extends ApplicationController {
info.put("GRAMT_ADVNTCE_AMT", req.getGramtAdvntceAmt());
return mav
.addObject("pageName", "levy01020")
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "levy01020") // jsp pageName
.addObject("infoPrefix", "rductLevyTrgt") // prefix
.addObject("infoPrefixUrl", "/levy/levy01") // prefixUrl
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", json ? req : toJson(req)) // 검색 조건
.addObject("rductLevyTrgtInfo", json ? info : toJson(info))
;
@ -235,7 +237,7 @@ public class Levy01Controller extends ApplicationController {
.addObject("infoPrefix", "levy") // prefix
.addObject("infoPrefixUrl", "/levy/levy01") // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM010List", commonCodes.get("FIM010")) // 단속 상태 코드(CRDN_STTS_CD)
.addObject("FIM046List", commonCodes.get("FIM046")) // 감경 구분 코드(RDUCT_SE_CD)
;

@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.stereotype.Controller;
@ -83,8 +84,9 @@ public class Levy02Controller extends ApplicationController {
return mav.addObject("pageName", "levy02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "rduct") // prefix
.addObject("infoPrefixUrl", "/levy/levy02") // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
;
}
@ -168,8 +170,7 @@ public class Levy02Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="과태료 감경 정보 조회", value=METHOD_URL.getRductInfo)
public ModelAndView getRductInfo(LevyQuery req) {
//
public ModelAndView getRductInfo(HttpServletRequest hReq, LevyQuery req) {
DataObject info = rductService.getRductInfo(req);
// 등록을 호출하였지만 등록된 감경 ID가 있는지 확인.
@ -183,15 +184,17 @@ public class Levy02Controller extends ApplicationController {
return mav.addObject("rtnMsg", "납부자 정보가 없습니다.");
} else {
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/levy/levy02020-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM019");
return mav
.addObject("pageName", "levy02020")
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "levy02020") // jsp pageName
.addObject("infoPrefix", "rduct") // prefix
.addObject("infoPrefixUrl", "/levy/levy02") // prefixUrl
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("rductInfo", json ? info : toJson(info))
;
@ -258,33 +261,22 @@ public class Levy02Controller extends ApplicationController {
@RequestMapping(name="과태료 감경 대장 삭제", value=METHOD_URL.removeRduct)
public ModelAndView removeRduct(Rduct rduct) {
boolean saved = false;
String rtnMsg = rductService.removeRduct(rduct);
String rtnMsg = "";
if (rtnMsg.contains("[S]")) {
saved = true;
if (rduct.getRductIds() == null || rduct.getRductIds().length < 1) {
rtnMsg = rductService.removeRduct(rduct);
} else {
saved = false;
// 부과제외 IDs 만큼 반복..
for (int iLoop = 0; iLoop < rduct.getRductIds().length; iLoop++) {
rduct.setRductId(rduct.getRductIds()[iLoop]); // 감경 ID 설정
// 부과제외 삭제 호출
rtnMsg = rductService.removeRduct(rduct);
if (rtnMsg.contains("[F]")) // 오류가 발생하였으면 종료..
break;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param rductIDs IDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="과태료 감경 대장 목록 삭제", value=METHOD_URL.removeRductList)
public ModelAndView removeRductList(LevyQuery req) {
boolean saved = false;
String rtnMsg = rductService.removeRducts(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {

@ -83,11 +83,6 @@ public class Payer extends AbstractEntity {
*/
private String addrInptSeCd;
/**
*
*/
private String addrInqYmd;
/**
*
*/

@ -31,10 +31,14 @@ public class PayerQuery extends QueryRequest {
private String addrSn;
/** 이력 일련번호 */
private String hstrySn;
/** 도로명 코드 */
private String roadNmCd;
/** 주소 */
private String addr;
/** 상세 주소 */
private String dtlAddr;
/** 단속 ID */
private String crdnId;
/** 삭제 여부 */
private String delYn;
/** 호출 용도 */
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
@ -147,27 +151,58 @@ public class PayerQuery extends QueryRequest {
public void setRtpyrNo(String rtpyrNo) {
this.rtpyrNo = rtpyrNo;
}
/*
public PayerQuery setRtpyrNo(String rtpyrNo) {
this.rtpyrNo = rtpyrNo;
return this;
/** .
* @return
*/
public String getRoadNmCd() {
return roadNmCd;
}
*/
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
/** .
* @param roadNmCd
* @return PayerQuery
*/
public void setRoadNmCd(String roadNmCd) {
this.roadNmCd = roadNmCd;
}
public <T extends PayerQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
/** .
* @return
*/
public String getAddr() {
return addr;
}
/** .
* @param addr
* @return PayerQuery
*/
public void setAddr(String addr) {
this.addr = addr;
}
/** .
* @return
*/
public String getDtlAddr() {
return dtlAddr;
}
/** .
* @param dtlAddr
* @return PayerQuery
*/
public void setDtlAddr(String dtlAddr) {
this.dtlAddr = dtlAddr;
}
public String getDelYn() {
return ifEmpty(delYn, () -> null);
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
}
public <T extends PayerQuery> T setDelYn(String delYn) {
this.delYn = delYn;
public <T extends PayerQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}

@ -33,18 +33,7 @@ public interface PayerAddrMapper extends AbstractMapper {
* @param req
* @return
*/
List<DataObject> selectPayerAddrs(PayerQuery req);
default DataObject selectPayerAddrsInfo(PayerQuery req) {
// 기본 정렬
if (req.getOrderBy() == null) {
req.setOrderBy("PA.ADDR_SN DESC");
}
List<DataObject> payerAddrs = selectPayerAddrs(req);
return !payerAddrs.isEmpty() ? payerAddrs.get(0) : null;
}
List<Payer> selectPayerAddrs(PayerQuery req);
/** .
* @param params
@ -86,4 +75,10 @@ public interface PayerAddrMapper extends AbstractMapper {
return payer != null && updatePayerAddr(params().set("payerAddr", payer)) == 1;
}
/** .
* @param req
* @return
*/
List<DataObject> selectPayerAddrHstrys(PayerQuery req);
}

@ -98,12 +98,6 @@ public interface PayerMapper extends AbstractMapper {
return !crdnPayers.isEmpty() ? crdnPayers.get(0) : null;
}
/** .
* @param req
* @return
*/
List<DataObject> selectPayerHstrys(PayerQuery req);
/** .
* @param crdnId ID
* @return ,
@ -114,4 +108,10 @@ public interface PayerMapper extends AbstractMapper {
return selectCrdn(new PayerQuery().setCrdnId(crdnId));
}
/** .
* @param req
* @return
*/
List<DataObject> selectPayerHstrys(PayerQuery req);
}

@ -87,10 +87,16 @@ public interface PayerService {
*/
String createCrdnPayer(Payer payer);
/** .
/** .
* @param req
* @return
*/
List<DataObject> getPayerHstrys(PayerQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getPayerAddrHstrys(PayerQuery req);
}

@ -72,13 +72,63 @@ public class PayerBean extends AbstractBean {
}
public Payer getPayer(PayerQuery req) {
req.setOrderBy("P.RTPYR_ID DESC, PA.ADDR_SN DESC");
if (req.getOrderBy() == null) {
req.setOrderBy("P.RTPYR_ID DESC");
}
List<Payer> payers = getPayers(req);
return !payers.isEmpty() ? payers.get(0) : null;
}
/** .
* @param req
* @return
*/
public List<Payer> getPayerAddrs(PayerQuery req) {
return payerAddrMapper.selectPayerAddrs(req);
}
public Payer getPayerAddr(PayerQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("PA.ADDR_SN DESC");
}
List<Payer> payers = getPayerAddrs(req);
return !payers.isEmpty() ? payers.get(0) : null;
}
public Payer getPayerAddrInfo(Payer payer) {
// PayerQuery
PayerQuery req = new PayerQuery();
req.setRtpyrSeCd(payer.getRtpyrSeCd()); // 납부자 구분 코드
req.setRtpyrNo(payer.getRtpyrNo()); // 납부자 번호
req.setRoadNmCd(payer.getRoadNmCd()); // 도로명 코드
req.setAddr(payer.getAddr()); // 주소
req.setDtlAddr(payer.getDtlAddr()); // 상세 주소
// 납부자 정보 조회
req.setOrderBy("P.RTPYR_ID DESC");
List<Payer> payers = getPayers(req);
// 납부자 ID 설정
payer.setRtpyrId(payers.get(0).getRtpyrId());
// 납부자 정보 및 주소 정보를 조회
req.setRtpyrId(payer.getRtpyrId());
req.setOrderBy("PA.ADDR_SN DESC");
payers = getPayerAddrs(req);
if (payers.get(0).getAddrSn().equals("")) {
createPayerAddr(payer); // 주소 신규 등록
} else {
payer.setAddrSn(payers.get(0).getAddrSn()); // 주소 일련번호 설정
}
return payer;
}
/** .
* @param payer
* @return
@ -165,7 +215,6 @@ public class PayerBean extends AbstractBean {
payer.setVhrno(basicInfo.getVhrno());
payer.setRtpyrInptSeCd("02");
payer.setAddrInptSeCd("02");
payer.setRtpyrSeCd(
Map.of(
"11", "01",
@ -204,22 +253,7 @@ public class PayerBean extends AbstractBean {
payer.setDtlAddr(basicInfo.getUse_strnghld_adres_nm());
payer.setWholAddr(basicInfo.getRoad_nm_adres() + ", " + basicInfo.getUse_strnghld_adres_nm());
// 납부자 조회
PayerQuery req = new PayerQuery();
req.setRtpyrSeCd(payer.getRtpyrSeCd());
req.setRtpyrNo(payer.getRtpyrNo());
req.setRtpyrId(payer.getRtpyrId());
Payer result = create(payer) ? payer : getPayer(req);
// 등록된 최종 주소를 확인하여 주소+상세주소가 다르다면 주소를 신규 등록한다.
if (result.getAddr().equals(basicInfo.getRoad_nm_adres()) && result.getDtlAddr().equals(basicInfo.getUse_strnghld_adres_nm())) {
// 납부자 주소의 최중 수정일자를 수정
updatePayerAddr(result);
} else {
// 납부자 주소를 신규 등록
createPayerAddr(result);
}
Payer result = create(payer) ? payer : getPayerAddrInfo(payer);
if (result != null)
result.setVehicleInfo(basicInfo);
@ -253,7 +287,6 @@ public class PayerBean extends AbstractBean {
public String createCrdnPayer(Payer payer) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지
String strTemp = "";
// 지하 구분 코드
@ -267,14 +300,11 @@ public class PayerBean extends AbstractBean {
payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr());
}
// 단속 ID로 단속 정보 조회
DataObject crdnInfo = payerMapper.selectCrdnInfo(payer.getCrdnId());
// 납부자 ID로 납부자 정보 조회
Payer payerInfo = getPayer(new PayerQuery().setRtpyrId(payer.getRtpyrId())
.setAddrSn(payer.getAddrSn()));
// 단속 ID로 단속, 납부자, 주소 정보 조회
DataObject crdnPayerAddrInfo = payerMapper.selectCrdnInfo(payer.getCrdnId());
if (payer.getRtpyrNo().equals(payerInfo.getRtpyrNo())) { // 주민등록번호가 동일하다면..
// 주민등록번호가 동일하다면..
if (crdnPayerAddrInfo.string("RTPYR_NO").equals(payer.getRtpyrNo())) {
// 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다.
rtnScs = update(payer);
if (!rtnScs) {
@ -282,57 +312,50 @@ public class PayerBean extends AbstractBean {
}
// 주소가 변경되었는지 확인
if (payerInfo.getZip().equals(payer.getZip())
&& payerInfo.getAddr().equals(payer.getAddr())
&& payerInfo.getDtlAddr().equals(payer.getDtlAddr())) {
payer.setAddrSn(payerInfo.getAddrSn()); // 주소 일련번호
rtnScs = updatePayerAddr(payer); // 납부자 주소 수정일자만 수정
if (crdnPayerAddrInfo.string("ZIP").equals(payer.getZip())
&& crdnPayerAddrInfo.string("ADDR").equals(payer.getAddr())
&& crdnPayerAddrInfo.string("DTL_ADDR").equals(payer.getDtlAddr())
&& crdnPayerAddrInfo.string("ROAD_NM_CD").equals(payer.getRoadNmCd())) {
// 주소 일련번호 설정
payer.setAddrSn(crdnPayerAddrInfo.string("ADDR_SN"));
} else {
rtnScs = createPayerAddr(payer); // 납부자 주소 등록
// 납부자 주소 등록
rtnScs = createPayerAddr(payer);
if (!rtnScs) {
throw new RuntimeException("납부자 등록 실행중 주소 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
CrdnPayerHstry crdnPayerAddrHstry = new CrdnPayerHstry();
crdnPayerAddrHstry.setCrdnId(payer.getCrdnId());
crdnPayerAddrHstry.setRtpyrId(payer.getRtpyrId());
crdnPayerAddrHstry.setAddrSn(payer.getAddrSn());
crdnPayerHstryBean.createCrdnPayerAddrHstry(crdnPayerAddrHstry);
}
// 단속 대장의 납부자 ID 및 주소 일련번호를 수정한다.
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(payer.getCrdnId());
crdnPayerHstry.setRtpyrId(payer.getRtpyrId());
crdnPayerHstry.setAddrSn(payer.getAddrSn());
rtnScs = crdnPayerHstryBean.updateCrdnPayer(crdnPayerHstry);
// 납부자 주소 변경 이력 생성
rtnScs = crdnPayerHstryBean.createHstryUpdateCrdnPayerAddr(crdnPayerAddrHstry);
if (!rtnScs) {
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("납부자 등록 실행중 단속 대장에 주소 일련번호 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
// 납부자 대장(TB_PAYER)에 납부자 정보를 신규 등록한다.
rtnScs = create(payer);
if (!rtnScs) {
throw new RuntimeException("납부자 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
Payer result = create(payer) ? payer : getPayerAddrInfo(payer);
// 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다.
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(payer.getCrdnId());
crdnPayerHstry.setRtpyrId(payer.getRtpyrId());
crdnPayerHstry.setAddrSn(payer.getAddrSn());
crdnPayerHstry.setRtpyrId(result.getRtpyrId());
crdnPayerHstry.setAddrSn(result.getAddrSn());
rtnScs = crdnPayerHstryBean.createHstryUpdateCrdnPayer(crdnPayerHstry);
if (!rtnScs) {
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자 ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
if (crdnInfo.number("CRDN_STTS_CD").intValue() < 21) { // 납부자 등록 완료
if (crdnPayerAddrInfo.number("CRDN_STTS_CD").intValue() < 21) { // 납부자 등록 완료
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnId(crdnPayerAddrInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnPayerAddrInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnPayerAddrInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("21");
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
@ -341,21 +364,31 @@ public class PayerBean extends AbstractBean {
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
/** .
* @param req
* @return
*/
public List<DataObject> getPayerHstrys(PayerQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("PH.REG_DT DESC");
req.setOrderBy("CPH.REG_DT DESC");
}
return payerMapper.selectPayerHstrys(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getPayerAddrHstrys(PayerQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("CPAH.REG_DT DESC");
}
return payerAddrMapper.selectPayerAddrHstrys(req);
}
}

@ -89,4 +89,9 @@ public class PayerServiceBean extends AbstractServiceBean implements PayerServic
return payerBean.getPayerHstrys(req);
}
@Override
public List<DataObject> getPayerAddrHstrys(PayerQuery req) {
return payerBean.getPayerAddrHstrys(req);
}
}

@ -295,17 +295,18 @@ public class Sprt02Controller extends ApplicationController {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 조회
CrdnSttsHstryQuery crdnSttsHstryQuery = new CrdnSttsHstryQuery();
crdnSttsHstryQuery.setCrdnId(req.getCrdnId());
crdnSttsHstryQuery.setOrderBy("CSH.REG_DT DESC, CSH.STTS_HSTRY_ID DESC"); // 정렬
crdnSttsHstryQuery.setCrdnId(req.getCrdnId()); // 단속 ID
crdnSttsHstryQuery.setOrderBy("CSH.STTS_HSTRY_ID DESC"); // 정렬
List<?> crdnSttsHstry = crdnSttsHstryService.getCrdnSttsHstrys(crdnSttsHstryQuery);
// 납부자 변경 이력(TB_PAYER_HSTRY) 조회
PayerQuery payerQuery = new PayerQuery();
payerQuery.setRtpyrId(req.getRtpyrId());
payerQuery.setOrderBy("PH.REG_DT DESC"); // 정렬
payerQuery.setCrdnId(req.getCrdnId()); // 단속 ID
payerQuery.setRtpyrId(req.getRtpyrId()); // 납부자 ID
payerQuery.setOrderBy("CPAH.REG_DT DESC"); // 정렬
List<?> payerHstry = payerService.getPayerHstrys(payerQuery);
List<?> payerAddrHstry = payerService.getPayerAddrHstrys(payerQuery);
boolean json = jsonResponse();
@ -316,7 +317,7 @@ public class Sprt02Controller extends ApplicationController {
.addObject("rduct", json ? rduct : toJson(rduct)) // 과태료 감경 정보
.addObject("levyExcl", json ? levyExcl : toJson(levyExcl)) // 부과 제외 정보
.addObject("crdnSttsHstry", json ? crdnSttsHstry : toJson(crdnSttsHstry)) // 단속 상태 이력
.addObject("payerHstry", json ? payerHstry : toJson(payerHstry)) // 납부자 변경 이력
.addObject("payerAddrHstry", json ? payerAddrHstry : toJson(payerAddrHstry)) // 납부자 주소 변경 이력
;
// 재조회로 호출되었다면..

@ -183,11 +183,14 @@
<include refid="utility.orderBy" />
</select>
<insert id="insertCrdnReReg" parameterType="map">/* 단속 재등록 등록(crdnReRegMapper.insertCrdnReReg) */
<selectKey resultType="string" keyProperty="crdnReReg.reRegId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(#{crdnReReg.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RE_REG_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
FROM TB_CRDN_RE_REG
WHERE RE_REG_ID LIKE CONCAT(#{crdnReReg.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
<insert id="insertCrdnReReg" parameterType="cokr.xit.fims.excl.CrdnReReg">/* 단속 재등록 등록(crdnReRegMapper.insertCrdnReReg) */
<selectKey resultType="string" keyProperty="reRegId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyBySggAndYear">
<property name="TABLE_NAME" value="TB_CRDN_RE_REG" />
<property name="TABLE_KEY" value="RE_REG_ID" />
<property name="sggCd" value="#{sggCd}" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_CRDN_RE_REG (
@ -202,25 +205,25 @@
, RGTR <!-- 등록자 -->
)
VALUES (
#{crdnReReg.reRegId} <!-- 재등록 ID -->
, #{crdnReReg.bfrCrdnId} <!-- 이전 단속 ID -->
, #{crdnReReg.crdnId} <!-- 단속 ID -->
#{reRegId} <!-- 재등록 ID -->
, #{bfrCrdnId} <!-- 이전 단속 ID -->
, #{crdnId} <!-- 단속 ID -->
, <include refid="utility.today" /> <!-- 재 등록 일자 -->
, #{crdnReReg.crdnRegSeCd} <!-- 단속 등록 구분 코드 -->
, #{crdnReReg.etcCn} <!-- 기타 내용 -->
, #{crdnRegSeCd} <!-- 단속 등록 구분 코드 -->
, #{etcCn} <!-- 기타 내용 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{crdnReReg.createdBy} <!-- 등록자 -->
, #{createdBy} <!-- 등록자 -->
)
</insert>
<update id="deleteCrdnReReg" parameterType="map">/* 단속 재등록 삭제(crdnReRegMapper.deleteCrdnReReg) */
<update id="deleteCrdnReReg" parameterType="cokr.xit.fims.excl.CrdnReReg">/* 단속 재등록 삭제(crdnReRegMapper.deleteCrdnReReg) */
UPDATE TB_CRDN_RE_REG
SET DEL_YN = 'Y'
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{crdnReReg.modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{crdnReReg.delRsn} <!-- 삭제 사유 -->
WHERE RE_REG_ID = #{crdnReReg.reRegId} <!-- 재등록 ID -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{delRsn} <!-- 삭제 사유 -->
WHERE RE_REG_ID = #{reRegId} <!-- 재등록 ID -->
AND DEL_YN = 'N'
</update>

@ -99,10 +99,13 @@
AND T.TASK_SE_CD = #{taskSeCd}
</select>
<insert id="insertOpnnDlbrMbr" parameterType="map">/* 의견제출 심의 회원 등록(opnnDlbrMbrMapper.insertOpnnDlbrMbr) */
<selectKey resultType="string" keyProperty="opnnDlbrMbr.mngId" keyColumn="NEW_ID" order="BEFORE">
SELECT LPAD(CAST(IFNULL(MAX(MNG_ID) + 1, 1) AS INT), 3, '0') AS NEW_ID
FROM TB_OPNN_DLBR_MBR
<insert id="insertOpnnDlbrMbr" parameterType="cokr.xit.fims.excl.OpnnDlbrMbr">/* 의견제출 심의 회원 등록(opnnDlbrMbrMapper.insertOpnnDlbrMbr) */
<selectKey resultType="string" keyProperty="mngId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.key">
<property name="TABLE_NAME" value="TB_OPNN_DLBR_MBR" />
<property name="TABLE_KEY" value="MNG_ID" />
<property name="pad" value="3" />
</include>
</selectKey>
INSERT
INTO TB_OPNN_DLBR_MBR (
@ -129,49 +132,49 @@
, MDFR <!-- 수정자 -->
)
VALUES (
#{opnnDlbrMbr.mngId} <!-- 관리 ID -->
, #{opnnDlbrMbr.sggCd} <!-- 시군구 코드 -->
, #{opnnDlbrMbr.taskSeCd} <!-- 업무 구분 코드 -->
, #{opnnDlbrMbr.dlbrMbrJbgd1} <!-- 심의 회원 직급1 -->
, #{opnnDlbrMbr.dlbrMbrNm1} <!-- 심의 회원 명1 -->
, #{opnnDlbrMbr.dlbrMbrJbgd2} <!-- 심의 회원 직급2 -->
, #{opnnDlbrMbr.dlbrMbrNm2} <!-- 심의 회원 명2 -->
, #{opnnDlbrMbr.dlbrMbrJbgd3} <!-- 심의 회원 직급3 -->
, #{opnnDlbrMbr.dlbrMbrNm3} <!-- 심의 회원 명3 -->
, #{opnnDlbrMbr.dlbrMbrJbgd4} <!-- 심의 회원 직급4 -->
, #{opnnDlbrMbr.dlbrMbrNm4} <!-- 심의 회원 명4 -->
, #{opnnDlbrMbr.dlbrMbrJbgd5} <!-- 심의 회원 직급5 -->
, #{opnnDlbrMbr.dlbrMbrNm5} <!-- 심의 회원 명5 -->
, #{opnnDlbrMbr.dlbrMbrJbgd6} <!-- 심의 회원 직급6 -->
, #{opnnDlbrMbr.dlbrMbrNm6} <!-- 심의 회원 명6 -->
, #{opnnDlbrMbr.dlbrMbrJbgd7} <!-- 심의 회원 직급7 -->
, #{opnnDlbrMbr.dlbrMbrNm7} <!-- 심의 회원 명7 -->
#{mngId} <!-- 관리 ID -->
, #{sggCd} <!-- 시군구 코드 -->
, #{taskSeCd} <!-- 업무 구분 코드 -->
, #{dlbrMbrJbgd1} <!-- 심의 회원 직급1 -->
, #{dlbrMbrNm1} <!-- 심의 회원 명1 -->
, #{dlbrMbrJbgd2} <!-- 심의 회원 직급2 -->
, #{dlbrMbrNm2} <!-- 심의 회원 명2 -->
, #{dlbrMbrJbgd3} <!-- 심의 회원 직급3 -->
, #{dlbrMbrNm3} <!-- 심의 회원 명3 -->
, #{dlbrMbrJbgd4} <!-- 심의 회원 직급4 -->
, #{dlbrMbrNm4} <!-- 심의 회원 명4 -->
, #{dlbrMbrJbgd5} <!-- 심의 회원 직급5 -->
, #{dlbrMbrNm5} <!-- 심의 회원 명5 -->
, #{dlbrMbrJbgd6} <!-- 심의 회원 직급6 -->
, #{dlbrMbrNm6} <!-- 심의 회원 명6 -->
, #{dlbrMbrJbgd7} <!-- 심의 회원 직급7 -->
, #{dlbrMbrNm7} <!-- 심의 회원 명7 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{opnnDlbrMbr.createdBy} <!-- 등록자 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{opnnDlbrMbr.modifiedBy} <!-- 수정자 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateOpnnDlbrMbr" parameterType="map">/* 의견제출 심의 회원 수정(opnnDlbrMbrMapper.updateOpnnDlbrMbr) */
<update id="updateOpnnDlbrMbr" parameterType="cokr.xit.fims.excl.OpnnDlbrMbr">/* 의견제출 심의 회원 수정(opnnDlbrMbrMapper.updateOpnnDlbrMbr) */
UPDATE TB_OPNN_DLBR_MBR
SET DLBR_MBR_JBGD1 = #{opnnDlbrMbr.dlbrMbrJbgd1} <!-- 심의 회원 직급1 -->
, DLBR_MBR_NM1 = #{opnnDlbrMbr.dlbrMbrNm1} <!-- 심의 회원 명1 -->
, DLBR_MBR_JBGD2 = #{opnnDlbrMbr.dlbrMbrJbgd2} <!-- 심의 회원 직급2 -->
, DLBR_MBR_NM2 = #{opnnDlbrMbr.dlbrMbrNm2} <!-- 심의 회원 명2 -->
, DLBR_MBR_JBGD3 = #{opnnDlbrMbr.dlbrMbrJbgd3} <!-- 심의 회원 직급3 -->
, DLBR_MBR_NM3 = #{opnnDlbrMbr.dlbrMbrNm3} <!-- 심의 회원 명3 -->
, DLBR_MBR_JBGD4 = #{opnnDlbrMbr.dlbrMbrJbgd4} <!-- 심의 회원 직급4 -->
, DLBR_MBR_NM4 = #{opnnDlbrMbr.dlbrMbrNm4} <!-- 심의 회원 명4 -->
, DLBR_MBR_JBGD5 = #{opnnDlbrMbr.dlbrMbrJbgd5} <!-- 심의 회원 직급5 -->
, DLBR_MBR_NM5 = #{opnnDlbrMbr.dlbrMbrNm5} <!-- 심의 회원 명5 -->
, DLBR_MBR_JBGD6 = #{opnnDlbrMbr.dlbrMbrJbgd6} <!-- 심의 회원 직급6 -->
, DLBR_MBR_NM6 = #{opnnDlbrMbr.dlbrMbrNm6} <!-- 심의 회원 명6 -->
, DLBR_MBR_JBGD7 = #{opnnDlbrMbr.dlbrMbrJbgd7} <!-- 심의 회원 직급7 -->
, DLBR_MBR_NM7 = #{opnnDlbrMbr.dlbrMbrNm7} <!-- 심의 회원 명7 -->
SET DLBR_MBR_JBGD1 = #{dlbrMbrJbgd1} <!-- 심의 회원 직급1 -->
, DLBR_MBR_NM1 = #{dlbrMbrNm1} <!-- 심의 회원 명1 -->
, DLBR_MBR_JBGD2 = #{dlbrMbrJbgd2} <!-- 심의 회원 직급2 -->
, DLBR_MBR_NM2 = #{dlbrMbrNm2} <!-- 심의 회원 명2 -->
, DLBR_MBR_JBGD3 = #{dlbrMbrJbgd3} <!-- 심의 회원 직급3 -->
, DLBR_MBR_NM3 = #{dlbrMbrNm3} <!-- 심의 회원 명3 -->
, DLBR_MBR_JBGD4 = #{dlbrMbrJbgd4} <!-- 심의 회원 직급4 -->
, DLBR_MBR_NM4 = #{dlbrMbrNm4} <!-- 심의 회원 명4 -->
, DLBR_MBR_JBGD5 = #{dlbrMbrJbgd5} <!-- 심의 회원 직급5 -->
, DLBR_MBR_NM5 = #{dlbrMbrNm5} <!-- 심의 회원 명5 -->
, DLBR_MBR_JBGD6 = #{dlbrMbrJbgd6} <!-- 심의 회원 직급6 -->
, DLBR_MBR_NM6 = #{dlbrMbrNm6} <!-- 심의 회원 명6 -->
, DLBR_MBR_JBGD7 = #{dlbrMbrJbgd7} <!-- 심의 회원 직급7 -->
, DLBR_MBR_NM7 = #{dlbrMbrNm7} <!-- 심의 회원 명7 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{opnnDlbrMbr.modifiedBy} <!-- 수정자 -->
WHERE MNG_ID = #{opnnDlbrMbr.mngId}
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE MNG_ID = #{mngId}
</update>
</mapper>

@ -381,15 +381,15 @@
<include refid="utility.orderBy" />
</select>
<insert id="insertOpnnSbmsn" parameterType="map">/* 의견제출 대장 등록(opnnSbmsnMapper.insertOpnnSbmsn) */
<selectKey resultType="hashmap" keyProperty="opnnSbmsn.opnnId,opnnSbmsn.rcptNo" keyColumn="NEW_ID,NEW_RCPT_NO" order="BEFORE">
SELECT CONCAT(#{opnnSbmsn.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(OPNN_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
<insert id="insertOpnnSbmsn" parameterType="cokr.xit.fims.excl.OpnnSbmsn">/* 의견제출 대장 등록(opnnSbmsnMapper.insertOpnnSbmsn) */
<selectKey resultType="hashmap" keyProperty="opnnId,rcptNo" keyColumn="NEW_ID,NEW_RCPT_NO" order="BEFORE">
SELECT CONCAT(#{sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(OPNN_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
, (SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RCPT_NO, 5)) + 1, 1) AS INT), 6, '0'))
FROM TB_OPNN_SBMSN
WHERE OPNN_ID LIKE CONCAT(#{opnnSbmsn.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
AND RCPT_NO LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')) AS NEW_RCPT_NO
FROM TB_OPNN_SBMSN
WHERE OPNN_ID LIKE CONCAT(#{opnnSbmsn.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
WHERE OPNN_ID LIKE CONCAT(#{sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
</selectKey>
INSERT
INTO TB_OPNN_SBMSN (
@ -424,93 +424,93 @@
, MDFR <!-- 수정자 -->
)
VALUES (
#{opnnSbmsn.opnnId} <!-- 의견 ID -->
, #{opnnSbmsn.crdnId} <!-- 단속 ID -->
, #{opnnSbmsn.rcptNo} <!-- 접수 번호 -->
, #{opnnSbmsn.rcptYmd} <!-- 접수 일자 -->
, #{opnnSbmsn.rcptSeCd} <!-- 접수 구분 코드 -->
, #{opnnSbmsn.ownrRelCd} <!-- 소유주 관계 코드 -->
, #{opnnSbmsn.sttrNm} <!-- 진술자 명 -->
, #{opnnSbmsn.sttrBrdt} <!-- 진술자 생년월일 -->
, #{opnnSbmsn.sttrRrno} <!-- 진술자 주민등록번호 -->
, #{opnnSbmsn.sttrAddr} <!-- 진술자 주소 -->
, #{opnnSbmsn.sttrDaddr} <!-- 진술자 상세주소 -->
, #{opnnSbmsn.sttrZip} <!-- 진술자 우편번호 -->
, #{opnnSbmsn.sttrCttpc} <!-- 진술자 연락처 -->
, #{opnnSbmsn.sttrEml} <!-- 진술자 이메일 -->
, #{opnnSbmsn.opnnSbmsnCn} <!-- 의견 제출 내용 -->
, #{opnnSbmsn.opnnSbmsnSeCd} <!-- 의견 제출 구분 코드 -->
, #{opnnSbmsn.opnnSbmsnGist} <!-- 의견 제출 요지 -->
, #{opnnSbmsn.docNo} <!-- 문서 번호 -->
, #{opnnSbmsn.ntfctnSeCd} <!-- 통보 구분 코드 -->
, #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 -->
, #{opnnSbmsn.ansCn} <!-- 답변 내용 -->
, #{opnnSbmsn.ansYmd} <!-- 답변 일시 -->
, #{opnnSbmsn.ansTm} <!-- 답변 일시 -->
, #{opnnSbmsn.opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
#{opnnId} <!-- 의견 ID -->
, #{crdnId} <!-- 단속 ID -->
, #{rcptNo} <!-- 접수 번호 -->
, #{rcptYmd} <!-- 접수 일자 -->
, #{rcptSeCd} <!-- 접수 구분 코드 -->
, #{ownrRelCd} <!-- 소유주 관계 코드 -->
, #{sttrNm} <!-- 진술자 명 -->
, #{sttrBrdt} <!-- 진술자 생년월일 -->
, #{sttrRrno} <!-- 진술자 주민등록번호 -->
, #{sttrAddr} <!-- 진술자 주소 -->
, #{sttrDaddr} <!-- 진술자 상세주소 -->
, #{sttrZip} <!-- 진술자 우편번호 -->
, #{sttrCttpc} <!-- 진술자 연락처 -->
, #{sttrEml} <!-- 진술자 이메일 -->
, #{opnnSbmsnCn} <!-- 의견 제출 내용 -->
, #{opnnSbmsnSeCd} <!-- 의견 제출 구분 코드 -->
, #{opnnSbmsnGist} <!-- 의견 제출 요지 -->
, #{docNo} <!-- 문서 번호 -->
, #{ntfctnSeCd} <!-- 통보 구분 코드 -->
, #{picRvwOpnn} <!-- 담당자 검토 의견 -->
, #{ansCn} <!-- 답변 내용 -->
, #{ansYmd} <!-- 답변 일시 -->
, #{ansTm} <!-- 답변 일시 -->
, #{opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{opnnSbmsn.createdBy} <!-- 등록자 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{opnnSbmsn.modifiedBy} <!-- 수정자 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateOpnnSbmsn" parameterType="map">/* 의견제출 대장 수정(opnnSbmsnMapper.updateOpnnSbmsn) */
<update id="updateOpnnSbmsn" parameterType="cokr.xit.fims.excl.OpnnSbmsn">/* 의견제출 대장 수정(opnnSbmsnMapper.updateOpnnSbmsn) */
UPDATE TB_OPNN_SBMSN
SET RCPT_NO = #{opnnSbmsn.rcptNo} <!-- 접수 번호 -->
, RCPT_YMD = #{opnnSbmsn.rcptYmd} <!-- 접수 일자 -->
, RCPT_SE_CD = #{opnnSbmsn.rcptSeCd} <!-- 접수 구분 코드 -->
, OWNR_REL_CD = #{opnnSbmsn.ownrRelCd} <!-- 소유주 관계 코드 -->
, STTR_NM = #{opnnSbmsn.sttrNm} <!-- 진술자 명 -->
, STTR_BRDT = #{opnnSbmsn.sttrBrdt} <!-- 진술자 생년월일 -->
, STTR_RRNO = #{opnnSbmsn.sttrRrno} <!-- 진술자 주민등록번호 -->
, STTR_ADDR = #{opnnSbmsn.sttrAddr} <!-- 진술자 주소 -->
, STTR_DADDR = #{opnnSbmsn.sttrDaddr} <!-- 진술자 상세주소 -->
, STTR_ZIP = #{opnnSbmsn.sttrZip} <!-- 진술자 우편번호 -->
, STTR_CTTPC = #{opnnSbmsn.sttrCttpc} <!-- 진술자 연락처 -->
, STTR_EML = #{opnnSbmsn.sttrEml} <!-- 진술자 이메일 -->
, OPNN_SBMSN_CN = #{opnnSbmsn.opnnSbmsnCn} <!-- 의견 제출 내용 -->
, OPNN_SBMSN_SE_CD = #{opnnSbmsn.opnnSbmsnSeCd} <!-- 의견 제출 구분 코드 -->
, OPNN_SBMSN_GIST = #{opnnSbmsn.opnnSbmsnGist} <!-- 의견 제출 요지 -->
, PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 -->
SET RCPT_NO = #{rcptNo} <!-- 접수 번호 -->
, RCPT_YMD = #{rcptYmd} <!-- 접수 일자 -->
, RCPT_SE_CD = #{rcptSeCd} <!-- 접수 구분 코드 -->
, OWNR_REL_CD = #{ownrRelCd} <!-- 소유주 관계 코드 -->
, STTR_NM = #{sttrNm} <!-- 진술자 명 -->
, STTR_BRDT = #{sttrBrdt} <!-- 진술자 생년월일 -->
, STTR_RRNO = #{sttrRrno} <!-- 진술자 주민등록번호 -->
, STTR_ADDR = #{sttrAddr} <!-- 진술자 주소 -->
, STTR_DADDR = #{sttrDaddr} <!-- 진술자 상세주소 -->
, STTR_ZIP = #{sttrZip} <!-- 진술자 우편번호 -->
, STTR_CTTPC = #{sttrCttpc} <!-- 진술자 연락처 -->
, STTR_EML = #{sttrEml} <!-- 진술자 이메일 -->
, OPNN_SBMSN_CN = #{opnnSbmsnCn} <!-- 의견 제출 내용 -->
, OPNN_SBMSN_SE_CD = #{opnnSbmsnSeCd} <!-- 의견 제출 구분 코드 -->
, OPNN_SBMSN_GIST = #{opnnSbmsnGist} <!-- 의견 제출 요지 -->
, PIC_RVW_OPNN = #{picRvwOpnn} <!-- 담당자 검토 의견 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{opnnSbmsn.modifiedBy} <!-- 수정자 -->
WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE OPNN_ID = #{opnnId} <!-- 의견 ID -->
AND DEL_YN = 'N'
</update>
<update id="updateOpnnSbmsnAnswer" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateOpnnSbmsnAnswer) */
<update id="updateOpnnSbmsnAnswer" parameterType="cokr.xit.fims.excl.OpnnSbmsn">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateOpnnSbmsnAnswer) */
UPDATE TB_OPNN_SBMSN
SET DOC_NO = #{opnnSbmsn.docNo} <!-- 문서 번호 -->
, NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} <!-- 통보 구분 코드 -->
, PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 -->
, OPNN_SBMSN_STTS_CD= #{opnnSbmsn.opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, ANS_YMD = #{opnnSbmsn.ansYmd} <!-- 답변 일자 -->
, ANS_TM = #{opnnSbmsn.ansTm} <!-- 답변 시각 -->
, ANS_CN = #{opnnSbmsn.ansCn} <!-- 답변 내용 -->
SET DOC_NO = #{docNo} <!-- 문서 번호 -->
, NTFCTN_SE_CD = #{ntfctnSeCd} <!-- 통보 구분 코드 -->
, PIC_RVW_OPNN = #{picRvwOpnn} <!-- 담당자 검토 의견 -->
, OPNN_SBMSN_STTS_CD= #{opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, ANS_YMD = #{ansYmd} <!-- 답변 일자 -->
, ANS_TM = #{ansTm} <!-- 답변 시각 -->
, ANS_CN = #{ansCn} <!-- 답변 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{opnnSbmsn.modifiedBy} <!-- 수정자 -->
WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE OPNN_ID = #{opnnId} <!-- 의견 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */
<update id="deleteOpnnSbmsn" parameterType="cokr.xit.fims.excl.OpnnSbmsn">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */
UPDATE TB_OPNN_SBMSN
SET DEL_YN = 'Y'
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{opnnSbmsn.modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{opnnSbmsn.delRsn} <!-- 삭제 사유 -->
WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{delRsn} <!-- 삭제 사유 -->
WHERE OPNN_ID = #{opnnId} <!-- 의견 ID -->
AND DEL_YN = 'N'
</update>
<update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */
<update id="updateCrdnOpnnSbmsnYn" parameterType="cokr.xit.fims.crdn.Crdn">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */
UPDATE TB_CRDN
SET OPNN_SBMSN_YN= #{crdn.opnnSbmsnYn} <!-- 의견 제출 여부 -->
SET OPNN_SBMSN_YN= #{opnnSbmsnYn} <!-- 의견 제출 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{crdn.modifiedBy} <!-- 수정자 -->
WHERE CRDN_ID = #{crdn.crdnId} <!-- 단속 ID -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND DEL_YN = 'N'
</update>

@ -62,29 +62,7 @@
, P.RGTR <!-- 등록자 -->
, P.MDFCN_DT <!-- 수정 일시 -->
, P.MDFR <!-- 수정자 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, PA.ADDR_INQ_YMD <!-- 주소 조회 일자 -->
, PA.ADDR_SE_CD <!-- 주소 구분 코드 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.ROAD_NM_CD <!-- 도로 명 코드 -->
, PA.UDGD_SE_CD <!-- 지하 구분 코드 -->
, PA.BMNO <!-- 건물본번 -->
, PA.BSNO <!-- 건물부번 -->
, PA.BLDG_MNG_NO <!-- 건물 관리 번호 -->
, PA.STDG_CD <!-- 법정동 코드 -->
, PA.DONG_CD <!-- 행정동 코드 -->
, PA.MTN_SE_CD <!-- 산 구분 코드 -->
, PA.MNO <!-- 본번 -->
, PA.SNO <!-- 부번 -->
, PA.SPCL_DONG <!-- 특수 동 -->
, PA.SPCL_HO <!-- 특수 호 -->
, PA.SPCL_ADDR <!-- 특수 주소 -->
, PA.WHOL_ADDR <!-- 전체 주소 -->
FROM TB_PAYER P
INNER JOIN TB_PAYER_ADDR PA ON (P.RTPYR_ID = PA.RTPYR_ID)
</sql>
<select id="selectPayerList" parameterType="map" resultType="dataobject">/* 납부자 대장 목록 조회(payerMapper.selectPayerList) */
@ -112,9 +90,6 @@
AND P.RTPYR_NO = #{rtpyrNo} <!-- 납부자 번호 -->
</otherwise>
</choose>
<if test="addrSn != null">
AND PA.ADDR_SN = #{addrSn} <!-- 주소 일련번호 -->
</if>
</where>
<include refid="utility.orderBy" />
</select>
@ -165,6 +140,7 @@
SELECT *
FROM TB_PAYER B
WHERE RTPYR_NO = #{payer.rtpyrNo}
AND RTPYR_SE_CD = #{payer.rtpyrSeCd}
AND SGG_CD = #{payer.sggCd}
)
</insert>
@ -173,12 +149,10 @@
UPDATE TB_PAYER
SET RTPYR_INPT_SE_CD = #{payer.rtpyrInptSeCd} <!-- 납부자 입력 구분 코드 -->
, RTPYR_SE_CD = #{payer.rtpyrSeCd} <!-- 납부자 구분 코드 -->
, RTPYR_NO = #{payer.rtpyrNo} <!-- 납부자 번호 -->
, RTPYR_NM = #{payer.rtpyrNm} <!-- 납부자 명 -->
, RTPYR_TELNO = #{payer.rtpyrTelno} <!-- 납부자 전화번호 -->
, RTPYR_MBL_TELNO = #{payer.rtpyrMblTelno} <!-- 납부자 휴대 전화번호 -->
, RTPYR_EML = #{payer.rtpyrEml} <!-- 납부자 이메일 -->
, RTPYR_BRDT = #{payer.rtpyrBrdt} <!-- 납부자 생년월일 -->
, RTPYR_STTS_CD = #{payer.rtpyrSttsCd} <!-- 납부자 상태 코드 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{payer.modifiedBy} <!-- 수정자 -->
@ -262,9 +236,7 @@
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
<if test="delYn != null">
AND C.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</if>
AND C.DEL_YN = 'N'
</if>
</where>
<include refid="utility.orderBy" />
@ -274,61 +246,46 @@
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.RTPYR_ID <!-- 납부자 ID -->
, C.ADDR_SN <!-- 주소 일련번호 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시간 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.ROAD_NM_CD <!-- 도로 명 코드 -->
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN)
WHERE C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N'
</select>
<sql id="selectHstry">
SELECT PH.RTPYR_ID <!-- 납부자 ID -->
, PH.HSTRY_SN <!-- 이력 일련번호 -->
, PH.SGG_CD <!-- 시군구 코드 -->
, PH.VHRNO <!-- 차량번호 -->
, PH.RTPYR_INPT_SE_CD <!-- 납부자 입력 구분 코드 -->
, PH.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, PH.RTPYR_NO <!-- 납부자 번호 -->
, PH.RTPYR_NM <!-- 납부자 명 -->
, PH.RTPYR_TELNO <!-- 납부자 전화번호 -->
, PH.RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 -->
, PH.RTPYR_EML <!-- 납부자 이메일 -->
, PH.RTPYR_BRDT <!-- 납부자 생년월일 -->
, PH.RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
, PH.ADDR_SE_CD <!-- 주소 구분 코드 -->
, PH.ZIP <!-- 우편번호 -->
, PH.ROAD_NM_CD <!-- 도로 명 코드 -->
, PH.UDGD_SE_CD <!-- 지하 구분 코드 -->
, PH.BMNO <!-- 건물본번 -->
, PH.BSNO <!-- 건물부번 -->
, PH.BLDG_MNG_NO <!-- 건물 관리 번호 -->
, PH.STDG_CD <!-- 법정동 코드 -->
, PH.DONG_CD <!-- 행정동 코드 -->
, PH.MTN_SE_CD <!-- 산 구분 코드 -->
, PH.MNO <!-- 본번 -->
, PH.SNO <!-- 부번 -->
, PH.SPCL_DONG <!-- 특수 동 -->
, PH.SPCL_HO <!-- 특수 호 -->
, PH.SPCL_ADDR <!-- 특수 주소 -->
, PH.ADDR <!-- 주소 -->
, PH.DTL_ADDR <!-- 상세 주소 -->
, PH.WHOL_ADDR <!-- 전체 주소 -->
, PH.REG_DT <!-- 등록 일시 -->
, PH.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = PH.RGTR) AS RGTR_NM <!-- 등록자 명 -->
FROM TB_PAYER_HSTRY PH
<sql id="selectPayerHstry">
SELECT CPH.CHG_HSTRY_ID <!-- 변경 이력 ID -->
, CPH.CRDN_ID <!-- 단속 ID -->
, CPH.RTPYR_ID <!-- 납부자 ID -->
, CPH.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CPH.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT GET_CODE_NM('FIM015', P.RTPYR_INPT_SE_CD) FROM DUAL) AS RTPYR_INPT_SE_NM <!-- 납부자 입력 구분 명 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_TELNO <!-- 납부자 전화번호 -->
, P.RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 -->
, P.RTPYR_EML <!-- 납부자 이메일 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, P.RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
FROM TB_CRDN_PAYER_HSTRY CPH
INNER JOIN TB_PAYER P ON (CPH.RTPYR_ID = P.RTPYR_ID)
</sql>
<select id="selectPayerHstrys" parameterType="map" resultType="dataobject">/* 납부자 변경 이력 대장 객체 가져오기(payerMapper.selectPayerHstrys) */
<include refid="selectHstry" />
WHERE RTPYR_ID = #{rtpyrId} <!-- 납부자 ID -->
<select id="selectPayerHstrys" parameterType="map" resultType="dataobject">/* 납부자 이력 대장 객체 가져오기(payerMapper.selectPayerHstrys) */
<include refid="selectPayerHstry" />
WHERE CPH.CRDN_ID = #{crdnId} <!-- 단속 ID -->
<include refid="utility.orderBy" />
</select>

@ -11,7 +11,6 @@
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="addrSn" column="ADDR_SN" /> <!-- 주소 일련번호 -->
<result property="addrInptSeCd" column="ADDR_INPT_SE_CD" /> <!-- 주소 입력 구분 코드 -->
<result property="addrInqYmd" column="ADDR_INQ_YMD" /> <!-- 주소 조회 일자 -->
<result property="addrSeCd" column="ADDR_SE_CD" /> <!-- 주소 구분 코드 -->
<result property="zip" column="ZIP" /> <!-- 우편번호 -->
<result property="addr" column="ADDR" /> <!-- 주소 -->
@ -40,7 +39,6 @@
SELECT PA.RTPYR_ID <!-- 납부자 ID -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, PA.ADDR_INQ_YMD <!-- 주소 조회 일자 -->
, PA.ADDR_SE_CD <!-- 주소 구분 코드 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
@ -59,10 +57,6 @@
, PA.SPCL_HO <!-- 특수 호 -->
, PA.SPCL_ADDR <!-- 특수 주소 -->
, PA.WHOL_ADDR <!-- 전체 주소 -->
, PA.REG_DT <!-- 등록 일시 -->
, PA.RGTR <!-- 등록자 -->
, PA.MDFCN_DT <!-- 수정 일시 -->
, PA.MDFR <!-- 수정자 -->
FROM TB_PAYER_ADDR PA
</sql>
@ -77,7 +71,7 @@
<include refid="utility.paging-suffix" />
</select>
<select id="selectPayerAddrs" parameterType="map" resultType="dataobject">/* 납부자 주소 객체 가져오기(payerAddrMapper.selectPayerAddrs) */
<select id="selectPayerAddrs" parameterType="map" resultMap="payerAddrRow">/* 납부자 주소 객체 가져오기(payerAddrMapper.selectPayerAddrs) */
<include refid="select" />
WHERE PA.RTPYR_ID = #{rtpyrId}
<if test="addrSn != null">
@ -86,6 +80,63 @@
<include refid="utility.orderBy" />
</select>
<select id="selectPayerAddrInfo" parameterType="map" resultMap="payerAddrRow">/* 납부자 주소 객체 가져오기(payerAddrMapper.selectPayerAddrInfo) */
SELECT P.RTPYR_ID <!-- 납부자 ID -->
, P.SGG_CD <!-- 시군구 코드 -->
, P.RTPYR_INPT_SE_CD <!-- 납부자 입력 구분 코드 -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_TELNO <!-- 납부자 전화번호 -->
, P.RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 -->
, P.RTPYR_EML <!-- 납부자 이메일 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, P.RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
, P.REG_DT <!-- 등록 일시 -->
, P.RGTR <!-- 등록자 -->
, P.MDFCN_DT <!-- 수정 일시 -->
, P.MDFR <!-- 수정자 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, PA.ADDR_SE_CD <!-- 주소 구분 코드 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.ROAD_NM_CD <!-- 도로 명 코드 -->
, PA.UDGD_SE_CD <!-- 지하 구분 코드 -->
, PA.BMNO <!-- 건물본번 -->
, PA.BSNO <!-- 건물부번 -->
, PA.BLDG_MNG_NO <!-- 건물 관리 번호 -->
, PA.STDG_CD <!-- 법정동 코드 -->
, PA.DONG_CD <!-- 행정동 코드 -->
, PA.MTN_SE_CD <!-- 산 구분 코드 -->
, PA.MNO <!-- 본번 -->
, PA.SNO <!-- 부번 -->
, PA.SPCL_DONG <!-- 특수 동 -->
, PA.SPCL_HO <!-- 특수 호 -->
, PA.SPCL_ADDR <!-- 특수 주소 -->
, PA.WHOL_ADDR <!-- 전체 주소 -->
FROM TB_PAYER P
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (P.RTPYR_ID = PA.RTPYR_ID)
WHERE P.RTPYR_ID = #{rtpyrId}
<choose>
<when test="addrSn != null">
AND PA.ADDR_SN = #{addrSn}
</when>
<otherwise>
<if test="roadNmCd != null">
AND PA.ROAD_NM_CD= #{roadNmCd}
</if>
<if test="addr != null">
AND PA.ADDR = #{addr}
</if>
<if test="dtlAddr != null">
AND PA.DTL_ADDR = #{dtlAddr}
</if>
</otherwise>
</choose>
</select>
<insert id="insertPayerAddr" parameterType="map">/* 납부자 주소 등록(payerAddrMapper.insertPayerAddr) */
<selectKey resultType="string" keyProperty="payerAddr.addrSn" keyColumn="NEW_ID" order="BEFORE">
SELECT LPAD(CAST(IFNULL(MAX(ADDR_SN) + 1, 1) AS INT), 5, '0') AS NEW_ID
@ -97,7 +148,6 @@
RTPYR_ID <!-- 납부자 ID -->
, ADDR_SN <!-- 주소 일련번호 -->
, ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, ADDR_INQ_YMD <!-- 주소 조회 일자 -->
, ADDR_SE_CD <!-- 주소 구분 코드 -->
, ZIP <!-- 우편번호 -->
, ADDR <!-- 주소 -->
@ -125,7 +175,6 @@
#{payerAddr.rtpyrId} <!-- 납부자 ID -->
, #{payerAddr.addrSn} <!-- 주소 일련번호 -->
, #{payerAddr.addrInptSeCd} <!-- 주소 입력 구분 코드 -->
, #{payerAddr.addrInqYmd} <!-- 주소 조회 일자 -->
, #{payerAddr.addrSeCd} <!-- 주소 구분 코드 -->
, #{payerAddr.zip} <!-- 우편번호 -->
, #{payerAddr.addr} <!-- 주소 -->
@ -159,4 +208,40 @@
AND ADDR_SN = #{payerAddr.addrSn}
</update>
<sql id="selectPayerAddrHstry">
SELECT CPAH.CRDN_ID <!-- 단속 ID -->
, CPAH.RTPYR_ID <!-- 납부자 ID -->
, CPAH.ADDR_SN <!-- 주소 일련번호 -->
, CPAH.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CPAH.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT GET_CODE_NM('FIM087', PA.ADDR_INPT_SE_CD) FROM DUAL) AS ADDR_INPT_SE_NM <!-- 주소 입력 구분 명 -->
, (SELECT GET_CODE_NM('FIM013', PA.ADDR_SE_CD) FROM DUAL) AS ADDR_SE_NM <!-- 주소 구분 명 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.ROAD_NM_CD <!-- 도로 명 코드 -->
, PA.UDGD_SE_CD <!-- 지하 구분 코드 -->
, PA.BMNO <!-- 건물본번 -->
, PA.BSNO <!-- 건물부번 -->
, PA.BLDG_MNG_NO <!-- 건물 관리 번호 -->
, PA.STDG_CD <!-- 법정동 코드 -->
, PA.DONG_CD <!-- 행정동 코드 -->
, PA.MTN_SE_CD <!-- 산 구분 코드 -->
, PA.MNO <!-- 본번 -->
, PA.SNO <!-- 부번 -->
, PA.SPCL_DONG <!-- 특수 동 -->
, PA.SPCL_HO <!-- 특수 호 -->
, PA.SPCL_ADDR <!-- 특수 주소 -->
, PA.WHOL_ADDR <!-- 전체 주소 -->
FROM TB_CRDN_PAYER_ADDR_HSTRY CPAH
INNER JOIN TB_PAYER_ADDR PA ON (CPAH.RTPYR_ID = PA.RTPYR_ID AND CPAH.ADDR_SN = PA.ADDR_SN)
</sql>
<select id="selectPayerAddrHstrys" parameterType="map" resultType="dataobject">/* 납부자 주소 이력 대장 객체 가져오기(payerMapper.selectCrdnPayerAddrHstrys) */
<include refid="selectPayerAddrHstry" />
WHERE CPAH.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND CPAH.RTPYR_ID = #{rtpyrId} <!-- 납부자 ID -->
<include refid="utility.orderBy" />
</select>
</mapper>

@ -405,8 +405,7 @@
, onOK: () => { }
});
// 자료 재조회
if (resp.saved) { $P.fnRefreshList(); }
if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
}
// 삭제
@ -564,6 +563,7 @@
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
@ -727,17 +727,15 @@
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {

@ -633,6 +633,7 @@
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
@ -885,17 +886,15 @@
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {

@ -451,6 +451,7 @@
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
@ -568,17 +569,15 @@
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {

@ -377,7 +377,6 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
@ -399,7 +398,7 @@
if (!params) return;
ajax.get({
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do")
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
@ -520,9 +519,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -546,6 +543,7 @@
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
@ -601,13 +599,15 @@
// 파라미터 설정
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.title = title; // 타이틀
params.callPurpose = "create"; // 호출 용도 (등록)
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.tnocs = tnocs; // 총 건수
params.gramtFfnlgAmt = gramtFfnlgAmt; // 총 과태료 금액
params.gramtAdvntceAmt = gramtAdvntceAmt; // 총 사전 감경 금액
params.delYn = "N"; // 삭제 여부
params.crdnIds = selected.join(","); // Ids
params.delYn = "N"; // 삭제 여부
$P.control.getInfo(params);
}
@ -624,8 +624,10 @@
// 파라미터 설정
let params = $P.control.query; // 검색 조건
params.callPurpose = "create"; // 호출 용도 (등록)
params.title = title; // 타이틀
params.callPurpose = "create"; // 호출 용도 (등록)
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.tnocs = $P.control.dataset.getValue("TNOCS"); // 총 건수
params.gramtFfnlgAmt = $P.control.dataset.getValue("GRAMT_FFNLG_AMT"); // 총 과태료 금액
params.gramtAdvntceAmt = $P.control.dataset.getValue("GRAMT_ADVNTCE_AMT"); // 총 사전 감경 금액
@ -665,13 +667,12 @@
});
});
// 선택 대상 등록 버튼 이벤트
// 버튼 이벤트
$("#btnCreateSlctnTrgt--${pageName}").on("click", function() {
$P.fnCreateSlctnTrgt($(this).attr("title"));
$P.fnCreateSlctnTrgt($(this).attr("title")); // 선택 대상 감경부과 등록
});
// 전체 대상 감경부과 등록 버튼 이벤트
$("#btnCreateWholTrgt--${pageName}").on("click", function() {
$P.fnCreateWholTrgt($(this).attr("title"));
$P.fnCreateWholTrgt($(this).attr("title")); // 전체 대상 감경부과 등록
});
// DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
@ -682,7 +683,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -699,26 +700,20 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
// 기본 데이터 설정(업무구분)
$P.initData($("input[name=taskSeCd]:checked").val());
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); // 단속 일자 시작
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date()); // 단속 일자 종료
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 검색
// 업무에 따른 위반 내용
let vltnCd = [];
@ -737,26 +732,17 @@
}
// 위반 항목
$("#schVltnCd--${pageName}").empty();
$("#schVltnCd--${pageName}").append("<option value=''>" + "전체" + "</option>");
$(vltnCd).each(function(index, item) {
$("#schVltnCd--${pageName}").append("<option value='" + vltnCd[index].code +"'>" + vltnCd[index].value + "</option>");
});
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase();
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {

@ -1,7 +1,7 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">부과 정보</c:set>
<c:set var="prefixName" scope="request">사전 감경부과 대상 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
@ -123,17 +123,18 @@
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#" + $P.control.prefix + "Dialog").find("h5.modal-title").html();
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
dialog.close($P.control.prefix + "Dialog");
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
}
}
@ -169,6 +170,7 @@
dialog.alert({
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.control.save($P.formFields.get()); // formFields
}
@ -201,14 +203,14 @@
$("#dudtYmd--${pageName}").val(addDate(levyYmd, Number(advntceDayCnt)));
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
// 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
}
// 초기 화면 설정
$P.initForm = () => {
// Dialog 마우스로 드래그 할 수 있도록 설정.
fnMakeDraggableDialog(document.getElementById($P.control.prefix + "Dialog"));
fnMakeDraggableDialog(document.getElementById($P.control.prefix + "Dialog--${openerPageName}"));
// 달력 초기화
initDatepicker("frmEdit--${pageName}");

@ -355,10 +355,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/levy/levy01";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -366,39 +364,39 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "levy"
, prefixName : "부과"
, infoSize : "xl"
, keymapper : info => info ? info.LEVY_ID : ""
, dataGetter : obj => obj.levyList
, appendData : true
, formats : {
LEVY_YMD : dateFormat
, FRST_DUDT_YMD : dateFormat
, DUDT_YMD : dateFormat
, RCVMT_YMD : dateFormat
, SZR_YMD : dateFormat
, SZR_RMV_YMD : dateFormat
, FFNLG_AMT : numberFormat
, LEVY_PCPTAX : numberFormat
, LEVY_ADAMT : numberFormat
, INSPY_INT : numberFormat
, RCVMT_PCPTAX : numberFormat
, RCVMT_ADAMT : numberFormat
, RDCAMT_PCPTAX : numberFormat
, RDCAMT_ADAMT : numberFormat
, SUM_AMT : numberFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_CRDN_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "levy"
, prefixName: "부과"
, keymapper: info => info ? info.LEVY_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "xl"
, formats: {
LEVY_YMD: dateFormat
, FRST_DUDT_YMD: dateFormat
, DUDT_YMD: dateFormat
, RCVMT_YMD: dateFormat
, SZR_YMD: dateFormat
, SZR_RMV_YMD: dateFormat
, FFNLG_AMT: numberFormat
, LEVY_PCPTAX: numberFormat
, LEVY_ADAMT: numberFormat
, INSPY_INT: numberFormat
, RCVMT_PCPTAX: numberFormat
, RCVMT_ADAMT: numberFormat
, RDCAMT_PCPTAX: numberFormat
, RDCAMT_ADAMT: numberFormat
, SUM_AMT: numberFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -408,12 +406,12 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "$P.control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "$P.control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
@ -435,7 +433,6 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
@ -449,19 +446,9 @@
}
};
// 부과 정보 dialog
// 상세정보 dialog
$P.control.getInfo = (params) => {
if (!params) return;
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = $P.control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = $P.control.prefixName + " 수정";
} else {
dialogTitle = $P.control.prefixName + " 정보";
}
}
/**************************************************************************
@ -515,63 +502,34 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
}
// 개별총정보 dialog
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
callControlName: "pageObject['${pageName}'].control"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.refreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
@ -580,6 +538,12 @@
$P.control.load(1);
}
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
@ -591,9 +555,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -601,10 +563,32 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
@ -618,7 +602,6 @@
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
@ -630,11 +613,6 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
/**************************************************************************
* 초기 설정
**************************************************************************/
@ -666,8 +644,6 @@
});
});
// 업무 버튼 이벤트
// DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
@ -676,7 +652,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -693,52 +669,35 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schFyr--${pageName}").val(new Date().getFullYear());
$("#schLevyNoFrom--${pageName}").val("000000");
$("#schLevyNoTo--${pageName}").val("999999");
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schFyr--${pageName}").val(new Date().getFullYear()); // 회계 연도
$("#schLevyNoFrom--${pageName}").val("000000"); // 부과 번호 시작
$("#schLevyNoTo--${pageName}").val("999999"); // 부과 번호 종료
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/050/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/050/list.do"); // 조회
}
/**************************************************************************

@ -127,10 +127,10 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateRduct--${pageName}" title="감경 수정">
<button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="감경 수정">
감경 수정
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveRduct--${pageName}" title="감경 삭제">
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="감경 삭제">
감경 삭제
</button>
</span>
@ -251,10 +251,8 @@
* script 진입
**************************************************************************/
$(document).ready(function() {
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/levy/levy02";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -262,25 +260,26 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "rduct"
, prefixName : "감경"
, infoSize : "lg"
, keymapper : info => info ? info.RDUCT_ID : ""
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
prefix: "rduct"
, prefixName: "감경"
, keymapper: info => info ? info.RDUCT_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "lg"
, formats: {
RDUCT_YMD : dateFormat,
CRDN_YMD_TM : datetimeFormat,
FFNLG_CRDN_AMT : numberFormat,
RDUCT_AMT : numberFormat,
FFNLG_AMT : numberFormat,
SUM_AMT : numberFormat
RDUCT_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT: numberFormat
, RDUCT_AMT: numberFormat
, FFNLG_AMT: numberFormat
, SUM_AMT: numberFormat
}
});
$P.control.defaultFetchSize = FETCH_XS;
$P.control.untilPageNum = 0;
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl.on
@ -289,17 +288,18 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true;
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
$P.control.onCurrentChange = (item) => {
if (!item) return;
@ -315,12 +315,11 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
// 삭제 버튼
$("#btnRemoveRduct--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
@ -332,20 +331,21 @@
}
};
// 과태료 감경 정보 dialog
// 상세정보 dialog
$P.control.getInfo = (params) => {
if (!params) return;
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : params.title
, content : resp
, size : $P.control.infoSize
, onClose : () => { $P.refreshList(); }
id: $P.control.prefixed("Dialog--${pageName}")
, title: params.title
, content: resp
, size: $P.control.infoSize
, init: () => { }
, onClose: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -353,7 +353,7 @@
// 삭제 callback
$P.control.onRemove = (resp) => {
let btnTitle = $("#btnRemoveRduct--${pageName}").attr("title");
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// 메시지 출력
@ -362,9 +362,7 @@
, onOK : () => { }
});
if (resp.saved) {
$P.refreshList();
}
if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
}
// 삭제
@ -372,9 +370,9 @@
if (!params) return;
ajax.post({
url : $P.control.urls.remove
, data : params
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/010/remove.do")
, data: params
, success: resp => $P.control.onRemove(resp)
});
}
@ -429,81 +427,66 @@
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* pageObject.function
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
callControlName: "pageObject['${pageName}'].control"
, sggCd: $P.control.dataset.getValue("SGG_CD")
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD")
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
, init: () => { }
, onClose: () => { }
});
}
});
}
// 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.refreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
let params = {
callControlName : "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
$P.control.load(1);
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 삭제 사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
params[$P.control.prefixed("Ids")] = selected.join(","); // Ids
let selected = $P.control.dataset.getKeys("selected");
params[$P.control.prefixed("Ids")] = selected.join(","); // IDs
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
// 검색 자료 재조회
$P.refreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
/**************************************************************************
* element.on
* 버튼 clickEvent
**************************************************************************/
// 업무 구분 변경 이벤트
$P.fnResetAndChangeBiz = (taskSeCd) => {
@ -513,9 +496,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -523,10 +504,32 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
@ -540,7 +543,6 @@
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
@ -552,57 +554,55 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 감경 수정 버튼 이벤트
$P.fnUpdateRduct = (title) => {
$P.fnUpdate = (title) => {
// 감경 ID
let rductId = $P.control.dataset.getValue("RDUCT_ID");
// 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") return;
let params = {
callPurpose : "update"
, title : title
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rductId : rductId // 감경 ID
title: title
, callPurpose: "update" // 호출용도: 수정
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rductId: rductId // 감경 ID
};
$P.control.getInfo(params);
}
// 감경 삭제 버튼 이벤트
$P.fnRemoveRduct = (title) => {
$P.fnRemove = (title) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (selected.length < 1) {
dialog.alert({
content: "선택하신 부과제외 정보가 없습니다."
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
// 삭제 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: title,
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
id: "inputDelRsnDialog"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() });
}
});
}
});
}
@ -638,13 +638,12 @@
});
});
// 감경 수정 버튼 이벤트
$("#btnUpdateRduct--${pageName}").on("click", function() {
$P.fnUpdateRduct($(this).attr("title"));
// 버튼 이벤트
$("#btnUpdate--${pageName}").on("click", function() {
$P.fnUpdate($(this).attr("title")); // 감경 수정
});
// 감경 삭제 버튼 이벤트
$("#btnRemoveRduct--${pageName}").on("click", function() {
$P.fnRemoveRduct($(this).attr("title"));
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title")); // 감경 삭제
});
// DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
@ -672,56 +671,33 @@
$(this).prop("disabled", "true");
});
//달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schRductYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schRductYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
$("#schRductYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schRductYmdTo--${pageName}").datepicker("setDate", new Date());
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schRductYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); // 감경 일자 시작
$("#schRductYmdTo--${pageName}").datepicker("setDate", new Date()); // 감경 일자 종료
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 검색
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
renderForTask("frmSearch--${pageName}", taskSeCd.toLowerCase());
// 업무별 그리드 th
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let cols = $(colContent).find("." + taskSeCd.toLowerCase() + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/list.do"); // 조회
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/remove.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/info.do"); // 수정
}
/**************************************************************************

@ -12,9 +12,9 @@
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="rductId--${pageName}" name="rductId" data-map="RDUCT_ID" />
<div class="row g-1">
@ -91,10 +91,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/levy/levy02";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -104,14 +102,14 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "rduct"
, prefixName : "감경"
, keymapper : info => info ? info.RDUCT_ID : ""
, dataGetter : obj => obj.rductInfo
, formats : {
FFNLG_CRDN_AMT : numberFormat // 과태료 단속 금액
, WKSN_RDUCT_RT : numberFormat // 감경 율
, RDUCT_AMT : numberFormat // 감경 금액
prefix: "rduct"
, prefixName: "감경"
, keymapper: info => info ? info.RDUCT_ID : ""
, dataGetter: obj => obj.rductInfo
, formats: {
FFNLG_CRDN_AMT: numberFormat // 과태료 단속 금액
, WKSN_RDUCT_RT: numberFormat // 감경 율
, RDUCT_AMT: numberFormat // 감경 금액
}
});
@ -126,17 +124,18 @@
$P.formFields.set($P.control,item);
// 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD);
$P.fnSetURL(item.data.TASK_SE_CD);
}
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#" + $P.control.prefix + "Dialog").find("h5.modal-title").html();
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content : showMessage
, init: () => { setDialogZindex(); }
, onOK : () => { }
});
@ -152,17 +151,20 @@
let create = ($P.callPurpose == "create");
ajax.post({
url : !create ? $P.control.urls.update : $P.control.urls.create
, data : info
, success : resp => $P.control.onSave(resp)
url: !create ? $P.control.urls.update : $P.control.urls.create
, data: info || {}
, success: resp => $P.control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/update.do"); // 수정
}
/**************************************************************************
* 버튼 clickEvent
@ -188,12 +190,9 @@
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK : () => {
// 파리미터 설정
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
$P.control.save($P.formFields.get()); // formFields
}
});
}
@ -216,28 +215,20 @@
});
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
// 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
}
// 초기 화면 설정
$P.initForm = () => {
// Dialog 마우스로 드래그 할 수 있도록 설정.
fnMakeDraggableDialog(document.getElementById($P.control.prefix + "Dialog"));
fnMakeDraggableDialog(document.getElementById($P.control.prefix + "Dialog--${openerPageName}"));
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#rductYmd--${pageName}").datepicker("setDate", new Date());
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/update.do"); // 수정
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/

@ -850,7 +850,6 @@
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, vhrno : $P.control.dataset.getValue("VHRNO") // 차량번호
, rtpyrInptSeCd : "01" // 납부자 입력 구분 코드
, delYn : "N"
};
$P.updatePayer(params);

@ -925,7 +925,7 @@
if (levyExcl) $P.levyExclControl.setData([levyExcl]);
$P.crdnSttsHstryControl.setData(${crdnSttsHstry}); // 단속상태 이력
$P.payerHstryControl.setData(${payerHstry}); // 납부자 이력
$P.payerHstryControl.setData(${payerAddrHstry}); // 납부자주소 이력
});
</script>

Loading…
Cancel
Save