의견제출 심의 수정.

main
jjh 1 year ago
parent 87a70fdc19
commit e433e98595

@ -34,13 +34,18 @@ public interface CrdnSttsHstryMapper extends AbstractMapper {
*/ */
List<DataObject> selectCrdnSttsHstrys(CrdnSttsHstryQuery req); List<DataObject> selectCrdnSttsHstrys(CrdnSttsHstryQuery req);
/** ID . /** 1 .
* @param crdnId ID * @param crdnId ID
* @return ID * @return ID
*/ */
default DataObject selectCrdnSttsHstryInfo(String crdnId) { default DataObject selectCrdnSttsHstryInfo(String crdnId, String crdnSttsCd) {
List<DataObject> crdnSttsHstryList = selectCrdnSttsHstrys(new CrdnSttsHstryQuery().setCrdnId(crdnId) CrdnSttsHstryQuery req = new CrdnSttsHstryQuery();
.setOrderBy("REG_DT DESC, STTS_HSTRY_ID DESC"));
req.setCrdnId(crdnId);
req.setCrdnSttsCd(crdnSttsCd);
req.setOrderBy("REG_DT DESC, STTS_HSTRY_ID DESC");
List<DataObject> crdnSttsHstryList = selectCrdnSttsHstrys(req);
return !crdnSttsHstryList.isEmpty() ? crdnSttsHstryList.get(0) : null; return !crdnSttsHstryList.isEmpty() ? crdnSttsHstryList.get(0) : null;
} }

@ -50,8 +50,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
* @param crdnId ID * @param crdnId ID
* @return * @return
*/ */
public DataObject getCrdnSttsHstryInfo(String crdnId) { public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd) {
return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId); return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd);
} }
/** . /** .
@ -149,7 +149,7 @@ public class CrdnSttsHstryBean extends AbstractComponent {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(TB_CRDN_STTS_HSTRY) CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(TB_CRDN_STTS_HSTRY)
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다. // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다.
DataObject infoCrdnSttsHstry = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId); // 단속상태이력(TB_CRDN_STTS_HSTRY) 조회 DataObject infoCrdnSttsHstry = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, ""); // 단속상태이력(TB_CRDN_STTS_HSTRY) 조회
// 신규 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. // 신규 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다.
if (!newCrdnSttsCd.equals("") ) { if (!newCrdnSttsCd.equals("") ) {

@ -205,4 +205,14 @@ public class OpnnSbmsn extends AbstractEntity {
*/ */
private String opnnSbmsnYn; private String opnnSbmsnYn;
/**
* (TB_RDUCT) -
*/
private String rductRsnCd;
/**
* (TB_RDUCT) -
*/
private Integer rductAmt;
} }

@ -38,7 +38,7 @@ public interface LevyExclMapper extends AbstractMapper {
*/ */
List<DataObject> selectLevyExcls(ExclQuery req); List<DataObject> selectLevyExcls(ExclQuery req);
/** ID . /** 1 .
* @param levyExclId ID * @param levyExclId ID
* @return * @return
*/ */

@ -36,7 +36,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
*/ */
List<DataObject> selectOpnnSbmsns(ExclQuery req); List<DataObject> selectOpnnSbmsns(ExclQuery req);
/** ID . /** 1 .
* @param opnnId ID * @param opnnId ID
* @return * @return
*/ */

@ -15,6 +15,8 @@ import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.dao.OpnnSbmsnMapper; import cokr.xit.fims.excl.dao.OpnnSbmsnMapper;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.service.bean.Levy02Bean;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -43,6 +45,10 @@ public class Excl02Bean extends AbstractComponent {
@Resource(name = "crdnSttsHstryBean") @Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean; private CrdnSttsHstryBean crdnSttsHstryBean;
/** 과태료 감경 대장 정보 Bean */
@Resource(name = "levy02Bean")
private Levy02Bean levy02Bean;
/** . /** .
* @param req * @param req
* @return * @return
@ -235,10 +241,11 @@ public class Excl02Bean extends AbstractComponent {
exclQuery.setOpnnId(opnnSbmsn.getOpnnId()); exclQuery.setOpnnId(opnnSbmsn.getOpnnId());
exclQuery.setDelYn("N"); exclQuery.setDelYn("N");
// 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(exclQuery); DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(exclQuery);
// 수납 또는 취소된 자료를 의견제출 수용할 수 없다 // 수납 또는 취소된 자료를 의견제출 수용할 수 없다
if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() >= 71) { if (!infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") && !infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) {
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 상태 입니다."; retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 상태 입니다.";
return retMessage; return retMessage;
} }
@ -247,40 +254,89 @@ public class Excl02Bean extends AbstractComponent {
retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn); retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 대장의 심의(답변) 처리에 실패하였습니다."); throw new RuntimeException("의견제출 심의 처리에 실패하였습니다.");
} }
// 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면.. // 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면..
if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) { if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) {
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용 if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용
newCrdnSttsCd = "82"; // 의견제출 수용으로 변경 newCrdnSttsCd = "82"; // 의견제출 수용
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03")
|| opnnSbmsn.getOpnnSbmsnSttsCd().equals("03") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 심의제외 || opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외
newCrdnSttsCd = infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"); // 이전 단속상태코드 유지 // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) { // 과태료감경 DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(infoCrdnOpnnSbmsn.string("CRDN_ID"), "31");
// 의견제출 처리 결과가 과태료감경(04) 이라면.. 감경 등록이 필요하다.. 2023.08.16 JoJH
newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) { } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) {
newCrdnSttsCd = "87"; // 경찰서 이첩으로 변경 newCrdnSttsCd = "87"; // 경찰서 이첩
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) {
newCrdnSttsCd = "31";
} else {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다.");
} }
// 단속상태가 의견제출수용(82), 경찰서이첩(87) 이라면.. if (infoCrdnOpnnSbmsn.string("RDUCT_ID").equals("")) {
if (newCrdnSttsCd.equals("82") || newCrdnSttsCd.equals("87")) { if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
// 단속상태이력(TB_CRDN_STTS_HSTRY) Rduct rduct = new Rduct();
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
rduct.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); rduct.setRtpyrId(infoCrdnOpnnSbmsn.string("RTPYR_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD")); rduct.setRductYmd(opnnSbmsn.getAnsYmd());
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT")); rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd());
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); rduct.setRductAmt(opnnSbmsn.getRductAmt());
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId()); rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다. retMessage = levy02Bean.createRduct(rduct);
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); if (retMessage.contains("[F]")) {
if (!retSuccess) { // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태코드 수정에 실패하였습니다."); }
}
} else {
Rduct rduct = new Rduct();
// 의견제출로 인한 감경인지 확인
if (infoCrdnOpnnSbmsn.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
rduct.setRductId(infoCrdnOpnnSbmsn.string("RDUCT_ID"));
rduct.setRductYmd(opnnSbmsn.getAnsYmd());
rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd());
rduct.setRductAmt(opnnSbmsn.getRductAmt());
retMessage = levy02Bean.updateRduct(rduct);
if (retMessage.contains("[F]")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
}
} else {
rduct.setRductId(infoCrdnOpnnSbmsn.string("RDUCT_ID"));
rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
retMessage = levy02Bean.removeRduct(rduct);
if (retMessage.contains("[F]")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
}
}
} }
} }
// 단속상태이력(TB_CRDN_STTS_HSTRY) 변경
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태코드 수정에 실패하였습니다.");
}
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";

@ -9,7 +9,6 @@ import org.springframework.stereotype.Service;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.service.Excl02Service; import cokr.xit.fims.excl.service.Excl02Service;
import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;

@ -103,15 +103,15 @@ public class Excl02Controller extends ApplicationController {
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02020-info"); ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02020-info");
// View(jsp)에서 사용할 공통코드를 조회 // View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM029", "FIM030", "FIM032", "FIM033", "FIM054"); Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM019", "FIM029", "FIM030", "FIM032", "FIM033", "FIM054");
return mav return mav
.addObject("pageName", "excl02020") .addObject("pageName", "excl02020")
.addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD) .addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD)
.addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD)
.addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD) .addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD)
.addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("opnnSbmsnInfo", json ? opnnSbmsnInfo : toJson(opnnSbmsnInfo)) // 의견제출 정보 .addObject("opnnSbmsnInfo", json ? opnnSbmsnInfo : toJson(opnnSbmsnInfo)) // 의견제출 정보
; ;
} }
@ -264,10 +264,11 @@ public class Excl02Controller extends ApplicationController {
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02030-info"); ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02030-info");
// View(jsp)에서 사용할 공통코드를 조회 // View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM030", "FIM031", "FIM033", "FIM054"); Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM019", "FIM030", "FIM031", "FIM033", "FIM054");
return mav return mav
.addObject("pageName", "excl02030") .addObject("pageName", "excl02030")
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD)
.addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 상태 코드(OPNN_SBMSN_STTS_CD) .addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 상태 코드(OPNN_SBMSN_STTS_CD)
.addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD)

@ -38,7 +38,7 @@ public interface RductMapper extends AbstractMapper {
*/ */
List<DataObject> selectRducts(LevyQuery req); List<DataObject> selectRducts(LevyQuery req);
/** ID . /** 1 .
* @param req * @param req
* @return * @return
*/ */

@ -111,7 +111,7 @@ public class Levy02Bean extends AbstractComponent {
public String createRduct(Rduct rduct) { public String createRduct(Rduct rduct) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String retMessage = ""; // 처리 결과 메시지 String retMessage = ""; // 처리 결과 메시지
// 단속 ID로 단속, 감경 정보 조회 // 단속 ID로 단속, 감경 정보 조회
DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId()); DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId());

@ -35,7 +35,7 @@ public interface CvlcptDscsnCnMapper extends AbstractMapper {
*/ */
List<DataObject> selectCvlcptDscsnCns(SprtQuery req); List<DataObject> selectCvlcptDscsnCns(SprtQuery req);
/** ID . /** 1 .
* @param cvlcptDscsnId ID * @param cvlcptDscsnId ID
* @return * @return
*/ */

@ -66,6 +66,9 @@
</if> </if>
<if test="crdnId != null"> <if test="crdnId != null">
AND CSH.CRDN_ID = #{crdnId} AND CSH.CRDN_ID = #{crdnId}
</if>
<if test="crdnSttsCd != null">
AND CSH.CRDN_STTS_CD = #{crdnSttsCd}
</if> </if>
<if test="useYn != null"> <if test="useYn != null">
AND CSH.USE_YN = #{useYn} AND CSH.USE_YN = #{useYn}

@ -118,9 +118,16 @@
, P.ZIP /* 우편번호 */ , P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */ , P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */ , P.DTL_ADDR /* 상세 주소 */
, R.RDUCT_ID /* 감경 ID */
, R.RDUCT_RSN_CD /* 감경 사유 코드 */
, R.ETC_CN AS RDUCT_ETC_CN /* 기타 내용 */
, (CASE WHEN R.RDUCT_AMT IS NOT NULL THEN R.RDUCT_AMT
ELSE (SELECT C.FFNLG_CRDN_AMT*TI.WKSN_RDUCT_RT/100 FROM TB_TASK_INFO TI WHERE C.SGG_CD=TI.SGG_CD AND C.TASK_SE_CD=TI.TASK_SE_CD AND TI.USE_YN='Y')
END ) AS RDUCT_AMT /* 감경 금액 */
FROM TB_OPNN_SBMSN OS FROM TB_OPNN_SBMSN OS
INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID) INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
</sql> </sql>
<select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(opnnSbmsnMapper.selectOpnnSbmsnList) */ <select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(opnnSbmsnMapper.selectOpnnSbmsnList) */

@ -60,9 +60,9 @@
, P.RTPYR_NM /* 납부자 명 */ , P.RTPYR_NM /* 납부자 명 */
, L.LEVY_ID /* 부과 ID */ , L.LEVY_ID /* 부과 ID */
FROM TB_RDUCT R FROM TB_RDUCT R
INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID) INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.LEVY_ID = L.LEVY_ID) LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
</sql> </sql>
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */ <select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
@ -217,12 +217,12 @@
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */ , <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
, C.FFNLG_CRDN_AMT * TI.WKSN_RDUCT_RT / 100 AS CALC_RDUCT_AMT /* 감경 금액 */ , C.FFNLG_CRDN_AMT * TI.WKSN_RDUCT_RT / 100 AS CALC_RDUCT_AMT /* 감경 금액 */
FROM TB_CRDN C 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) INNER JOIN TB_TASK_INFO TI ON (C.SGG_CD = TI.SGG_CD AND C.TASK_SE_CD = TI.TASK_SE_CD AND TI.USE_YN = 'Y')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N') LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
<where> <where>
<if test="levyExclId != null"> <if test="rductId != null">
AND R.RDUCT_ID = #{rductId} /* 감경 ID */ AND R.RDUCT_ID = #{rductId} /* 감경 ID */
<if test="delYn != null"> <if test="delYn != null">
AND R.DEL_YN = #{delYn} /* 삭제 여부 */ AND R.DEL_YN = #{delYn} /* 삭제 여부 */

@ -17,7 +17,7 @@
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */ , C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(L.FYR, '-', L.LEVY_NO)) AS GOJI_NO /* 고지번호 */ , (CONCAT(L.FYR, '-', L.LEVY_NO)) AS GOJI_NO /* 고지번호 */
FROM TB_CRDN C /* 단속 대장 */ FROM TB_CRDN C /* 단속 대장 */
LEFT OUTER JOIN TB_LEVY L ON (C.LEVY_ID = L.LEVY_ID) /* 부과 대장 */ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') /* 부과 대장 */
</sql> </sql>
<select id="selectCrdnInfo" parameterType="String" resultType="dataobject">/* 개별총정보 조회(sprt02Mapper.selectCrdnPayerInfo) */ <select id="selectCrdnInfo" parameterType="String" resultType="dataobject">/* 개별총정보 조회(sprt02Mapper.selectCrdnPayerInfo) */
@ -156,10 +156,10 @@
, L.RDCAMT_PCPTAX + L.RDCAMT_ADAMT AS REDUC_AMT /* 감액 금액 */ , L.RDCAMT_PCPTAX + L.RDCAMT_ADAMT AS REDUC_AMT /* 감액 금액 */
, L.SUM_AMT /* 합계 금액 */ , L.SUM_AMT /* 합계 금액 */
FROM TB_CRDN C /* 단속 대장 */ FROM TB_CRDN C /* 단속 대장 */
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) /* 단속 부가 정보 */ INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) /* 단속 부가 정보 */
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) /* 납부자 대장 */ LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) /* 납부자 대장 */
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') /* 단속 민원 대장 대장 */ LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') /* 단속 민원 대장 대장 */
LEFT OUTER JOIN TB_LEVY L ON (C.LEVY_ID = L.LEVY_ID) /* 부과 대장 */ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') /* 부과 대장 */
</sql> </sql>
<select id="selectCrdnPayerInfo" parameterType="map" resultType="dataobject">/* 개별총정보 조회(sprt02Mapper.selectCrdnPayerInfo) */ <select id="selectCrdnPayerInfo" parameterType="map" resultType="dataobject">/* 개별총정보 조회(sprt02Mapper.selectCrdnPayerInfo) */

@ -3,7 +3,7 @@
<mapper namespace="cokr.xit.fims.sprt.dao.UnityInqMapper"> <mapper namespace="cokr.xit.fims.sprt.dao.UnityInqMapper">
<sql id="select"> <sql id="select">
SELECT C.CRDN_ID /* 단속 ID */ SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */ , C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 코드 명 */ , (SELECT FN_GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 코드 명 */
@ -117,7 +117,7 @@
FROM TB_CRDN C /* 단속 대장 */ FROM TB_CRDN C /* 단속 대장 */
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) /* 단속 부가 정보 */ INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) /* 단속 부가 정보 */
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) /* 납부자 대장 */ LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) /* 납부자 대장 */
LEFT OUTER JOIN TB_LEVY L ON (C.LEVY_ID = L.LEVY_ID) /* 부과 대장 */ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') /* 부과 대장 */
</sql> </sql>
<select id="selectCvlcptDscsnCnList" parameterType="map" resultType="dataobject">/* 민원 상담 내용 목록 조회(cvlcptDscsnCnMapper.selectCvlcptDscsnCnList) */ <select id="selectCvlcptDscsnCnList" parameterType="map" resultType="dataobject">/* 민원 상담 내용 목록 조회(cvlcptDscsnCnMapper.selectCvlcptDscsnCnList) */

@ -175,9 +175,9 @@
<button type="button" class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnUpdate${pageName}();"> <button type="button" class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnUpdate${pageName}();">
수정 수정
</button> </button>
<button type="button" class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnRemove${pageName}();"> <%-- <button type="button" class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnRemove${pageName}();"> --%>
삭제 <!-- 삭제 -->
</button> <!-- </button> -->
<button type="button" class="btn btn-primary" id="btnOpnnSbmsnDlbrt--${pageName}" title="심의" onclick="fnOpnnSbmsnDlbrt${pageName}();"> <button type="button" class="btn btn-primary" id="btnOpnnSbmsnDlbrt--${pageName}" title="심의" onclick="fnOpnnSbmsnDlbrt${pageName}();">
심의 심의
</button> </button>
@ -355,7 +355,7 @@
, data : { crdnId : crdnId } , data : { crdnId : crdnId }
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : ${pageName}Control.prefixed("dialog") id : "totalInfoMainDialog"
, title : "개별총정보" , title : "개별총정보"
, content : resp , content : resp
, size : "xxl" , size : "xxl"
@ -450,7 +450,7 @@
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : ${pageName}Control.prefixed("InfoDialog") id : ${pageName}Control.prefixed("Dialog")
, title : ${pageName}Control.prefixName + " 정보" , title : ${pageName}Control.prefixName + " 정보"
, content : resp , content : resp
, size : ${pageName}Control.infoSize , size : ${pageName}Control.infoSize
@ -467,11 +467,9 @@
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/030/info.do") url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/030/info.do")
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix)
.replace(/prefixName/g, this.prefixName)
dialog.open({ dialog.open({
id : ${pageName}Control.prefixed("SbmsnInfoDialog") id : ${pageName}Control.prefixed("SbmsnDialog")
, title : "의견제출 답변 처리" , title : ${pageName}Control.prefixName + " 심의 처리"
, content : resp , content : resp
, size : "lg" , size : "lg"
, init : () => { } , init : () => { }

@ -104,8 +104,8 @@
</div> </div>
<!-- 의견 제출 구분 코드 --> <!-- 의견 제출 구분 코드 -->
<div class="col-md-4"> <div class="col-md-4">
<label for="opnnSbmsnSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출 구분</label> <label for="opnnSbmsnSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">의견제출 구분</label>
<select class="form-select" id="opnnSbmsnSeCd--${pageName}" name="opnnSbmsnSeCd" data-map="OPNN_SBMSN_SE_CD"> <select class="form-select" id="opnnSbmsnSeCd--${pageName}" name="opnnSbmsnSeCd" data-map="OPNN_SBMSN_SE_CD" required>
<option value="">선택하세요</option> <option value="">선택하세요</option>
<c:forEach items="${FIM033List}" var="item"> <c:forEach items="${FIM033List}" var="item">
<option value="${item.code}">${item.value}</option> <option value="${item.code}">${item.value}</option>
@ -181,7 +181,7 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
var ${pageName}Control = new DatasetControl({ var ${pageName}Control = new DatasetControl({
prefix : "opnnInfo" prefix : "opnn"
, prefixName : "의견제출" , prefixName : "의견제출"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo , dataGetter : obj => obj.opnnSbmsnInfo

@ -20,7 +20,7 @@
<!-- 접수 일자 --> <!-- 접수 일자 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="rcptYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수 일자</label> <label for="rcptYmd--${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="rcptYmd--${pageName}" name="rcptYmd" data-map="RCPT_YMD" readonly /> <input type="text" class="form-control w-35" id="rcptYmd--${pageName}" name="rcptYmd" data-map="RCPT_YMD" readonly />
</div> </div>
<!-- 진술자 이름 --> <!-- 진술자 이름 -->
<div class="col-md-6"> <div class="col-md-6">
@ -30,7 +30,7 @@
<!-- 의견 제출 구분 코드 --> <!-- 의견 제출 구분 코드 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="opnnSbmsnSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출 구분</label> <label for="opnnSbmsnSeNm--${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="opnnSbmsnSeNm--${pageName}" name="opnnSbmsnSeNm" data-map="OPNN_SBMSN_SE_NM" readonly /> <input type="text" class="form-control w-60" id="opnnSbmsnSeNm--${pageName}" name="opnnSbmsnSeNm" data-map="OPNN_SBMSN_SE_NM" readonly />
</div> </div>
<!-- 의견 제출 요지 --> <!-- 의견 제출 요지 -->
<div class="col-md-12"> <div class="col-md-12">
@ -62,13 +62,27 @@
<!-- 의견 제출 상태 코드 --> <!-- 의견 제출 상태 코드 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="opnnSbmsnSttsCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">처리 결과</label> <label for="opnnSbmsnSttsCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">처리 결과</label>
<select class="form-select" id="opnnSbmsnSttsCd--${pageName}" name="opnnSbmsnSttsCd" data-map="OPNN_SBMSN_STTS_CD" required> <select class="form-select" id="opnnSbmsnSttsCd--${pageName}" name="opnnSbmsnSttsCd" data-map="OPNN_SBMSN_STTS_CD" onchange="fnChangeOpnnSbmsnSttsCd(this.value);" required>
<option value="">선택하세요</option> <option value="">선택하세요</option>
<c:forEach items="${FIM031List}" var="item"> <c:forEach items="${FIM031List}" var="item">
<option value="${item.code}">${item.value}</option> <option value="${item.code}">${item.value}</option>
</c:forEach> </c:forEach>
</select> </select>
</div> </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">
<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>
<!-- 답변 일자 --> <!-- 답변 일자 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="ansYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변 일자</label> <label for="ansYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변 일자</label>
@ -118,7 +132,7 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
var ${pageName}Control = new DatasetControl({ var ${pageName}Control = new DatasetControl({
prefix : "opnnSbmsnInfo" prefix : "opnnSbmsn"
, prefixName : "의견제출 답변" , prefixName : "의견제출 답변"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo , dataGetter : obj => obj.opnnSbmsnInfo
@ -129,6 +143,7 @@
RCPT_YMD : dateFormat // 접수 일자 RCPT_YMD : dateFormat // 접수 일자
, ANS_YMD : dateFormat // 답변 일자 , ANS_YMD : dateFormat // 답변 일자
, ANS_TM : timeFormat // 답변 시각 , ANS_TM : timeFormat // 답변 시각
, RDUCT_AMT : numberFormat // 감경 금액
} }
}); });
@ -208,11 +223,37 @@
/************************************************************************** /**************************************************************************
* function * function
**************************************************************************/ **************************************************************************/
fnChangeOpnnSbmsnSttsCd = (obj) => {
// javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리))
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "hidden";
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "visible";
$("#divRductRsnCd--${pageName}").hide();
$("#divRductAmt--${pageName}").hide();
if (obj == "04") {
// 필수 선택 추가 필요
$("#divRductRsnCd--${pageName}").show();
$("#divRductAmt--${pageName}").show();
}
}
// 저장 // 저장
function fnSave${pageName}() { fnSave${pageName} = () => {
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 감경 사유 확인
let opnnSbmsnSttsCd = $("#opnnSbmsnSttsCd--${pageName}").val();
let rductRsn = $("#rductRsnCd--${pageName}").val();
if (opnnSbmsnSttsCd == "04" && rductRsn == "00") {
dialog.alert("감경 사유를 다시 선택하여 주시기 바랍니다.");
return;
}
dialog.alert({ dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?" content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => { , onOK : () => {
@ -241,6 +282,8 @@
if ($("#ansTm--${pageName}").val() == "") { if ($("#ansTm--${pageName}").val() == "") {
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다. $("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
} }
fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val());
}); });
// #sourceURL=excl01020-info.jsp // #sourceURL=excl01020-info.jsp

@ -169,8 +169,9 @@
// 감경 사유 확인 // 감경 사유 확인
let rductRsn = $("#rductRsnCd--${pageName}").val(); let rductRsn = $("#rductRsnCd--${pageName}").val();
if (rductRsn == "00") { if (rductRsn == "00") {
dialog.alert("다른 감경 사유를 선택하여 주시기 바랍니다."); dialog.alert("감경 사유를 다시 선택하여 주시기 바랍니다.");
return; return;
} }

@ -382,10 +382,6 @@
**************************************************************************/ **************************************************************************/
// 화면 초기값 셋팅 // 화면 초기값 셋팅
initForm${pageName} = () => { initForm${pageName} = () => {
// javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리))
// document.getElementById("bpvDtlCrdnPlc--${pageName}").style.visibility = "hidden";
// document.getElementById("bpvDtlCrdnPlc--${pageName}").style.visibility = "visible";
// jquery를 이용한 show/hide (style이 유지) // jquery를 이용한 show/hide (style이 유지)
$("#divBlank1--${pageName}").hide(); // 빈 칸1 $("#divBlank1--${pageName}").hide(); // 빈 칸1
$("#divBlank2--${pageName}").hide(); // 빈 칸2 $("#divBlank2--${pageName}").hide(); // 빈 칸2

@ -190,7 +190,7 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
var ${pageName}Control = new DatasetControl({ var ${pageName}Control = new DatasetControl({
prefix : "opnnInfo" prefix : "opnn"
, prefixName : "의견제출" , prefixName : "의견제출"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsn , dataGetter : obj => obj.opnnSbmsn
@ -275,11 +275,11 @@
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "opnnSbmsnInfoDialog" id : ${pageName}Control.prefixed("SbmsnDialog")
, title : "의견제출 답변 처리" , title : ${pageName}Control.prefixName + " 심의 처리"
, content : resp , content : resp
, size : "lg" , size : "lg"
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 조회 , onClose : () => { fnDataRefreshInfo(); } // callback 자료 조회
}); });
} }
}); });
@ -390,9 +390,16 @@
if (opnnId == null || opnnId == "") { if (opnnId == null || opnnId == "") {
return; return;
} }
// 단속 상태 코드
let crdnSttsCd = ${pageName}Control.dataset.getValue("CRDN_STTS_CD");
if (crdnSttsCd > "51") {
dialog.alert(${pageName}Control.dataset.getValue("CRDN_STTS_NM") + " 자료는 의견제출을 삭제할 수 없습니다.");
return;
}
let params = { let params = {
callPurpose : "update" callPurpose : "remove"
, crdnId : crdnId , crdnId : crdnId
, sggCd : sggCd , sggCd : sggCd
, taskSeCd : taskSeCd , taskSeCd : taskSeCd

Loading…
Cancel
Save