의견제출 심의 및 의견제출 삭제 수정.

main
jjh 1 year ago
parent f994f4c4e7
commit 378587ab00

@ -53,11 +53,6 @@ public class CrdnSttsHstry extends AbstractEntity {
*/ */
private String etcCn; private String etcCn;
/**
*
*/
private String useYn;
/** /**
* *
*/ */

@ -18,7 +18,7 @@ public class CrdnSttsHstryQuery extends CmmnQuery {
private String crdnId; // 단속 ID private String crdnId; // 단속 ID
private String crdnSttsCd; // 단속 상태 코드 private String crdnSttsCd; // 단속 상태 코드
private String taskDtlId; // 업무 상세 ID private String taskDtlId; // 업무 상세 ID
private String useYn; // 사용 여부 private String useYN; // 사용 여부
public String getSttsHstryId() { public String getSttsHstryId() {
return ifEmpty(sttsHstryId, () -> null); return ifEmpty(sttsHstryId, () -> null);
@ -60,12 +60,12 @@ public class CrdnSttsHstryQuery extends CmmnQuery {
return self(); return self();
} }
public String getUseYn() { public String getUseYN() {
return ifEmpty(useYn, () -> null); return ifEmpty(useYN, () -> null);
} }
public <T extends CrdnSttsHstryQuery> T setUseYn(String useYn) { public <T extends CrdnSttsHstryQuery> T setUseYN(String useYN) {
this.useYn = useYn; this.useYN = useYN;
return self(); return self();
} }

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

@ -57,22 +57,4 @@ public interface CrdnSttsHstryService {
*/ */
boolean remove(CrdnSttsHstry crdnSttsHstry); boolean remove(CrdnSttsHstry crdnSttsHstry);
/** , .
* @param crdnSttsHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry);
/** , .
* @param crdnSttsHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean removeHstryUpdateCrdnSttsCd(String crdnId, String newCrdnSttsCd);
} }

@ -50,8 +50,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
* @param crdnId ID * @param crdnId ID
* @return * @return
*/ */
public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd) { public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYN) {
return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd); return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, useYN);
} }
/** . /** .
@ -62,8 +62,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
* </ul> * </ul>
*/ */
public boolean create(CrdnSttsHstry crdnSttsHstry) { public boolean create(CrdnSttsHstry crdnSttsHstry) {
if (crdnSttsHstry.getUseYn() == null) { if (crdnSttsHstry.getUseYN() == null) {
crdnSttsHstry.setUseYn("Y"); crdnSttsHstry.setUseYN("Y");
} }
return crdnSttsHstryMapper.insert(crdnSttsHstry); return crdnSttsHstryMapper.insert(crdnSttsHstry);
@ -113,8 +113,8 @@ public class CrdnSttsHstryBean extends AbstractComponent {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
if (crdnSttsHstry.getUseYn() == null) { if (crdnSttsHstry.getUseYN() == null) {
crdnSttsHstry.setUseYn("Y"); crdnSttsHstry.setUseYN("Y");
} }
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다.
@ -141,53 +141,80 @@ public class CrdnSttsHstryBean extends AbstractComponent {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
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) 신규 등록 // 단속 ID에 해당하는 단속상태코드의 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다.
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(TB_CRDN_STTS_HSTRY) DataObject crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, "Y");
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다. if (crdnSttsHstryInfo == null) {
DataObject infoCrdnSttsHstry = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, ""); // 단속상태이력(TB_CRDN_STTS_HSTRY) 조회 throw new RuntimeException("단속상태이력 자료가 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback
}
if (!crdnSttsCd.equals("")) {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
// 신규 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다. crdnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID"));
if (!newCrdnSttsCd.equals("") ) { crdnSttsHstry.setUseYN("N");
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");
retSuccess = crdnSttsHstryMapper.insert(newCrdnSttsHstry); retSuccess = crdnSttsHstryMapper.update(crdnSttsHstry);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. throw new RuntimeException("단속상태이력 대장에 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("신규 단속상태이력 정보 등록 중 오류가 발생하였습니다.");
} }
} }
// 단속(TB_CRDN) 대장의 단속 상태 코드를 수정 한다. // 삭제 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다.
crdnSttsHstry.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); // 단속 ID if (!deleteSttsCd.equals("")) {
crdnSttsHstry.setCrdnSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); // 상태 코드 // 단속상태가 의견제출접수(31)가 아니면서, 삭제상태코드가 의견제출삭제(92)나 경찰서이첩삭제(97) 일 경우
crdnSttsHstry.setCrdnSttsChgDt(infoCrdnSttsHstry.string("BFR_STTS_CHG_DT")); // 상태 변경 일시 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 (crdnSttsHstryInfo == null) {
if (!retSuccess) { throw new RuntimeException("단속상태이력에 의견제출 접수 이력이 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. }
throw new RuntimeException("단속 대장에 단속상태코드 변경 중 오류가 발생하였습니다.");
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) 대장을 등록 한다. if (insertBfrSttsYn) {
newCrdnSttsHstry.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); // 단속 ID // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록 한다.
newCrdnSttsHstry.setBfrSttsCd(newCrdnSttsCd); // 이전 상태 코드 CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
newCrdnSttsHstry.setBfrSttsChgDt(newCrdnSttsHstry.getCreatedAt()); // 이전 상태 변경 일시
newCrdnSttsHstry.setCrdnSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); // 단속 상태 코드
newCrdnSttsHstry.setUseYn("Y");
retSuccess = crdnSttsHstryMapper.insert(newCrdnSttsHstry); crdnSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID"));
if (!retSuccess) { crdnSttsHstry.setBfrSttsCd(deleteSttsCd);
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백.. crdnSttsHstry.setBfrSttsChgDt(crdnSttsHstry.getCreatedAt());
throw new RuntimeException("이전 단속상태이력 정보 등록 중 오류가 발생하였습니다."); 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; return true;

@ -55,14 +55,4 @@ public class CrdnSttsHstryServiceBean extends AbstractServiceBean implements Crd
return crdnSttsHstryBean.remove(crdnSttsHstry); 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);
}
} }

@ -1,11 +1,9 @@
package cokr.xit.fims.excl.service.bean; package cokr.xit.fims.excl.service.bean;
import java.io.File; import java.io.File;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -162,8 +160,7 @@ public class CrdnReRegBean extends AbstractComponent {
// 단속 대장 입력 // 단속 대장 입력
retSuccess = crdnBean.create(null, newCrdn, fileInfoList); retSuccess = crdnBean.create(null, newCrdn, fileInfoList);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다.");
} }
// 재부과 대장 등록 // 재부과 대장 등록
@ -172,8 +169,7 @@ public class CrdnReRegBean extends AbstractComponent {
retSuccess = crdnReRegMapper.insert(crdnReReg); retSuccess = crdnReRegMapper.insert(crdnReReg);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("재부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("재부과 대장 등록에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";

@ -134,8 +134,7 @@ public class LevyExclBean extends AbstractComponent {
// 부과제외(TB_LEVY_EXCL) 대장을 등록 한다. // 부과제외(TB_LEVY_EXCL) 대장을 등록 한다.
retSuccess = levyExclMapper.insert(levyExcl); retSuccess = levyExclMapper.insert(levyExcl);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("부과제외 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과제외 대장 등록에 실패하였습니다.");
} }
// 단속상태이력(TB_CRDN_STTS_HSTRY) // 단속상태이력(TB_CRDN_STTS_HSTRY)
@ -150,8 +149,7 @@ public class LevyExclBean extends AbstractComponent {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다.");
} }
// 전액 감액일 경우 부과(TB_LEVY)에 감액금액 입력이 필요.. // 전액 감액일 경우 부과(TB_LEVY)에 감액금액 입력이 필요..
@ -179,8 +177,7 @@ public class LevyExclBean extends AbstractComponent {
// 부과제외(TB_LEVY_EXCL) 대장을 수정 한다. // 부과제외(TB_LEVY_EXCL) 대장을 수정 한다.
retSuccess = levyExclMapper.update(levyExcl); retSuccess = levyExclMapper.update(levyExcl);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("부과제외 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과제외 대장 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";
@ -197,69 +194,62 @@ public class LevyExclBean extends AbstractComponent {
*/ */
public String removeLevyExcl(LevyExcl levyExcl) { public String removeLevyExcl(LevyExcl levyExcl) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String retMessage = "[F] "; // 처리 결과 메시지
String newHstrySttsCd = ""; // 신규 상태 코드
// 단속 ID로 단속, 부과제외 정보 조회
LevyExclQuery req = new LevyExclQuery();
req.setLevyExclId(levyExcl.getLevyExclId());
req.setDelYn("N");
DataObject infoCrdnLevyExcl = levyExclMapper.selectLevyExclInfo(req); // 부과제외(TB_LEVY_EXCL) 정보 조회
DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setLevyExclId(levyExcl.getLevyExclId())
.setDelYn("N"));
// 부과제외 ID가 조회되지 않았다면 종료.. // 부과제외 ID가 조회되지 않았다면 종료..
if (infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) { if (levyExclInfo.string("LEVY_EXCL_ID").equals("")) {
retMessage = "[F] 작업 중 자료가 존재하지 않습니다."; retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>부과제외 자료가 존재하지 않습니다.";
return retMessage; return retMessage;
} }
// 단속 상태 코드(CRDN_STTS_CD) 확인.. // 단속 상태 코드(CRDN_STTS_CD) 확인..
if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손) if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1") && !levyExclInfo.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손)
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다.";
return retMessage; return retMessage;
} else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("2") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고 } else if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("2") && !levyExclInfo.string("CRDN_STTS_CD").equals("83")) { // 계고
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다.";
return retMessage; return retMessage;
} else if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("5") && !infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("80")) { // 부과취소 } else if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("5") && !levyExclInfo.string("CRDN_STTS_CD").equals("80")) { // 부과취소
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다.";
return retMessage; return retMessage;
} }
// 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다. // 부과제외(TB_LEVY_EXCL) 대장을 삭제 한다.
retSuccess = levyExclMapper.delete(levyExcl); retSuccess = levyExclMapper.delete(levyExcl);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과제외 대장 삭제에 실패하였습니다.");
} }
if (infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손) // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 부과제외 이력삭제 및 부과제외삭제 이력을 등록 한다.
newHstrySttsCd = "91"; String deleteCrdnSttsCd = "";
} else if (infoCrdnLevyExcl.string("CRDN_STTS_CD").equals("83")) { // 계고 if (levyExclInfo.string("CRDN_STTS_CD").equals("81")) {
newHstrySttsCd = "93"; deleteCrdnSttsCd = "91"; // 비부과(서손) 삭제
} else if (levyExclInfo.string("CRDN_STTS_CD").equals("83")) {
deleteCrdnSttsCd = "93"; // 계고 삭제
} }
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다. retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(levyExclInfo.string("CRDN_ID"), levyExclInfo.string("CRDN_STTS_CD"), deleteCrdnSttsCd, true);
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnLevyExcl.string("CRDN_ID"), newHstrySttsCd);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과제외 삭제 중 단속 대장의 단속상태 수정에 실패하였습니다.");
} }
// 부과제외 구분이 비부과(서손)일 경우 // 부과제외 구분이 비부과(서손)일 경우
if (infoCrdnLevyExcl.string("LEVY_EXCL_SE_CD").equals("1")) { if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1")) {
// 표지정보 확인여부가 조회미대상이면 -> 미확인 으로 // 표지정보 확인여부가 조회미대상이면 -> 미확인 으로
// 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니 // 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니
if (infoCrdnLevyExcl.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상 if (levyExclInfo.string("PARKNG_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상
Crdn crdn = new Crdn(); // 단속(TB_CRDN) 대장 Crdn crdn = new Crdn();
crdn.setCrdnId(levyExcl.getCrdnId()); // 단속 ID crdn.setCrdnId(levyExclInfo.string("CRDN_ID"));
crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인 crdn.setParkngPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인
retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn); retSuccess = levyExclMapper.updateParkngPsbltyRsltCd(crdn);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("부과제외 삭제 중 단속 대장의 표지정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("부과제외 삭제 중 단속 대장의 표지정보 수정에 실패하였습니다.");
} }
} }
} }

@ -15,6 +15,7 @@ import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.dao.OpnnSbmsnMapper; import cokr.xit.fims.excl.dao.OpnnSbmsnMapper;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct; import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.service.bean.RductBean; import cokr.xit.fims.levy.service.bean.RductBean;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
@ -37,7 +38,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
@Resource(name = "opnnSbmsnMapper") @Resource(name = "opnnSbmsnMapper")
private OpnnSbmsnMapper opnnSbmsnMapper; private OpnnSbmsnMapper opnnSbmsnMapper;
/* 첨부파일 Bean */ /** 첨부파일 Bean */
@Resource(name="fileBean") @Resource(name="fileBean")
private FileBean fileBean; private FileBean fileBean;
@ -110,8 +111,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 의견제출 대장을 등록 한다. // 의견제출 대장을 등록 한다.
retSuccess = opnnSbmsnMapper.insert(opnnSbmsn); retSuccess = opnnSbmsnMapper.insert(opnnSbmsn);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다.");
} }
// 의견제출 파일 첨부하기 // 의견제출 파일 첨부하기
@ -135,8 +135,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다. // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다.");
} }
} }
@ -148,8 +147,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정 retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";
@ -174,8 +172,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE) fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKey(opnnSbmsn.getOpnnId())); .setInfoKey(opnnSbmsn.getOpnnId()));
// 파일 등록 fileBean.create(fileInfoList); // 파일 등록
fileBean.create(fileInfoList);
// 의견제출 ID로 파일(TB_FILE) 정보 조회 // 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE) List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE)
@ -196,8 +193,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 의견제출 대장을 수정 한다. // 의견제출 대장을 수정 한다.
retSuccess = opnnSbmsnMapper.update(opnnSbmsn); retSuccess = opnnSbmsnMapper.update(opnnSbmsn);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";
@ -219,30 +215,40 @@ public class OpnnSbmsnBean extends AbstractComponent {
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD) String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
// 의견제출(TB_OPNN_SBMSN) 자료 조회 // 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()) DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
.setDelYn("N")); // 과태료 감경 대장(TB_RDUCT) 자료 조회
DataObject crdnRductInfo = rductBean.getRductInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 수납 또는 취소된 자료를 의견제출 수용할 수 없다 // 의견제출 ID가 조회되지 않았다면 종료..
if (!infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") && !infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) { if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 상태 입니다."; retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>의견제출 자료가 존재하지 않습니다.";
return retMessage;
}
// 단속 상태가 수납 또는 취소된 자료를 의견제출 수용할 수 없다.
if (opnnSbmsnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>단속 상태가 " + opnnSbmsnInfo.string("CRDN_STTS_NM") + " 입니다.";
return retMessage;
}
// 과태료 감경 대장에 이미 감경이 등록 되었다면 의견제출 과태료감경(04)을 처리할 수 없다.
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") && !crdnRductInfo.string("RDUCT_ID").equals("")) {
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료는 과태료 감경이 이미 등록 되었습니다.";
return retMessage; return retMessage;
} }
// 의견제출 답변을 수정 한다. // 의견제출 답변을 수정 한다.
retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn); retSuccess = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 심의 처리에 실패하였습니다.");
} }
// 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면.. // 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면..
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")) { // 수용 if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용
newCrdnSttsCd = "82"; // 의견제출 수용 newCrdnSttsCd = "82"; // 의견제출 수용
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03") } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03")
|| opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외 || opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회 // 단속 상태 이력(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"); // 이전 단속상태코드 유지 newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) { } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) {
@ -250,52 +256,35 @@ public class OpnnSbmsnBean extends AbstractComponent {
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) { } else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) {
newCrdnSttsCd = "31"; newCrdnSttsCd = "31";
} else { } else {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다.");
} }
if (infoCrdnOpnnSbmsn.string("RDUCT_ID").equals("")) { // 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면..
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) { if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
Rduct rduct = new Rduct(); Rduct rduct = new Rduct();
rduct.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); rduct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
rduct.setRtpyrId(infoCrdnOpnnSbmsn.string("RTPYR_ID")); rduct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID"));
rduct.setRductYmd(opnnSbmsn.getAnsYmd()); rduct.setRductYmd(opnnSbmsn.getAnsYmd());
rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd()); rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd());
rduct.setRductAmt(opnnSbmsn.getRductAmt()); rduct.setRductAmt(opnnSbmsn.getRductAmt());
rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록"); rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록");
retMessage = rductBean.createRduct(rduct); retMessage = rductBean.createRduct(rduct);
if (retMessage.contains("[F]")) { if (retMessage.contains("[F]")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
}
} }
} else { } else {
Rduct rduct = new Rduct(); // 의견제출 심의로 인한 과태료 감경 대장인지 확인
if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
Rduct rduct = new Rduct();
// 의견제출로 인한 감경인지 확인 rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID"));
if (infoCrdnOpnnSbmsn.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) { rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
rduct.setRductId(infoCrdnOpnnSbmsn.string("RDUCT_ID")); retMessage = rductBean.removeRduct(rduct);
rduct.setRductYmd(opnnSbmsn.getAnsYmd()); if (retMessage.contains("[F]")) {
rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd()); throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
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("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
}
} }
} }
} }
@ -303,18 +292,17 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 단속상태이력(TB_CRDN_STTS_HSTRY) 변경 // 단속상태이력(TB_CRDN_STTS_HSTRY) 변경
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); crdnSttsHstry.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD")); crdnSttsHstry.setBfrSttsCd(opnnSbmsnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT")); crdnSttsHstry.setBfrSttsChgDt(opnnSbmsnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId()); crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 심의 처리"); crdnSttsHstry.setEtcCn("의견제출 심의 처리로 인한 단속상태 변경");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다. // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다.");
} }
} }
@ -335,42 +323,81 @@ public class OpnnSbmsnBean extends AbstractComponent {
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String retMessage = "[F] "; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 자료 조회 // 의견제출(TB_OPNN_SBMSN) 정보 조회
DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()) DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId())
.setDelYn("N")); .setDelYn("N"));
// 의견제출 ID가 조회되지 않았다면 종료..
if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
retMessage = "[F] 작업 중 오류가 발생하였습니다.<br>의견제출 자료가 존재하지 않습니다.";
return retMessage;
}
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다.
retSuccess = opnnSbmsnMapper.delete(opnnSbmsn);
if (!retSuccess) {
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 첨부파일 삭제 // 첨부파일 삭제
String[] deleteFiles = {opnnSbmsn.getOpnnId()}; String[] deleteFiles = {opnnSbmsn.getOpnnId()};
fileBean.remove(OpnnSbmsn.INF_TYPE, deleteFiles); fileBean.remove(OpnnSbmsn.INF_TYPE, deleteFiles);
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다. // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 의견제출 이력삭제 및 의견제출삭제 이력을 등록 한다.
retSuccess = opnnSbmsnMapper.delete(opnnSbmsn); 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) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다.");
} }
// 단속 상태 코드가 의견제출 접수(31) 또는 의견제출 수용(82) 이라면... 이전 단속 상태 코드로 복원 한다. // 의견제출 심의로 인한 과태료 감경 대장인지 확인
if (infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("31") || infoCrdnOpnnSbmsn.string("CRDN_STTS_CD").equals("82")) { if (opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("04")) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장을 삭제 한다. // 과태료 감경 대장(TB_RDUCT) 자료 조회
retSuccess = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(infoCrdnOpnnSbmsn.string("CRDN_ID"), "92"); DataObject crdnRductInfo = rductBean.getRductInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
throw new RuntimeException("의견제출 삭제 중 단속상태 변경에 실패하였습니다."); 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) 정보를 수정 한다. // 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
Crdn crdn = new Crdn(); Crdn crdn = new Crdn();
crdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("N"); crdn.setOpnnSbmsnYn("N");
retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정 retSuccess = opnnSbmsnMapper.updateCrdn(crdn); // 단속(TB_CRDN) 대장 수정
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";

@ -14,7 +14,7 @@
<result property="bfrSttsChgDt" column="BFR_STTS_CHG_DT" /> <!-- 이전 상태 변경 일시 --> <result property="bfrSttsChgDt" column="BFR_STTS_CHG_DT" /> <!-- 이전 상태 변경 일시 -->
<result property="crdnSttsCd" column="CRDN_STTS_CD" /> <!-- 단속 상태 코드 --> <result property="crdnSttsCd" column="CRDN_STTS_CD" /> <!-- 단속 상태 코드 -->
<result property="taskDtlId" column="TASK_DTL_ID" /> <!-- 업무 상세 ID --> <result property="taskDtlId" column="TASK_DTL_ID" /> <!-- 업무 상세 ID -->
<result property="useYn" column="USE_YN" /> <!-- 사용 여부 --> <result property="useYN" column="USE_YN" /> <!-- 사용 여부 -->
<result property="etcCn" column="ETC_CN" /> <!-- 기타 내용 --> <result property="etcCn" column="ETC_CN" /> <!-- 기타 내용 -->
<result property="regDt" column="REG_DT" /> <!-- 등록 일시 --> <result property="regDt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="rgtr" column="RGTR" /> <!-- 등록자 --> <result property="rgtr" column="RGTR" /> <!-- 등록자 -->
@ -26,13 +26,13 @@
SELECT CSH.STTS_HSTRY_ID /* 상태 이력 ID */ SELECT CSH.STTS_HSTRY_ID /* 상태 이력 ID */
, CSH.CRDN_ID /* 단속 ID */ , CSH.CRDN_ID /* 단속 ID */
, CSH.BFR_STTS_CD /* 이전 상태 코드 */ , 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.BFR_STTS_CHG_DT /* 이전 상태 변경 일시 */
, CSH.CRDN_STTS_CD /* 단속 상태 코드 */ , 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.TASK_DTL_ID /* 업무 상세 ID */
, CSH.USE_YN /* 사용 여부 */ , 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.ETC_CN /* 기타 내용 */
, CSH.REG_DT /* 등록 일시 */ , CSH.REG_DT /* 등록 일시 */
, CSH.RGTR /* 등록자 */ , CSH.RGTR /* 등록자 */
@ -50,8 +50,8 @@
<if test="crdnId != null"> <if test="crdnId != null">
AND CSH.CRDN_ID = #{crdnId} AND CSH.CRDN_ID = #{crdnId}
</if> </if>
<if test="useYn != null"> <if test="useYN != null">
AND CSH.USE_YN = #{useYn} AND CSH.USE_YN = #{useYN}
</if> </if>
</where> </where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
@ -70,8 +70,8 @@
<if test="crdnSttsCd != null"> <if test="crdnSttsCd != null">
AND CSH.CRDN_STTS_CD = #{crdnSttsCd} 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}
</if> </if>
</where> </where>
<include refid="utility.sortBy" /> <include refid="utility.sortBy" />
@ -106,7 +106,7 @@
, #{crdnSttsHstry.crdnSttsCd} /* 단속 상태 코드 */ , #{crdnSttsHstry.crdnSttsCd} /* 단속 상태 코드 */
, #{crdnSttsHstry.taskDtlId} /* 업무 상세 ID */ , #{crdnSttsHstry.taskDtlId} /* 업무 상세 ID */
, #{crdnSttsHstry.etcCn} /* 기타 내용 */ , #{crdnSttsHstry.etcCn} /* 기타 내용 */
, #{crdnSttsHstry.useYn} /* 단속 상태 변경 일시 */ , #{crdnSttsHstry.useYN} /* 단속 상태 변경 일시 */
, #{crdnSttsHstry.createdAt} /* 등록 일시 */ , #{crdnSttsHstry.createdAt} /* 등록 일시 */
, #{crdnSttsHstry.createdBy} /* 등록자 */ , #{crdnSttsHstry.createdBy} /* 등록자 */
, #{crdnSttsHstry.lastModified} /* 수정 일시 */ , #{crdnSttsHstry.lastModified} /* 수정 일시 */
@ -116,7 +116,7 @@
<update id="updateCrdnSttsHstry" parameterType="map">/* 단속 상태 이력 수정(crdnSttsHstryMapper.updateCrdnSttsHstry) */ <update id="updateCrdnSttsHstry" parameterType="map">/* 단속 상태 이력 수정(crdnSttsHstryMapper.updateCrdnSttsHstry) */
UPDATE TB_CRDN_STTS_HSTRY UPDATE TB_CRDN_STTS_HSTRY
SET USE_YN = #{crdnSttsHstry.useYn} /* 사용 여부 */ SET USE_YN = #{crdnSttsHstry.useYN} /* 사용 여부 */
, MDFCN_DT = #{crdnSttsHstry.lastModified} /* 수정 일시 */ , MDFCN_DT = #{crdnSttsHstry.lastModified} /* 수정 일시 */
, MDFR = #{crdnSttsHstry.modifiedBy} /* 수정자 */ , MDFR = #{crdnSttsHstry.modifiedBy} /* 수정자 */
WHERE STTS_HSTRY_ID = #{crdnSttsHstry.sttsHstryId} /* 상태 이력 ID */ WHERE STTS_HSTRY_ID = #{crdnSttsHstry.sttsHstryId} /* 상태 이력 ID */
@ -144,7 +144,7 @@
, CRDN_STTS_CHG_DT = #{crdnSttsHstry.crdnSttsChgDt} /* 단속 상태 변경 일시 */ , CRDN_STTS_CHG_DT = #{crdnSttsHstry.crdnSttsChgDt} /* 단속 상태 변경 일시 */
</when> </when>
<otherwise> <otherwise>
, CRDN_STTS_CHG_DT = <include refid="utility.now" /> /* 단속 상태 변경 일시 */ , CRDN_STTS_CHG_DT = #{crdnSttsHstry.lastModified} /* 단속 상태 변경 일시 */
</otherwise> </otherwise>
</choose> </choose>
, MDFCN_DT = #{crdnSttsHstry.lastModified} /* 수정 일시 */ , MDFCN_DT = #{crdnSttsHstry.lastModified} /* 수정 일시 */

@ -293,6 +293,10 @@
, OS.ANS_TM <!-- 답변 시각 --> , OS.ANS_TM <!-- 답변 시각 -->
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 --> , (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 -->
, OS.ANS_CN <!-- 답변 내용 --> , 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 FROM TB_CRDN C
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_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N') LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')

@ -25,7 +25,7 @@
<result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 --> <result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 -->
</resultMap> </resultMap>
<sql id="select"> <sql id="selectList">
SELECT R.RDUCT_ID /* 감경 ID */ SELECT R.RDUCT_ID /* 감경 ID */
, R.RDUCT_YMD /* 감경 일자 */ , R.RDUCT_YMD /* 감경 일자 */
, R.RDUCT_RSN_CD /* 감경 사유 코드 */ , R.RDUCT_RSN_CD /* 감경 사유 코드 */
@ -70,7 +70,7 @@
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */ <select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
<include refid="utility.paging-prefix" /> <include refid="utility.paging-prefix" />
<include refid="select" /> <include refid="selectList" />
<where> <where>
<if test="schRductYmdFrom != null"> <if test="schRductYmdFrom != null">
AND R.RDUCT_YMD <![CDATA[ >= ]]> #{schRductYmdFrom} /* 감경 일자 시작 */ AND R.RDUCT_YMD <![CDATA[ >= ]]> #{schRductYmdFrom} /* 감경 일자 시작 */
@ -127,14 +127,58 @@
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>
<sql id="select">
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')
</sql>
<select id="selectRducts" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 객체 가져오기(rductMapper.selectRducts) */ <select id="selectRducts" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 객체 가져오기(rductMapper.selectRducts) */
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 삭제 여부 */
</if>
<if test="rductId != null"> <if test="rductId != null">
AND R.RDUCT_ID = #{rductId} /* 감경 ID */ AND R.RDUCT_ID = #{rductId} /* 감경 ID */
</if>
<if test="crdnId != null">
AND R.CRDN_ID = #{crdnId} /* 단속 ID */
</if> </if>
<if test="delYn != null"> <if test="delYn != null">
AND R.DEL_YN = #{delYn} /* 삭제 여부 */ AND R.DEL_YN = #{delYn} /* 삭제 여부 */

@ -243,7 +243,6 @@
if (obj == "04") { if (obj == "04") {
// 필수 선택 추가 필요 // 필수 선택 추가 필요
$("#divRductRsnCd--${pageName}").show(); $("#divRductRsnCd--${pageName}").show();
$("#divRductAmt--${pageName}").show(); $("#divRductAmt--${pageName}").show();
} }

@ -394,11 +394,6 @@
// 단속 상태 코드 // 단속 상태 코드
let crdnSttsCd = ${pageName}Control.dataset.getValue("CRDN_STTS_CD"); 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 : "remove" callPurpose : "remove"
, crdnId : ${pageName}Control.dataset.getValue("CRDN_ID") // 단속 ID , crdnId : ${pageName}Control.dataset.getValue("CRDN_ID") // 단속 ID

@ -156,6 +156,7 @@
<th class="cmn" style="width: 140px;">등록사용자</th> <th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 140px;">단속상태</th> <th class="cmn" style="width: 140px;">단속상태</th>
<th class="cmn" style="width: 280px;">기타내용</th> <th class="cmn" style="width: 280px;">기타내용</th>
<th class="cmn" style="width: 100px;">사용여부</th>
<th class="cmn dummy-th"></th> <th class="cmn dummy-th"></th>
</tr> </tr>
</thead> </thead>
@ -167,12 +168,13 @@
<td class="cmn text-center" onclick="{onclick}">{RGTR_NM}</td> <td class="cmn text-center" onclick="{onclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}">{CRDN_STTS_NM}</td> <td class="cmn text-center" onclick="{onclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}">{ETC_CN}</td> <td class="cmn text-start" onclick="{onclick}">{ETC_CN}</td>
<td class="cmn text-center" onclick="{onclick}">{USE_YN_NM}</td>
<td class="cmn dummy-td"></td> <td class="cmn dummy-td"></td>
</tr> </tr>
</template> </template>
<template id="${infoPrefix}NotFound--${pageName}${pageDataName3}"> <template id="${infoPrefix}NotFound--${pageName}${pageDataName3}">
<tr class="odd"> <tr class="odd">
<td valign="top" colspan="5" class="dataTables_empty text-center">처리상태 이력 정보를 찾지 못했습니다.</td> <td valign="top" colspan="6" class="dataTables_empty text-center">처리상태 이력 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
</table> </table>

Loading…
Cancel
Save