의견제출 심의 수정.

main
JoJH 1 year ago
parent b04f2b29cd
commit 96e0ba105c

@ -24,11 +24,6 @@ public class OpnnSbmsn extends AbstractEntity {
*/
private String crdnId;
/**
* ID
*/
private String rdctId;
/**
*
*/
@ -185,6 +180,11 @@ public class OpnnSbmsn extends AbstractEntity {
*/
private String opnnSbmsnYn;
/**
* (TB_RDCT) - ID
*/
private String rdctId;
/**
* (TB_RDCT) -
*/

@ -28,409 +28,408 @@ import cokr.xit.foundation.data.DataObject;
*
* <pre>
* ============ ============
* 2023-06-27 JoJH
* 2023-06-27 JoJH
* ================================
* </pre>
*/
@Component("opnnSbmsnBean")
public class OpnnSbmsnBean extends AbstractBean {
/** 의견제출 대장 정보 DAO */
@Resource(name="opnnSbmsnMapper")
private OpnnSbmsnMapper opnnSbmsnMapper;
/** 첨부파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** 단속 상태 이력 정보 Bean */
@Resource(name="crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
/** 과태료 감경 대장 정보 Bean */
@Resource(name="rdctBean")
private RdctBean rdctBean;
/** .
* @param req
* @return
*/
public List<DataObject> getOpnnSbmsnList(LevyExclQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
if (req.getBy() == null) {
req.setOrderBy("REG_DT");
} else {
req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
}
}
return opnnSbmsnMapper.selectOpnnSbmsnList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getOpnnSbmsns(LevyExclQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("OS.OPNN_ID DESC");
}
return opnnSbmsnMapper.selectOpnnSbmsns(req);
}
/** .
* @param req
* @return
*/
public DataObject getOpnnSbmsnInfo(LevyExclQuery req) {
return opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req) {
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("OS.OPNN_ID DESC");
}
return opnnSbmsnMapper.selectOpnnSbmsnDlbrDecsns(req);
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속 ID로 단속, 의견제출 정보 조회
DataObject crdnOpnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 의견제출ID가 있다면 이미 자료가 존재하므로 종료..
if (!crdnOpnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
return rtnMsg;
}
// 단속 상태 코드가 부과(51) 보다 크다면, 의견제출 등록을 할 수 없다. 종료..
if (crdnOpnnSbmsnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnOpnnSbmsnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
// 의견제출 대장을 등록한다.
opnnSbmsn.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수
rtnNocs = opnnSbmsnMapper.insertOpnnSbmsn(opnnSbmsn); // 의견제출 등록
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 의견제출 파일 첨부하기
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE).setInfoKey(opnnSbmsn.getOpnnId()));
fileBean.create(fileInfoList);
}
// 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견제출 중으로 수정한다.
if (crdnOpnnSbmsnInfo.number("CRDN_STTS_CD").intValue() <= 42) { // 사전통보 완료
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnOpnnSbmsnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnOpnnSbmsnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견제출 접수
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다.
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("Y");
rtnNocs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속 대장 수정
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 의견제출 첨부파일 등록
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKey(opnnSbmsn.getOpnnId()));
fileBean.create(fileInfoList); // 파일 등록
// 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKeys(opnnSbmsn.getOpnnId())
.setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
}
// 의견제출 대장을 수정한다.
int rtnNocs = opnnSbmsnMapper.updateOpnnSbmsn(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** () .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
// 과태료 감경 대장(TB_RDCT) 자료 조회
DataObject crdnRdctInfo = rdctBean.getRdctInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 의견제출 ID가 조회되지 않았다면 종료..
if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>의견제출 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 단속 상태가 수납 또는 취소된 자료를 의견제출 수용할 수 없다.
if (opnnSbmsnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>단속 상태가 " + opnnSbmsnInfo.string("CRDN_STTS_NM") + " 입니다.";
return rtnMsg;
}
// 과태료 감경 대장에 이미 감경이 등록 되었다면 의견제출 과태료감경(04)을 처리할 수 없다.
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") && !crdnRdctInfo.string("RDCT_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료는 과태료 감경이 이미 등록 되었습니다.";
return rtnMsg;
}
// 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면..
if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD"))) {
// 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면 감경 등록
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
Rdct rdct = new Rdct();
rdct.setSggCd(opnnSbmsnInfo.string("SGG_CD"));
rdct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
rdct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID"));
rdct.setRdctYmd(opnnSbmsn.getAnsYmd());
rdct.setRdctRsnCd(opnnSbmsn.getRdctRsnCd());
rdct.setRdctAmt(opnnSbmsn.getRdctAmt());
rdct.setEtcCn("의견제출 심의 처리에 의한 감경 등록");
rtnMsg = rdctBean.createRdct(rdct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 감면 ID
opnnSbmsn.setRdctId(rdct.getRdctId());
} else {
if (!opnnSbmsnInfo.string("RDCT_ID").equals("")) {
Rdct rdct = new Rdct();
rdct.setRdctId(opnnSbmsnInfo.string("RDCT_ID"));
rdct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
rtnMsg = rdctBean.removeRdct(rdct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 감면 ID
opnnSbmsn.setRdctId(null);
}
}
// 의견제출 답변을 수정한다.
rtnNocs = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다.
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_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(opnnSbmsnInfo.string("CRDN_ID"), "31", "Y");
newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) {
newCrdnSttsCd = "87"; // 경찰서 이첩
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) {
newCrdnSttsCd = "31";
} else {
throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속상태이력(TB_CRDN_STTS_HSTRY) 변경
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
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("의견제출 심의 처리로 인한 단속상태 변경");
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 정보를 조회한다.
DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
// 의견제출 ID가 조회되지 않았다면 종료..
if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>의견제출 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 의견제출 상태 코드(OPNN_SBMSN_STTS_CD) 확인..
if (!opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("00")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 의견제출 상태가 " + opnnSbmsnInfo.string("OPNN_SBMSN_STTS_NM") + " 입니다.";
return rtnMsg;
}
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제한다.
rtnNocs = opnnSbmsnMapper.deleteOpnnSbmsn(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 첨부파일 삭제
/** 의견제출 대장 정보 DAO */
@Resource(name="opnnSbmsnMapper")
private OpnnSbmsnMapper opnnSbmsnMapper;
/** 첨부파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
/** 단속 상태 이력 정보 Bean */
@Resource(name="crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
/** 과태료 감경 대장 정보 Bean */
@Resource(name="rdctBean")
private RdctBean rdctBean;
/** .
* @param req
* @return
*/
public List<DataObject> getOpnnSbmsnList(LevyExclQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
if (req.getBy() == null) {
req.setOrderBy("REG_DT");
} else {
req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
}
}
return opnnSbmsnMapper.selectOpnnSbmsnList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getOpnnSbmsns(LevyExclQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("OS.OPNN_ID DESC");
}
return opnnSbmsnMapper.selectOpnnSbmsns(req);
}
/** .
* @param req
* @return
*/
public DataObject getOpnnSbmsnInfo(LevyExclQuery req) {
return opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req) {
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("OS.OPNN_ID DESC");
}
return opnnSbmsnMapper.selectOpnnSbmsnDlbrDecsns(req);
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언
boolean rtnScs = false;
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 단속 ID로 단속, 의견제출 정보 조회
DataObject crdnOpnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 의견제출 ID가 있다면 이미 자료가 존재하므로 종료..
if (!crdnOpnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 의견제출 자료가 존재합니다.";
}
// 단속 상태 코드가 부과(51) 보다 크다면, 의견제출 등록을 할 수 없다. 종료..
if (crdnOpnnSbmsnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다."
+ "<br>현재 자료의 단속 상태가 " + crdnOpnnSbmsnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
}
// 오류메세지가 발생하면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
// 의견제출(TB_OPNN_SBMSN) 대장을 등록한다.
rtnNocs = opnnSbmsnMapper.insertOpnnSbmsn(opnnSbmsn); // 의견제출 등록
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 의견제출 파일 첨부하기
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE).setInfoKey(opnnSbmsn.getOpnnId()));
fileBean.create(fileInfoList);
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장 등록 및 단속 대장의 단속 상태 코드를 수정한다.
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnOpnnSbmsnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnOpnnSbmsnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견제출 접수
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 등록 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("Y");
rtnNocs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속 대장 수정
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 등록 중 단속 대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 의견제출 첨부파일 등록
if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKey(opnnSbmsn.getOpnnId()));
fileBean.create(fileInfoList); // 파일 등록
// 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKeys(opnnSbmsn.getOpnnId())
.setOrderBy("FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
}
// 의견제출 대장을 수정한다.
int rtnNocs = opnnSbmsnMapper.updateOpnnSbmsn(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** () .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
// 변수 선언
boolean rtnScs = false;
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
// 과태료 감경 대장(TB_RDCT) 자료 조회
DataObject rdctInfo = rdctBean.getRdctInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 의견제출 ID가 조회되지 않았다면 종료..
if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다."
+ "<br>의견제출 자료가 존재하지 않습니다.";
}
// 과태료 감경 대장에 이미 감경이 등록 되었다면 의견제출 과태료감경(04)을 처리할 수 없다.
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") && !rdctInfo.string("RDCT_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다."
+ "<br>현재 자료는 과태료 감경이 이미 등록 되었습니다.";
}
// 오류메세지가 발생하면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
// 의견제출 답변을 수정한다.
rtnNocs = opnnSbmsnMapper.updateOpnnSbmsnAnswer(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 심의 처리에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 현재 의견제출상태 코드와 변경 할 의견제출상태 코드가 다르다면..
if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD"))) {
// 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면 감경 등록
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
Rdct rdct = new Rdct();
rdct.setSggCd(opnnSbmsnInfo.string("SGG_CD"));
rdct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
rdct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID"));
rdct.setRdctYmd(opnnSbmsn.getAnsYmd());
rdct.setRdctRsnCd(opnnSbmsn.getRdctRsnCd());
rdct.setRdctAmt(opnnSbmsn.getRdctAmt());
rdct.setEtcCn("의견제출 심의 처리에 의한 감경 등록");
rtnMsg = rdctBean.createRdct(rdct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
if (!rdctInfo.string("RDCT_ID").equals("") && (rdctInfo.string("ETC_CN").contains("의견제출"))) {
Rdct rdct = new Rdct();
rdct.setRdctId(rdctInfo.string("RDCT_ID"));
rdct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
rtnMsg = rdctBean.removeRdct(rdct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다.
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
// 심의결과를 접수로 처리할 때 이전 단속상태코드를 확인하여 이전 단속상태코드로 변경한다.
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) {
if (opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("02")) {
crdnSttsHstry.setCrdnSttsCd("82");
} else if (opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("06")) {
crdnSttsHstry.setCrdnSttsCd("87");
} else {
crdnSttsHstry.setCrdnSttsCd("31");
}
crdnSttsHstry.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdnSttsHstry.setEtcCn("의견제출 심의 처리로 인한 단속 상태 변경");
if ("82,87".contains(opnnSbmsnInfo.string("CRDN_STTS_CD"))) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장의 사용 여부를 "N"으로 처리하고, 단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다.
rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 심의(답변) 작업중 단속 대장의 단속상태 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else if (!opnnSbmsnInfo.string("CRDN_STTS_CD").equals("31") && opnnSbmsnInfo.number("CRDN_STTS_CD").intValue() < 50) {
crdnSttsHstry.setBfrSttsCd(opnnSbmsnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(opnnSbmsnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setUseYn("Y");
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 심의(답변) 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
} else {
String newCrdnSttsCd = "";
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) {
newCrdnSttsCd = "82"; // 의견제출 수용
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) {
newCrdnSttsCd = "87"; // 경찰서 이첩
} else if ("01,03,04,05".contains(opnnSbmsn.getOpnnSbmsnSttsCd())) {
// 현재 단속 상태 코드가 의견제출 접수라면 이전 단속 상태 코드로 등록한다.
if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("31")) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회
DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(opnnSbmsnInfo.string("CRDN_ID"), "31", "Y");
newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지
} else {
newCrdnSttsCd = "";
}
} else {
throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback
}
if (!newCrdnSttsCd.equals("")) {
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.setUseYn("Y");
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
// 변수 선언
boolean rtnScs = false;
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 정보를 조회한다.
DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
// 의견제출 ID가 조회되지 않았다면 종료..
if (opnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>의견제출 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 의견제출 상태 코드(OPNN_SBMSN_STTS_CD) 확인..
if (!"00,03".contains(opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD"))) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 의견제출 상태가 " + opnnSbmsnInfo.string("OPNN_SBMSN_STTS_NM") + " 입니다.";
return rtnMsg;
}
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제한다.
rtnNocs = opnnSbmsnMapper.deleteOpnnSbmsn(opnnSbmsn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 첨부파일 삭제
String[] deleteFiles = {opnnSbmsn.getOpnnId()};
fileBean.remove(OpnnSbmsn.INF_TYPE, deleteFiles);
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 의견제출 이력삭제 및 의견제출삭제 이력을 등록한다.
boolean insertBfrSttsYN = false;
String crdnSttsCd = "";
String deltCrdnSttsCd = "";
if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("31")) { // 의견진술 접수
insertBfrSttsYN = true;
crdnSttsCd = opnnSbmsnInfo.string("CRDN_STTS_CD");
deltCrdnSttsCd = "92";
} else if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("82")) { // 의견진술 수용
insertBfrSttsYN = true;
crdnSttsCd = opnnSbmsnInfo.string("CRDN_STTS_CD");
deltCrdnSttsCd = "92";
} else if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("87")) { // 경찰서 이첩
insertBfrSttsYN = true;
crdnSttsCd = opnnSbmsnInfo.string("CRDN_STTS_CD");
deltCrdnSttsCd = "97";
} else {
insertBfrSttsYN = false;
crdnSttsCd = "";
deltCrdnSttsCd = "92";
}
boolean rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(opnnSbmsnInfo.string("CRDN_ID"), crdnSttsCd, deltCrdnSttsCd, opnnSbmsn.getDelRsn(), insertBfrSttsYN);
if (!rtnScs) {
throw new RuntimeException("단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 의견제출 심의로 인한 과태료 감경 대장인지 확인
if (opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("04")) {
// 과태료 감경 대장(TB_RDCT) 자료 조회
DataObject crdnRdctInfo = rdctBean.getRdctInfo(new LevyQuery().setCrdnId(opnnSbmsn.getCrdnId()));
if (crdnRdctInfo != null && crdnRdctInfo.string("RDCT_ETC_CN").contains("의견제출 심의 처리")) {
Rdct rdct = new Rdct();
rdct.setRdctId(opnnSbmsnInfo.string("RDCT_ID"));
rdct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
// 과태료 감경(TB_RDCT) 대장을 삭제한다.
rtnMsg = rdctBean.removeRdct(rdct);
if (!rtnMsg.contains("[S]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("N");
// 단속(TB_CRDN) 대장을 수정한다.
rtnNocs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장의 사용 여부를 "N"으로 처리하고, 단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다.
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); // 단속 ID
crdnSttsHstry.setCrdnSttsCd("31"); // 단속 상태 코드 - 31 의견제출 접수
crdnSttsHstry.setEtcCn(opnnSbmsn.getDelRsn()); // 기타 내용 - 삭제 사유
crdnSttsHstry.setUseYn("N"); // 사용 여부
if (opnnSbmsnInfo.string("CRDN_STTS_CD").equals("31")) {
rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 삭제 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
rtnScs = crdnSttsHstryBean.remove(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("의견제출 삭제 작업중 단속상태 이력 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("N");
// 단속(TB_CRDN) 대장을 수정한다.
rtnNocs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn);
if (rtnNocs != 1) {
throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return "[S] 작업이 정상 처리 되었습니다.";
}
}

@ -10,7 +10,6 @@
<resultMap id="opnnSbmsnRow" type="cokr.xit.fims.excl.OpnnSbmsn"> <!-- 의견제출 대장 -->
<result property="opnnId" column="OPNN_ID" /> <!-- 의견 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rdctId" column="RDCT_ID" /> <!-- 감면 ID -->
<result property="rcptNo" column="RCPT_NO" /> <!-- 접수 번호 -->
<result property="rcptYmd" column="RCPT_YMD" /> <!-- 접수 일자 -->
<result property="rcptSeCd" column="RCPT_SE_CD" /> <!-- 접수 구분 코드 -->
@ -123,7 +122,7 @@
LEFT OUTER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN)
LEFT OUTER JOIN TB_RDCT R ON (OS.RDCT_ID = R.RDCT_ID AND R.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
</sql>
<select id="selectOpnnSbmsnList" parameterType="map" resultType="dataobject">/* 의견제출 대장 목록 조회(opnnSbmsnMapper.selectOpnnSbmsnList) */
@ -273,7 +272,6 @@
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, OS.OPNN_ID <!-- 의견 ID -->
, OS.RDCT_ID <!-- 감면 ID -->
, OS.RCPT_NO <!-- 접수 번호 -->
, (CONCAT(SUBSTR(OS.RCPT_NO,1,4), '-', SUBSTR(OS.RCPT_NO,5,6))) AS RCPT_NO_MASK <!-- 접수 번호 -->
, OS.RCPT_YMD <!-- 접수 일자 -->
@ -299,10 +297,10 @@
, (GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD)) AS NTFCTN_SE_NM <!-- 통보 구분 코드 -->
, OS.PIC_RVW_OPNN <!-- 담당자 검토 의견 -->
, OS.OPNN_SBMSN_STTS_CD <!-- 의견 제출 상태 코드 -->
, (GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD)) AS OPNN_SBMSN_STTS_NM <!-- 의견 제출 상태 명 -->
, (GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD)) AS OPNN_SBMSN_STTS_NM <!-- 의견 제출 상태 명 -->
, OS.ANS_YMD <!-- 답변 일자 -->
, 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.REG_DT <!-- 등록 일시 -->
, OS.RGTR <!-- 등록자 -->
@ -321,7 +319,7 @@
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDCT R ON (OS.RDCT_ID = R.RDCT_ID AND R.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
</sql>
<select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
@ -420,7 +418,6 @@
INTO TB_OPNN_SBMSN (
OPNN_ID <!-- 의견 ID -->
, CRDN_ID <!-- 단속 ID -->
, RDCT_ID <!-- 감면 ID -->
, RCPT_NO <!-- 접수 번호 -->
, RCPT_YMD <!-- 접수 일자 -->
, RCPT_SE_CD <!-- 접수 구분 코드 -->
@ -452,7 +449,6 @@
VALUES (
#{opnnId} <!-- 의견 ID -->
, #{crdnId} <!-- 단속 ID -->
, #{rdctId} <!-- 감면 ID -->
, #{rcptNo} <!-- 접수 번호 -->
, #{rcptYmd} <!-- 접수 일자 -->
, #{rcptSeCd} <!-- 접수 구분 코드 -->
@ -474,7 +470,7 @@
, #{ansCn} <!-- 답변 내용 -->
, #{ansYmd} <!-- 답변 일시 -->
, #{ansTm} <!-- 답변 일시 -->
, #{opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, '00' <!-- 의견 제출 상태 코드 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
@ -509,8 +505,7 @@
<update id="updateOpnnSbmsnAnswer" parameterType="cokr.xit.fims.excl.OpnnSbmsn">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateOpnnSbmsnAnswer) */
UPDATE TB_OPNN_SBMSN
SET RDCT_ID = #{rdctId} <!-- 감면 ID -->
, DOC_NO = #{docNo} <!-- 문서 번호 -->
SET DOC_NO = #{docNo} <!-- 문서 번호 -->
, NTFCTN_SE_CD = #{ntfctnSeCd} <!-- 통보 구분 코드 -->
, PIC_RVW_OPNN = #{picRvwOpnn} <!-- 담당자 검토 의견 -->
, OPNN_SBMSN_STTS_CD= #{opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->

Loading…
Cancel
Save