From 378587ab0026cc249fd587e0ba9837e53ef85304 Mon Sep 17 00:00:00 2001 From: jjh Date: Wed, 1 Nov 2023 14:02:34 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=98=EA=B2=AC=EC=A0=9C=EC=B6=9C=20?= =?UTF-8?q?=EC=8B=AC=EC=9D=98=20=EB=B0=8F=20=EC=9D=98=EA=B2=AC=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C=20=EC=82=AD=EC=A0=9C=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/cmmn/CrdnSttsHstry.java | 5 - .../xit/fims/cmmn/CrdnSttsHstryQuery.java | 10 +- .../fims/cmmn/dao/CrdnSttsHstryMapper.java | 9 +- .../cmmn/service/CrdnSttsHstryService.java | 18 -- .../cmmn/service/bean/CrdnSttsHstryBean.java | 107 ++++++---- .../bean/CrdnSttsHstryServiceBean.java | 10 - .../fims/excl/service/bean/CrdnReRegBean.java | 8 +- .../fims/excl/service/bean/LevyExclBean.java | 70 +++---- .../fims/excl/service/bean/OpnnSbmsnBean.java | 193 ++++++++++-------- .../mapper/fims/cmmn/crdnSttsHstry-mapper.xml | 22 +- .../sql/mapper/fims/excl/opnnSbmsn-mapper.xml | 4 + .../sql/mapper/fims/levy/rduct-mapper.xml | 54 ++++- .../WEB-INF/jsp/fims/excl/excl02030-info.jsp | 1 - .../WEB-INF/jsp/fims/sprt/sprt02030-info.jsp | 5 - .../WEB-INF/jsp/fims/sprt/sprt02050-info.jsp | 4 +- 15 files changed, 286 insertions(+), 234 deletions(-) diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java index cfcac2f8..755924ee 100644 --- a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java @@ -53,11 +53,6 @@ public class CrdnSttsHstry extends AbstractEntity { */ private String etcCn; - /** - * 사용 여부 - */ - private String useYn; - /** * 등록 일시 */ diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java index 3381a772..aa06e4fa 100644 --- a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java @@ -18,7 +18,7 @@ public class CrdnSttsHstryQuery extends CmmnQuery { private String crdnId; // 단속 ID private String crdnSttsCd; // 단속 상태 코드 private String taskDtlId; // 업무 상세 ID - private String useYn; // 사용 여부 + private String useYN; // 사용 여부 public String getSttsHstryId() { return ifEmpty(sttsHstryId, () -> null); @@ -60,12 +60,12 @@ public class CrdnSttsHstryQuery extends CmmnQuery { return self(); } - public String getUseYn() { - return ifEmpty(useYn, () -> null); + public String getUseYN() { + return ifEmpty(useYN, () -> null); } - public T setUseYn(String useYn) { - this.useYn = useYn; + public T setUseYN(String useYN) { + this.useYN = useYN; return self(); } 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 2c730cce..6d7cb080 100644 --- a/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java +++ b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java @@ -38,16 +38,17 @@ public interface CrdnSttsHstryMapper extends AbstractMapper { * @param crdnId 단속 ID * @return 지정한 단속 ID의 단속 상태 이력 객체 */ - default DataObject selectCrdnSttsHstryInfo(String crdnId, String crdnSttsCd) { + default DataObject selectCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYN) { CrdnSttsHstryQuery req = new CrdnSttsHstryQuery(); req.setCrdnId(crdnId); req.setCrdnSttsCd(crdnSttsCd); - req.setOrderBy("REG_DT DESC, STTS_HSTRY_ID DESC"); + req.setUseYN(useYN); + req.setOrderBy("STTS_HSTRY_ID DESC"); - List crdnSttsHstryList = selectCrdnSttsHstrys(req); + List crdnSttsHstrys = selectCrdnSttsHstrys(req); - return !crdnSttsHstryList.isEmpty() ? crdnSttsHstryList.get(0) : null; + return !crdnSttsHstrys.isEmpty() ? crdnSttsHstrys.get(0) : null; } /**단속 상태 이력 정보를 등록한다. diff --git a/src/main/java/cokr/xit/fims/cmmn/service/CrdnSttsHstryService.java b/src/main/java/cokr/xit/fims/cmmn/service/CrdnSttsHstryService.java index 1a90e067..670324e6 100644 --- a/src/main/java/cokr/xit/fims/cmmn/service/CrdnSttsHstryService.java +++ b/src/main/java/cokr/xit/fims/cmmn/service/CrdnSttsHstryService.java @@ -57,22 +57,4 @@ public interface CrdnSttsHstryService { */ boolean remove(CrdnSttsHstry crdnSttsHstry); - /**단속 상태 이력 정보를 등록하고, 단속 대장의 단속상태 정보를 수정한다. - * @param crdnSttsHstry 단속 상태 이력 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry); - - /**단속 상태 이력 정보를 삭제하고, 하고 단속 대장의 단속상태 정보를 수정한다. - * @param crdnSttsHstry 단속 상태 이력 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - boolean removeHstryUpdateCrdnSttsCd(String crdnId, String newCrdnSttsCd); - } 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 c6d61548..61d543ce 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, String crdnSttsCd) { - return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd); + public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYN) { + return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, useYN); } /**단속 상태 이력 정보를 등록한다. @@ -62,8 +62,8 @@ public class CrdnSttsHstryBean extends AbstractComponent { * */ public boolean create(CrdnSttsHstry crdnSttsHstry) { - if (crdnSttsHstry.getUseYn() == null) { - crdnSttsHstry.setUseYn("Y"); + if (crdnSttsHstry.getUseYN() == null) { + crdnSttsHstry.setUseYN("Y"); } return crdnSttsHstryMapper.insert(crdnSttsHstry); @@ -113,8 +113,8 @@ public class CrdnSttsHstryBean extends AbstractComponent { // 변수 선언 boolean retSuccess = false; // DB 처리 결과 - if (crdnSttsHstry.getUseYn() == null) { - crdnSttsHstry.setUseYn("Y"); + if (crdnSttsHstry.getUseYN() == null) { + crdnSttsHstry.setUseYN("Y"); } // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. @@ -141,53 +141,80 @@ public class CrdnSttsHstryBean extends AbstractComponent { *
  • 그렇지 않으면 false
  • * */ - public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String newCrdnSttsCd) { + public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String crdnSttsCd, String deleteSttsCd, boolean insertBfrSttsYn) { // 변수 선언 - boolean retSuccess = false; // DB 처리 결과 + boolean retSuccess = false; // DB 처리 결과 - CrdnSttsHstry newCrdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(TB_CRDN_STTS_HSTRY) 신규 등록 - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(TB_CRDN_STTS_HSTRY) + // 단속 ID에 해당하는 단속상태코드의 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다. + DataObject crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, "Y"); - // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다. - DataObject infoCrdnSttsHstry = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, ""); // 단속상태이력(TB_CRDN_STTS_HSTRY) 조회 + if (crdnSttsHstryInfo == null) { + throw new RuntimeException("단속상태이력 자료가 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback + } + + if (!crdnSttsCd.equals("")) { + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - // 신규 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. - if (!newCrdnSttsCd.equals("") ) { - newCrdnSttsHstry.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); // 단속 ID - newCrdnSttsHstry.setBfrSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); // 이전 상태 코드 - newCrdnSttsHstry.setBfrSttsChgDt(infoCrdnSttsHstry.string("BFR_STTS_CHG_DT")); // 이전 상태 변경 일시 - newCrdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); - newCrdnSttsHstry.setUseYn("Y"); + crdnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID")); + crdnSttsHstry.setUseYN("N"); - retSuccess = crdnSttsHstryMapper.insert(newCrdnSttsHstry); + retSuccess = crdnSttsHstryMapper.update(crdnSttsHstry); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. - throw new RuntimeException("신규 단속상태이력 정보 등록 중 오류가 발생하였습니다."); + throw new RuntimeException("단속상태이력 대장에 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } } - // 단속(TB_CRDN) 대장의 단속 상태 코드를 수정 한다. - crdnSttsHstry.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); // 단속 ID - crdnSttsHstry.setCrdnSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); // 상태 코드 - crdnSttsHstry.setCrdnSttsChgDt(infoCrdnSttsHstry.string("BFR_STTS_CHG_DT")); // 상태 변경 일시 + // 삭제 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. + if (!deleteSttsCd.equals("")) { + // 단속상태가 의견제출접수(31)가 아니면서, 삭제상태코드가 의견제출삭제(92)나 경찰서이첩삭제(97) 일 경우 + if (!crdnSttsCd.equals("31") && "92,97".contains(deleteSttsCd)) { + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에서 의견제출접수(31) 이력을 조회후 사용여부를 미사용("N")으로 수정. + crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, "31", "Y"); - retSuccess = crdnSttsHstryMapper.updateCrdn(crdnSttsHstry); - if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. - throw new RuntimeException("단속 대장에 단속상태코드 변경 중 오류가 발생하였습니다."); + if (crdnSttsHstryInfo == null) { + throw new RuntimeException("단속상태이력에 의견제출 접수 이력이 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback + } + + CrdnSttsHstry opnnSttsHstry = new CrdnSttsHstry(); + + opnnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID")); + opnnSttsHstry.setUseYN("N"); + + retSuccess = crdnSttsHstryMapper.update(opnnSttsHstry); + if (!retSuccess) { + throw new RuntimeException("단속상태이력 대장에 의견제출접수 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + CrdnSttsHstry deleteSttsHstry = new CrdnSttsHstry(); + + deleteSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID")); + deleteSttsHstry.setBfrSttsCd(crdnSttsHstryInfo.string("CRDN_STTS_CD")); + deleteSttsHstry.setBfrSttsChgDt(crdnSttsHstryInfo.string("REG_DT")); + deleteSttsHstry.setCrdnSttsCd(deleteSttsCd); + deleteSttsHstry.setUseYN("N"); + + retSuccess = crdnSttsHstryMapper.insert(deleteSttsHstry); + if (!retSuccess) { + throw new RuntimeException("삭제 단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } } - // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. - newCrdnSttsHstry.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); // 단속 ID - newCrdnSttsHstry.setBfrSttsCd(newCrdnSttsCd); // 이전 상태 코드 - newCrdnSttsHstry.setBfrSttsChgDt(newCrdnSttsHstry.getCreatedAt()); // 이전 상태 변경 일시 - newCrdnSttsHstry.setCrdnSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); // 단속 상태 코드 - newCrdnSttsHstry.setUseYn("Y"); + if (insertBfrSttsYn) { + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - retSuccess = crdnSttsHstryMapper.insert(newCrdnSttsHstry); - if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. - throw new RuntimeException("이전 단속상태이력 정보 등록 중 오류가 발생하였습니다."); + crdnSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(deleteSttsCd); + crdnSttsHstry.setBfrSttsChgDt(crdnSttsHstry.getCreatedAt()); + crdnSttsHstry.setCrdnSttsCd(crdnSttsHstryInfo.string("BFR_STTS_CD")); + crdnSttsHstry.setCrdnSttsChgDt(crdnSttsHstryInfo.string("BFR_STTS_CHG_DT")); + crdnSttsHstry.setUseYN("Y"); + + retSuccess = createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!retSuccess) { + throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } } return true; diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryServiceBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryServiceBean.java index 44c1673a..86f7da08 100644 --- a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryServiceBean.java +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryServiceBean.java @@ -55,14 +55,4 @@ public class CrdnSttsHstryServiceBean extends AbstractServiceBean implements Crd return crdnSttsHstryBean.remove(crdnSttsHstry); } - @Override - public boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry) { - return crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); - } - - @Override - public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String newCrdnSttsCd) { - return crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnId, newCrdnSttsCd); - } - } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/CrdnReRegBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/CrdnReRegBean.java index 460753ff..9e255136 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/CrdnReRegBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/CrdnReRegBean.java @@ -1,11 +1,9 @@ package cokr.xit.fims.excl.service.bean; import java.io.File; -import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Date; import java.util.List; import javax.annotation.Resource; @@ -162,8 +160,7 @@ public class CrdnReRegBean extends AbstractComponent { // 단속 대장 입력 retSuccess = crdnBean.create(null, newCrdn, fileInfoList); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다."); + throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 재부과 대장 등록 @@ -172,8 +169,7 @@ public class CrdnReRegBean extends AbstractComponent { retSuccess = crdnReRegMapper.insert(crdnReReg); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("재부과 대장 등록에 실패하였습니다."); + throw new RuntimeException("재부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } retMessage = "[S] 작업이 정상 처리 되었습니다."; diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java index 695054c9..52006396 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java @@ -134,8 +134,7 @@ public class LevyExclBean extends AbstractComponent { // 부과제외(TB_LEVY_EXCL) 대장을 등록 한다. retSuccess = levyExclMapper.insert(levyExcl); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("부과제외 대장 등록에 실패하였습니다."); + throw new RuntimeException("부과제외 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 단속상태이력(TB_CRDN_STTS_HSTRY) @@ -150,8 +149,7 @@ public class LevyExclBean extends AbstractComponent { // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); + throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 전액 감액일 경우 부과(TB_LEVY)에 감액금액 입력이 필요.. @@ -179,8 +177,7 @@ public class LevyExclBean extends AbstractComponent { // 부과제외(TB_LEVY_EXCL) 대장을 수정 한다. retSuccess = levyExclMapper.update(levyExcl); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("부과제외 대장 수정에 실패하였습니다."); + throw new RuntimeException("부과제외 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } retMessage = "[S] 작업이 정상 처리 되었습니다."; @@ -197,69 +194,62 @@ public class LevyExclBean extends AbstractComponent { */ public String removeLevyExcl(LevyExcl levyExcl) { // 변수 선언 - boolean retSuccess = false; // DB 처리 결과 - String retMessage = "[F] "; // 처리 결과 메시지 - String newHstrySttsCd = ""; // 신규 상태 코드 - - // 단속 ID로 단속, 부과제외 정보 조회 - LevyExclQuery req = new LevyExclQuery(); - - req.setLevyExclId(levyExcl.getLevyExclId()); - req.setDelYn("N"); + boolean retSuccess = false; // DB 처리 결과 + String retMessage = "[F] "; // 처리 결과 메시지 - DataObject infoCrdnLevyExcl = levyExclMapper.selectLevyExclInfo(req); + // 부과제외(TB_LEVY_EXCL) 정보 조회 + DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setLevyExclId(levyExcl.getLevyExclId()) + .setDelYn("N")); // 부과제외 ID가 조회되지 않았다면 종료.. - if (infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) { - retMessage = "[F] 작업 중 자료가 존재하지 않습니다."; + if (levyExclInfo.string("LEVY_EXCL_ID").equals("")) { + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    부과제외 자료가 존재하지 않습니다."; return retMessage; } // 단속 상태 코드(CRDN_STTS_CD) 확인.. - if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손) - retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; + if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1") && !levyExclInfo.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손) + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; return retMessage; - } else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("2") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고 - retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; + } else if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("2") && !levyExclInfo.string("CRDN_STTS_CD").equals("83")) { // 계고 + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; return retMessage; - } else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("5") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("80")) { // 부과취소 - retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; + } else if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("5") && !levyExclInfo.string("CRDN_STTS_CD").equals("80")) { // 부과취소 + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; return retMessage; } // 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다. retSuccess = levyExclMapper.delete(levyExcl); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다."); + throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } - if (infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손) - newHstrySttsCd = "91"; - } else if (infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고 - newHstrySttsCd = "93"; + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 부과제외 이력삭제 및 부과제외삭제 이력을 등록 한다. + String deleteCrdnSttsCd = ""; + if (levyExclInfo.string("CRDN_STTS_CD").equals("81")) { + deleteCrdnSttsCd = "91"; // 비부과(서손) 삭제 + } else if (levyExclInfo.string("CRDN_STTS_CD").equals("83")) { + deleteCrdnSttsCd = "93"; // 계고 삭제 } - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다. - retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnLevyExcl.string("CRDN_ID"), newHstrySttsCd); + retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(levyExclInfo.string("CRDN_ID"), levyExclInfo.string("CRDN_STTS_CD"), deleteCrdnSttsCd, true); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("부과제외 삭제 중 단속 대장의 단속상태 수정에 실패하였습니다."); + throw new RuntimeException("단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 부과제외 구분이 비부과(서손)일 경우 - if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1")) { + if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1")) { // 표지정보 확인여부가 조회미대상이면 -> 미확인 으로 // 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니 - if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상 - Crdn crdn = new Crdn(); // 단속(TB_CRDN) 대장 + if (levyExclInfo.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상 + Crdn crdn = new Crdn(); - crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID + crdn.setCrdnId(levyExclInfo.string("CRDN_ID")); crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인 retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("부과제외 삭제 중 단속 대장의 표지정보 수정에 실패하였습니다."); + throw new RuntimeException("부과제외 삭제 중 단속 대장의 표지정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } } } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/OpnnSbmsnBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/OpnnSbmsnBean.java index 96151a82..9841ade1 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/OpnnSbmsnBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/OpnnSbmsnBean.java @@ -15,6 +15,7 @@ import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.excl.dao.OpnnSbmsnMapper; +import cokr.xit.fims.levy.LevyQuery; import cokr.xit.fims.levy.Rduct; import cokr.xit.fims.levy.service.bean.RductBean; import cokr.xit.foundation.AbstractComponent; @@ -37,7 +38,7 @@ public class OpnnSbmsnBean extends AbstractComponent { @Resource(name = "opnnSbmsnMapper") private OpnnSbmsnMapper opnnSbmsnMapper; - /* 첨부파일 Bean */ + /** 첨부파일 Bean */ @Resource(name="fileBean") private FileBean fileBean; @@ -110,8 +111,7 @@ public class OpnnSbmsnBean extends AbstractComponent { // 의견제출 대장을 등록 한다. retSuccess = opnnSbmsnMapper.insert(opnnSbmsn); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); + throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 의견제출 파일 첨부하기 @@ -135,8 +135,7 @@ public class OpnnSbmsnBean extends AbstractComponent { // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다. retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다."); + throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } } @@ -148,8 +147,7 @@ public class OpnnSbmsnBean extends AbstractComponent { retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정 if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); + throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } retMessage = "[S] 작업이 정상 처리 되었습니다."; @@ -174,8 +172,7 @@ public class OpnnSbmsnBean extends AbstractComponent { fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE) .setInfoKey(opnnSbmsn.getOpnnId())); - // 파일 등록 - fileBean.create(fileInfoList); + fileBean.create(fileInfoList); // 파일 등록 // 의견제출 ID로 파일(TB_FILE) 정보 조회 List infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE) @@ -196,8 +193,7 @@ public class OpnnSbmsnBean extends AbstractComponent { // 의견제출 대장을 수정 한다. retSuccess = opnnSbmsnMapper.update(opnnSbmsn); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); + throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } retMessage = "[S] 작업이 정상 처리 되었습니다."; @@ -219,30 +215,40 @@ public class OpnnSbmsnBean extends AbstractComponent { String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD) // 의견제출(TB_OPNN_SBMSN) 자료 조회 - DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()) - .setDelYn("N")); + DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId())); + // 과태료 감경 대장(TB_RDUCT) 자료 조회 + DataObject crdnRductInfo = rductBean.getRductInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId())); - // 수납 또는 취소된 자료를 의견제출 수용할 수 없다 - if (!infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") && !infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) { - retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 상태 입니다."; + // 의견제출 ID가 조회되지 않았다면 종료.. + if (opnnSbmsnInfo.string("OPNN_ID").equals("")) { + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    의견제출 자료가 존재하지 않습니다."; + return retMessage; + } + // 단속 상태가 수납 또는 취소된 자료를 의견제출 수용할 수 없다. + if (opnnSbmsnInfo.number("CRDN_STTS_CD").intValue() >= 51) { + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    단속 상태가 " + opnnSbmsnInfo.string("CRDN_STTS_NM") + " 입니다."; + return retMessage; + } + // 과태료 감경 대장에 이미 감경이 등록 되었다면 의견제출 과태료감경(04)을 처리할 수 없다. + if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") && !crdnRductInfo.string("RDUCT_ID").equals("")) { + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료는 과태료 감경이 이미 등록 되었습니다."; return retMessage; } // 의견제출 답변을 수정 한다. retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); + throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면.. - if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) { + if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(opnnSbmsnInfo.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("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외 // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회 - DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(infoCrdnOpnnSbmsn.string("CRDN_ID"), "31"); + DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(opnnSbmsnInfo.string("CRDN_ID"), "31", "Y"); newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지 } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) { @@ -250,52 +256,35 @@ public class OpnnSbmsnBean extends AbstractComponent { } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) { newCrdnSttsCd = "31"; } else { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); + throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback } - if (infoCrdnOpnnSbmsn.string("RDUCT_ID").equals("")) { - if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) { - Rduct rduct = new Rduct(); + // 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면.. + 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("의견제출 심의 처리에 의한 감경 등록"); + rduct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); + rduct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID")); + rduct.setRductYmd(opnnSbmsn.getAnsYmd()); + rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd()); + rduct.setRductAmt(opnnSbmsn.getRductAmt()); + rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록"); - retMessage = rductBean.createRduct(rduct); - if (retMessage.contains("[F]")) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); - } + retMessage = rductBean.createRduct(rduct); + if (retMessage.contains("[F]")) { + throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } } else { - Rduct rduct = new Rduct(); + // 의견제출 심의로 인한 과태료 감경 대장인지 확인 + if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) { + 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 = rductBean.updateRduct(rduct); - if (retMessage.contains("[F]")) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); - } - } else { - rduct.setRductId(infoCrdnOpnnSbmsn.string("RDUCT_ID")); - rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제"); - - retMessage = rductBean.removeRduct(rduct); - if (retMessage.contains("[F]")) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); - } + rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID")); + rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제"); + + retMessage = rductBean.removeRduct(rduct); + if (retMessage.contains("[F]")) { + throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } } } @@ -303,18 +292,17 @@ public class OpnnSbmsnBean extends AbstractComponent { // 단속상태이력(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.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(opnnSbmsnInfo.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(opnnSbmsnInfo.string("CRDN_STTS_CHG_DT")); crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId()); - crdnSttsHstry.setEtcCn("의견제출 심의 처리"); + crdnSttsHstry.setEtcCn("의견제출 심의 처리로 인한 단속상태 변경"); // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다. retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); + throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } } @@ -335,42 +323,81 @@ public class OpnnSbmsnBean extends AbstractComponent { boolean retSuccess = false; // DB 처리 결과 String retMessage = "[F] "; // 처리 결과 메시지 - // 의견제출(TB_OPNN_SBMSN) 자료 조회 - DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()) + // 의견제출(TB_OPNN_SBMSN) 정보 조회 + DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()) .setDelYn("N")); + // 의견제출 ID가 조회되지 않았다면 종료.. + if (opnnSbmsnInfo.string("OPNN_ID").equals("")) { + retMessage = "[F] 작업 중 오류가 발생하였습니다.
    의견제출 자료가 존재하지 않습니다."; + return retMessage; + } + + // 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다. + retSuccess = opnnSbmsnMapper.delete(opnnSbmsn); + if (!retSuccess) { + throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + // 첨부파일 삭제 String[] deleteFiles = {opnnSbmsn.getOpnnId()}; - fileBean.remove(OpnnSbmsn.INF_TYPE, deleteFiles); - // 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다. - retSuccess = opnnSbmsnMapper.delete(opnnSbmsn); + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 의견제출 이력삭제 및 의견제출삭제 이력을 등록 한다. + boolean insertBfrSttsYN = false; + String crdnSttsCd = ""; + String deleteCrdnSttsCd = ""; + + if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("31")) { // 의견진술 접수 + insertBfrSttsYN = true; + crdnSttsCd = opnnSbmsnInfo.string("CRDN_STTS_CD"); + deleteCrdnSttsCd = "92"; + } else if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("82")) { // 의견진술 수용 + insertBfrSttsYN = true; + crdnSttsCd = opnnSbmsnInfo.string("CRDN_STTS_CD"); + deleteCrdnSttsCd = "92"; + } else if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("87")) { // 경찰서 이첩 + insertBfrSttsYN = true; + crdnSttsCd = opnnSbmsnInfo.string("CRDN_STTS_CD"); + deleteCrdnSttsCd = "97"; + } else { + insertBfrSttsYN = false; + crdnSttsCd = ""; + deleteCrdnSttsCd = "92"; + } + + retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(opnnSbmsnInfo.string("CRDN_ID"), crdnSttsCd, deleteCrdnSttsCd, insertBfrSttsYN); if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); + throw new RuntimeException("단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } - // 단속 상태 코드가 의견제출 접수(31) 또는 의견제출 수용(82) 이라면... 이전 단속 상태 코드로 복원 한다. - if (infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") || infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) { - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다. - retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnOpnnSbmsn.string("CRDN_ID"), "92"); - if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 삭제 중 단속상태 변경에 실패하였습니다."); + // 의견제출 심의로 인한 과태료 감경 대장인지 확인 + if (opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("04")) { + // 과태료 감경 대장(TB_RDUCT) 자료 조회 + DataObject crdnRductInfo = rductBean.getRductInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId())); + + if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) { + Rduct rduct = new Rduct(); + + rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID")); + rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제"); + + retMessage = rductBean.removeRduct(rduct); // 과태료 감경(TB_RDUCT) 대장 삭제 + if (retMessage.contains("[F]")) { + throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } } } // 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다. Crdn crdn = new Crdn(); - crdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); + crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); crdn.setOpnnSbmsnYn("N"); - retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정 + retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속(TB_CRDN) 대장 수정 if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); + throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } retMessage = "[S] 작업이 정상 처리 되었습니다."; 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 31e86396..528fe7f8 100644 --- a/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml +++ b/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml @@ -14,7 +14,7 @@ - + @@ -26,13 +26,13 @@ SELECT CSH.STTS_HSTRY_ID /* 상태 이력 ID */ , CSH.CRDN_ID /* 단속 ID */ , CSH.BFR_STTS_CD /* 이전 상태 코드 */ - , (SELECT GET_CODE_NM('FIM010', CSH.BFR_STTS_CD) FROM DUAL) AS BFR_STTS_NM /* 이전 상태 명 */ + , (SELECT GET_CODE_NM('FIM010', CSH.BFR_STTS_CD) FROM DUAL) AS BFR_STTS_NM /* 이전 상태 명 */ , CSH.BFR_STTS_CHG_DT /* 이전 상태 변경 일시 */ , CSH.CRDN_STTS_CD /* 단속 상태 코드 */ - , (SELECT GET_CODE_NM('FIM010', CSH.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ + , (SELECT GET_CODE_NM('FIM010', CSH.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ , CSH.TASK_DTL_ID /* 업무 상세 ID */ , CSH.USE_YN /* 사용 여부 */ - , (SELECT GET_CODE_NM('CMM003', CSH.USE_YN) FROM DUAL) AS USE_YN_NM /* 사용 여부 명 */ + , (SELECT GET_CODE_NM('CMM003', CSH.USE_YN) FROM DUAL) AS USE_YN_NM /* 사용 여부 명 */ , CSH.ETC_CN /* 기타 내용 */ , CSH.REG_DT /* 등록 일시 */ , CSH.RGTR /* 등록자 */ @@ -50,8 +50,8 @@ AND CSH.CRDN_ID = #{crdnId} - - AND CSH.USE_YN = #{useYn} + + AND CSH.USE_YN = #{useYN} @@ -70,8 +70,8 @@ AND CSH.CRDN_STTS_CD = #{crdnSttsCd} - - AND CSH.USE_YN = #{useYn} + + AND CSH.USE_YN = #{useYN} @@ -106,7 +106,7 @@ , #{crdnSttsHstry.crdnSttsCd} /* 단속 상태 코드 */ , #{crdnSttsHstry.taskDtlId} /* 업무 상세 ID */ , #{crdnSttsHstry.etcCn} /* 기타 내용 */ - , #{crdnSttsHstry.useYn} /* 단속 상태 변경 일시 */ + , #{crdnSttsHstry.useYN} /* 단속 상태 변경 일시 */ , #{crdnSttsHstry.createdAt} /* 등록 일시 */ , #{crdnSttsHstry.createdBy} /* 등록자 */ , #{crdnSttsHstry.lastModified} /* 수정 일시 */ @@ -116,7 +116,7 @@ /* 단속 상태 이력 수정(crdnSttsHstryMapper.updateCrdnSttsHstry) */ UPDATE TB_CRDN_STTS_HSTRY - SET USE_YN = #{crdnSttsHstry.useYn} /* 사용 여부 */ + SET USE_YN = #{crdnSttsHstry.useYN} /* 사용 여부 */ , MDFCN_DT = #{crdnSttsHstry.lastModified} /* 수정 일시 */ , MDFR = #{crdnSttsHstry.modifiedBy} /* 수정자 */ WHERE STTS_HSTRY_ID = #{crdnSttsHstry.sttsHstryId} /* 상태 이력 ID */ @@ -144,7 +144,7 @@ , CRDN_STTS_CHG_DT = #{crdnSttsHstry.crdnSttsChgDt} /* 단속 상태 변경 일시 */ - , CRDN_STTS_CHG_DT = /* 단속 상태 변경 일시 */ + , CRDN_STTS_CHG_DT = #{crdnSttsHstry.lastModified} /* 단속 상태 변경 일시 */ , MDFCN_DT = #{crdnSttsHstry.lastModified} /* 수정 일시 */ 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 a17fd40e..9db6dcd2 100644 --- a/src/main/resources/sql/mapper/fims/excl/opnnSbmsn-mapper.xml +++ b/src/main/resources/sql/mapper/fims/excl/opnnSbmsn-mapper.xml @@ -293,6 +293,10 @@ , OS.ANS_TM , (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM , OS.ANS_CN + , (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') AS RDUCT_AMT 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') diff --git a/src/main/resources/sql/mapper/fims/levy/rduct-mapper.xml b/src/main/resources/sql/mapper/fims/levy/rduct-mapper.xml index 058cd709..401d3444 100644 --- a/src/main/resources/sql/mapper/fims/levy/rduct-mapper.xml +++ b/src/main/resources/sql/mapper/fims/levy/rduct-mapper.xml @@ -25,7 +25,7 @@ - + SELECT R.RDUCT_ID /* 감경 ID */ , R.RDUCT_YMD /* 감경 일자 */ , R.RDUCT_RSN_CD /* 감경 사유 코드 */ @@ -70,7 +70,7 @@ + + SELECT C.CRDN_ID /* 단속 ID */ + , C.SGG_CD /* 시군구 코드 */ + , C.TASK_SE_CD /* 업무 구분 코드 */ + , CONCAT(C.CRDN_YMD,C.CRDN_TM) AS CRDN_YMD_TM /* 단속 일시 */ + , C.VHRNO /* 차량 번호 */ + , C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */ + , C.FFNLG_RDUCT_RT /* 과태료 감경 율 */ + , C.FFNLG_AMT /* 과태료 금액 */ + , C.ADVNTCE_AMT /* 사전통지금액 */ + , C.CRDN_STTS_CD /* 단속 상태 코드 */ + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ + , P.RTPYR_ID /* 납부자 ID */ + , P.RTPYR_NO /* 납부자 번호 */ + , P.RTPYR_NM /* 납부자 명 */ + , R.RDUCT_ID /* 감경 ID */ + , R.RDUCT_YMD /* 감경 일자 */ + , R.RDUCT_RSN_CD /* 감경 사유 코드 */ + , (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM /* 감경 사유 명 */ + , R.RDUCT_AMT /* 감경 금액 */ + , R.ETC_CN /* 감액 기타 내용 */ + , R.DEL_YN /* 삭제 여부 */ + , R.REG_DT /* 등록 일시 */ + , R.RGTR /* 등록자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM /* 등록자 명 */ + , R.MDFCN_DT /* 수정 일시 */ + , R.MDFR /* 수정자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM /* 수정자 명 */ + , R.DEL_DT /* 삭제 일시 */ + , R.DLTR /* 삭제자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */ + , R.DEL_RSN /* 삭제 사유 */ + , L.LEVY_ID /* 부과 ID */ + , L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT /* 부과 금액 */ + , L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT /* 수납 금액 */ + , L.RDCAMT_PCPTAX + RDCAMT_ADAMT AS RDCAMT_AMT /* 감액 금액 */ + , L.SUM_AMT /* 합계 금액 */ + FROM TB_CRDN C + INNER 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') + LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') + +