diff --git a/src/main/java/cokr/xit/fims/excl/dao/Excl03Mapper.java b/src/main/java/cokr/xit/fims/excl/dao/Excl03Mapper.java
index cb935b70..81b82ec6 100644
--- a/src/main/java/cokr/xit/fims/excl/dao/Excl03Mapper.java
+++ b/src/main/java/cokr/xit/fims/excl/dao/Excl03Mapper.java
@@ -79,6 +79,10 @@ public interface Excl03Mapper extends AbstractMapper {
* @param crdnId 단속ID
* @return 단속 대장 정보
*/
- DataObject selectCrdnInfo(String crdnId);
+ DataObject selectCrdn(Excl03Query req);
+
+ default DataObject selectCrdnInfo(String crdnId) {
+ return selectCrdn(new Excl03Query().setCrdnId(crdnId));
+ }
}
diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java
index 77153ac7..9c81e28d 100644
--- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java
+++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java
@@ -45,11 +45,7 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
@Override
public DataObject getLevyExclInfo(Excl01Query req) {
- DataObject levyExcl = excl01Bean.getLevyExclInfo(req);
-
- // 등록으로 실행했는데 부과제외 ID가 존재한다면 이미 등록되었으므로 오류로 처리..
-
- return levyExcl;
+ return excl01Bean.getLevyExclInfo(req);
}
@Override
@@ -83,8 +79,8 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
}
}
- // 비부과(서손), 계고 등록 하는데,
- if (excl01.getLevyExclSeCd().equals("1") || excl01.getLevyExclSeCd().equals("2")) {
+ // 비부과(서손)
+ if (excl01.getLevyExclSeCd().equals("1")) {
// 단속민원ID가 있다면..
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
// 자동등록 자료만 단속민원(TB_CRDN_CVLCPT) 답변 부분을 처리
@@ -161,9 +157,12 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
throw new RuntimeException("부과제외 등록 중 단속 대장의 표지정보확인여부 수정에 실패하였습니다.");
}
}
- // 전액감액일 경우.. 부과(TB_LEVY)에 감액금액 입력이 필요..
- } else if (excl01.getLevyExclSeCd().equals("5")) {
+ // 계고
+ } else if (excl01.getLevyExclSeCd().equals("2")) {
+ // 전액감액
+ } else if (excl01.getLevyExclSeCd().equals("5")) {
+ // 부과(TB_LEVY)에 감액금액 입력이 필요..
}
// 단속 ID로 발송 상세(TB_SNDNG_DTL) 대장 정보 조회
@@ -173,7 +172,7 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv
// 발송 상세(TB_SNDNG_DTL) 대장
Excl01 updtSndngDtl = new Excl01();
- updtSndngDtl.setCrdnId(excl01.getCrdnId()); // 단속 ID
+ updtSndngDtl.setCrdnId(excl01.getCrdnId()); // 단속 ID
// 발송상세 수납코드를 수정
retSuccess = excl01Bean.updateRcvmtCd(updtSndngDtl);
diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java
index e0d85333..aa95baa5 100644
--- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java
+++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java
@@ -1,11 +1,17 @@
package cokr.xit.fims.excl.service.bean;
+import java.io.File;
+import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
+import cokr.xit.base.file.FileInfo;
+import cokr.xit.base.file.service.FileQuery;
+import cokr.xit.base.file.service.bean.FileBean;
+import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.excl.Excl03;
@@ -14,13 +20,13 @@ import cokr.xit.fims.excl.service.Excl03Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
-/**단속 재등록 서비스 구현체.
+/** 단속 재등록 서비스 구현체.
*
- *
상세 설명:
+ *
상세 설명: 단속 재등록 대장 테이블에 접근하여 데이터를 조회하고 저장한다.
*
*
* ============ 변경 이력 ============
- * 2023-07-03 mjkhan 최초 작성
+ * 2023-07-03 JoJH 최초 작성
* ================================
*
*/
@@ -31,6 +37,11 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
@Resource(name = "excl03Bean")
private Excl03Bean excl03Bean;
+ /** 파일 정보 Bean */
+ @Resource(name = "fileBean")
+ private FileBean fileBean;
+
+ /** 단속 정보 Service */
@Resource(name="crdnService")
private CrdnService crdnService;
@@ -49,76 +60,95 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
- // 단속 ID로 부과제외 정보 조회
+ // 단속 ID로 단속(TB_CRDN) 정보 조회
DataObject infoCrdn = excl03Bean.getCrackdown(excl03.getBfrCrdnId());
-
- Crdn crdn = new Crdn();
-
- crdn.setSggCd(infoCrdn.string("SGG_CD")); // 시군구 코드
- crdn.setTaskSeCd(infoCrdn.string("TASK_SE_CD")); // 업무 구분 코드
- crdn.setCrdnRegSeCd("03"); // 단속 등록 구분 코드(FIM026) - 재 등록
- crdn.setCrdnInptSeCd(infoCrdn.string("CRDN_INPT_SE_CD")); // 단속 입력 구분 코드
- crdn.setLinkTblNm(infoCrdn.string("LINK_TBL_NM")); // 연계 테이블 명
- crdn.setLinkId(infoCrdn.string("LINK_ID")); // 연계 ID
- crdn.setRtpyrId(infoCrdn.string("RTPYR_ID")); // 납부자 ID
- crdn.setCrdnSeCd(infoCrdn.string("CRDN_SE_CD")); // 단속 구분 코드
- crdn.setCrdnYmd(infoCrdn.string("CRDN_YMD")); // 단속 일자
- crdn.setCrdnTm(infoCrdn.string("CRDN_TM")); // 단속 시각
- crdn.setVhrno(infoCrdn.string("VHRNO")); // 차량번호
- crdn.setCrdnStdgNm(infoCrdn.string("CRDN_STDG_NM")); // 단속 법정동 명
- crdn.setCrdnRoadNm(infoCrdn.string("CRDN_ROAD_NM")); // 단속 도로 명
- crdn.setCrdnPlc(infoCrdn.string("CRDN_PLC")); // 단속 장소
- crdn.setDtlCrdnPlc(infoCrdn.string("DTL_CRDN_PLC")); // 상세 단속 장소
- crdn.setTeamId(infoCrdn.string("TEAM_ID")); // 조 ID
- crdn.setVltnId(infoCrdn.string("VLTN_ID")); // 위반 ID
- crdn.setVltnCd(infoCrdn.string("VLTN_CD")); // 위반 코드
- crdn.setCrdnSpareaCd(infoCrdn.string("CRDN_SPAREA_CD")); // 단속 특별구역 코드
- crdn.setCrdnBgngTm(infoCrdn.string("CRDN_BGNG_TM")); // 단속 시작 시각
- crdn.setCrdnEndTm(infoCrdn.string("CRDN_END_TM")); // 단속 종료 시각
- crdn.setCrdnSn(infoCrdn.string("CRDN_SN")); // 단속 일련번호
- crdn.setGpsX(infoCrdn.string("GPS_X")); // GPS X
- crdn.setGpsY(infoCrdn.string("GPS_Y")); // GPS Y
- crdn.setMoscX(infoCrdn.string("MOSC_X")); // 모자이크 X
- crdn.setMoscY(infoCrdn.string("MOSC_Y")); // 모자이크 Y
- crdn.setTowngYn(infoCrdn.string("TOWNG_YN")); // 견인 여부
- crdn.setAtchFileCnt(Integer.parseInt(infoCrdn.string("ATCH_FILE_CNT"))); // 첨부 파일 수
- crdn.setVin(infoCrdn.string("VIN")); // 차대번호
- crdn.setVhclNm(infoCrdn.string("VHCL_NM")); // 차량 명
- crdn.setVhclColor(infoCrdn.string("VHCL_COLOR")); // 차량 색상
- crdn.setUseFuelCd(infoCrdn.string("USE_FUEL_CD")); // 사용 연료 코드
- crdn.setFfnlgCarmdlCd(infoCrdn.string("FFNLG_CARMDL_CD")); // 과태료 차종 코드
- crdn.setParkngPsbltyRsltCd(infoCrdn.string("PARKNG_PSBLTY_RSLT_CD")); // 주차 가능 결과 코드
- crdn.setVltnNmtm(infoCrdn.string("VLTN_NMTM")); // 위반 횟수
- crdn.setOvtimeYn(infoCrdn.string("OVTIME_YN")); // 시간외 여부
- crdn.setFfnlgAmt(0); // 과태료 금액 - 초기 값
- crdn.setFfnlgRductRt(infoCrdn.string("FFNLG_RDUCT_RT")); // 과태료 감경 율
- crdn.setLevyAmt(0); // 부과 금액 - 초기 값
-// crdn.setAdvntceBgngYmd(""); // 사전통지 시작 일자
-// crdn.setAdvntceDudtYmd(""); // 사전통지 납기 일자
- crdn.setAdvntceLevyAmt(0); // 사전통지 부과 금액 - 초기 값
- crdn.setOpnnSbmsnYn("N"); // 의견 제출 여부
- crdn.setEtcCn(infoCrdn.string("ETC_CN")); // 기타 내용
-// crdn.setLevyId(""); // 부과 ID
- crdn.setCrdnSttsCd("01"); // 단속 상태 코드
- crdn.setCrdnSttsChgDt(""); // 단속 상태 변경 일시
- crdn.setAdtnAmt(0); // 가산 금액
- crdn.setMinusAmt(0); // 감경 금액
- crdn.setRcvmtAmt(0); // 수납 금액
- crdn.setBfrCrdnId(infoCrdn.string("CRDN_ID")); // 이전 단속 ID
- crdn.setDelYn("N");
+ // 단속 ID로 파일(TB_FILE) 정보 조회
+ List infoCrdnFileList = fileBean.getFileList(new FileQuery().setInfoType(excl03.INF_TYPE)
+ .setInfoKeys(excl03.getBfrCrdnId()));
+
+ // 재등록 단속 정보(TB_CRDN)
+ Crdn newCrdn = new Crdn();
+
+ newCrdn.setSggCd(infoCrdn.string("SGG_CD")); // 시군구 코드
+ newCrdn.setTaskSeCd(infoCrdn.string("TASK_SE_CD")); // 업무 구분 코드
+ newCrdn.setCrdnRegSeCd("03"); // 단속 등록 구분 코드(FIM026) - 재 등록
+ newCrdn.setCrdnInptSeCd(infoCrdn.string("CRDN_INPT_SE_CD")); // 단속 입력 구분 코드
+ newCrdn.setCvlcptLinkYn(infoCrdn.string("CVLCPT_LINK_YN")); // 민원 연계 여부
+ newCrdn.setLinkTblNm(infoCrdn.string("LINK_TBL_NM")); // 연계 테이블 명
+ newCrdn.setLinkId(infoCrdn.string("LINK_ID")); // 연계 ID
+ newCrdn.setRtpyrId(infoCrdn.string("RTPYR_ID")); // 납부자 ID
+ newCrdn.setCrdnYmd(infoCrdn.string("CRDN_YMD")); // 단속 일자
+ newCrdn.setCrdnTm(infoCrdn.string("CRDN_TM")); // 단속 시각
+ newCrdn.setVhrno(infoCrdn.string("VHRNO")); // 차량번호
+ newCrdn.setCrdnStdgNm(infoCrdn.string("CRDN_STDG_NM")); // 단속 법정동 명
+ newCrdn.setCrdnRoadNm(infoCrdn.string("CRDN_ROAD_NM")); // 단속 도로 명
+ newCrdn.setCrdnPlc(infoCrdn.string("CRDN_PLC")); // 단속 장소
+ newCrdn.setVltnId(infoCrdn.string("VLTN_ID")); // 위반 ID
+ newCrdn.setVltnCd(infoCrdn.string("VLTN_CD")); // 위반 코드
+ newCrdn.setGpsX(infoCrdn.string("GPS_X")); // GPS X
+ newCrdn.setGpsY(infoCrdn.string("GPS_Y")); // GPS Y
+ newCrdn.setAtchFileCnt(Integer.parseInt(infoCrdn.string("ATCH_FILE_CNT"))); // 첨부 파일 수
+ newCrdn.setVin(infoCrdn.string("VIN")); // 차대번호
+ newCrdn.setVhclNm(infoCrdn.string("VHCL_NM")); // 차량 명
+ newCrdn.setVhclColor(infoCrdn.string("VHCL_COLOR")); // 차량 색상
+ newCrdn.setFfnlgAmt(0); // 과태료 금액 - 초기 값
+ newCrdn.setFfnlgRductRt(infoCrdn.string("FFNLG_RDUCT_RT")); // 과태료 감경 율
+ newCrdn.setLevyAmt(0); // 부과 금액 - 초기 값
+// newCrdn.setAdvntceBgngYmd(""); // 사전통지 시작 일자
+// newCrdn.setAdvntceDudtYmd(""); // 사전통지 납기 일자
+ newCrdn.setAdvntceLevyAmt(0); // 사전통지 부과 금액 - 초기 값
+ newCrdn.setOpnnSbmsnYn("N"); // 의견 제출 여부
+ newCrdn.setEtcCn(infoCrdn.string("ETC_CN")); // 기타 내용
+// newCrdn.setLevyId(""); // 부과 ID
+ newCrdn.setCrdnSttsCd("01"); // 단속 상태 코드
+ newCrdn.setCrdnSttsChgDt(""); // 단속 상태 변경 일시
+ newCrdn.setAdtnAmt(0); // 가산 금액
+ newCrdn.setMinusAmt(0); // 감경 금액
+ newCrdn.setRcvmtAmt(0); // 수납 금액
+ newCrdn.setBfrCrdnId(infoCrdn.string("CRDN_ID")); // 이전 단속 ID
+ newCrdn.setDelYn("N"); // 삭제 여부
+ // TB_CRDN_ADI(단속 부가 정보)
+ newCrdn.setCrdnSeCd(infoCrdn.string("CRDN_SE_CD")); // 단속 구분 코드
+ newCrdn.setTeamId(infoCrdn.string("TEAM_ID")); // 조 ID
+ newCrdn.setDtlCrdnPlc(infoCrdn.string("DTL_CRDN_PLC")); // 상세 단속 장소
+ newCrdn.setCrdnSpareaCd(infoCrdn.string("CRDN_SPAREA_CD")); // 단속 특별구역 코드
+ newCrdn.setCrdnBgngTm(infoCrdn.string("CRDN_BGNG_TM")); // 단속 시작 시각
+ newCrdn.setCrdnEndTm(infoCrdn.string("CRDN_END_TM")); // 단속 종료 시각
+ newCrdn.setCrdnSn(infoCrdn.string("CRDN_SN")); // 단속 일련번호
+ newCrdn.setMoscX(infoCrdn.string("MOSC_X")); // 모자이크 X
+ newCrdn.setMoscY(infoCrdn.string("MOSC_Y")); // 모자이크 Y
+ newCrdn.setTowngYn(infoCrdn.string("TOWNG_YN")); // 견인 여부
+ newCrdn.setUseFuelCd(infoCrdn.string("USE_FUEL_CD")); // 사용 연료 코드
+ newCrdn.setFfnlgCarmdlCd(infoCrdn.string("FFNLG_CARMDL_CD")); // 과태료 차종 코드
+ newCrdn.setParkngPsbltyRsltCd(infoCrdn.string("PARKNG_PSBLTY_RSLT_CD")); // 주차 가능 결과 코드
+ newCrdn.setVltnNmtm(infoCrdn.string("VLTN_NMTM")); // 위반 횟수
+ newCrdn.setOvtimeYn(infoCrdn.string("OVTIME_YN")); // 시간외 여부
+
+
+ // 재등록 단속 파일 정보(TB_FILE)
+ List newFileInfoList = new ArrayList();
+ // 현재 경로를 구한다.
+ String curWorkingDir = System.getProperty("user.dir");
+
+ if (!infoCrdnFileList.isEmpty() && infoCrdnFileList.size() > 0) {
+ List files = new ArrayList<>();
+
+ for (int iLoop = 0; iLoop < infoCrdnFileList.size(); iLoop++) {
+ files.add(new File(curWorkingDir + File.separator + infoCrdnFileList.get(iLoop).string("FILE_PATH")));
+ }
+
+ newFileInfoList = new FileInfoFactory().createFileInfos(null, files);
+ }
// 단속 대장 입력
- retSuccess = crdnService.create(null, crdn, null);
+ retSuccess = crdnService.create(null, newCrdn, newFileInfoList);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다.");
}
- // 단속 대장 사진 복사
-
-
// 재부과 대장 등록
- excl03.setCrdnId(crdn.getCrdnId());
+ excl03.setCrdnId(newCrdn.getCrdnId());
excl03.setCrdnRegSeCd("03");
retSuccess = excl03Bean.create(excl03);
@@ -127,10 +157,7 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
throw new RuntimeException("재부과 대장 등록에 실패하였습니다.");
}
- // 처리 성공
- retSuccess = true;
-
- return retSuccess;
+ return true;
}
@Override
@@ -139,4 +166,3 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
}
}
-
diff --git a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java
index cc301da2..f7cd460b 100644
--- a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java
+++ b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java
@@ -81,9 +81,11 @@ public class Excl01Controller extends ApplicationController {
public ModelAndView getLevyExclInfo(Excl01Query req) {
DataObject levyExclInfo = excl01Service.getLevyExclInfo(req);
- if(req.getLevyExclId() == null && !levyExclInfo.string("LEVY_EXCL_ID").equals("")) {
+ if (req.getLevyExclId() == null && !levyExclInfo.string("LEVY_EXCL_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
- mav.addObject("message","등록된 부과제외 정보가 있습니다.");
+
+ mav.addObject("message", "등록된 부과제외 정보가 있습니다.");
+
return mav;
}
diff --git a/src/main/resources/sql/mapper/fims/excl/excl03-mapper.xml b/src/main/resources/sql/mapper/fims/excl/excl03-mapper.xml
index 0373fbe8..477815d6 100644
--- a/src/main/resources/sql/mapper/fims/excl/excl03-mapper.xml
+++ b/src/main/resources/sql/mapper/fims/excl/excl03-mapper.xml
@@ -37,28 +37,26 @@
, A.DEL_DT /* 삭제 일시 */
, A.DLTR /* 삭제자 */
, A.DEL_RSN /* 삭제 사유 */
- , C.SGG_CD /* 시군구 코드 */
- , C.TASK_SE_CD /* 업무 구분 코드 */
- , C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
- , (SELECT FN_GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */
- , C.CRDN_SE_CD /* 단속 구분 코드 */
- , (SELECT FN_GET_CODE_NM('FIM002', C.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */
- , C.CRDN_YMD /* 단속 일자 */
- , C.CRDN_TM /* 단속 시각 */
- , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
- , C.VHRNO /* 차량번호 */
- , C.CRDN_STDG_NM /* 단속 법정동 명 */
- , C.CRDN_ROAD_NM /* 단속 도로 명 */
- , C.CRDN_PLC /* 단속 장소 */
- , C.DTL_CRDN_PLC /* 상세 단속 장소 */
- , C.ATCH_FILE_CNT /* 첨부 파일 수 */
- , C.FFNLG_AMT /* 과태료 금액 */
- , C.LEVY_AMT /* 부과 금액 */
- , C.ADVNTCE_LEVY_AMT /* 사전통지 부과 금액 */
- , C.CRDN_STTS_CD /* 단속 상태 코드 */
- , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
- FROM TB_CRDN_RE_REG A
- INNER JOIN TB_CRDN C ON (A.CRDN_ID = C.CRDN_ID)
+ , H.SGG_CD /* 시군구 코드 */
+ , H.TASK_SE_CD /* 업무 구분 코드 */
+ , H.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
+ , (SELECT FN_GET_CODE_NM('FIM003', H.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */
+ , H.CRDN_YMD /* 단속 일자 */
+ , H.CRDN_TM /* 단속 시각 */
+ , (CONCAT(H.CRDN_YMD, H.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
+ , H.VHRNO /* 차량번호 */
+ , H.CRDN_STDG_NM /* 단속 법정동 명 */
+ , H.CRDN_ROAD_NM /* 단속 도로 명 */
+ , H.CRDN_PLC /* 단속 장소 */
+ , H.ATCH_FILE_CNT /* 첨부 파일 수 */
+ , H.FFNLG_AMT /* 과태료 금액 */
+ , H.LEVY_AMT /* 부과 금액 */
+ , H.ADVNTCE_LEVY_AMT /* 사전통지 부과 금액 */
+ , H.CRDN_STTS_CD /* 단속 상태 코드 */
+ , (SELECT FN_GET_CODE_NM('FIM010', H.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
+ FROM TB_CRDN_RE_REG A
+ INNER JOIN TB_CRDN H ON (A.CRDN_ID = H.CRDN_ID)
+ INNER JOIN TB_CRDN_ADI I ON (H.CRDN_ID = I.CRDN_ID)