감경 테이블 수정.

1. TB_RDUCT -> TB_RDCT
  RDUCT_ID -> RDCT_ID
  RDUCT_YMD -> RDCT_YMD
  RDUCT_RSN_CD -> RDCT_RSN_CD
  RDUCT_AMT -> RDCT_AMT
main
jjh 4 months ago
parent b8b2bb024c
commit b60bf5e598

@ -38,8 +38,8 @@ public class CrdnQuery extends CmmnQuery {
private String schCvlcptRcptYmdTo;
private String schCvlcptPrcsPrnmntDtFrom;
private String schCvlcptPrcsPrnmntDtTo;
private String schRductYmdFrom;
private String schRductYmdTo;
private String schRdctYmdFrom;
private String schRdctYmdTo;
private String crdnYmd;
private String schCrdnYmdFrom;
private String schCrdnYmdTo;
@ -218,21 +218,21 @@ public class CrdnQuery extends CmmnQuery {
return self();
}
public String getSchRductYmdFrom() {
return ifEmpty(schRductYmdFrom, () -> null);
public String getSchRdctYmdFrom() {
return ifEmpty(schRdctYmdFrom, () -> null);
}
public <T extends CrdnQuery> T setSchRductYmdFrom(String schRductYmdFrom) {
this.schRductYmdFrom = schRductYmdFrom;
public <T extends CrdnQuery> T setSchRdctYmdFrom(String schRdctYmdFrom) {
this.schRdctYmdFrom = schRdctYmdFrom;
return self();
}
public String getSchRductYmdTo() {
return ifEmpty(schRductYmdTo, () -> null);
public String getSchRdctYmdTo() {
return ifEmpty(schRdctYmdTo, () -> null);
}
public <T extends CrdnQuery> T setSchRductYmdTo(String schRductYmdTo) {
this.schRductYmdTo = schRductYmdTo;
public <T extends CrdnQuery> T setSchRdctYmdTo(String schRdctYmdTo) {
this.schRdctYmdTo = schRdctYmdTo;
return self();
}

@ -181,13 +181,13 @@ public class OpnnSbmsn extends AbstractEntity {
private String opnnSbmsnYn;
/**
* (TB_RDUCT) -
* (TB_RDCT) -
*/
private String rductRsnCd;
private String rdctRsnCd;
/**
* (TB_RDUCT) -
* (TB_RDCT) -
*/
private Integer rductAmt;
private Integer rdctAmt;
}

@ -17,8 +17,8 @@ import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.dao.OpnnSbmsnMapper;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.service.bean.RductBean;
import cokr.xit.fims.levy.Rdct;
import cokr.xit.fims.levy.service.bean.RdctBean;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@ -48,8 +48,8 @@ public class OpnnSbmsnBean extends AbstractBean {
private CrdnSttsHstryBean crdnSttsHstryBean;
/** 과태료 감경 대장 정보 Bean */
@Resource(name="rductBean")
private RductBean rductBean;
@Resource(name="rdctBean")
private RdctBean rdctBean;
/** .
* @param req
@ -237,8 +237,8 @@ public class OpnnSbmsnBean extends AbstractBean {
// 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
// 과태료 감경 대장(TB_RDUCT) 자료 조회
DataObject crdnRductInfo = rductBean.getRductInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 과태료 감경 대장(TB_RDCT) 자료 조회
DataObject crdnRductInfo = rdctBean.getRdctInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 의견제출 ID가 조회되지 않았다면 종료..
if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
@ -251,7 +251,7 @@ public class OpnnSbmsnBean extends AbstractBean {
return rtnMsg;
}
// 과태료 감경 대장에 이미 감경이 등록 되었다면 의견제출 과태료감경(04)을 처리할 수 없다.
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") && !crdnRductInfo.string("RDUCT_ID").equals("")) {
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") && !crdnRductInfo.string("RDCT_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료는 과태료 감경이 이미 등록 되었습니다.";
return rtnMsg;
}
@ -266,26 +266,26 @@ public class OpnnSbmsnBean extends AbstractBean {
if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD"))) {
// 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면..
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
Rduct rduct = new Rduct();
Rdct rduct = new Rdct();
rduct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
rduct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID"));
rduct.setRductYmd(opnnSbmsn.getAnsYmd());
rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd());
rduct.setRductAmt(opnnSbmsn.getRductAmt());
rduct.setRdctYmd(opnnSbmsn.getAnsYmd());
rduct.setRdctRsnCd(opnnSbmsn.getRdctRsnCd());
rduct.setRdctAmt(opnnSbmsn.getRdctAmt());
rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록");
rtnMsg = rductBean.createRduct(rduct);
rtnMsg = rdctBean.createRdct(rduct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
// 의견제출 심의로 인한 과태료 감경 대장인지 확인
if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
Rduct rduct = new Rduct();
rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID"));
Rdct rduct = new Rdct();
rduct.setRdctId(opnnSbmsnInfo.string("RDCT_ID"));
rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
rtnMsg = rductBean.removeRduct(rduct);
rtnMsg = rdctBean.removeRdct(rduct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -395,16 +395,16 @@ public class OpnnSbmsnBean extends AbstractBean {
// 의견제출 심의로 인한 과태료 감경 대장인지 확인
if (opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("04")) {
// 과태료 감경 대장(TB_RDUCT) 자료 조회
DataObject crdnRductInfo = rductBean.getRductInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 과태료 감경 대장(TB_RDCT) 자료 조회
DataObject crdnRductInfo = rdctBean.getRdctInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
Rduct rduct = new Rduct();
rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID"));
Rdct rduct = new Rdct();
rduct.setRdctId(opnnSbmsnInfo.string("RDCT_ID"));
rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
// 과태료 감경(TB_RDUCT) 대장을 삭제한다.
rtnMsg = rductBean.removeRduct(rduct);
// 과태료 감경(TB_RDCT) 대장을 삭제한다.
rtnMsg = rdctBean.removeRdct(rduct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}

@ -233,7 +233,7 @@ public class Excl02Controller extends ApplicationController {
.addObject("pageName", "excl02020") // jsp pageName
.addObject("infoPrefix", "opnnSbmsn") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDCT_RSN_CD)
.addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD)
.addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD)
.addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD)
@ -332,7 +332,7 @@ public class Excl02Controller extends ApplicationController {
.addObject("pageName", "excl02030") // jsp pageName
.addObject("infoPrefix", "opnnSbmsn") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDCT_RSN_CD)
.addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD)
.addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 상태 코드(OPNN_SBMSN_STTS_CD)
.addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD)

@ -21,8 +21,8 @@ public class LevyQuery extends CmmnQuery {
private String crdnId; // 단속 ID
private String[] levyIds; // 부과 Ids
private String levyId; // 부과 ID
private String[] rductIds; // 감경 Ids
private String rductId; // 감경 ID
private String[] rdctIds; // 감경 Ids
private String rdctId; // 감경 ID
// 검색 조건
private String schFyr; // 회계연도
private String schLevyNoFrom; // 부과 번호 시작
@ -30,9 +30,9 @@ public class LevyQuery extends CmmnQuery {
private String schRdctSeCd; // 감경 구분 코드
private String schLevyYmdFrom; // 부과 일자 시작
private String schLevyYmdTo; // 부과 일자 종료
private String schRductYmdFrom; // 감경 일자 시작
private String schRductYmdTo; // 감경 일자 종료
private String schRductRsnCd; // 감경 사유 코드
private String schRdctYmdFrom; // 감경 일자 시작
private String schRdctYmdTo; // 감경 일자 종료
private String schRdctRsnCd; // 감경 사유 코드
private String schCrdnYmdFrom; // 단속 일자 시작
private String schCrdnYmdTo; // 단속 일자 종료
private String schVhrno; // 차량번호
@ -99,49 +99,49 @@ public class LevyQuery extends CmmnQuery {
return self();
}
public String[] getRductIds() {
return ifEmpty(rductIds, () -> null);
public String[] getRdctIds() {
return ifEmpty(rdctIds, () -> null);
}
public <T extends LevyQuery> T setRductIds(String... rductIds) {
this.rductIds = rductIds;
public <T extends LevyQuery> T setRdctIds(String... rdctIds) {
this.rdctIds = rdctIds;
return self();
}
public String getRductId() {
return ifEmpty(rductId, () -> null);
public String getRdctId() {
return ifEmpty(rdctId, () -> null);
}
public <T extends LevyQuery> T setRductId(String rductId) {
this.rductId = rductId;
public <T extends LevyQuery> T setRdctId(String rdctId) {
this.rdctId = rdctId;
return self();
}
// 검색 조건 //////////////////////////////////////////////////////////////////
public String getSchRductYmdFrom() {
return ifEmpty(schRductYmdFrom, () -> null);
public String getSchRdctYmdFrom() {
return ifEmpty(schRdctYmdFrom, () -> null);
}
public <T extends LevyQuery> T setSchRductYmdFrom(String schRductYmdFrom) {
this.schRductYmdFrom = schRductYmdFrom;
public <T extends LevyQuery> T setSchRdctYmdFrom(String schRdctYmdFrom) {
this.schRdctYmdFrom = schRdctYmdFrom;
return self();
}
public String getSchRductYmdTo() {
return ifEmpty(schRductYmdTo, () -> null);
public String getSchRdctYmdTo() {
return ifEmpty(schRdctYmdTo, () -> null);
}
public <T extends LevyQuery> T setSchRductYmdTo(String schRductYmdTo) {
this.schRductYmdTo = schRductYmdTo;
public <T extends LevyQuery> T setSchRdctYmdTo(String schRdctYmdTo) {
this.schRdctYmdTo = schRdctYmdTo;
return self();
}
public String getSchRductRsnCd() {
return ifEmpty(schRductRsnCd, () -> null);
public String getSchRdctRsnCd() {
return ifEmpty(schRdctRsnCd, () -> null);
}
public <T extends LevyQuery> T setSchRductRsnCd(String schRductRsnCd) {
this.schRductRsnCd = schRductRsnCd;
public <T extends LevyQuery> T setSchRdctRsnCd(String schRdctRsnCd) {
this.schRdctRsnCd = schRdctRsnCd;
return self();
}

@ -10,12 +10,12 @@ import lombok.Setter;
*/
@Getter
@Setter
public class Rduct extends AbstractEntity {
public class Rdct extends AbstractEntity {
/**
* ID
*/
private String rductId;
private String rdctId;
/**
* ID
@ -30,17 +30,17 @@ public class Rduct extends AbstractEntity {
/**
*
*/
private String rductYmd;
private String rdctYmd;
/**
*
*/
private String rductRsnCd;
private String rdctRsnCd;
/**
*
*/
private Integer rductAmt;
private Integer rdctAmt;
/**
*
@ -60,7 +60,7 @@ public class Rduct extends AbstractEntity {
/**
* Ids
*/
private String[] rductIds;
private String[] rdctIds;
/**
*

@ -6,7 +6,7 @@ import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.Rdct;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
@ -21,38 +21,38 @@ import cokr.xit.fims.levy.LevyQuery;
* ================================
* </pre>
*/
@Mapper("rductMapper")
public interface RductMapper extends AbstractMapper {
@Mapper("rdctMapper")
public interface RdctMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectRductList(LevyQuery req);
List<DataObject> selectRdctList(LevyQuery req);
/** .
* @param req
* @return
*/
List<DataObject> selectRducts(LevyQuery req);
List<DataObject> selectRdcts(LevyQuery req);
/** 1 .
* @param req
* @return
*/
default DataObject selectRductInfo(LevyQuery req) {
default DataObject selectRdctInfo(LevyQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 기본 정렬
if (req.getOrderBy() == null) {
req.setOrderBy("R.RDUCT_ID DESC");
req.setOrderBy("R.RDCT_ID DESC");
}
List<DataObject> rducts = selectRducts(req);
List<DataObject> rdcts = selectRdcts(req);
return !rducts.isEmpty() ? rducts.get(0) : null;
return !rdcts.isEmpty() ? rdcts.get(0) : null;
}
/** .
@ -62,7 +62,7 @@ public interface RductMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertRduct(Rduct rduct);
int insertRdct(Rdct rdct);
/** .
* @param params
@ -71,7 +71,7 @@ public interface RductMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateRduct(Rduct rduct);
int updateRdct(Rdct rdct);
/** .
* @param params
@ -80,7 +80,7 @@ public interface RductMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteRduct(Rduct rduct);
int deleteRdct(Rdct rdct);
/** ID , .
* @param crdnId ID
@ -89,20 +89,20 @@ public interface RductMapper extends AbstractMapper {
DataObject selectCrdn(LevyQuery req);
default DataObject selectCrdnInfo(String crdnId) {
DataObject rductInfo = selectCrdn(new LevyQuery().setCrdnId(crdnId));
DataObject rdctInfo = selectCrdn(new LevyQuery().setCrdnId(crdnId));
return rductInfo;
return rdctInfo;
}
/**(TB_CRDN) .
* @param crdn
* @return
*/
int updateCrdnRduct(Crdn crdn);
int updateCrdnRdct(Crdn crdn);
/**(TB_LEVY) .
* @param levy
* @return
*/
int updateLevyRduct(Levy levy);
int updateLevyRdct(Levy levy);
}

@ -4,7 +4,7 @@ import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.Rdct;
import cokr.xit.fims.levy.LevyQuery;
/** .
@ -17,24 +17,25 @@ import cokr.xit.fims.levy.LevyQuery;
* ================================
* </pre>
*/
public interface RductService {
public interface RdctService {
/** .
* @param req
* @return
*/
List<DataObject> getRductList(LevyQuery req);
List<DataObject> getRdctList(LevyQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getRducts(LevyQuery req);
List<DataObject> getRdcts(LevyQuery req);
/** ID .<br />
* @param req
* @return
*/
DataObject getRductInfo(LevyQuery req);
DataObject getRdctInfo(LevyQuery req);
/** .
* @param rduct
@ -43,7 +44,7 @@ public interface RductService {
* <li> false</li>
* </ul>
*/
String createRduct(Rduct rduct);
String createRdct(Rdct rdct);
/** .
* @param rduct
@ -52,7 +53,7 @@ public interface RductService {
* <li> false</li>
* </ul>
*/
String updateRduct(Rduct rduct);
String updateRdct(Rdct rdct);
/** .
* @param rduct
@ -61,7 +62,7 @@ public interface RductService {
* <li> false</li>
* </ul>
*/
String removeRduct(Rduct rduct);
String removeRdct(Rdct rdct);
}

@ -10,8 +10,8 @@ import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.service.bean.CrdnStngBean;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.dao.RductMapper;
import cokr.xit.fims.levy.Rdct;
import cokr.xit.fims.levy.dao.RdctMapper;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@ -25,12 +25,12 @@ import cokr.xit.foundation.data.DataObject;
* ================================
* </pre>
*/
@Component("rductBean")
public class RductBean extends AbstractBean {
@Component("rdctBean")
public class RdctBean extends AbstractBean {
/** 과태료 감경 대장 정보 DAO */
@Resource(name = "rductMapper")
private RductMapper rductMapper;
@Resource(name = "rdctMapper")
private RdctMapper rdctMapper;
@Resource(name = "crdnStngBean")
private CrdnStngBean crdnStngBean;
@ -39,7 +39,7 @@ public class RductBean extends AbstractBean {
* @param req
* @return
*/
public List<DataObject> getRductList(LevyQuery req) {
public List<DataObject> getRdctList(LevyQuery req) {
if (req.getDelYn() == null) {
req.setDelYn("N");
}
@ -47,27 +47,27 @@ public class RductBean extends AbstractBean {
req.setOrderBy("REG_DT");
}
return rductMapper.selectRductList(req);
return rdctMapper.selectRdctList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getRducts(LevyQuery req) {
public List<DataObject> getRdcts(LevyQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("R.RDUCT_ID DESC");
req.setOrderBy("R.RDCT_ID DESC");
}
return rductMapper.selectRducts(req);
return rdctMapper.selectRdcts(req);
}
/** ID .<br />
* @param req
* @return
*/
public DataObject getRductInfo(LevyQuery req) {
return rductMapper.selectRductInfo(req);
public DataObject getRdctInfo(LevyQuery req) {
return rdctMapper.selectRdctInfo(req);
}
/** ID .<br />
@ -76,11 +76,11 @@ public class RductBean extends AbstractBean {
*/
public DataObject getCrdnInfo(LevyQuery req) {
DataObject dataCrdn = rductMapper.selectCrdn(req);
DataObject dataCrdn = rdctMapper.selectCrdn(req);
if (req.getCallPurpose().equals("create")) {
dataCrdn.set("RDUCT_YMD", dataCrdn.get("TODAY")); // 감경 일자
dataCrdn.set("RDUCT_AMT", dataCrdn.get("CALC_RDUCT_AMT")); // 감경 금액
dataCrdn.set("RDCT_YMD", dataCrdn.get("TODAY")); // 감경 일자
dataCrdn.set("RDCT_AMT", dataCrdn.get("CALC_RDCT_AMT")); // 감경 금액
}
return dataCrdn;
@ -93,32 +93,32 @@ public class RductBean extends AbstractBean {
* <li> false</li>
* </ul>
*/
public String createRduct(Rduct rduct) {
public String createRdct(Rdct rdct) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
// 단속 ID로 단속, 감경 정보 조회
DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId());
DataObject crdnRductInfo = rdctMapper.selectCrdnInfo(rdct.getCrdnId());
// 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnRduct.string("RDUCT_ID").equals("")) {
if (!crdnRductInfo.string("RDCT_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
return rtnMsg;
}
// 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
if (infoCrdnRduct.number("CRDN_STTS_CD").intValue() > 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnRduct.string("CRDN_STTS_NM") + " 상태 입니다.";
if (crdnRductInfo.number("CRDN_STTS_CD").intValue() > 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnRductInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
// 부과 가산금(LEVY_ADAMT)이 있다면..
if (infoCrdnRduct.number("LEVY_ADAMT").intValue() > 0) {
if (crdnRductInfo.number("LEVY_ADAMT").intValue() > 0) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>부과 가산금이 존재합니다.";
return rtnMsg;
}
// 과태료 감경(TB_RDUCT) 대장을 등록한다.
rtnNocs = rductMapper.insertRduct(rduct);
// 과태료 감경(TB_RDCT) 대장을 등록한다.
rtnNocs = rdctMapper.insertRdct(rdct);
if (rtnNocs != 1) {
throw new RuntimeException("과태료 감경 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -126,40 +126,40 @@ public class RductBean extends AbstractBean {
int ffnlgAmt = 0; // 과태료 금액
int advntceAmt = 0; // 사전통지 금액
ffnlgAmt = infoCrdnRduct.number("FFNLG_CRDN_AMT").intValue() - rduct.getRductAmt(); // 과태료 단속 금액 - 감경 금액
advntceAmt = ffnlgAmt - (ffnlgAmt * infoCrdnRduct.number("ADVNTCE_RDUCT_RT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
ffnlgAmt = crdnRductInfo.number("FFNLG_CRDN_AMT").intValue() - rdct.getRdctAmt(); // 과태료 단속 금액 - 감경 금액
advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRductInfo.number("ADVNTCE_RDUCT_RT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
// 단속(TB_CRDN) 대장을 수정한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(rduct.getCrdnId()); // 단속 ID
crdn.setFfnlgRdcrt(infoCrdnRduct.string("WKSN_RDCRT")); // 과태료 감경 율
crdn.setCrdnId(rdct.getCrdnId()); // 단속 ID
crdn.setFfnlgRdcrt(crdnRductInfo.string("WKSN_RDCRT")); // 과태료 감경 율
crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
rtnNocs = rductMapper.updateCrdnRduct(crdn);
rtnNocs = rdctMapper.updateCrdnRdct(crdn);
if (rtnNocs != 1) {
throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다.
if (!infoCrdnRduct.string("LEVY_ID").equals("")) {
if (!crdnRductInfo.string("LEVY_ID").equals("")) {
// 가산금이 존재하는 확인
if (infoCrdnRduct.number("LEVY_ADAMT").intValue() != 0 ) {
if (crdnRductInfo.number("LEVY_ADAMT").intValue() != 0 ) {
throw new RuntimeException("감경 등록 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
Levy levy = new Levy();
levy.setLevyId(infoCrdnRduct.string("LEVY_ID")); // 부과 ID
levy.setLevyId(crdnRductInfo.string("LEVY_ID")); // 부과 ID
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
// 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
if (infoCrdnRduct.number("CRDN_STTS_CD").intValue() == 51) {
if (crdnRductInfo.number("CRDN_STTS_CD").intValue() == 51) {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
} else {
// 주정차위반, 전용차로위반 과태료
if (infoCrdnRduct.string("TASK_SE_CD").equals("BPV") || infoCrdnRduct.string("TASK_SE_CD").equals("PVS")) {
if (crdnRductInfo.string("TASK_SE_CD").equals("BPV") || crdnRductInfo.string("TASK_SE_CD").equals("PVS")) {
// 납기 일자 확인
if (infoCrdnRduct.number("DUDT_YMD").intValue() >= infoCrdnRduct.number("TODAY").intValue()) {
if (crdnRductInfo.number("DUDT_YMD").intValue() >= crdnRductInfo.number("TODAY").intValue()) {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} else {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
@ -169,10 +169,10 @@ public class RductBean extends AbstractBean {
}
}
int sumAmt = levy.getLevyPcptax() - infoCrdnRduct.number("RCVMT_PCPTAX").intValue() - infoCrdnRduct.number("RDAMT_PCPTAX").intValue();
int sumAmt = levy.getLevyPcptax() - crdnRductInfo.number("RCVMT_PCPTAX").intValue() - crdnRductInfo.number("RDAMT_PCPTAX").intValue();
levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세
rtnNocs = rductMapper.updateLevyRduct(levy);
rtnNocs = rdctMapper.updateLevyRdct(levy);
if (rtnNocs != 1) {
throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -188,9 +188,9 @@ public class RductBean extends AbstractBean {
* <li> false</li>
* </ul>
*/
public String updateRduct(Rduct rduct) {
// 과태료 감경(TB_RDUCT) 대장을 수정한다.
int rtnNocs = rductMapper.updateRduct(rduct);
public String updateRdct(Rdct rdct) {
// 과태료 감경(TB_RDCT) 대장을 수정한다.
int rtnNocs = rdctMapper.updateRdct(rdct);
if (rtnNocs != 1) {
throw new RuntimeException("과태료 감경 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@ -205,76 +205,76 @@ public class RductBean extends AbstractBean {
* <li> false</li>
* </ul>
*/
public String removeRduct(Rduct rduct) {
public String removeRdct(Rdct rdct) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = "[F] "; // 처리 결과 메시지
// 단속 ID로 단속, 감경 정보 조회
LevyQuery req = new LevyQuery();
req.setRductId(rduct.getRductId());
req.setRdctId(rdct.getRdctId());
req.setDelYn("N");
DataObject crdnRductInfo = rductMapper.selectCrdn(req);
DataObject crdnRdctInfo = rdctMapper.selectCrdn(req);
// 감경 ID가 조회되지 않았다면 종료..
if (crdnRductInfo.string("RDUCT_ID").equals("")) {
if (crdnRdctInfo.string("RDCT_ID").equals("")) {
rtnMsg = "[F] 작업 중 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
if (crdnRductInfo.number("CRDN_STTS_CD").intValue() > 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnRductInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
// 부과 가산금(LEVY_ADAMT)이 있다면..
if (crdnRductInfo.number("LEVY_ADAMT").intValue() > 0) {
if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>부과 가산금이 존재합니다.";
return rtnMsg;
}
// 감경(TB_RDUCT) 대장을 삭제한다.
rtnNocs = rductMapper.deleteRduct(rduct);
// 감경(TB_RDCT) 대장을 삭제한다.
rtnNocs = rdctMapper.deleteRdct(rdct);
if (rtnNocs != 1) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 대장 삭제에 실패하였습니다.");
}
// 과태료 금액
int ffnlgAmt = crdnRductInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액
int advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRductInfo.number("ADVNTCE_RDUCT_RT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
int ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액
int advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDUCT_RT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
// 단속(TB_CRDN) 대장을 수정한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnRductInfo.string("CRDN_ID")); // 단속 ID
crdn.setCrdnId(crdnRdctInfo.string("CRDN_ID")); // 단속 ID
crdn.setFfnlgRdcrt("0"); // 과태료 감경 율
crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
rtnNocs = rductMapper.updateCrdnRduct(crdn);
rtnNocs = rdctMapper.updateCrdnRdct(crdn);
if (rtnNocs != 1) {
throw new RuntimeException("감경 취소 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다.
if (!crdnRductInfo.string("LEVY_ID").equals("")) {
if (!crdnRdctInfo.string("LEVY_ID").equals("")) {
// 가산금이 존재하는 확인
if (crdnRductInfo.number("LEVY_ADAMT").intValue() != 0 ) {
if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) {
throw new RuntimeException("감경 취소 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
Levy levy = new Levy();
levy.setLevyId(crdnRductInfo.string("LEVY_ID")); // 부과 ID
levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
// 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
if (crdnRductInfo.number("CRDN_STTS_CD").intValue() == 51) {
if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
} else {
// 주정차위반, 전용차로위반 과태료
if (crdnRductInfo.string("TASK_SE_CD").equals("BPV") || crdnRductInfo.string("TASK_SE_CD").equals("PVS")) {
if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) {
// 납기 일자 확인
if (crdnRductInfo.number("DUDT_YMD").intValue() >= crdnRductInfo.number("TODAY").intValue()) {
if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} else {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
@ -284,12 +284,12 @@ public class RductBean extends AbstractBean {
}
}
int sumAmt = levy.getLevyPcptax() + crdnRductInfo.number("LEVY_ADAMT").intValue()
- crdnRductInfo.number("RCVMT_PCPTAX").intValue() - crdnRductInfo.number("RCVMT_ADAMT").intValue()
- crdnRductInfo.number("RDAMT_PCPTAX").intValue() - crdnRductInfo.number("RDAMT_ADAMT").intValue();
int sumAmt = levy.getLevyPcptax() + crdnRdctInfo.number("LEVY_ADAMT").intValue()
- crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RCVMT_ADAMT").intValue()
- crdnRdctInfo.number("RDAMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_ADAMT").intValue();
levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 + 부과 가산금 + 분납 이자 - 수납 본세 - 수납 가산금 - 감액 본세 - 감액 가산금
rtnNocs = rductMapper.updateLevyRduct(levy);
rtnNocs = rdctMapper.updateLevyRdct(levy);
if (rtnNocs != 1) {
throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}

@ -0,0 +1,71 @@
package cokr.xit.fims.levy.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Rdct;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.RdctService;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-30 JoJH
* ================================
* </pre>
*/
@Service("rdctService")
public class RdctServiceBean extends AbstractServiceBean implements RdctService {
/** 과태료 감경 대장 정보 Bean */
@Resource(name = "rdctBean")
private RdctBean rdctBean;
@Override
public List<DataObject> getRdctList(LevyQuery req) {
return rdctBean.getRdctList(req);
}
@Override
public List<DataObject> getRdcts(LevyQuery req) {
return rdctBean.getRdcts(req);
}
@Override
public DataObject getRdctInfo(LevyQuery req) {
if (req.getCallPurpose() == null) {
req.setCallPurpose("view");
}
if (req.getCallPurpose().equals("create")) {
return rdctBean.getCrdnInfo(req);
} else {
return rdctBean.getRdctInfo(req);
}
}
@Override
public String createRdct(Rdct rdct) {
return rdctBean.createRdct(rdct);
}
@Override
public String updateRdct(Rdct rdct) {
return rdctBean.updateRdct(rdct);
}
@Override
public String removeRdct(Rdct rdct) {
return rdctBean.removeRdct(rdct);
}
}

@ -1,71 +0,0 @@
package cokr.xit.fims.levy.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.RductService;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-30 JoJH
* ================================
* </pre>
*/
@Service("rductService")
public class RductServiceBean extends AbstractServiceBean implements RductService {
/** 과태료 감경 대장 정보 Bean */
@Resource(name = "rductBean")
private RductBean rductBean;
@Override
public List<DataObject> getRductList(LevyQuery req) {
return rductBean.getRductList(req);
}
@Override
public List<DataObject> getRducts(LevyQuery req) {
return rductBean.getRducts(req);
}
@Override
public DataObject getRductInfo(LevyQuery req) {
if (req.getCallPurpose() == null) {
req.setCallPurpose("view");
}
if (req.getCallPurpose().equals("create")) {
return rductBean.getCrdnInfo(req);
} else {
return rductBean.getRductInfo(req);
}
}
@Override
public String createRduct(Rduct rduct) {
return rductBean.createRduct(rduct);
}
@Override
public String updateRduct(Rduct rduct) {
return rductBean.updateRduct(rduct);
}
@Override
public String removeRduct(Rduct rduct) {
return rductBean.removeRduct(rduct);
}
}

@ -319,7 +319,7 @@ public class Levy01Controller extends ApplicationController {
valueMap.put("법정동", format.of("CRDN_STDG_NM"));
valueMap.put("단속장소", format.of("CRDN_PLC"));
valueMap.put("위반항목", format.of("VLTN_ARTCL"));
valueMap.put("단속", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("단속금", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center));
valueMap.put("납부자번호", format.of("RTPYR_NO").style(center));

@ -25,8 +25,8 @@ import cokr.xit.fims.cmmn.service.bean.StngBean;
import cokr.xit.fims.cmmn.xls.FormatMaker;
import cokr.xit.fims.cmmn.xls.StyleMaker;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.service.RductService;
import cokr.xit.fims.levy.Rdct;
import cokr.xit.fims.levy.service.RdctService;
import cokr.xit.fims.task.Task;
import cokr.xit.foundation.data.DataObject;
@ -49,18 +49,17 @@ public class Levy02Controller extends ApplicationController {
public class METHOD_URL {
public static final String
reductionMain = "/010/main.do" // 과태료 감경 관리 메인 화면
, getRductList = "/010/list.do" // 과태료 감경 대장 목록 조회
, removeRduct = "/010/remove.do" // 과태료 감경 대장 삭제
, removeRductList = "/010/removes.do" // 과태료 감경 대장 목록 삭제
, getRductInfo = "/020/info.do" // 과태료 감경 정보 조회
, createRduct = "/020/create.do" // 과태료 감경 대장 등럭
, updateRduct = "/020/update.do" // 과태료 감경 대장 수정
, getReductionList = "/010/list.do" // 과태료 감경 대장 목록 조회
, removeReduction = "/010/remove.do" // 과태료 감경 대장 삭제
, getReductionInfo = "/020/info.do" // 과태료 감경 정보 조회
, createReduction = "/020/create.do" // 과태료 감경 대장 등럭
, updateReduction = "/020/update.do" // 과태료 감경 대장 수정
;
}
/**과태료 감경 대장 서비스*/
@Resource(name="rductService")
private RductService rductService;
@Resource(name="rdctService")
private RdctService rdctService;
@Resource(name="stngBean")
private StngBean stngBean;
@ -84,16 +83,16 @@ public class Levy02Controller extends ApplicationController {
return mav
.addObject("pageName", "levy02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "rduct") // prefix
.addObject("infoPrefix", "rdct") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDCT_RSN_CD)
;
}
/** .<br />
* {@link RductService#getRductList(RductQuery)}
* {@link RdctService#getRductList(RductQuery)}
* @param req
* @return jsonView
* <pre><code> {
@ -104,10 +103,10 @@ public class Levy02Controller extends ApplicationController {
* }</code></pre>
*/
@Task
@RequestMapping(name="과태료 감경 대장 목록 조회", value=METHOD_URL.getRductList)
@RequestMapping(name="과태료 감경 대장 목록 조회", value=METHOD_URL.getReductionList)
public ModelAndView getRductList(LevyQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = rductService.getRductList(setFetchSize(req));
List<?> result = rdctService.getRdctList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "rduct");
} else {
// 현재 날짜 구하기
@ -123,12 +122,12 @@ public class Levy02Controller extends ApplicationController {
CellStyle dateYMD = format.yyyy_mm_dd();
CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss();
List<DataObject> list = rductService.getRductList(req.setFetchSize(0));
List<DataObject> list = rdctService.getRdctList(req.setFetchSize(0));
Map<String,Object> valueMap = new HashMap<String,Object>();
valueMap.put("업무구분", format.of("TASK_SE_NM").style(center));
valueMap.put("감경일자", FormatMaker.yyyy_mm_dd(format, "RDUCT_YMD").style(dateYMD));
valueMap.put("감경사유", format.of("RDUCT_RSN_CD"));
valueMap.put("감경일자", FormatMaker.yyyy_mm_dd(format, "RDCT_YMD").style(dateYMD));
valueMap.put("감경사유", format.of("RDCT_RSN_NM"));
valueMap.put("기타내용", format.of("ETC_CN"));
valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT));
valueMap.put("차량번호", format.of("VHRNO"));
@ -139,7 +138,7 @@ public class Levy02Controller extends ApplicationController {
valueMap.put("단속장소", format.of("CRDN_PLC"));
valueMap.put("상세단속장소", format.of("DTL_CRDN_PLC"));
valueMap.put("단속원금", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("감경금액", format.of("RDUCT_AMT").style(numeric));
valueMap.put("감경금액", format.of("RDCT_AMT").style(numeric));
valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric));
valueMap.put("미납금액", format.of("SUM_AMT").style(numeric));
valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
@ -166,16 +165,16 @@ public class Levy02Controller extends ApplicationController {
* @param req
* @return fims/levy/levy02020-info jsonView
* <pre>{
* "rductInfo":
* "rdctInfo":
* }</pre>
*/
@Task
@RequestMapping(name="과태료 감경 정보 조회", value=METHOD_URL.getRductInfo)
public ModelAndView getRductInfo(HttpServletRequest hReq, LevyQuery req) {
DataObject info = rductService.getRductInfo(req);
@RequestMapping(name="과태료 감경 정보 조회", value=METHOD_URL.getReductionInfo)
public ModelAndView getRdctInfo(HttpServletRequest hReq, LevyQuery req) {
DataObject info = rdctService.getRdctInfo(req);
// 등록을 호출하였지만 등록된 감경 ID가 있는지 확인.
if (req.getCallPurpose().equals("create") && !info.string("RDUCT_ID").equals("")) {
if (req.getCallPurpose().equals("create") && !info.string("RDCT_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
return mav.addObject("rtnMsg", "이미 등록된 과태료 감경 정보가 있습니다.");
@ -194,10 +193,10 @@ public class Levy02Controller extends ApplicationController {
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "levy02020") // jsp pageName
.addObject("infoPrefix", "rduct") // prefix
.addObject("infoPrefix", "rdct") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("rductInfo", json ? info : toJson(info))
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDCT_RSN_CD)
.addObject("rdctInfo", json ? info : toJson(info))
;
}
}
@ -210,10 +209,10 @@ public class Levy02Controller extends ApplicationController {
* }</code></pre>
*/
@Task
@RequestMapping(name="과태료 감경 대장 등록", value=METHOD_URL.createRduct)
public ModelAndView createRduct(Rduct rduct) {
@RequestMapping(name="과태료 감경 대장 등록", value=METHOD_URL.createReduction)
public ModelAndView createRdct(Rdct rdct) {
boolean saved = false;
String rtnMsg = rductService.createRduct(rduct);
String rtnMsg = rdctService.createRdct(rdct);
if (rtnMsg.contains("[S]")) {
saved = true;
@ -234,10 +233,10 @@ public class Levy02Controller extends ApplicationController {
* }</code></pre>
*/
@Task
@RequestMapping(name="과태료 감경 대장 수정", value=METHOD_URL.updateRduct)
public ModelAndView updateRduct(Rduct rduct) {
@RequestMapping(name="과태료 감경 대장 수정", value=METHOD_URL.updateReduction)
public ModelAndView updateRdct(Rdct rdct) {
boolean saved = false;
String rtnMsg = rductService.updateRduct(rduct);
String rtnMsg = rdctService.updateRdct(rdct);
if (rtnMsg.contains("[S]")) {
saved = true;
@ -251,7 +250,7 @@ public class Levy02Controller extends ApplicationController {
}
/** .
* @param rductId ID
* @param rdctId ID
* @return jsonView
* <pre><code> {
* "affected":
@ -259,20 +258,20 @@ public class Levy02Controller extends ApplicationController {
* }</code></pre>
*/
@Task
@RequestMapping(name="과태료 감경 대장 삭제", value=METHOD_URL.removeRduct)
public ModelAndView removeRduct(Rduct rduct) {
@RequestMapping(name="과태료 감경 대장 삭제", value=METHOD_URL.removeReduction)
public ModelAndView removeRdct(Rdct rdct) {
boolean saved = false;
String rtnMsg = "";
if (rduct.getRductIds() == null || rduct.getRductIds().length < 1) {
rtnMsg = rductService.removeRduct(rduct);
if (rdct.getRdctIds() == null || rdct.getRdctIds().length < 1) {
rtnMsg = rdctService.removeRdct(rdct);
} else {
// 부과제외 Ids 만큼 반복..
for (int iLoop = 0; iLoop < rduct.getRductIds().length; iLoop++) {
rduct.setRductId(rduct.getRductIds()[iLoop]); // 감경 ID 설정
for (int iLoop = 0; iLoop < rdct.getRdctIds().length; iLoop++) {
rdct.setRdctId(rdct.getRdctIds()[iLoop]); // 감경 ID 설정
// 부과제외 삭제 호출
rtnMsg = rductService.removeRduct(rduct);
rtnMsg = rdctService.removeRdct(rdct);
if (!rtnMsg.contains("[S]")) // 오류가 발생하였으면 종료..
break;
}

@ -230,21 +230,21 @@ public class NisIndivBean extends AbstractBean {
a01.setFcltSeCd(""); // 시설구분코드 / 금연구역흡연위반 과태료인 경우 활용
a01.setRegSeCd(""); // 등록구분코드 / 폐기물관리법위반 과태료인 경우 01투기, 02소각, 99기타
// 감경 사유 코드(FIM019) -> 감경사유구분코드
if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("01")) { // 국민기초생활수급자
if (selectCrdnInfo.string("RDCT_RSN_CD").equals("01")) { // 국민기초생활수급자
a01.setRdtRsnSeCd("0101");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("02")) { // 한부모가족보호대상자
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("02")) { // 한부모가족보호대상자
a01.setRdtRsnSeCd("0102");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("03")) { // 장애인(장애의 정도가 심한 장애인)
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("03")) { // 장애인(장애의 정도가 심한 장애인)
a01.setRdtRsnSeCd("0103");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("04")) { // 국가유공자(상이등급3급이상)
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("04")) { // 국가유공자(상이등급3급이상)
a01.setRdtRsnSeCd("0104");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("05")) { // 미성년자
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("05")) { // 미성년자
a01.setRdtRsnSeCd("0105");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("08")) { // 의견진술감액
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("08")) { // 의견진술감액
a01.setRdtRsnSeCd("");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("09")) { // 기타
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("09")) { // 기타
a01.setRdtRsnSeCd("");
} else if (selectCrdnInfo.string("RDUCT_RSN_CD").equals("99")) { // 타법령에의한감경
} else if (selectCrdnInfo.string("RDCT_RSN_CD").equals("99")) { // 타법령에의한감경
a01.setRdtRsnSeCd("0199");
} else { // 해당없음
a01.setRdtRsnSeCd("0100");

@ -133,7 +133,7 @@ public class Rdca01Controller extends ApplicationController {
valueMap.put("단속장소", format.of("CRDN_PLC"));
valueMap.put("상세단속장소", format.of("DTL_CRDN_PLC"));
valueMap.put("위반항목", format.of("VLTN_ARTCL"));
valueMap.put("단속", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("단속금", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
valueMap.put("단속특별구역", format.of("CRDN_SPAREA_NM").style(center));
valueMap.put("사용연료", format.of("USE_FUEL_NM").style(center));

@ -258,7 +258,7 @@ public class Sndb01Controller extends ApplicationController {
valueMap.put("단속법정동", format.of("CRDN_STDG_NM"));
valueMap.put("단속장소", format.of("CRDN_PLC"));
valueMap.put("상세단속장소", format.of("DTL_CRDN_PLC"));
valueMap.put("단속", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("단속금", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
valueMap.put("납부자명", format.of("RTPYR_NM"));
valueMap.put("납부자생일", format.of("RTPYR_BRDT_MASK").style(center));

@ -16,7 +16,7 @@ import cokr.xit.fims.excl.service.LevyExclService;
import cokr.xit.fims.excl.service.OpnnSbmsnService;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.LevyService;
import cokr.xit.fims.levy.service.RductService;
import cokr.xit.fims.levy.service.RdctService;
import cokr.xit.fims.payer.PayerQuery;
import cokr.xit.fims.payer.service.PayerService;
import cokr.xit.fims.rcvm.RcvmtQuery;
@ -93,8 +93,8 @@ public class Sprt02Controller extends ApplicationController {
protected LevyService levyService;
/** 감경 대장 서비스 */
@Resource(name = "rductService")
protected RductService rductService;
@Resource(name = "rdctService")
protected RdctService rdctService;
/** 수납 대장 서비스*/
@Resource(name = "rcvmtService")
@ -255,7 +255,7 @@ public class Sprt02Controller extends ApplicationController {
@Task
@RequestMapping(name="개별총정보 처리 상세 정보 조회", value=METHOD_URL.getPrcsDtlInfo)
public ModelAndView getPrcsDtlInfo(SprtQuery req) {
// 과태료 감경(TB_RDUCT) 대장 조회
// 과태료 감경(TB_RDCT) 대장 조회
LevyQuery levyQuery = new LevyQuery();
if (req.getCallPurpose() == null) {
@ -265,9 +265,9 @@ public class Sprt02Controller extends ApplicationController {
}
levyQuery.setCrdnId(req.getCrdnId());
levyQuery.setDelYn(req.getDelYn());
levyQuery.setOrderBy("RDUCT_ID DESC"); // 정렬
levyQuery.setOrderBy("RDCT_ID DESC"); // 정렬
DataObject rductInfo = rductService.getRductInfo(levyQuery);
DataObject rdctInfo = rdctService.getRdctInfo(levyQuery);
// 부과 제외(TB_LEVY_EXCL) 대장 조회
LevyExclQuery exclQuery = new LevyExclQuery();
@ -303,7 +303,7 @@ public class Sprt02Controller extends ApplicationController {
mav.addObject("pageNameMain", "sprt02010")
.addObject("pageName", "sprt02050")
.addObject("rductInfo", json ? rductInfo : toJson(rductInfo)) // 과태료 감경 정보
.addObject("rdctInfo", json ? rdctInfo : toJson(rdctInfo)) // 과태료 감경 정보
.addObject("levyExclInfo", json ? levyExclInfo : toJson(levyExclInfo)) // 부과 제외 정보
.addObject("crdnSttsHstrys", json ? crdnSttsHstrys : toJson(crdnSttsHstrys)) // 단속 상태 이력
.addObject("payerAddrHstrys", json ? payerAddrHstrys : toJson(payerAddrHstrys)) // 납부자 주소 변경 이력

@ -109,18 +109,18 @@
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, R.RDUCT_ID <!-- 감경 ID -->
, R.RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, (CASE WHEN R.RDUCT_AMT IS NOT NULL THEN R.RDUCT_AMT
, R.RDCT_ID <!-- 감경 ID -->
, R.RDCT_RSN_CD <!-- 감경 사유 코드 -->
, (CASE WHEN R.RDCT_AMT IS NOT NULL THEN R.RDCT_AMT
ELSE (SELECT C.FFNLG_CRDN_AMT*T.WKSN_RDCRT/100 FROM TB_TASK T WHERE C.SGG_CD=T.SGG_CD AND C.TASK_SE_CD=T.TASK_SE_CD AND T.USE_YN='Y')
END ) AS RDUCT_AMT <!-- 감경 금액 -->
END ) AS RDCT_AMT <!-- 감경 금액 -->
FROM TB_OPNN_SBMSN OS
INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
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)
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
</sql>
<select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(opnnSbmsnMapper.selectOpnnSbmsnList) */
@ -292,7 +292,7 @@
, OS.MDFCN_DT <!-- 수정 일시 -->
, OS.MDFR <!-- 수정자 -->
, (SELECT C.FFNLG_CRDN_AMT*T.WKSN_RDCRT/100 FROM TB_TASK T
WHERE C.SGG_CD=T.SGG_CD AND C.TASK_SE_CD=T.TASK_SE_CD AND T.USE_YN='Y') AS RDUCT_AMT <!-- 감경 금액 -->
WHERE C.SGG_CD=T.SGG_CD AND C.TASK_SE_CD=T.TASK_SE_CD AND T.USE_YN='Y') AS RDCT_AMT <!-- 감경 금액 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.levy.dao.RductMapper">
<mapper namespace="cokr.xit.fims.levy.dao.RdctMapper">
<!-- 과태료 감경 대장 정보 매퍼
========== 변경 이력 ==========
2023-08-30 JoJH 최초 작성
============================ -->
<resultMap id="rductRow" type="cokr.xit.fims.levy.Rduct">
<result property="rductId" column="RDUCT_ID" /> <!-- 감경 ID -->
<resultMap id="rdctRow" type="cokr.xit.fims.levy.Rdct">
<result property="rdctId" column="RDCT_ID" /> <!-- 감경 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="rductYmd" column="RDUCT_YMD" /> <!-- 감경 일자 -->
<result property="rductRsnCd" column="RDUCT_RSN_CD" /> <!-- 감경 사유 코드 -->
<result property="rductAmt" column="RDUCT_AMT" /> <!-- 감경 금액 -->
<result property="rdctYmd" column="RDCT_YMD" /> <!-- 감경 일자 -->
<result property="rdctRsnCd" column="RDCT_RSN_CD" /> <!-- 감경 사유 코드 -->
<result property="rdctAmt" column="RDCT_AMT" /> <!-- 감경 금액 -->
<result property="etcCn" column="ETC_CN" /> <!-- 기타 내용 -->
<result property="delYn" column="DEL_YN" /> <!-- 삭제 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
@ -26,11 +26,11 @@
</resultMap>
<sql id="selectList">
SELECT R.RDUCT_ID <!-- 감경 ID -->
, R.RDUCT_YMD <!-- 감경 일자 -->
, R.RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM <!-- 감경 사유 명 -->
, R.RDUCT_AMT <!-- 감경 금액 -->
SELECT R.RDCT_ID <!-- 감경 ID -->
, R.RDCT_YMD <!-- 감경 일자 -->
, R.RDCT_RSN_CD <!-- 감경 사유 코드 -->
, (SELECT GET_CODE_NM('FIM019', R.RDCT_RSN_CD) FROM DUAL) AS RDCT_RSN_NM <!-- 감경 사유 명 -->
, R.RDCT_AMT <!-- 감경 금액 -->
, R.ETC_CN <!-- 감액 기타 내용 -->
, R.DEL_YN <!-- 삭제 여부 -->
, R.REG_DT <!-- 등록 일시 -->
@ -82,7 +82,7 @@
, L.LEVY_PCPTAX + L.LEVY_ADAMT AS LEVY_AMT <!-- 부과 금액 -->
, L.RCVMT_PCPTAX + L.RCVMT_ADAMT AS RCVMT_AMT <!-- 수납 금액 -->
, L.RDAMT_PCPTAX + L.RDAMT_ADAMT AS RDAMT_AMT <!-- 감액 금액 -->
FROM TB_RDUCT R
FROM TB_RDCT R
INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
@ -90,18 +90,18 @@
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
</sql>
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
<select id="selectRdctList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rdctMapper.selectRdctList) */
<include refid="utility.paging-prefix" />
<include refid="selectList" />
<where>
<if test="schRductYmdFrom != null">
AND R.RDUCT_YMD <![CDATA[>=]]> #{schRductYmdFrom} <!-- 감경 일자 시작 -->
<if test="schRdctYmdFrom != null">
AND R.RDCT_YMD <![CDATA[>=]]> #{schRdctYmdFrom} <!-- 감경 일자 시작 -->
</if>
<if test="schRductYmdTo != null">
AND R.RDUCT_YMD <![CDATA[<=]]> #{schRductYmdTo} <!-- 감경 일자 시작 -->
<if test="schRdctYmdTo != null">
AND R.RDCT_YMD <![CDATA[<=]]> #{schRdctYmdTo} <!-- 감경 일자 시작 -->
</if>
<if test="schRductRsnCd != null">
AND R.RDUCT_RSN_CD = #{schRductRsnCd} <!-- 감경 사유 코드 -->
<if test="schRdctRsnCd != null">
AND R.RDCT_RSN_CD = #{schRdctRsnCd} <!-- 감경 사유 코드 -->
</if>
<if test="delYn != null">
AND R.DEL_YN = #{delYn} <!-- 삭제 여부 -->
@ -164,10 +164,10 @@
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" />
<choose>
<when test="by == 'rductYmd'"> R.RDUCT_YMD </when>
<when test="by == 'rductRsnCd'"> R.RDUCT_RSN_CD </when>
<when test="by == 'rductAmt'"> R.RDUCT_AMT </when>
<when test="by == 'rductEtcCn'"> R.ETC_CN </when>
<when test="by == 'rdctYmd'"> R.RDCT_YMD </when>
<when test="by == 'rdctRsnCd'"> R.RDCT_RSN_CD </when>
<when test="by == 'rdctAmt'"> R.RDCT_AMT </when>
<when test="by == 'rdctEtcCn'"> R.ETC_CN </when>
<when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
<when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
@ -215,10 +215,10 @@
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, R.RDUCT_ID <!-- 감경 ID -->
, R.RDUCT_YMD <!-- 감경 일자 -->
, R.RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, R.RDUCT_AMT <!-- 감경 금액 -->
, R.RDCT_ID <!-- 감경 ID -->
, R.RDCT_YMD <!-- 감경 일자 -->
, R.RDCT_RSN_CD <!-- 감경 사유 코드 -->
, R.RDCT_AMT <!-- 감경 금액 -->
, R.ETC_CN <!-- 감액 기타 내용 -->
, R.DEL_YN <!-- 삭제 여부 -->
, R.REG_DT <!-- 등록 일시 -->
@ -227,26 +227,26 @@
, R.MDFR <!-- 수정자 -->
, R.DEL_DT <!-- 삭제 일시 -->
, R.DLTR <!-- 삭제자 -->
, (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM <!-- 감경 사유 명 -->
, (SELECT GET_CODE_NM('FIM019', R.RDCT_RSN_CD) FROM DUAL) AS RDCT_RSN_NM <!-- 감경 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
FROM TB_CRDN C
INNER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
</sql>
<select id="selectRducts" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 객체 가져오기(rductMapper.selectRducts) */
<select id="selectRdcts" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 객체 가져오기(rdctMapper.selectRdcts) */
<include refid="select" />
<where>
<if test="rductIds != null">
AND R.RDUCT_ID IN ( <!-- 감경 Ids -->
<foreach collection="rductIds" item="rductId" separator=","> #{rductId} </foreach>
<if test="rdctIds != null">
AND R.RDCT_ID IN ( <!-- 감경 Ids -->
<foreach collection="rdctIds" item="rdctId" separator=","> #{rdctId} </foreach>
)
</if>
<if test="rductId != null">
AND R.RDUCT_ID = #{rductId} <!-- 감경 ID -->
<if test="rdctId != null">
AND R.RDCT_ID = #{rdctId} <!-- 감경 ID -->
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
@ -256,23 +256,23 @@
<include refid="utility.orderBy" />
</select>
<insert id="insertRduct" parameterType="cokr.xit.fims.levy.Rduct">/* 과태료 감경 대장 등록(rductMapper.insertRduct) */
<selectKey resultType="string" keyProperty="rductId" keyColumn="NEW_ID" order="BEFORE">
<insert id="insertRdct" parameterType="cokr.xit.fims.levy.Rdct">/* 과태료 감경 대장 등록(rdctMapper.insertRdct) */
<selectKey resultType="string" keyProperty="rdctId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyBySggAndYear">
<property name="TABLE_NAME" value="TB_RDUCT" />
<property name="TABLE_KEY" value="RDUCT_ID" />
<property name="TABLE_NAME" value="TB_RDCT" />
<property name="TABLE_KEY" value="RDCT_ID" />
<property name="sggCd" value="#{sggCd}" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_RDUCT (
RDUCT_ID <!-- 감경 ID -->
INTO TB_RDCT (
RDCT_ID <!-- 감경 ID -->
, CRDN_ID <!-- 단속 ID -->
, RTPYR_ID <!-- 납부자 ID -->
, RDUCT_YMD <!-- 감경 일자 -->
, RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, RDUCT_AMT <!-- 감경 금액 -->
, RDCT_YMD <!-- 감경 일자 -->
, RDCT_RSN_CD <!-- 감경 사유 코드 -->
, RDCT_AMT <!-- 감경 금액 -->
, ETC_CN <!-- 기타 내용 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
@ -281,12 +281,12 @@
, MDFR <!-- 수정자 -->
)
VALUES (
#{rductId} <!-- 감경 ID -->
#{rdctId} <!-- 감경 ID -->
, #{crdnId} <!-- 단속 ID -->
, #{rtpyrId} <!-- 납부자 ID -->
, #{rductYmd} <!-- 감경 일자 -->
, #{rductRsnCd} <!-- 감경 사유 코드 -->
, #{rductAmt} <!-- 감경 금액 -->
, #{rdctYmd} <!-- 감경 일자 -->
, #{rdctRsnCd} <!-- 감경 사유 코드 -->
, #{rdctAmt} <!-- 감경 금액 -->
, #{etcCn} <!-- 기타 내용 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
@ -296,29 +296,29 @@
)
</insert>
<update id="updateRduct" parameterType="cokr.xit.fims.levy.Rduct">/* 과태료 감경 대장 수정(rductMapper.updateRduct) */
UPDATE TB_RDUCT
SET RDUCT_YMD = #{rductYmd} <!-- 감경 일자 -->
, RDUCT_RSN_CD = #{rductRsnCd} <!-- 감경 사유 코드 -->
, RDUCT_AMT = #{rductAmt} <!-- 감경 금액 -->
<update id="updateRdct" parameterType="cokr.xit.fims.levy.Rdct">/* 과태료 감경 대장 수정(rdctMapper.updateRdct) */
UPDATE TB_RDCT
SET RDCT_YMD = #{rdctYmd} <!-- 감경 일자 -->
, RDCT_RSN_CD = #{rdctRsnCd} <!-- 감경 사유 코드 -->
, RDCT_AMT = #{rdctAmt} <!-- 감경 금액 -->
, ETC_CN = #{etcCn} <!-- 기타 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE RDUCT_ID = #{rductId} <!-- 감경 ID -->
WHERE RDCT_ID = #{rdctId} <!-- 감경 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteRduct" parameterType="cokr.xit.fims.levy.Rduct">/* 과태료 감경 대장 삭제(rductMapper.deleteRduct) */
UPDATE TB_RDUCT
<update id="deleteRdct" parameterType="cokr.xit.fims.levy.Rdct">/* 과태료 감경 대장 삭제(rdctMapper.deleteRdct) */
UPDATE TB_RDCT
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{delRsn} <!-- 삭제 사유 -->
WHERE RDUCT_ID = #{rductId} <!-- 감경 ID -->
WHERE RDCT_ID = #{rdctId} <!-- 감경 ID -->
AND DEL_YN = 'N'
</update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(rductMapper.selectCrdn) */
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(rdctMapper.selectCrdn) */
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
@ -341,18 +341,18 @@
, L.RCVMT_ADAMT <!-- 수납 가산금 -->
, L.RDAMT_PCPTAX <!-- 감액 본세 -->
, L.RDAMT_ADAMT <!-- 감액 가산금 -->
, R.RDUCT_ID <!-- 감경 ID -->
, R.RDCT_ID <!-- 감경 ID -->
, <include refid="utility.today" /> AS TODAY <!-- 오늘 일자 -->
, C.FFNLG_CRDN_AMT * T.WKSN_RDCRT / 100 AS CALC_RDUCT_AMT <!-- 감경 금액 -->
, C.FFNLG_CRDN_AMT * T.WKSN_RDCRT / 100 AS CALC_RDCT_AMT <!-- 감경 금액 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
FROM TB_CRDN C
INNER JOIN TB_TASK T ON (C.SGG_CD = T.SGG_CD AND C.TASK_SE_CD = T.TASK_SE_CD AND T.USE_YN = 'Y')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
<where>
<if test="rductId != null">
AND R.RDUCT_ID = #{rductId} <!-- 감경 ID -->
<if test="rdctId != null">
AND R.RDCT_ID = #{rdctId} <!-- 감경 ID -->
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
@ -361,7 +361,7 @@
</where>
</select>
<update id="updateCrdnRduct" parameterType="cokr.xit.fims.crdn.Crdn">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */
<update id="updateCrdnRdct" parameterType="cokr.xit.fims.crdn.Crdn">/* 단속 대장 과태료 감경 금액 수정(rdctMapper.updateCrdnRdct) */
UPDATE TB_CRDN
SET FFNLG_RDCRT = #{ffnlgRdcrt} <!-- 과태료 감경율 -->
, FFNLG_AMT = #{ffnlgAmt} <!-- 과태료 금액 -->
@ -372,7 +372,7 @@
AND DEL_YN = 'N' <!-- 삭제 여부 -->
</update>
<update id="updateLevyRduct" parameterType="cokr.xit.fims.levy.Levy">/* 부과 대장 과태료 감경 금액 수정(rductMapper.updateLevyRduct) */
<update id="updateLevyRdct" parameterType="cokr.xit.fims.levy.Levy">/* 부과 대장 과태료 감경 금액 수정(rdctMapper.updateLevyRdct) */
UPDATE TB_LEVY
SET FFNLG_AMT = #{ffnlgAmt} <!-- 과태료 금액 -->
, LEVY_PCPTAX = #{levyPcptax} <!-- 부과 본세 -->

@ -607,7 +607,7 @@
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.WHOL_ADDR <!-- 전체 주소 -->
, (GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':')) AS CRDN_YMD_TM_MASK <!-- 단속 일시 마스크 -->
, (SELECT RDUCT_RSN_CD FROM TB_RDUCT X WHERE X.CRDN_ID = C.CRDN_ID AND X.DEL_YN = 'N') AS RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, (SELECT RDCT_RSN_CD FROM TB_RDCT X WHERE X.CRDN_ID = C.CRDN_ID AND X.DEL_YN = 'N') AS RDCT_RSN_CD <!-- 감경 사유 코드 -->
, <include refid="utility.today" /> AS TODAY
FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)

@ -82,18 +82,18 @@
data-fmt-type="time" maxlength="8" placeholder="시:분:초" required />
</div>
<!-- 감경 사유 코드 -->
<div class="col-md-6" id="divRductRsnCd--${pageName}">
<label for="rductRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경사유</label>
<select class="form-select" id="rductRsnCd--${pageName}" name="rductRsnCd" data-map="RDUCT_RSN_CD">
<div class="col-md-6" id="divRdctRsnCd--${pageName}">
<label for="rdctRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경사유</label>
<select class="form-select" id="rdctRsnCd--${pageName}" name="rdctRsnCd" data-map="RDCT_RSN_CD">
<c:forEach items="${FIM019List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 감경 금액 -->
<div class="col-md-6" id="divRductAmt--${pageName}">
<label for="rductAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rductAmt--${pageName}" name="rductAmt" data-map="RDUCT_AMT" readonly />
<div class="col-md-6" id="divRdctAmt--${pageName}">
<label for="rdctAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rdctAmt--${pageName}" name="rdctAmt" data-map="RDCT_AMT" readonly />
</div>
<!-- 답변 내용 -->
<div class="col-md-12">
@ -209,19 +209,19 @@
// 의견제출 상태 코드 변경
$P.fnChangeOpnnSbmsnSttsCd = (obj) => {
// javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리))
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "hidden";
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "visible";
$("#divRductRsnCd--${pageName}").hide();
$("#divRductAmt--${pageName}").hide();
$("#rductRsnCd--${pageName}").attr("required", false);
$("#rductAmt--${pageName}").attr("required", false);
// document.getElementById("divRdctRsnCd--${pageName}").style.visibility = "hidden";
// document.getElementById("divRdctRsnCd--${pageName}").style.visibility = "visible";
$("#divRdctRsnCd--${pageName}").hide();
$("#divRdctAmt--${pageName}").hide();
$("#rdctRsnCd--${pageName}").attr("required", false);
$("#rdctAmt--${pageName}").attr("required", false);
if (obj == "04") { // 의견제출 상태 코드(FIM031) 04: 과태료감경
// 필수 선택 추가 필요
$("#divRductRsnCd--${pageName}").show();
$("#divRductAmt--${pageName}").show();
$("#rductRsnCd--${pageName}").attr("required", true);
$("#rductAmt--${pageName}").attr("required", true);
$("#divRdctRsnCd--${pageName}").show();
$("#divRdctAmt--${pageName}").show();
$("#rdctRsnCd--${pageName}").attr("required", true);
$("#rdctAmt--${pageName}").attr("required", true);
}
}
@ -235,12 +235,12 @@
// 감경 사유 확인
let opnnSbmsnSttsCd = $("#opnnSbmsnSttsCd--${pageName}").val();
let rductRsnCd = $("#rductRsnCd--${pageName} option:selected").val();
let rductRsnNm = $("#rductRsnCd--${pageName} option:selected").text();
let rdctRsnCd = $("#rdctRsnCd--${pageName} option:selected").val();
let rdctRsnNm = $("#rdctRsnCd--${pageName} option:selected").text();
if (opnnSbmsnSttsCd == "04" && rductRsnCd == "00") {
if (opnnSbmsnSttsCd == "04" && rdctRsnCd == "00") {
dialog.alert({
content: "감경사유가 '" + rductRsnNm + "' 입니다."
content: "감경사유가 '" + rdctRsnNm + "' 입니다."
+ "<br>" + "[" + $P.control.prefixName + " 저장" + "]" + " 실행이 취소되었습니다."
, init: () => { setDialogZindex(); }
, onOK: () => { }

@ -47,21 +47,21 @@
</div>
<!-- 감경 일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRductYmdFrom--${pageName}">감경일자</label>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRdctYmdFrom--${pageName}">감경일자</label>
<span class="form-search-linebox">
<input type="text" id="schRductYmdFrom--${pageName}" name="schRductYmdFrom" class="form-control form-date"
<input type="text" id="schRdctYmdFrom--${pageName}" name="schRdctYmdFrom" class="form-control form-date"
data-fmt-type="day" autocomplete="off" title="시작 날짜 선택" />
<button type="button" class="bx bx-lg bx-calendar bg-white"></button>
~
<input type="text" id="schRductYmdTo--${pageName}" name="schRductYmdTo" class="form-control form-date"
<input type="text" id="schRdctYmdTo--${pageName}" name="schRdctYmdTo" class="form-control form-date"
data-fmt-type="day" autocomplete="off" title="종료 날짜 선택">
<button type="button" class="bx bx-lg bx-calendar bg-white"></button>
</span>
</div>
<!-- 감경 사유 구분 코드 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRductRsnCd--${pageName}">감경사유</label>
<select class="form-select w-px-160" id="schRductRsnCd--${pageName}" name="schRductRsnCd">
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schRdctRsnCd--${pageName}">감경사유</label>
<select class="form-select w-px-160" id="schRdctRsnCd--${pageName}" name="schRdctRsnCd">
<option value="">전체</option>
<c:forEach items="${FIM019List}" var="item">
<option value="${item.code}">${item.value}</option>
@ -188,8 +188,8 @@
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" id="gridAllCheckbox--${pageName}" onchange="pageObject['${pageName}'].control.select(this.checked);" /></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RDUCT_YMD', this.innerText, 'ymd', '');">감경일자</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('RDUCT_RSN_CD', this.innerText, 'codeValue', 'FIM019');">감경사유</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RDCT_YMD', this.innerText, 'ymd', '');">감경일자</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('RDCT_RSN_CD', this.innerText, 'codeValue', 'FIM019');">감경사유</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">감경특기사항</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
@ -200,7 +200,7 @@
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="bpv" style="width: 280px;" onclick="searchFromGridTitle('DTL_CRDN_PLC', this.innerText, 'match', 'part');">상세단속장소</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'perfect');">단속원금</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RDUCT_AMT', this.innerText, 'match', 'perfect');">감경금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RDCT_AMT', this.innerText, 'match', 'perfect');">감경금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'perfect');">과태료금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SUM_AMT', this.innerText, 'match', 'part');">미납금액</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD' ,this.innerText, 'codeValue', 'FIM010');">처리상태</th>
@ -214,12 +214,12 @@
<th class="cmn dummy-th"></th>
</template>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{RDUCT_ID}">
<tr data-key="{RDCT_ID}">
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center"><input type="checkbox" class="form-check-input" name="gridCheckbox" value="{RDUCT_ID}" onchange="pageObject['${pageName}'].control.select('{RDUCT_ID}', this.checked);" /></td>
<td class="cmn text-center"><input type="checkbox" class="form-check-input" name="gridCheckbox" value="{RDCT_ID}" onchange="pageObject['${pageName}'].control.select('{RDCT_ID}', this.checked);" /></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RDUCT_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RDUCT_RSN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RDCT_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RDCT_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ETC_CN}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
@ -233,7 +233,7 @@
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="bpv text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-end fw-bold text-orange" onclick="{onclick}" ondblclick="{ondblclick}">{RDUCT_AMT}</td>
<td class="cmn text-end fw-bold text-orange" onclick="{onclick}" ondblclick="{ondblclick}">{RDCT_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end fw-bold text-red" onclick="{onclick}" ondblclick="{ondblclick}">{SUM_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
@ -297,17 +297,17 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix: "rduct"
prefix: "rdct"
, prefixName: "감경"
, keymapper: info => info ? info.RDUCT_ID : ""
, keymapper: info => info ? info.RDCT_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "lg"
, formats: {
RDUCT_YMD: dateFormat
RDCT_YMD: dateFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT: numberFormat
, RDUCT_AMT: numberFormat
, RDCT_AMT: numberFormat
, FFNLG_AMT: numberFormat
, SUM_AMT: numberFormat
, REG_DT: datetimeFormat
@ -341,7 +341,7 @@
$P.control.onCurrentChange = (item) => {
if (!item) return;
let key = item.data.RDUCT_ID;
let key = item.data.RDCT_ID;
$("#tbody--${pageName}").setCurrentRow(key);
}
@ -433,7 +433,7 @@
//
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['${pageName}'].control.setCurrent('" + dataItem.getValue("RDUCT_ID") + "');")
.replace(/{onclick}/gi, "pageObject['${pageName}'].control.setCurrent('" + dataItem.getValue("RDCT_ID") + "');")
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');");
let trs = empty ? [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
@ -587,16 +587,16 @@
// 감경 수정 버튼 이벤트
$P.fnUpdate = (title) => {
// 감경 ID
let rductId = $P.control.dataset.getValue("RDUCT_ID");
let rdctId = $P.control.dataset.getValue("RDCT_ID");
// 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") return;
if (typeof rdctId == "undefined" || rdctId == null || rdctId == "") return;
let params = {
title: title
, callPurpose: "update" // 호출용도: 수정
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rductId: rductId // 감경 ID
, rdctId: rdctId // 감경 ID
};
$P.control.getInfo(params);
@ -703,8 +703,8 @@
$("#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()); // 감경 일자 종료
$("#schRdctYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); // 감경 일자 시작
$("#schRdctYmdTo--${pageName}").datepicker("setDate", new Date()); // 감경 일자 종료
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}

@ -14,7 +14,7 @@
<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" />
<input type="hidden" id="rdctId--${pageName}" name="rdctId" data-map="RDCT_ID" />
<div class="row g-1">
<!-- 납부자 명 -->
@ -35,20 +35,20 @@
</div>
<!-- 감경 금액 -->
<div class="col-md-6">
<label for="rductAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rductAmt--${pageName}" name="rductAmt" data-map="RDUCT_AMT" data-fmt-type="number" />
<label for="rdctAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rdctAmt--${pageName}" name="rdctAmt" data-map="RDCT_AMT" data-fmt-type="number" />
</div>
<!-- 감경 일자 -->
<div class="col-md-6">
<label for="rductYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">감경일자</label>
<input type="text" class="form-control form-date" id="rductYmd--${pageName}" name="rductYmd" data-map="RDUCT_YMD"
<label for="rdctYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">감경일자</label>
<input type="text" class="form-control form-date" id="rdctYmd--${pageName}" name="rdctYmd" data-map="RDCT_YMD"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-lg bx-calendar bg-white"></button>
</div>
<!-- 감경 사유 코드 -->
<div class="col-md-6">
<label for="rductRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">감경사유</label>
<select class="form-select" id="rductRsnCd--${pageName}" name="rductRsnCd" data-map="RDUCT_RSN_CD" required>
<label for="rdctRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">감경사유</label>
<select class="form-select" id="rdctRsnCd--${pageName}" name="rdctRsnCd" data-map="RDCT_RSN_CD" required>
<c:forEach items="${FIM019List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
@ -103,14 +103,14 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix: "rduct"
prefix: "rdct"
, prefixName: "감경"
, keymapper: info => info ? info.RDUCT_ID : ""
, keymapper: info => info ? info.RDCT_ID : ""
, dataGetter: obj => obj.${infoPrefix}Info
, formats: {
FFNLG_CRDN_AMT: numberFormat // 과태료 단속 금액
, WKSN_RDCRT: numberFormat // 사회적약자 감경율
, RDUCT_AMT: numberFormat // 감경 금액
, RDCT_AMT: numberFormat // 감경 금액
}
});
@ -176,13 +176,13 @@
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 감경 사유
let rductRsnCd = $("#rductRsnCd--${pageName} option:selected").val();
let rductRsnNm = $("#rductRsnCd--${pageName} option:selected").text();
let rdctRsnCd = $("#rdctRsnCd--${pageName} option:selected").val();
let rdctRsnNm = $("#rdctRsnCd--${pageName} option:selected").text();
// 감경 사유 확인
if (rductRsnCd == "00") {
if (rdctRsnCd == "00") {
dialog.alert({
content : "감경사유가 '" + rductRsnNm + "' 입니다."
content : "감경사유가 '" + rdctRsnNm + "' 입니다."
+ "</br>" + $P.control.prefixName + " 저장 실행이 취소되었습니다."
, onOK : () => { }
});
@ -192,7 +192,7 @@
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK : () => {
, onOK: () => {
$P.control.save($P.formFields.get()); // formFields
}
});
@ -224,21 +224,21 @@
$P.initForm = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#rductYmd--${pageName}").datepicker("setDate", new Date());
$("#rdctYmd--${pageName}").datepicker("setDate", new Date());
// 화면 활성화 설정
$("#rtpyrNm--${pageName}").prop("readonly", true); // 납부자 이름
$("#rtpyrNo--${pageName}").prop("readonly", true); // 납부자 번호
$("#ffnlgCrdnAmt--${pageName}").prop("readonly", true); // 단속 원금
$("#wksnRdcrt--${pageName}").prop("readonly", true); // 감경율
$("#rductAmt--${pageName}").prop("readonly", true); // 감경 금액
$("#rdctAmt--${pageName}").prop("readonly", true); // 감경 금액
// View로 호출
if ($P.callPurpose == "view") {
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
$("#rductYmd--${pageName}").prop("disabled", true); // 감경 일자 달력 버튼
$("#rdctYmd--${pageName}").prop("disabled", true); // 감경 일자 달력 버튼
$("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼
}
}
@ -253,7 +253,7 @@
$P.initForm();
// 3. Dataset 설정
$P.control.setData([${rductInfo}]);
$P.control.setData([${rdctInfo}]);
});
</script>

@ -90,7 +90,7 @@
<th class="cmn" style="width: 160px;">위반항목</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">단속금</th>
<th class="cmn" style="width: 120px;">단속금</th>
<th class="cmn" style="width: 120px;">처리상태</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자생일</th>

@ -70,7 +70,7 @@
<!-- 단속 일시 -->
<div class="col-md-4">
<label for="crdnYmdTm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속일시</label>
<input type="text" class="form-control w-40" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" readonly />
<input type="text" class="form-control w-45" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" readonly />
</div>
<!-- 차량번호 -->
<div class="col-md-4">
@ -126,7 +126,7 @@
<!-- 민원 접수 일자 -->
<div class="col-md-4">
<label for="cvlcptRcptYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">민원접수일</label>
<input type="text" class="form-control w-40" id="cvlcptRcptYmd--${pageName}" name="cvlcptRcptYmd" data-map="CVLCPT_RCPT_YMD" readonly />
<input type="text" class="form-control w-50" id="cvlcptRcptYmd--${pageName}" name="cvlcptRcptYmd" data-map="CVLCPT_RCPT_YMD" readonly />
</div>
<!-- 담당자 -->
<div class="col-md-4">
@ -159,7 +159,7 @@
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end align-top">기타내용</label>
<textarea type="text" class="form-control w-80" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" cols="100%" rows="3" readonly></textarea>
</div>
<!-- 과태료 단속금 -->
<!-- 과태료 단속금 -->
<div class="col-md-3">
<label for="ffnlgCrdnAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">과태료 단속원금</label>
<input type="text" class="form-control w-40 text-sm-end" id="ffnlgCrdnAmt--${pageName}" name="ffnlgCrdnAmt" data-map="FFNLG_CRDN_AMT" data-fmt-type="number" readonly />

@ -26,28 +26,28 @@
</div> <!-- <div class="container-page-btn"> -->
<!-- 입력 영역 -->
<form id="frmRductEdit--${pageName}" name="frmRductEdit">
<form id="frmRdctEdit--${pageName}" name="frmRdctEdit">
<!-- hidden -->
<input type="hidden" id="rductId--${pageName}${pageDataName1}" name="rductId" data-map="RDUCT_ID" />
<input type="hidden" id="rdctId--${pageName}${pageDataName1}" name="rdctId" data-map="RDCT_ID" />
<div class="row g-1">
<!-- 감경 일자 -->
<div class="col-md-6">
<label for="rductYmd--${pageName}${pageDataName1}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경일자</label>
<input type="text" class="form-control w-30" id="rductYmd--${pageName}${pageDataName1}" name="rductYmd" data-map="RDUCT_YMD" readonly />
<label for="rdctYmd--${pageName}${pageDataName1}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경일자</label>
<input type="text" class="form-control w-30" id="rdctYmd--${pageName}${pageDataName1}" name="rdctYmd" data-map="RDCT_YMD" readonly />
</div>
<!-- -->
<div class="col-md-6">
</div>
<!-- 감경 사유 명 -->
<div class="col-md-6">
<label for="rductRsnNm--${pageName}${pageDataName1}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경사유</label>
<input type="text" class="form-control w-50" id="rductRsnNm--${pageName}${pageDataName1}" name="rductRsnNm" data-map="RDUCT_RSN_NM" readonly />
<label for="rdctRsnNm--${pageName}${pageDataName1}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경사유</label>
<input type="text" class="form-control w-50" id="rdctRsnNm--${pageName}${pageDataName1}" name="rdctRsnNm" data-map="RDCT_RSN_NM" readonly />
</div>
<!-- 감경 금액 -->
<div class="col-md-6">
<label for="rductAmt--${pageName}${pageDataName1}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rductAmt--${pageName}${pageDataName1}" name="rductAmt" data-map="RDUCT_AMT" readonly />
<label for="rdctAmt--${pageName}${pageDataName1}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rdctAmt--${pageName}${pageDataName1}" name="rdctAmt" data-map="RDCT_AMT" readonly />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
@ -256,7 +256,7 @@
let $P = pageObject["${pageName}"];
// FormFields
$P.rductFormFields = new FimsFormFields("#frmRductEdit--${pageName}");
$P.rductFormFields = new FimsFormFields("#frmRdctEdit--${pageName}");
$P.exclFormFields = new FimsFormFields("#frmExclEdit--${pageName}");
/**************************************************************************
@ -264,13 +264,13 @@
**************************************************************************/
// 감경 정보 DatasetControl
$P.rductControl = new DatasetControl({
prefix: "rduct"
prefix: "rdct"
, prefixName: "감경"
, keymapper: info => info ? info.RDUCT_ID : ""
, dataGetter: obj => obj.rductInfo
, keymapper: info => info ? info.RDCT_ID : ""
, dataGetter: obj => obj.rdctInfo
, formats: {
RDUCT_YMD: dateFormat
, RDUCT_AMT: numberFormat
RDCT_YMD: dateFormat
, RDCT_AMT: numberFormat
, REG_DT: datetimeFormat
}
});
@ -526,7 +526,7 @@
, data: params || {}
, success: resp => {
// 초기화
$("#frmRductEdit--${pageName}")[0].reset(); // 감경 화면 초기화
$("#frmRdctEdit--${pageName}")[0].reset(); // 감경 화면 초기화
$("#frmExclEdit--${pageName}")[0].reset(); // 부과제외 화면 초기화
$P.rductControl.dataset.clear(); // 감경 Dataset 초기화
$P.levyExclControl.dataset.clear(); // 부과제외 Dataset 초기화
@ -552,7 +552,7 @@
let params = {
sggCd: $P.rductControl.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.rductControl.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, rductId: $P.rductControl.dataset.getValue("RDUCT_ID") // 감경 ID
, rdctId: $P.rductControl.dataset.getValue("RDCT_ID") // 감경 ID
, delRsn: obj.reason // 삭제 사유
};
@ -623,9 +623,9 @@
// 감경 수정
$P.fnUpdateRduct = (title) => {
// 감경 ID
let rductId = $P.rductControl.dataset.getValue("RDUCT_ID");
let rdctId = $P.rductControl.dataset.getValue("RDCT_ID");
// 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") {
if (typeof rdctId == "undefined" || rdctId == null || rdctId == "") {
dialog.alert({
content: "조회된 감경 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
@ -654,7 +654,7 @@
, sggCd: $P.rductControl.dataset.getValue("SGG_CD")
, taskSeCd: $P.rductControl.dataset.getValue("TASK_SE_CD")
, crdnId: $P.rductControl.dataset.getValue("CRDN_ID")
, rductId: rductId
, rdctId: rdctId
, delYn: "N"
};
@ -664,9 +664,9 @@
// 감경 삭제
$P.fnRemoveRduct = (title) => {
// 감경 ID
let rductId = $P.rductControl.dataset.getValue("RDUCT_ID");
let rdctId = $P.rductControl.dataset.getValue("RDCT_ID");
// 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") {
if (typeof rdctId == "undefined" || rdctId == null || rdctId == "") {
dialog.alert({
content: "조회된 감경 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."

@ -30,7 +30,7 @@
<!-- 회계 구분 코드 -->
<div class="col-md-4">
<label for="acntgSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">회계구분</label>
<input type="text" class="form-control w-10" id="acntgSeCd--${pageName}" name="acntgSeCd" data-map="ACNTG_SE_CD" readonly />
<input type="text" class="form-control w-15" id="acntgSeCd--${pageName}" name="acntgSeCd" data-map="ACNTG_SE_CD" readonly />
<input type="text" class="form-control w-50" id="acntgSeNm--${pageName}" name="acntgSeNm" data-map="ACNTG_SE_NM" readonly />
</div>
<!-- 세목 코드 -->
@ -48,7 +48,7 @@
<!-- 회계 연도 -->
<div class="col-md-4">
<label for="fyr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">회계연도</label>
<input type="text" class="form-control w-15" id="fyr--${pageName}" name="fyr" data-map="FYR" readonly />
<input type="text" class="form-control w-20" id="fyr--${pageName}" name="fyr" data-map="FYR" readonly />
</div>
<!-- 부과 번호 -->
<div class="col-md-4">
@ -80,7 +80,7 @@
<!-- 분납 일련번호 -->
<div class="col-md-4">
<label for="ispySn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">분납일련번호</label>
<input type="text" class="form-control w-10" id="ispySn--${pageName}" name="ispySn" data-map="ISPY_SN" readonly />
<input type="text" class="form-control w-15" id="ispySn--${pageName}" name="ispySn" data-map="ISPY_SN" readonly />
</div>
<!-- 분납 구분 명 -->
<div class="col-md-4">
@ -151,32 +151,32 @@
<!-- 관리 항목 1 -->
<div class="col-md-4">
<label for="mngItem1--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">관리항목1</label>
<input type="text" class="form-control w-60" id="mngItem1--${pageName}" name="mngItem1" data-map="MNG_ITEM1" readonly />
<input type="text" class="form-control w-65" id="mngItem1--${pageName}" name="mngItem1" data-map="MNG_ITEM1" readonly />
</div>
<!-- 관리 항목 2 -->
<div class="col-md-4">
<label for="mngItem2--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">관리항목2</label>
<input type="text" class="form-control w-60" id="mngItem2--${pageName}" name="mngItem2" data-map="MNG_ITEM2" readonly />
<input type="text" class="form-control w-65" id="mngItem2--${pageName}" name="mngItem2" data-map="MNG_ITEM2" readonly />
</div>
<!-- 관리 항목 3 -->
<div class="col-md-4">
<label for="mngItem3--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">관리항목3</label>
<input type="text" class="form-control w-60" id="mngItem3--${pageName}" name="mngItem3" data-map="MNG_ITEM3" readonly />
<input type="text" class="form-control w-65" id="mngItem3--${pageName}" name="mngItem3" data-map="MNG_ITEM3" readonly />
</div>
<!-- 관리 항목 4 -->
<div class="col-md-4">
<label for="mngItem4--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">관리항목4</label>
<input type="text" class="form-control w-60" id="mngItem4--${pageName}" name="mngItem4" data-map="MNG_ITEM4" readonly />
<input type="text" class="form-control w-65" id="mngItem4--${pageName}" name="mngItem4" data-map="MNG_ITEM4" readonly />
</div>
<!-- 관리 항목 5 -->
<div class="col-md-4">
<label for="mngItem5--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">관리항목5</label>
<input type="text" class="form-control w-60" id="mngItem5--${pageName}" name="mngItem5" data-map="MNG_ITEM5" readonly />
<input type="text" class="form-control w-65" id="mngItem5--${pageName}" name="mngItem5" data-map="MNG_ITEM5" readonly />
</div>
<!-- 관리 항목 6 -->
<div class="col-md-4">
<label for="mngItem6--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">관리항목6</label>
<input type="text" class="form-control w-60" id="mngItem6--${pageName}" name="mngItem6" data-map="MNG_ITEM6" readonly />
<input type="text" class="form-control w-65" id="mngItem6--${pageName}" name="mngItem6" data-map="MNG_ITEM6" readonly />
</div>
<!-- 체납 구분 코드 -->
<div class="col-md-4">

Loading…
Cancel
Save