diff --git a/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java index a335e88e..2c730cce 100644 --- a/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java +++ b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java @@ -34,13 +34,18 @@ public interface CrdnSttsHstryMapper extends AbstractMapper { */ List selectCrdnSttsHstrys(CrdnSttsHstryQuery req); - /**지정한 단속 ID의 단속 상태 이력 객체를 반환한다. + /**지정한 조건에 따라 단속 상태 이력 객체의 마지막 1개를 반환한다. * @param crdnId 단속 ID * @return 지정한 단속 ID의 단속 상태 이력 객체 */ - default DataObject selectCrdnSttsHstryInfo(String crdnId) { - List crdnSttsHstryList = selectCrdnSttsHstrys(new CrdnSttsHstryQuery().setCrdnId(crdnId) - .setOrderBy("REG_DT DESC, STTS_HSTRY_ID DESC")); + default DataObject selectCrdnSttsHstryInfo(String crdnId, String crdnSttsCd) { + CrdnSttsHstryQuery req = new CrdnSttsHstryQuery(); + + req.setCrdnId(crdnId); + req.setCrdnSttsCd(crdnSttsCd); + req.setOrderBy("REG_DT DESC, STTS_HSTRY_ID DESC"); + + List crdnSttsHstryList = selectCrdnSttsHstrys(req); return !crdnSttsHstryList.isEmpty() ? crdnSttsHstryList.get(0) : null; } diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java index 00e88376..c6d61548 100644 --- a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java @@ -50,8 +50,8 @@ public class CrdnSttsHstryBean extends AbstractComponent { * @param crdnId 단속 ID * @return 단속 상태 이력 객체 목록 */ - public DataObject getCrdnSttsHstryInfo(String crdnId) { - return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId); + public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd) { + return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd); } /**단속 상태 이력 정보를 등록한다. @@ -149,7 +149,7 @@ public class CrdnSttsHstryBean extends AbstractComponent { CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(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) 대장을 등록 한다. if (!newCrdnSttsCd.equals("") ) { diff --git a/src/main/java/cokr/xit/fims/excl/OpnnSbmsn.java b/src/main/java/cokr/xit/fims/excl/OpnnSbmsn.java index aa04e709..b9039635 100644 --- a/src/main/java/cokr/xit/fims/excl/OpnnSbmsn.java +++ b/src/main/java/cokr/xit/fims/excl/OpnnSbmsn.java @@ -205,4 +205,14 @@ public class OpnnSbmsn extends AbstractEntity { */ private String opnnSbmsnYn; + /** + * 과태료 감경(TB_RDUCT) - 감경 사유 코드 + */ + private String rductRsnCd; + + /** + * 과태료 감경(TB_RDUCT) - 감경 금액 + */ + private Integer rductAmt; + } diff --git a/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java b/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java index a3efc971..5bc6ea6b 100644 --- a/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java +++ b/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java @@ -38,7 +38,7 @@ public interface LevyExclMapper extends AbstractMapper { */ List selectLevyExcls(ExclQuery req); - /**지정한 부과제외 ID에 따라 부과제외 대장 객체를 반환한다. + /**지정한 조건에 따라 부과제외 대장 객체의 마지막 1개를 반환한다. * @param levyExclId 부과제외 ID * @return 부과제외 대장 객체 */ diff --git a/src/main/java/cokr/xit/fims/excl/dao/OpnnSbmsnMapper.java b/src/main/java/cokr/xit/fims/excl/dao/OpnnSbmsnMapper.java index cd5bac8b..bb093160 100644 --- a/src/main/java/cokr/xit/fims/excl/dao/OpnnSbmsnMapper.java +++ b/src/main/java/cokr/xit/fims/excl/dao/OpnnSbmsnMapper.java @@ -36,7 +36,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper { */ List selectOpnnSbmsns(ExclQuery req); - /**지정한 의견제출 ID에 따라 의견제출 대장 객체를 반환한다. + /**지정한 조건에 따라 의견제출 대장 객체의 마지막 1개를 반환한다. * @param opnnId 의견제출 ID * @return 의견제출 대장 객체 */ diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java index 0487761b..b1a2b24d 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java @@ -15,6 +15,8 @@ import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean; import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.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.data.DataObject; @@ -43,6 +45,10 @@ public class Excl02Bean extends AbstractComponent { @Resource(name = "crdnSttsHstryBean") private CrdnSttsHstryBean crdnSttsHstryBean; + /** 과태료 감경 대장 정보 Bean */ + @Resource(name = "levy02Bean") + private Levy02Bean levy02Bean; + /**지정한 조건에 따라 의견제출 대장 목록을 조회하여 반환한다. * @param req 의견제출 대장 조회 조건 * @return 의견제출 대장 목록 @@ -235,10 +241,11 @@ public class Excl02Bean extends AbstractComponent { exclQuery.setOpnnId(opnnSbmsn.getOpnnId()); exclQuery.setDelYn("N"); + // 의견제출(TB_OPNN_SBMSN) 자료 조회 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] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 상태 입니다."; return retMessage; } @@ -247,40 +254,89 @@ public class Excl02Bean extends AbstractComponent { retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn); if (!retSuccess) { // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 대장의 심의(답변) 처리에 실패하였습니다."); + throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); } // 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면.. if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) { if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용 - newCrdnSttsCd = "82"; // 의견제출 수용으로 변경 - } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") - || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 심의제외 - newCrdnSttsCd = infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"); // 이전 단속상태코드 유지 - } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) { // 과태료감경 -// 의견제출 처리 결과가 과태료감경(04) 이라면.. 감경 등록이 필요하다.. 2023.08.16 JoJH + newCrdnSttsCd = "82"; // 의견제출 수용 + } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03") + || opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외 + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회 + DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(infoCrdnOpnnSbmsn.string("CRDN_ID"), "31"); + + newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지 } 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 (newCrdnSttsCd.equals("82") || newCrdnSttsCd.equals("87")) { - // 단속상태이력(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("의견제출 심의(답변) 처리 중 단속대장의 단속상태코드 수정에 실패하였습니다."); + if (infoCrdnOpnnSbmsn.string("RDUCT_ID").equals("")) { + if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) { + Rduct rduct = new Rduct(); + + rduct.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); + rduct.setRtpyrId(infoCrdnOpnnSbmsn.string("RTPYR_ID")); + rduct.setRductYmd(opnnSbmsn.getAnsYmd()); + rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd()); + rduct.setRductAmt(opnnSbmsn.getRductAmt()); + rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록"); + + retMessage = levy02Bean.createRduct(rduct); + if (retMessage.contains("[F]")) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + 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] 작업이 정상 처리 되었습니다."; diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java index 408156ec..f99be3f7 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java @@ -9,7 +9,6 @@ import org.springframework.stereotype.Service; import cokr.xit.base.file.FileInfo; import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.ExclQuery; -import cokr.xit.fims.excl.LevyExcl; import cokr.xit.fims.excl.service.Excl02Service; import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.data.DataObject; diff --git a/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java b/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java index f7bcc796..94591d7a 100644 --- a/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java +++ b/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java @@ -103,15 +103,15 @@ public class Excl02Controller extends ApplicationController { ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02020-info"); // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM029", "FIM030", "FIM032", "FIM033", "FIM054"); + Map> commonCodes = getCodesOf("FIM019", "FIM029", "FIM030", "FIM032", "FIM033", "FIM054"); return mav .addObject("pageName", "excl02020") - .addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD) - .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) - .addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD) - .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_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) + .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .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"); // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM030", "FIM031", "FIM033", "FIM054"); + Map> commonCodes = getCodesOf("FIM019", "FIM030", "FIM031", "FIM033", "FIM054"); return mav .addObject("pageName", "excl02030") + .addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_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) diff --git a/src/main/java/cokr/xit/fims/levy/dao/RductMapper.java b/src/main/java/cokr/xit/fims/levy/dao/RductMapper.java index 60ed9cb3..4d25b2ba 100644 --- a/src/main/java/cokr/xit/fims/levy/dao/RductMapper.java +++ b/src/main/java/cokr/xit/fims/levy/dao/RductMapper.java @@ -38,7 +38,7 @@ public interface RductMapper extends AbstractMapper { */ List selectRducts(LevyQuery req); - /**지정한 감경 ID에 따라 과태료 감경 대장 객체를 반환한다. + /**지정한 조건에 따라 과태료 감경 대장 객체의 마지막 1개를 반환한다. * @param req 과태료 감경 대장 조회 조건 * @return 과태료 감경 대장 객체 */ diff --git a/src/main/java/cokr/xit/fims/levy/service/bean/Levy02Bean.java b/src/main/java/cokr/xit/fims/levy/service/bean/Levy02Bean.java index a19f3e14..4c86e3b6 100644 --- a/src/main/java/cokr/xit/fims/levy/service/bean/Levy02Bean.java +++ b/src/main/java/cokr/xit/fims/levy/service/bean/Levy02Bean.java @@ -111,7 +111,7 @@ public class Levy02Bean extends AbstractComponent { public String createRduct(Rduct rduct) { // 변수 선언 boolean retSuccess = false; // DB 처리 결과 - String retMessage = ""; // 처리 결과 메시지 + String retMessage = ""; // 처리 결과 메시지 // 단속 ID로 단속, 감경 정보 조회 DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId()); diff --git a/src/main/java/cokr/xit/fims/sprt/dao/CvlcptDscsnCnMapper.java b/src/main/java/cokr/xit/fims/sprt/dao/CvlcptDscsnCnMapper.java index 639113c9..51702c55 100644 --- a/src/main/java/cokr/xit/fims/sprt/dao/CvlcptDscsnCnMapper.java +++ b/src/main/java/cokr/xit/fims/sprt/dao/CvlcptDscsnCnMapper.java @@ -35,7 +35,7 @@ public interface CvlcptDscsnCnMapper extends AbstractMapper { */ List selectCvlcptDscsnCns(SprtQuery req); - /**지정한 민원 상담 ID에 따라 민원 상담 내용 대장 객체를 반환한다. + /**지정한 조건에 따라 민원 상담 내용 대장 객체의 마지막 1개를 반환한다. * @param cvlcptDscsnId 민원 상담 ID * @return 민원 상담 내용 대장 객체 */ diff --git a/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml b/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml index 5ef29caa..63b30a1e 100644 --- a/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml +++ b/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml @@ -66,6 +66,9 @@ AND CSH.CRDN_ID = #{crdnId} + + + AND CSH.CRDN_STTS_CD = #{crdnSttsCd} AND CSH.USE_YN = #{useYn} diff --git a/src/main/resources/sql/mapper/fims/excl/opnnSbmsn-mapper.xml b/src/main/resources/sql/mapper/fims/excl/opnnSbmsn-mapper.xml index 78b2e73c..e4c8d1cf 100644 --- a/src/main/resources/sql/mapper/fims/excl/opnnSbmsn-mapper.xml +++ b/src/main/resources/sql/mapper/fims/excl/opnnSbmsn-mapper.xml @@ -118,9 +118,16 @@ , P.ZIP /* 우편번호 */ , P.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 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_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N') /* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */ @@ -217,12 +217,12 @@ , 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) + 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_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') - + AND R.RDUCT_ID = #{rductId} /* 감경 ID */ AND R.DEL_YN = #{delYn} /* 삭제 여부 */ diff --git a/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml b/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml index 982f1b0f..50470162 100644 --- a/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml @@ -17,7 +17,7 @@ , C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */ , (CONCAT(L.FYR, '-', L.LEVY_NO)) AS GOJI_NO /* 고지번호 */ 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') /* 부과 대장 */ /* 개별총정보 조회(sprt02Mapper.selectCrdnPayerInfo) */ diff --git a/src/main/resources/sql/mapper/fims/sprt/unityInq-mapper.xml b/src/main/resources/sql/mapper/fims/sprt/unityInq-mapper.xml index 0dc82e75..75e8b465 100644 --- a/src/main/resources/sql/mapper/fims/sprt/unityInq-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sprt/unityInq-mapper.xml @@ -3,7 +3,7 @@ - SELECT C.CRDN_ID /* 단속 ID */ + SELECT C.CRDN_ID /* 단속 ID */ , C.SGG_CD /* 시군구 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */ , (SELECT FN_GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 코드 명 */ @@ -117,7 +117,7 @@ FROM TB_CRDN C /* 단속 대장 */ 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_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') /* 부과 대장 */ + + +
@@ -30,7 +30,7 @@
- +
@@ -62,13 +62,27 @@
-
+ +
+ + +
+ +
+ + +
@@ -118,7 +132,7 @@ * DatasetControl **************************************************************************/ var ${pageName}Control = new DatasetControl({ - prefix : "opnnSbmsnInfo" + prefix : "opnnSbmsn" , prefixName : "의견제출 답변" , keymapper : info => info ? info.OPNN_ID : "" , dataGetter : obj => obj.opnnSbmsnInfo @@ -129,6 +143,7 @@ RCPT_YMD : dateFormat // 접수 일자 , ANS_YMD : dateFormat // 답변 일자 , ANS_TM : timeFormat // 답변 시각 + , RDUCT_AMT : numberFormat // 감경 금액 } }); @@ -208,11 +223,37 @@ /************************************************************************** * 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 확인 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({ content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?" , onOK : () => { @@ -241,6 +282,8 @@ if ($("#ansTm--${pageName}").val() == "") { $("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다. } + + fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val()); }); // #sourceURL=excl01020-info.jsp diff --git a/src/main/webapp/WEB-INF/jsp/fims/levy/levy02020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/levy/levy02020-info.jsp index 443dbf30..d112e3e4 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/levy/levy02020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/levy/levy02020-info.jsp @@ -169,8 +169,9 @@ // 감경 사유 확인 let rductRsn = $("#rductRsnCd--${pageName}").val(); + if (rductRsn == "00") { - dialog.alert("다른 감경 사유를 선택하여 주시기 바랍니다."); + dialog.alert("감경 사유를 다시 선택하여 주시기 바랍니다."); return; } diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp index 5bf6e248..f5bb6dbe 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp @@ -382,10 +382,6 @@ **************************************************************************/ // 화면 초기값 셋팅 initForm${pageName} = () => { - // javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리)) -// document.getElementById("bpvDtlCrdnPlc--${pageName}").style.visibility = "hidden"; -// document.getElementById("bpvDtlCrdnPlc--${pageName}").style.visibility = "visible"; - // jquery를 이용한 show/hide (style이 유지) $("#divBlank1--${pageName}").hide(); // 빈 칸1 $("#divBlank2--${pageName}").hide(); // 빈 칸2 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp index c8eb8f35..55af2c1d 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp @@ -190,7 +190,7 @@ * DatasetControl **************************************************************************/ var ${pageName}Control = new DatasetControl({ - prefix : "opnnInfo" + prefix : "opnn" , prefixName : "의견제출" , keymapper : info => info ? info.OPNN_ID : "" , dataGetter : obj => obj.opnnSbmsn @@ -275,11 +275,11 @@ , success : resp => { dialog.open({ - id : "opnnSbmsnInfoDialog" - , title : "의견제출 답변 처리" + id : ${pageName}Control.prefixed("SbmsnDialog") + , title : ${pageName}Control.prefixName + " 심의 처리" , content : resp , size : "lg" - , onClose : () => { fnDataRefreshInfo(); } // callback 자료 조회 + , onClose : () => { fnDataRefreshInfo(); } // callback 자료 조회 }); } }); @@ -390,9 +390,16 @@ if (opnnId == null || opnnId == "") { 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 = { - callPurpose : "update" + callPurpose : "remove" , crdnId : crdnId , sggCd : sggCd , taskSeCd : taskSeCd