1. 과태료 감경 등록시 금액 변경하도록 수정.

2. 기타 소스 및 주석정리.
main
jjh 1 year ago
parent 69d781df8a
commit 93673a94cf

@ -22,13 +22,13 @@ public interface Excl03Service {
* @param req
* @return
*/
List<DataObject> getCrackdownReRegistrationList(ExclQuery req);
List<DataObject> getCrdnReRegList(ExclQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getCrackdownReRegistrations(ExclQuery req);
List<DataObject> getCrdnReRegs(ExclQuery req);
/** .
* @param excl03
@ -37,7 +37,7 @@ public interface Excl03Service {
* <li> false</li>
* </ul>
*/
boolean create(CrdnReReg crdnReReg);
boolean createCrdnReReg(CrdnReReg crdnReReg);
/** .
* @param excl03
@ -46,5 +46,5 @@ public interface Excl03Service {
* <li> false</li>
* </ul>
*/
boolean remove(CrdnReReg crdnReReg);
boolean removeCrdnReReg(CrdnReReg crdnReReg);
}

@ -59,7 +59,7 @@ public class Excl01Bean extends AbstractComponent {
*/
public List<DataObject> getLevyExcls(ExclQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT DESC");
req.setOrderBy("REG_DT DESC, LEVY_EXCL_ID DESC");
}
return levyExclMapper.selectLevyExcls(req);
@ -70,10 +70,6 @@ public class Excl01Bean extends AbstractComponent {
* @return
*/
public DataObject getLevyExclInfo(ExclQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("LEVY_EXCL_ID DESC");
}
return levyExclMapper.selectLevyExclInfo(req);
}
@ -84,8 +80,10 @@ public class Excl01Bean extends AbstractComponent {
public DataObject getCrdnInfo(ExclQuery req) {
DataObject dataCrdn = levyExclMapper.selectCrdn(req); // 단속 조회
if (req.getCallPurpose().equals("create")) {
dataCrdn.set("LEVY_EXCL_YMD", dataCrdn.get("TODAY")); // 부과 제외 일자
dataCrdn.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과 제외 구분 코드
}
return dataCrdn;
}
@ -115,13 +113,13 @@ public class Excl01Bean extends AbstractComponent {
// 단속 상태 코드(CRDN_STTS_CD) 확인..
if (levyExcl.getLevyExclSeCd().equals("1") || levyExcl.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고
// 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고를 등록 할 수 없다. 종료..
if (Integer.parseInt(infoCrdnLevyExcl.string("CRDN_STTS_CD")) > 50) {
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() > 50) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
} else if (levyExcl.getLevyExclSeCd().equals("5")) {
// 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후...
if (Integer.parseInt(infoCrdnLevyExcl.string("CRDN_STTS_CD")) < 51) {
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() < 51) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다");
}
@ -151,13 +149,12 @@ public class Excl01Bean extends AbstractComponent {
crdnSttsHstry.setBfrSttsChgDt(infoCrdnLevyExcl.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId());
crdnSttsHstry.setEtcCn("부과제외 대장 등록");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속상태코드 변경에 실패하였습니다.");
throw new RuntimeException("부과제외 등록 중 단속대장의 단속상태코드 변경에 실패하였습니다.");
}
// 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
@ -178,7 +175,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateCvlcptPrcsRsltCn(crdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원 대장의 민원처리결과내용 초기화에 실패하였습니다.");
throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원처리결과내용 초기화에 실패하였습니다.");
}
// 답변완료 후 서손처리에 대해서는 답변 상태를 업데이트 하지 않는다
@ -217,7 +214,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateCrdnCvlcpt(crdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원답변 수정에 실패하였습니다.");
throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원답변 수정에 실패하였습니다.");
}
}
} // if (infoCrdnLevyExcl.string("CRDN_REG_SE_CD").equals("02"))
@ -234,7 +231,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속 대장의 표지정보확인여부 수정에 실패하였습니다.");
throw new RuntimeException("부과제외 등록 중 단속대장의 표지정보확인여부 수정에 실패하였습니다.");
}
}
@ -251,7 +248,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateRcvmtCd(sndngDtl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 발송상세 대장의 수납코드 수정에 실패하였습니다.");
throw new RuntimeException("부과제외 등록 중 발송상세대장의 수납코드 수정에 실패하였습니다.");
}
}
// 계고
@ -308,7 +305,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateCvlcptPrcsRsltCn(crdnCvlcpt); // 단속민원 민원처리결과내용 초기화
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 수정 중 단속민원 대장의 민원처리결과내용 초기화에 실패하였습니다.");
throw new RuntimeException("부과제외 수정 중 단속민원대장의 민원처리결과내용 초기화에 실패하였습니다.");
}
// 자동등록 자료만..
@ -347,7 +344,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateCrdnCvlcpt(crdnCvlcpt); // 단속민원 민원처리코드 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 민원처리코드 수정에 실패하였습니다.");
throw new RuntimeException("부과제외 등록 중 단속민원대장의 민원처리코드 수정에 실패하였습니다.");
}
}
} // 자동등록 자료만..
@ -404,7 +401,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoLevyExcl.string("CRDN_ID"), newHstrySttsCd);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 삭제 중 단속상태 변경에 실패하였습니다.");
throw new RuntimeException("부과제외 삭제 중 단속대장의 단속상태코드 수정에 실패하였습니다.");
}
// 부과제외 구분이 비부과(서손)일 경우 단속민원(TB_CRDN_CVLCPT) 자료 처리
@ -431,7 +428,7 @@ public class Excl01Bean extends AbstractComponent {
retSuccess = levyExclMapper.updateCrdnCvlcpt(crdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 삭제 중 민원답변 정보 초기화에 실패하였습니다.");
throw new RuntimeException("부과제외 삭제 중 단속민원대장의 민원답변 초기화에 실패하였습니다.");
}
}
} // 자동등록 자료만 민원답변 부분을 처리

@ -42,8 +42,7 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
@Override
public DataObject getLevyExclInfo(ExclQuery req) {
if (req.getCallPurpose() == null) {
// req.setCallPurpose("view");
req.setCallPurpose("create"); // 추후 삭제
req.setCallPurpose("view");
}
if (req.getCallPurpose().equals("create")) {

@ -61,7 +61,7 @@ public class Excl02Bean extends AbstractComponent {
*/
public List<DataObject> getOpnnSbmsns(ExclQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT DESC");
req.setOrderBy("REG_DT DESC, OPNN_ID DESC");
}
return opnnSbmsnMapper.selectOpnnSbmsns(req);
@ -72,10 +72,6 @@ public class Excl02Bean extends AbstractComponent {
* @return
*/
public DataObject getOpnnSbmsnInfo(ExclQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT DESC, OPNN_ID DESC");
}
return opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
}
@ -86,8 +82,10 @@ public class Excl02Bean extends AbstractComponent {
public DataObject getCrdnInfo(ExclQuery req) {
DataObject dataCrdn = opnnSbmsnMapper.selectCrdn(req); // 단속ID로 단속, 의견제출 조회
if (req.getCallPurpose().equals("create")) {
dataCrdn.set("RCPT_YMD", dataCrdn.string("TODAY")); // 접수 일자
dataCrdn.set("RCPT_NO", dataCrdn.string("NEW_RCPT_NO")); // 접수 번호
}
return dataCrdn;
}
@ -104,7 +102,7 @@ public class Excl02Bean extends AbstractComponent {
boolean retSuccess = false; // DB 처리 결과
// 단속 ID로 단속, 의견제출 정보 조회
DataObject infoCrdnOpnnSbmsn = getCrdnOpnnSbmsn(opnnSbmsn.getCrdnId());
DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectCrdnInfo(opnnSbmsn.getCrdnId());
// 의견제출ID가 있다면 이미 자료가 존재하므로 종료..
if (!infoCrdnOpnnSbmsn.string("OPNN_ID").equals("")) {
@ -130,7 +128,7 @@ public class Excl02Bean extends AbstractComponent {
}
// 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견제출 중으로 수정 한다.
if (Integer.parseInt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD")) <= 42) { // 사전통보 완료
if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() <= 42) { // 사전통보 완료
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
@ -139,13 +137,12 @@ public class Excl02Bean extends AbstractComponent {
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견제출 접수
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 대장 등록");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 등록 중 단속상태코드 변경에 실패하였습니다.");
throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태코드 수정에 실패하였습니다.");
}
}
@ -158,7 +155,7 @@ public class Excl02Bean extends AbstractComponent {
retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 등록 중 의견제출여부 변경에 실패하였습니다.");
throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다.");
}
return true;
@ -270,7 +267,7 @@ public class Excl02Bean extends AbstractComponent {
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속상태코드 변경에 실패하였습니다.");
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태코드 수정에 실패하였습니다.");
}
}
}
@ -328,18 +325,10 @@ public class Excl02Bean extends AbstractComponent {
retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 삭제 중 의견제출여부 변경에 실패하였습니다.");
throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다.");
}
return true;
}
/** .
* @param crdnId ID
* @return ,
*/
public DataObject getCrdnOpnnSbmsn(String crdnId) {
return opnnSbmsnMapper.selectCrdnInfo(crdnId);
}
}

@ -33,7 +33,7 @@ public class Excl03Bean extends AbstractComponent {
* @param req
* @return
*/
public List<DataObject> getCrackdownReRegistrationList(ExclQuery req) {
public List<DataObject> getCrdnReRegList(ExclQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT");
}
@ -45,7 +45,11 @@ public class Excl03Bean extends AbstractComponent {
* @param req
* @return
*/
public List<DataObject> getCrackdownReRegistrations(ExclQuery req) {
public List<DataObject> getCrdnReRegs(ExclQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT DESC, RE_REG_ID DESC");
}
return crdnReRegMapper.selectCrdnReRegs(req);
}
@ -56,7 +60,7 @@ public class Excl03Bean extends AbstractComponent {
* <li> false</li>
* </ul>
*/
public boolean create(CrdnReReg crdnReReg) {
public boolean createCrdnReReg(CrdnReReg crdnReReg) {
return crdnReRegMapper.insert(crdnReReg);
}
@ -67,7 +71,7 @@ public class Excl03Bean extends AbstractComponent {
* <li> false</li>
* </ul>
*/
public boolean remove(CrdnReReg crdnReReg) {
public boolean removeCrdnReReg(CrdnReReg crdnReReg) {
return crdnReRegMapper.delete(crdnReReg);
}
@ -75,8 +79,8 @@ public class Excl03Bean extends AbstractComponent {
* @param req
* @return
*/
public DataObject getCrackdown(String crdnId) {
return crdnReRegMapper.selectCrdnInfo(crdnId);
public DataObject getCrdnInfo(ExclQuery req) {
return crdnReRegMapper.selectCrdn(req);
}
}

@ -46,22 +46,26 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
private CrdnService crdnService;
@Override
public List<DataObject> getCrackdownReRegistrationList(ExclQuery req) {
return excl03Bean.getCrackdownReRegistrationList(req);
public List<DataObject> getCrdnReRegList(ExclQuery req) {
return excl03Bean.getCrdnReRegList(req);
}
@Override
public List<DataObject> getCrackdownReRegistrations(ExclQuery req) {
return excl03Bean.getCrackdownReRegistrations(req);
public List<DataObject> getCrdnReRegs(ExclQuery req) {
return excl03Bean.getCrdnReRegs(req);
}
@Override
public boolean create(CrdnReReg crdnReReg) {
public boolean createCrdnReReg(CrdnReReg crdnReReg) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 단속 ID로 단속(TB_CRDN) 정보 조회
DataObject infoCrdn = excl03Bean.getCrackdown(crdnReReg.getBfrCrdnId());
ExclQuery req = new ExclQuery();
req.setCrdnId(crdnReReg.getBfrCrdnId());
DataObject infoCrdn = excl03Bean.getCrdnInfo(req);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoCrdnFileList = fileBean.getFileList(new FileQuery().setInfoType(CrdnReReg.INF_TYPE)
.setInfoKeys(crdnReReg.getBfrCrdnId()));
@ -153,7 +157,7 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
crdnReReg.setCrdnId(newCrdn.getCrdnId());
crdnReReg.setCrdnRegSeCd("03");
retSuccess = excl03Bean.create(crdnReReg);
retSuccess = excl03Bean.createCrdnReReg(crdnReReg);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("재부과 대장 등록에 실패하였습니다.");
@ -163,8 +167,8 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
}
@Override
public boolean remove(CrdnReReg crdnReReg) {
return excl03Bean.remove(crdnReReg);
public boolean removeCrdnReReg(CrdnReReg crdnReReg) {
return excl03Bean.removeCrdnReReg(crdnReReg);
}
}

@ -81,7 +81,7 @@ public class Excl01Controller extends ApplicationController {
DataObject levyExclInfo = excl01Service.getLevyExclInfo(req);
// 등록을 호출하였지만 등록된 부과제외 ID가 있는지 확인.
if (req.getCallPurpose() == "create" && !levyExclInfo.string("LEVY_EXCL_ID").equals("")) {
if (req.getCallPurpose().equals("create") && !levyExclInfo.string("LEVY_EXCL_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
return mav

@ -91,7 +91,7 @@ public class Excl02Controller extends ApplicationController {
DataObject opnnSbmsnInfo = excl02Service.getOpnnSbmsnInfo(req);
// 등록을 호출하였지만 등록된 의견제출 ID가 있는지 확인.
if (req.getCallPurpose() == "create" && !opnnSbmsnInfo.string("OPNN_ID").equals("")) {
if (req.getCallPurpose().equals("create") && !opnnSbmsnInfo.string("OPNN_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
return mav

@ -60,8 +60,8 @@ public class Excl03Controller extends ApplicationController {
* }</code></pre>
*/
@RequestMapping(name = "단속 재등록 리스트 조회", value = "/010/list.do")
public ModelAndView getCrackdownReRegistrationList(ExclQuery req) {
List<?> result = excl03Service.getCrackdownReRegistrationList(setFetchSize(req));
public ModelAndView getCrdnReRegList(ExclQuery req) {
List<?> result = excl03Service.getCrdnReRegList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "crdnReReg");
}
@ -74,8 +74,8 @@ public class Excl03Controller extends ApplicationController {
* }</code></pre>
*/
@PostMapping(name = "단속 재등록 등록", value = "/010/create.do")
public ModelAndView create(CrdnReReg crdnReReg) {
boolean saved = excl03Service.create(crdnReReg);
public ModelAndView createCrdnReReg(CrdnReReg crdnReReg) {
boolean saved = excl03Service.createCrdnReReg(crdnReReg);
return new ModelAndView("jsonView")
.addObject("saved", saved);
@ -90,8 +90,8 @@ public class Excl03Controller extends ApplicationController {
* }</code></pre>
*/
@PostMapping(name = "단속 재등록 제거", value = "/010/remove.do")
public ModelAndView remove(CrdnReReg crdnReReg) {
boolean saved = excl03Service.remove(crdnReReg);
public ModelAndView removeCrdnReReg(CrdnReReg crdnReReg) {
boolean saved = excl03Service.removeCrdnReReg(crdnReReg);
return new ModelAndView("jsonView")
.addObject("saved", saved);

@ -6,7 +6,7 @@ import lombok.Setter;
/**
*
* @author Jojh
* @author JoJH
*/
@Getter
@Setter

@ -9,6 +9,8 @@ import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
/** DAO
@ -106,4 +108,36 @@ public interface RductMapper extends AbstractMapper {
return rduct != null && deleteRduct(params().set("rduct", rduct)) == 1;
}
/** ID , .
* @param crdnId ID
* @return ,
*/
DataObject selectCrdn(LevyQuery req);
default DataObject selectCrdnInfo(String crdnId) {
DataObject rductInfo = selectCrdn(new LevyQuery().setCrdnId(crdnId));
return rductInfo;
}
/**(TB_CRDN) .
* @param crdn
* @return
*/
int updateCrdnRduct(Map<String, Object> params);
default boolean updateCrdn(Crdn crdn) {
return crdn != null && updateCrdnRduct(params().set("crdn", crdn)) == 1;
}
/**(TB_LEVY) .
* @param levy
* @return
*/
int updateLevyRduct(Map<String, Object> params);
default boolean updateLevy(Levy levy) {
return levy != null && updateLevyRduct(params().set("levy", levy)) == 1;
}
}

@ -7,7 +7,9 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component;
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;
@ -63,6 +65,10 @@ public class Levy02Bean extends AbstractComponent {
* @return
*/
public List<DataObject> getRducts(LevyQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT DESC, RDUCT_ID DESC");
}
return rductMapper.selectRducts(req);
}
@ -74,6 +80,22 @@ public class Levy02Bean extends AbstractComponent {
return rductMapper.selectRductInfo(req);
}
/** ID .<br />
* @param req
* @return
*/
public DataObject getCrdnInfo(LevyQuery req) {
DataObject dataCrdn = rductMapper.selectCrdn(req);
if (req.getCallPurpose().equals("create")) {
dataCrdn.set("RDUCT_YMD", dataCrdn.get("TODAY")); // 감경 일자
dataCrdn.set("RDUCT_AMT", dataCrdn.get("CALC_RDUCT_AMT")); // 감경 금액
}
return dataCrdn;
}
/** .
* @param rduct
* @return
@ -82,7 +104,88 @@ public class Levy02Bean extends AbstractComponent {
* </ul>
*/
public boolean createRduct(Rduct rduct) {
return rductMapper.insert(rduct);
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 단속 ID로 단속, 감경 정보 조회
DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId());
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnRduct.string("RDUCT_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("과태료 감경 정보가 이미 존재합니다.");
}
// 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
if (infoCrdnRduct.number("CRDN_STTS_CD").intValue() > 51) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 상태가 " + infoCrdnRduct.string("CRDN_STTS_NM") + " 상태 입니다");
}
// 부과 가산금(LEVY_ADAMT)이 있다면..
if (infoCrdnRduct.number("LEVY_ADAMT").intValue() > 0) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과 가산금이 존재하여 감경 등록에 실패하였습니다.");
}
// 과태료 감경(TB_RDUCT) 대장을 등록 한다.
retSuccess = rductMapper.insert(rduct);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 대장 등록에 실패하였습니다.");
}
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)
// 단속(TB_CRDN) 대장을 수정 한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(rduct.getCrdnId()); // 단속 ID
crdn.setFfnlgRductRt(infoCrdnRduct.string("WKSN_RDUCT_RT")); // 과태료 감경 율
crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
retSuccess = rductMapper.updateCrdn(crdn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다.");
}
// 부과(TB_LEVY) 대장을 수정 한다.
Levy levy = new Levy();
levy.setLevyId(infoCrdnRduct.string("LEVY_ID")); // 부과 ID
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
// 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
if (infoCrdnRduct.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 (infoCrdnRduct.number("DUDT_YMD").intValue() >= infoCrdnRduct.number("TODAY").intValue()) {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} else {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
}
} else {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
}
}
int sumAmt = levy.getLevyPcptax() - infoCrdnRduct.number("RCVMT_PCPTAX").intValue() - infoCrdnRduct.number("RDCAMT_PCPTAX").intValue();
levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세
retSuccess = rductMapper.updateLevy(levy);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다.");
}
return true;
}
/** .

@ -42,8 +42,16 @@ public class Levy02ServiceBean extends AbstractServiceBean implements Levy02Serv
@Override
public DataObject getRductInfo(LevyQuery req) {
if (req.getCallPurpose() == null) {
req.setCallPurpose("view");
}
if (req.getCallPurpose().equals("create")) {
return levy02Bean.getCrdnInfo(req);
} else {
return levy02Bean.getRductInfo(req);
}
}
@Override
public boolean createRduct(Rduct rduct) {

@ -79,13 +79,15 @@ public class Levy02Controller extends ApplicationController {
public ModelAndView getRductInfo(LevyQuery req) {
DataObject rductInfo = levy02Service.getRductInfo(req);
// 등록을 호출하였지만 등록된 부과제외 ID가 있는지 확인.
if (req.getCallPurpose() == "create" && !rductInfo.string("RDUCT_ID").equals("")) {
// 등록을 호출하였지만 등록된 감경 ID가 있는지 확인.
if (req.getCallPurpose().equals("create") && !rductInfo.string("RDUCT_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
return mav
.addObject("errorMessage", "이미 등록된 과태료 감경 정보가 있습니다.")
;
return mav.addObject("errorMessage", "이미 등록된 과태료 감경 정보가 있습니다.");
} else if (req.getCallPurpose().equals("create") && rductInfo.string("RTPYR_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
return mav.addObject("errorMessage", "납부자 정보가 없습니다.");
} else {
boolean json = jsonResponse();

@ -102,9 +102,9 @@
<select id="selectLevyExclList" parameterType="map" resultType="dataobject">/* 부과제외 대장 목록 조회(levyExclMapper.selectLevyExclList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE LE.SGG_CD = #{sggCd} /* 시군구 코드 */
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
<if test="taskSeCd != null">
AND LE.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
</if>
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} /* 삭제 여부 */

@ -249,67 +249,6 @@
<include refid="utility.orderBy" />
</select>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(opnnSbmsnMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_TELNO /* 납부자 전화번호 */
, P.RTPYR_MBL_TELNO /* 납부자 휴대 전화번호 */
, P.RTPYR_EML /* 납부자 이메일 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, OS.OPNN_ID /* 의견 ID */
, OS.RCPT_NO /* 접수 번호 */
, OS.RCPT_YMD /* 접수 일자 */
, OS.RCPT_SE_CD /* 접수 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL) AS RCPT_SE_NM /* 접수 구분 코드 */
, OS.OWNR_REL_CD /* 소유주 관계 코드 */
, (SELECT FN_GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM /* 소유주 관계 코드 */
, OS.STTR_NM /* 진술자 명 */
, OS.STTR_BRDT /* 진술자 생년월일 */
, (SELECT FN_GET_BRDT_FORMAT(OS.STTR_BRDT, '-') FROM DUAL) AS STTR_BRDT_FORMAT /* 납부자 생년월일 */
, OS.STTR_RRNO /* 진술자 주민등록번호 */
, OS.STTR_ADDR /* 진술자 주소 */
, OS.STTR_DADDR /* 진술자 상세주소 */
, OS.STTR_ZIP /* 진술자 우편번호 */
, OS.STTR_CTTPC /* 진술자 연락처 */
, OS.STTR_EML /* 진술자 이메일 */
, OS.OPNN_SBMSN_CN /* 의견 제출 내용 */
, OS.OPNN_SBMSN_SE_CD /* 의견 제출 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL) AS OPNN_SBMSN_SE_NM /* 의견 제출 구분 명 */
, OS.OPNN_SBMSN_GIST /* 의견 제출 요지 */
, OS.ATCH_FILE_CNT /* 첨부 파일 수 */
, OS.DOC_NO /* 문서 번호 */
, OS.NTFCTN_SE_CD /* 통보 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL) AS NTFCTN_SE_NM /* 통보 구분 코드 */
, OS.PIC_RVW_OPNN /* 담당자 검토 의견 */
, OS.OPNN_SBMSN_STTS_CD /* 의견 제출 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM /* 의견 제출 상태 명 */
, OS.ANS_YMD /* 답변 일자 */
, OS.ANS_TM /* 답변 시각 */
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM /* 답변 일시 */
, OS.ANS_CN /* 답변 내용 */
, (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 RCPT_NO LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') ) AS NEW_RCPT_NO /* 신규 접수 번호 */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</select>
<insert id="insertOpnnSbmsn" parameterType="map">/* 의견제출 대장 등록(opnnSbmsnMapper.insertOpnnSbmsn) */
<selectKey resultType="string" keyProperty="opnnSbmsn.opnnId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(OPNN_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
@ -434,6 +373,67 @@
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(opnnSbmsnMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_TELNO /* 납부자 전화번호 */
, P.RTPYR_MBL_TELNO /* 납부자 휴대 전화번호 */
, P.RTPYR_EML /* 납부자 이메일 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, OS.OPNN_ID /* 의견 ID */
, OS.RCPT_NO /* 접수 번호 */
, OS.RCPT_YMD /* 접수 일자 */
, OS.RCPT_SE_CD /* 접수 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL) AS RCPT_SE_NM /* 접수 구분 코드 */
, OS.OWNR_REL_CD /* 소유주 관계 코드 */
, (SELECT FN_GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM /* 소유주 관계 코드 */
, OS.STTR_NM /* 진술자 명 */
, OS.STTR_BRDT /* 진술자 생년월일 */
, (SELECT FN_GET_BRDT_FORMAT(OS.STTR_BRDT, '-') FROM DUAL) AS STTR_BRDT_FORMAT /* 납부자 생년월일 */
, OS.STTR_RRNO /* 진술자 주민등록번호 */
, OS.STTR_ADDR /* 진술자 주소 */
, OS.STTR_DADDR /* 진술자 상세주소 */
, OS.STTR_ZIP /* 진술자 우편번호 */
, OS.STTR_CTTPC /* 진술자 연락처 */
, OS.STTR_EML /* 진술자 이메일 */
, OS.OPNN_SBMSN_CN /* 의견 제출 내용 */
, OS.OPNN_SBMSN_SE_CD /* 의견 제출 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL) AS OPNN_SBMSN_SE_NM /* 의견 제출 구분 명 */
, OS.OPNN_SBMSN_GIST /* 의견 제출 요지 */
, OS.ATCH_FILE_CNT /* 첨부 파일 수 */
, OS.DOC_NO /* 문서 번호 */
, OS.NTFCTN_SE_CD /* 통보 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL) AS NTFCTN_SE_NM /* 통보 구분 코드 */
, OS.PIC_RVW_OPNN /* 담당자 검토 의견 */
, OS.OPNN_SBMSN_STTS_CD /* 의견 제출 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM /* 의견 제출 상태 명 */
, OS.ANS_YMD /* 답변 일자 */
, OS.ANS_TM /* 답변 시각 */
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM /* 답변 일시 */
, OS.ANS_CN /* 답변 내용 */
, (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 RCPT_NO LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') ) AS NEW_RCPT_NO /* 신규 접수 번호 */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</select>
<update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */
UPDATE TB_CRDN
SET OPNN_SBMSN_YN = #{crdn.opnnSbmsnYn} /* 의견 제출 여부 */

@ -33,7 +33,7 @@
, R.RDUCT_RSN_CD /* 감경 사유 코드 */
, (SELECT FN_GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM /* 감경 사유 명 */
, R.RDUCT_AMT /* 감경 금액 */
, R.ETC_CN AS RDUCT_ETC_CN /* 감액 기타 내용 */
, R.ETC_CN /* 감액 기타 내용 */
, R.DEL_YN /* 삭제 여부 */
, R.REG_DT /* 등록 일시 */
, R.RGTR /* 등록자 */
@ -45,17 +45,22 @@
, R.DLTR /* 삭제자 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */
, R.DEL_RSN /* 삭제 사유 */
, CONCAT(C.CRDN_YMD,'',C.CRDN_TM) AS CRDN_YMD_TM /* 단속 일시 */
, CONCAT(C.CRDN_YMD,C.CRDN_TM) AS CRDN_YMD_TM /* 단속 일시 */
, C.VHRNO /* 차량 번호 */
, C.FFNLG_AMT /* 과태료금액 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.FFNLG_RDUCT_RT /* 과태료 감경 율 */
, C.FFNLG_AMT /* 과태료 금액 */
, C.ADVNTCE_AMT /* 사전통지금액 */
, C.MINUS_AMT /* 감경금액 */
, C.ADTN_AMT /* 가산금액 */
, C.RCVMT_AMT /* 수납금액 */
, 0 AS BLNC /* 잔액 */
, C.MINUS_AMT
, C.ADTN_AMT
, C.RCVMT_AMT
, C.CRDN_STTS_CD /* 처리상태 */
FROM TB_CRDN C
INNER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
FROM TB_RDUCT R
INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_TASK_INFO TI ON (C.SGG_CD = TI.SGG_CD AND C.TASK_SE_CD = TI.TASK_SE_CD)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
</sql>
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
@ -65,6 +70,9 @@
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
</if>
<if test="delYn != null">
AND R.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<if test="schRductYmdFrom != null">
AND R.RDUCT_YMD <![CDATA[ >= ]]> #{schRductYmdFrom} /* 감경 일자 시작 */
</if>
@ -149,7 +157,7 @@
, #{rduct.rductRsnCd} /* 감경 사유 코드 */
, #{rduct.rductAmt} /* 감경 금액 */
, #{rduct.etcCn} /* 기타 내용 */
, #{rduct.delYn} /* 삭제 여부 */
, 'N' /* 삭제 여부 */
, #{rduct.createdAt} /* 등록 일시 */
, #{rduct.createdBy} /* 등록자 */
, #{rduct.lastModified} /* 수정 일시 */
@ -179,4 +187,62 @@
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(rductMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.FFNLG_RDUCT_RT /* 과태료 감경 율 */
, C.FFNLG_AMT /* 과태료 금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, TI.WKSN_RDUCT_RT /* 사회적약자 감경 율 */
, TI.ADVNTCE_RDUCT_RT /* 사전통지 감경 율 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, L.LEVY_ID /* 부과 ID */
, L.DUDT_YMD /* 납기 일자 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */
, L.RDCAMT_ADAMT /* 감액 가산금 */
, R.RDUCT_ID /* 감경 ID */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
, C.FFNLG_CRDN_AMT * TI.WKSN_RDUCT_RT / 100 AS CALC_RDUCT_AMT /* 감경 금액 */
FROM TB_CRDN C
INNER JOIN TB_TASK_INFO TI ON (C.SGG_CD = TI.SGG_CD AND C.TASK_SE_CD = TI.TASK_SE_CD)
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')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</select>
<update id="updateCrdnRduct" parameterType="map">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */
UPDATE TB_CRDN
SET FFNLG_RDUCT_RT = #{crdn.ffnlgRductRt} /* 과태료 감경 율 */
, FFNLG_AMT = #{crdn.ffnlgAmt} /* 과태료 금액 */
, ADVNTCE_AMT = #{crdn.advntceAmt} /* 사전통지 금액 */
, MDFCN_DT = #{crdn.lastModified} /* 수정 일시 */
, MDFR = #{crdn.modifiedBy} /* 수정자 */
WHERE CRDN_ID = #{crdn.crdnId} /* 단속 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
<update id="updateLevyRduct" parameterType="map">/* 부과 대장 과태료 감경 금액 수정(rductMapper.updateLevyRduct) */
UPDATE TB_LEVY
SET FFNLG_AMT = #{levy.ffnlgAmt} /* 과태료 금액 */
, LEVY_PCPTAX = #{levy.levyPcptax} /* 부과 본세 */
, SUM_AMT = #{levy.sumAmt} /* 합계 금액 */
, MDFCN_DT = #{levy.lastModified} /* 수정 일시 */
, MDFR = #{levy.modifiedBy} /* 수정자 */
WHERE LEVY_ID = #{levy.levyId} /* 단속 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
</mapper>

@ -408,6 +408,9 @@
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// 업무구분 변경

@ -43,7 +43,8 @@
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타 내용</label>
<input type="text" class="form-control w-80" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" data-maxlengthb="1000" />
<textarea type="text" class="form-control w-80" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" rows="3" data-maxlengthb="1000">
</textarea>
</div>
</div>
</form>
@ -56,7 +57,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary" id="btnSaveLevyExcl--${pageName}" title="저장" onclick="fnSaveLevyExcl${pageName}()">저장</button>
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">저장</button>
</span>
</span>
</div>
@ -68,7 +69,7 @@
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/excl/excl01";
//
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
// 공통 코드
var FIM021 = new CommonCodes(${FIM021}, true);
@ -95,11 +96,12 @@
${pageName}Control.onCurrentChange = item => {
${pageName}Fields.set(item);
setFim021(item.data.LEVY_EXCL_SE_CD, item.data.LEVY_EXCL_RSN_CD);
}
/**************************************************************************
*
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
@ -117,7 +119,6 @@
${pageName}Control.save = (info) => {
if (!info) return;
let item = ${pageName}Control.getCurrent("item");
let create = isEmpty(info.levyExclId);
// 민원 접수 관리에서 호출했다면..
@ -132,6 +133,9 @@
}
}
/**************************************************************************
*
**************************************************************************/
// 부과제외 구분에 따른 부과제외 사유 코드 설정
function setFim021(seCode, rsnCode) {
let cmnCode = FIM021[seCode];
@ -177,17 +181,14 @@
* function
**************************************************************************/
// 저장
function fnSaveLevyExcl${pageName}() {
function fnSave${pageName}() {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let formFields = new FimsFormFields("#frmEdit--${pageName}");
let data = formFields.get();
dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(formFields.get());
${pageName}Control.save(${pageName}Fields.get());
}
});
}

@ -385,6 +385,9 @@
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// 업무구분 변경

@ -160,7 +160,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">저장</button>
</span>
</span>
</div>
@ -204,7 +204,7 @@
}
/**************************************************************************
*
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
@ -221,7 +221,6 @@
${pageName}Control.save = (info) => {
if (!info) return;
let item = ${pageName}Control.getCurrent("item");
let create = isEmpty(info.opnnId);
let formData = new FormData();
@ -305,17 +304,14 @@
}
// 저장
function fnBtnSave${pageName}() {
function fnSave${pageName}() {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let formFields = new FimsFormFields("#frmEdit--${pageName}");
let data = formFields.get();
dialog.alert({
content : "현재 의견제출 정보를 저장하시겠습니까?"
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(formFields.get());
${pageName}Control.save(${pageName}Fields.get());
}
});
}

@ -99,7 +99,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">저장</button>
</span>
</span>
</div>
@ -137,7 +137,7 @@
}
/**************************************************************************
*
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
@ -151,8 +151,6 @@
${pageName}Control.save = (info) => {
if (!info) return;
let item = ${pageName}Control.getCurrent("item");
ajax.post({
url : ${pageName}Control.urls.update
, data : info
@ -207,17 +205,14 @@
* function
**************************************************************************/
// 저장
function fnBtnSave${pageName}() {
function fnSave${pageName}() {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let formFields = new FimsFormFields("#frmEdit--${pageName}");
let data = formFields.get();
dialog.alert({
content : "현재 의견제출 답변 정보를 저장하시겠습니까?"
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(data);
${pageName}Control.save(${pageName}Fields.get());
}
});
}

@ -327,6 +327,9 @@
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// 업무구분 변경

@ -96,21 +96,15 @@
data-by="by--${pageName}" data-by-output="byOutput--${pageName}"
data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th style="min-width: 80px;">No.</th>
<th onclick="searchFromGridTitle('RDUCT_YMD',this.innerText,'ymd','');"
style="min-width: 80px;">감액일자</th>
<th onclick="searchFromGridTitle('RDUCT_RSN_CD',this.innerText,'codeValue','FIM019');"
style="min-width: 80px;">감액사유</th>
<th onclick="searchFromGridTitle('CRDN_YMD','접수(위반)일자','ymd','');"
style="min-width: 80px;">접수(위반)일시</th>
<th onclick="searchFromGridTitle('VHRNO',this.innerText,'match','part');"
style="min-width: 80px;">차량번호</th>
<th onclick="searchFromGridTitle('RDUCT_AMT',this.innerText,'match','perfect');"
>감액금액</th>
<th onclick="searchFromGridTitle('RDUCT_YMD',this.innerText,'ymd','');" style="min-width: 80px;">감액일자</th>
<th onclick="searchFromGridTitle('RDUCT_RSN_CD',this.innerText,'codeValue','FIM019');" style="min-width: 80px;">감액사유</th>
<th onclick="searchFromGridTitle('CRDN_YMD','접수(위반)일자','ymd','');" style="min-width: 80px;">접수(위반)일시</th>
<th onclick="searchFromGridTitle('VHRNO',this.innerText,'match','part');" style="min-width: 80px;">차량번호</th>
<th onclick="searchFromGridTitle('FFNLG_CRDN_AMT',this.innerText,'match','perfect');">과태료단속원금</th>
<th onclick="searchFromGridTitle('RDUCT_AMT',this.innerText,'match','perfect');">감경금액</th>
<th class="text-orange" style="min-width: 80px;">잔액</th>
<th onclick="searchFromGridTitle('RDUCT_ETC_CN',this.innerText,'match','part');"
style="min-width: 80px;">감액특기사항</th>
<th onclick="searchFromGridTitle('CRDN_STTS_CD',this.innerText,'codeValue','FIM010');"
style="min-width: 80px;">처리상태</th>
<th onclick="searchFromGridTitle('ETC_CN',this.innerText,'match','part');" style="min-width: 80px;">감경특기사항</th>
<th onclick="searchFromGridTitle('CRDN_STTS_CD',this.innerText,'codeValue','FIM010');" style="min-width: 80px;">처리상태</th>
</tr>
</thead>
<tbody id="rductTbody--${pageName}"></tbody>
@ -118,12 +112,13 @@
<tr data-key="{CRDN_ID}">
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-end">{ROW_NUM}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{RDUCT_YMD}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{RDUCT_RSN_CD}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{RDUCT_RSN_NM}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{CRDN_YMD_TM}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{VHRNO}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-end">{FFNLG_CRDN_AMT}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-end">{RDUCT_AMT}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-end">{BLNC}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{RDUCT_ETC_CN}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{ETC_CN}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{CRDN_STTS_CD}</td>
</tr>
</template>
@ -173,8 +168,8 @@ $(document).ready(function(){
RDUCT_RSN_CD : FIM019,
RDUCT_YMD : dateFormat,
CRDN_YMD_TM : datetimeFormat,
FFNLG_CRDN_AMT : numberFormat,
RDUCT_AMT : numberFormat,
SUM_AMT : numberFormat,
CRDN_STTS_CD : FIM010,
BLNC : numberFormat
}
@ -276,25 +271,22 @@ $(document).ready(function(){
}
$P.dblclickRductList = (dataKey) => {
ajax.get({
url : $P.rductControl.urls.getInfo,
data : { "crdnId" : dataKey },
success : resp => {
dialog.open({
id : "totalDialog--${pageName}",
title : "개별총정보", size : "xxl", content : resp,
id : "totalInfoMainDialog",
title : "개별총정보",
size : "xxl",
content : resp,
init : () => {}
});
}
});
}
$P.renderRductList = (total) => {
var rductList = $P.rductControl.dataset;
var empty = rductList.empty;
var notFound = [document.getElementById("rductNotFound--${pageName}").innerHTML];
@ -331,7 +323,6 @@ $(document).ready(function(){
return data;
}
/**************************************************************************
* element.on
**************************************************************************/

@ -0,0 +1,189 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="rductId--${pageName}" name="rductId" data-map="RDUCT_ID" />
<div class="row g-1">
<!-- 납부자 명 -->
<div class="col-md-6">
<label for="rtpyrNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부자명</label>
<input type="text" class="form-control w-px-120" id="rtpyrNm--${pageName}" name="rtpyrNm" data-map="RTPYR_NM" readonly />
</div>
<!-- 납부자 번호 -->
<div class="col-md-6">
<label for="rtpyrNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부자번호</label>
<input type="text" class="form-control w-50" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO" readonly />
</div>
<!-- 과태료 단속 금액 -->
<div class="col-md-6">
<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-30 text-end" id="ffnlgCrdnAmt--${pageName}" name="ffnlgCrdnAmt" data-map="FFNLG_CRDN_AMT" readonly /> *
<input type="text" class="form-control w-15 text-end" id="wksnRductRt--${pageName}" name="wksnRductRt" data-map="WKSN_RDUCT_RT" readonly /> %
</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" readonly />
</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"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm 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>
<c:forEach items="${FIM019List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타 내용</label>
<textarea type="text" class="form-control w-80" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" rows="3" data-maxlengthb="1000">
</textarea>
</div>
</div>
</form>
<!-- /입력 영역 -->
</div>
<!-- <div class="card"> -->
<!-- 업무 버튼 표시 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">저장</button>
</span>
</span>
</div>
<!-- / 업무 버튼 표시 -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/levy/levy02";
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "rduct"
, prefixName : "감경"
, keymapper : info => info ? info.RDUCT_ID : ""
, dataGetter : obj => obj.rductInfo
, urls : {
create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록
, update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정
}
, formats : {
RDUCT_YMD : dateFormat // 감경 일자
, FFNLG_CRDN_AMT : numberFormat // 과태료 단속 금액
, WKSN_RDUCT_RT : numberFormat // 감경 율
, RDUCT_AMT : numberFormat // 감경 금액
}
});
${pageName}Control.onCurrentChange = item => {
${pageName}Fields.set(item);
}
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
if (resp.saved) {
dialog.alert("저장됐습니다.");
dialog.close(${pageName}Control.prefix + "Dialog");
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
let create = isEmpty(info.rductId);
ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : info
, success : resp => ${pageName}Control.onSave(resp)
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 검색조건 초기값 셋팅
function initForm${pageName}() {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#rductYmd--${pageName}").datepicker("setDate", new Date());
}
// 이벤트 설정
function setEvent${pageName}() {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${pageName}").find(".form-date").each(function() {
$(this).on("input",function() {
let value = this.value.replaceAll("-", "");
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
});
});
}
/**************************************************************************
* function
**************************************************************************/
// 저장
function fnSave${pageName}() {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// Dataset 셋팅 - 단건일 경우 setData
${pageName}Control.setData([${rductInfo}]);
});
// #sourceURL=excl01020-info.jsp
</script>

@ -27,7 +27,7 @@
<div class="col-md-4">
<label for="crdnSttsNm--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">단속상태</label>
<input type="text" class="form-control w-35" id="crdnSttsChgDt--${pageName}" name="crdnSttsChgDt" data-map="CRDN_STTS_CHG_DT" readonly />
<input type="text" class="form-control w-30" id="crdnSttsNm--${pageName}" name="crdnSttsNm" data-map="CRDN_STTS_NM" readonly />
<input type="text" class="form-control w-30 fw-bolder text-primary" id="crdnSttsNm--${pageName}" name="crdnSttsNm" data-map="CRDN_STTS_NM" readonly />
</div>
<!-- 자료 이동 버튼 -->
<div class="col-md-2 text-end">

@ -145,7 +145,7 @@
<!-- 과태료 감경 율 -->
<div class="col-md-3">
<label for="ffnlgRductRt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">과태료 감경율</label>
<input type="text" class="form-control w-25 text-sm-end" id="ffnlgRductRt--${pageName}" name="ffnlgRductRt" data-map="FFNLG_RDUCT_RT" readonly /> %
<input type="text" class="form-control w-20 text-sm-end" id="ffnlgRductRt--${pageName}" name="ffnlgRductRt" data-map="FFNLG_RDUCT_RT" readonly /> %
</div>
<!-- 과태료 금액 -->
<div class="col-md-3">
@ -175,7 +175,7 @@
<!-- 미납 금액 -->
<div class="col-md-3">
<label for="sumAmt--${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="sumAmt--${pageName}" name="sumAmt" data-map="SUM_AMT" readonly />
<input type="text" class="form-control w-40 text-sm-end fw-bolder text-red" id="sumAmt--${pageName}" name="sumAmt" data-map="SUM_AMT" readonly />
</div>
<!-- 단속 특별구역 코드 -->
<div class="col-md-3" id="divCrdnSpareaNm--${pageName}">
@ -200,7 +200,7 @@
<!-- 주차 가능 결과 코드 -->
<div class="col-md-3" id="divParkngPsbltyRsltNm--${pageName}">
<label for="parkngPsbltyRsltNm--${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="parkngPsbltyRsltNm--${pageName}" name="parkngPsbltyRsltNm" data-map="PARKNG_PSBLTY_RSLT_NM" readonly />
<input type="text" class="form-control w-50" id="parkngPsbltyRsltNm--${pageName}" name="parkngPsbltyRsltNm" data-map="PARKNG_PSBLTY_RSLT_NM" readonly />
</div>
<!-- 사용 연료 구분 -->
<div class="col-md-3" id="divUseFuelNm--${pageName}">
@ -237,12 +237,12 @@
<!-- 납부자 구분 코드 -->
<div class="col-md-4">
<label for="rtpyrSeNm--${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="rtpyrSeNm--${pageName}" name="rtpyrSeNm" data-map="RTPYR_SE_NM" readonly />
<input type="text" class="form-control w-25" id="rtpyrSeNm--${pageName}" name="rtpyrSeNm" data-map="RTPYR_SE_NM" readonly />
</div>
<!-- 납부자 번호 -->
<div class="col-md-4">
<label for="rtpyrNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부자 번호</label>
<input type="text" class="form-control w-45" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO" readonly />
<input type="text" class="form-control w-50" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO" readonly />
</div>
<!-- 납부자 주소 --><!-- 납부자 우편번호 -->
<div class="col-md-12">
@ -330,6 +330,7 @@
, LEVY_AMT : numberFormat // 부과 금액
, REDUC_AMT : numberFormat // 감액 금액
, RCVMT_AMT : numberFormat // 수납 금액
, SUM_AMT : numberFormat // 합계 금액
, CRDN_BGNG_TM : timeFormat
, CRDN_END_TM : timeFormat
}

@ -229,6 +229,14 @@
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
, data : params || {}
, success : resp => {
if ((typeof resp) != "string") {
if (resp.errorMessage != "") {
dialog.alert(resp.errorMessage);
return;
}
}
dialog.open({
id : ${pageName}Control.prefixed("Dialog")
, title : dialogTitle
@ -425,10 +433,14 @@
return;
}
let iLoop = 0;
// 기존 table에 자료가 존재하면 table 삭제
let fileListTable = document.getElementById("fileList--${pageName}"); // table element 찾기
for (iLoop = 2; iLoop <= fileListTable.rows.length; iLoop++) {
if (fileListTable.rows.length == 1) { iLoop = 2; }
else { iLoop = 1; }
for (iLoop; iLoop <= fileListTable.rows.length; iLoop++) {
let newRow = fileListTable.deleteRow(fileListTable.rows.length-1); // table 행(Row) 삭제
}

@ -41,7 +41,7 @@
<!-- 감경 사유 명 -->
<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-30" id="rductRsnNm--${pageName}${pageDataName1}" name="rductRsnNm" data-map="RDUCT_RSN_NM" readonly />
<input type="text" class="form-control w-50" id="rductRsnNm--${pageName}${pageDataName1}" name="rductRsnNm" data-map="RDUCT_RSN_NM" readonly />
</div>
<!-- 감경 금액 -->
<div class="col-md-6">
@ -359,6 +359,22 @@
});
}
// 삭제 callback
${pageName}${pageDataName1}Control.onRemove = (resp) => {
if (resp.saved) {
fnDataRefreshInfo(); // 자료 재조회
}
}
// 삭제
${pageName}${pageDataName1}Control.remove = (params) => {
ajax.post({
url : wctx.url("/" + params.taskSeCd + ${pageName}${pageDataName1}PrefixUrl + "/010/remove.do")
, data : params || {}
, success : resp => ${pageName}${pageDataName1}Control.onRemove(resp) // 삭제 callback
});
}
// 부과제외 선택 자료 변경 이벤트
${pageName}${pageDataName2}Control.onCurrentChange = item => {
${pageName}${pageDataName2}Fields.set(item);
@ -546,12 +562,53 @@
// 감경 수정
fnUpdateRduct${pageName} = () => {
let crdnId = $("#crdnId--${pageNameMain}").val();
let sggCd = $("#sggCd--${pageNameMain}").val();
let taskSeCd = $("#taskSeCd--${pageNameMain}").val();
let rductId = ${pageName}${pageDataName1}Control.dataset.getValue("RDUCT_ID");
// 감경 ID 가 없다면.. return
if (rductId == undefined || rductId == "") {
return;
}
let params = {
callPurpose : "update"
, crdnId : crdnId
, sggCd : sggCd
, taskSeCd : taskSeCd
, rductId : rductId
};
${pageName}${pageDataName1}Control.getInfo(params);
}
// 감경 삭제
fnRemoveRduct${pageName} = () => {
let crdnId = $("#crdnId--${pageNameMain}").val();
let sggCd = $("#sggCd--${pageNameMain}").val();
let taskSeCd = $("#taskSeCd--${pageNameMain}").val();
let rductId = ${pageName}${pageDataName1}Control.dataset.getValue("RDUCT_ID");
// 감경 ID 가 없다면.. return
if (rductId == undefined || rductId == "") {
return;
}
let params = {
callPurpose : "remove"
, crdnId : crdnId
, sggCd : sggCd
, taskSeCd : taskSeCd
, rductId : rductId
};
dialog.alert({
content : "선택한 " + ${pageName}${pageDataName1}Control.prefixName + " 내용을 삭제하시겠습니까?"
, onOK : () => {
${pageName}${pageDataName1}Control.remove(params);
}
});
}
// 부과제외 등록
@ -606,7 +663,7 @@
let taskSeCd = $("#taskSeCd--${pageNameMain}").val();
let levyExclId = ${pageName}${pageDataName2}Control.dataset.getValue("LEVY_EXCL_ID");
// 민원 상담 ID 가 없다면.. return
// 부과제외 ID 가 없다면.. return
if (levyExclId == undefined || levyExclId == "") {
return;
}

@ -99,15 +99,16 @@
<label for="payMthdSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부 방식</label>
<input type="text" class="form-control w-50" id="payMthdSeNm--${pageName}" name="payMthdSeNm" data-map="PAY_MTHD_SE_NM" readonly />
</div>
<!-- -->
<div class="col-md-3">
</div>
<!-- 등록 일시 -->
<div class="col-md-3">
<label for="regDt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">등록 일시</label>
<input type="text" class="form-control w-45" id="regDt--${pageName}" name="regDt" data-map="REG_DT" readonly />
</div>
<!-- 등록자 -->
<div class="col-md-3">
<label for="rgtrNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">등록자</label>
<input type="text" class="form-control w-30" id="rgtrNm--${pageName}" name="rgtrNm" data-map="RGTR_NM" readonly />
</div>
</div> <!-- <div class="row g-1"> -->
</form>
</div> <!-- <div class="card"> -->

@ -52,7 +52,7 @@
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/sprt/sprt04";
//
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
@ -125,17 +125,13 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let formFields = new FimsFormFields("#frmEdit--${pageName}");
let data = formFields.get();
dialog.alert({
content : "민원 상담 내용을 저장하시겠습니까?"
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(formFields.get());
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/

@ -714,8 +714,12 @@ class FormFields {
obj[property] = value;
} else {
let dataFmtType = input.getAttribute("data-fmt-type");
let dataMap = input.getAttribute("data-map");
if (["day", "time"].includes(dataFmtType))
obj[property] = value.replace(/-|:/gi, "");
else if (dataMap.endsWith("AMT"))
obj[property] = value.replace(/,/gi, "");
else
obj[property] = value;
}

Loading…
Cancel
Save