diff --git a/src/main/java/egovframework/config/EgovConfigWeb.java b/src/main/java/egovframework/config/EgovConfigWeb.java
index 69321c6..13ac6ba 100644
--- a/src/main/java/egovframework/config/EgovConfigWeb.java
+++ b/src/main/java/egovframework/config/EgovConfigWeb.java
@@ -54,8 +54,9 @@ public class EgovConfigWeb implements WebMvcConfigurer, ApplicationContextAware
/**
* 브라우저 캐시 방지 Interceptor 등록
* 중요로직: 모든 요청에 대해 캐시 방지 헤더를 추가하여 브라우저 뒤로가기 시에도 항상 최신 데이터를 표시한다.
+ * js, jsp, css 즉각 반영안됨, 주석처리
*/
- @Override
+ /*@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
@@ -67,7 +68,7 @@ public class EgovConfigWeb implements WebMvcConfigurer, ApplicationContextAware
return true;
}
}).addPathPatterns("/**"); // 모든 경로에 적용
- }
+ }*/
/**
* Exception handling is now done using @ControllerAdvice in EgovExceptionAdvice class.
diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/controller/CrdnRegistAndViewController.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/controller/CrdnRegistAndViewController.java
index 9563e80..ed153f0 100644
--- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/controller/CrdnRegistAndViewController.java
+++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/controller/CrdnRegistAndViewController.java
@@ -317,7 +317,7 @@ public class CrdnRegistAndViewController {
/**
* 단속 상태를 업데이트합니다.
- *
+ *
* @param crdnYr 단속 연도
* @param crdnNo 단속 번호
* @param crdnPrcsSttsCd 변경할 처리 상태 코드
@@ -334,16 +334,16 @@ public class CrdnRegistAndViewController {
@Parameter(description = "단속 연도") @RequestParam String crdnYr,
@Parameter(description = "단속 번호") @RequestParam String crdnNo,
@Parameter(description = "처리 상태 코드") @RequestParam String crdnPrcsSttsCd) {
-
+
log.debug("단속 상태 업데이트 요청 - 단속연도: {}, 단속번호: {}, 상태코드: {}", crdnYr, crdnNo, crdnPrcsSttsCd);
-
+
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
paramVO.setCrdnPrcsSttsCd(crdnPrcsSttsCd);
-
+
int result = service.updateStatus(paramVO);
-
+
if (result > 0) {
return ApiResponseUtil.success("단속 상태가 성공적으로 업데이트되었습니다.");
} else {
@@ -351,4 +351,38 @@ public class CrdnRegistAndViewController {
}
}
+ /**
+ * 조치처리상태를 확인합니다.
+ * 중요로직: 팝업 호출 전 미조치(코드 1) 여부를 확인하기 위한 API
+ *
+ * @param crdnYr 단속 연도
+ * @param crdnNo 단속 번호
+ * @return 조치처리상태 코드를 담은 ResponseEntity 객체
+ */
+ @GetMapping("/checkActCmpltCd.ajax")
+ @Operation(summary = "조치처리상태 확인", description = "조치처리상태 코드를 조회합니다.")
+ @ApiResponses(value = {
+ @ApiResponse(responseCode = "200", description = "조치처리상태 조회 성공"),
+ @ApiResponse(responseCode = "400", description = "조치처리상태 조회 실패"),
+ @ApiResponse(description = "오류로 인한 실패")
+ })
+ public ResponseEntity> checkActCmpltCd(
+ @Parameter(description = "단속 연도") @RequestParam String crdnYr,
+ @Parameter(description = "단속 번호") @RequestParam String crdnNo) {
+
+ log.debug("조치처리상태 확인 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
+
+ CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
+ paramVO.setCrdnYr(crdnYr);
+ paramVO.setCrdnNo(crdnNo);
+
+ String actCmpltCd = service.selectActCmpltCd(paramVO);
+
+ if (actCmpltCd != null) {
+ return ApiResponseUtil.success(actCmpltCd, "조치처리상태 조회가 완료되었습니다.");
+ } else {
+ return ApiResponseUtil.error("해당 단속 정보를 찾을 수 없습니다.");
+ }
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRegistAndViewMapper.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRegistAndViewMapper.java
index e54ff76..f564a70 100644
--- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRegistAndViewMapper.java
+++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRegistAndViewMapper.java
@@ -98,4 +98,12 @@ public interface CrdnRegistAndViewMapper {
*/
int updateOnlyDate(CrdnRegistAndViewVO vo);
+ /**
+ * 조치처리상태 코드를 조회한다.
+ * 중요로직: tb_act_info 테이블의 행위정보 집계로 조치처리상태 계산 [행위정보없음 0, 미조치 1, 조치완료 3]
+ * @param vo 조회할 PK 정보(crdnYr, crdnNo)를 담은 VO 객체
+ * @return 조치처리상태 코드 (0:행위정보없음, 1:미조치, 3:조치완료)
+ */
+ String selectActCmpltCd(CrdnRegistAndViewVO vo);
+
}
\ No newline at end of file
diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRegistAndViewService.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRegistAndViewService.java
index 196c232..d033332 100644
--- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRegistAndViewService.java
+++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRegistAndViewService.java
@@ -75,10 +75,19 @@ public interface CrdnRegistAndViewService {
/**
* 단속 처리 상태를 업데이트합니다.
- *
+ *
* @param vo 상태 업데이트할 단속 정보(crdnYr, crdnNo, crdnPrcsSttsCd)를 담은 VO 객체
* @return 업데이트된 행의 수
*/
int updateStatus(CrdnRegistAndViewVO vo);
+ /**
+ * 조치처리상태 코드를 조회합니다.
+ * 중요로직: tb_act_info 테이블의 행위정보 집계로 조치처리상태 계산
+ *
+ * @param vo 조회할 PK 정보(crdnYr, crdnNo)를 담은 VO 객체
+ * @return 조치처리상태 코드 (0:행위정보없음, 1:미조치, 3:조치완료)
+ */
+ String selectActCmpltCd(CrdnRegistAndViewVO vo);
+
}
\ No newline at end of file
diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRegistAndViewServiceImpl.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRegistAndViewServiceImpl.java
index 1a857d7..4aa7bcb 100644
--- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRegistAndViewServiceImpl.java
+++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRegistAndViewServiceImpl.java
@@ -241,29 +241,49 @@ public class CrdnRegistAndViewServiceImpl extends EgovAbstractServiceImpl implem
/**
* 단속 처리 상태를 업데이트합니다.
- *
+ *
* @param vo 상태 업데이트할 단속 정보(crdnYr, crdnNo, crdnPrcsSttsCd)를 담은 VO 객체
* @return 업데이트된 행의 수
*/
@Override
public int updateStatus(CrdnRegistAndViewVO vo) {
log.debug("단속 상태 업데이트 - 단속연도: {}, 단속번호: {}, 상태코드: {}", vo.getCrdnYr(), vo.getCrdnNo(), vo.getCrdnPrcsSttsCd());
-
+
// PK(단속연도+단속번호) 필수값 검증
validatePrimaryKey(vo);
-
+
// 처리 상태 코드 필수값 검증
if (vo.getCrdnPrcsSttsCd() == null || vo.getCrdnPrcsSttsCd().trim().isEmpty()) {
log.warn("단속 상태 업데이트 실패 - 처리상태코드 미입력");
throw new MessageException("처리 상태 코드는 필수값입니다.");
}
-
+
// 단속 처리 일자를 현재 일자로 설정 (yyyyMMdd 형식)
vo.setCrdnPrcsYmd(LocalDate.now().toString().replace("-", ""));
-
+
// 상태 업데이트 수행
int result = mapper.updateStatus(vo);
log.debug("단속 상태 업데이트 완료 - 업데이트 건수: {}", result);
return result;
}
+
+ /**
+ * 조치처리상태 코드를 조회합니다.
+ * 중요로직: tb_act_info 테이블의 행위정보 집계로 조치처리상태 계산
+ *
+ * @param vo 조회할 PK 정보(crdnYr, crdnNo)를 담은 VO 객체
+ * @return 조치처리상태 코드 (0:행위정보없음, 1:미조치, 3:조치완료)
+ */
+ @Override
+ public String selectActCmpltCd(CrdnRegistAndViewVO vo) {
+ log.debug("조치처리상태 코드 조회 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
+
+ // PK(단속연도+단속번호) 필수값 검증
+ validatePrimaryKey(vo);
+
+ // 조치처리상태 코드 조회
+ String actCmpltCd = mapper.selectActCmpltCd(vo);
+ log.debug("조치처리상태 코드 조회 완료 - 조치처리상태: {}", actCmpltCd);
+ return actCmpltCd;
+ }
}
\ No newline at end of file
diff --git a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRegistAndViewMapper_maria.xml b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRegistAndViewMapper_maria.xml
index 1d39f05..166327b 100644
--- a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRegistAndViewMapper_maria.xml
+++ b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRegistAndViewMapper_maria.xml
@@ -6,12 +6,7 @@
+
+
+
@@ -308,10 +308,10 @@
align: 'center',
width: 100,
formatter: function(e) {
- /* 행위정보없음 0, 미조치 1, 조치완료 2 */
+ /* 행위정보없음 0, 미조치 1, 조치완료 3 */
if (e.value === '0') return '행위정보없음';
else if (e.value === '1') return '미조치';
- else if (e.value === '2') return '조치완료';
+ else if (e.value === '3') return '조치완료';
else return e.value || '';
}
},
@@ -571,6 +571,42 @@
});
},
+ /**
+ * 조치처리상태를 확인하고 미조치(코드 1)인 경우에만 콜백 함수를 실행합니다.
+ * 중요로직: 팝업 호출 전 미조치(코드 1) 여부를 확인하는 공통 함수
+ *
+ * @param crdnYr 단속 연도
+ * @param crdnNo 단속 번호
+ * @param buttonName 버튼 이름 (에러 메시지용)
+ * @param callback 미조치인 경우 실행할 콜백 함수
+ */
+ checkActCmpltCdAndExecute: function(crdnYr, crdnNo, buttonName, callback) {
+ $.ajax({
+ url: '',
+ type: 'GET',
+ data: {
+ crdnYr: crdnYr,
+ crdnNo: crdnNo
+ },
+ success: function(response) {
+ if (response && response.success) {
+ if (response.data === '1') {
+ // 미조치(코드 1)인 경우 콜백 실행
+ callback();
+ } else {
+ alert('미조치 상태가 아닙니다. 미조치 상태일 때만 ' + buttonName + '을(를) 진행할 수 있습니다.');
+ }
+ } else {
+ alert('조치처리상태 확인에 실패했습니다.');
+ }
+ },
+ error: function( xhr, status, error ) {
+ console.error( error );
+ alert('조치처리상태 확인 중 오류가 발생했습니다.');
+ }
+ });
+ },
+
/**
* 재부과 팝업을 엽니다.
*
@@ -739,81 +775,81 @@
// 이행정보 관리 팝업 호출 이벤트들 - "처분사전" 버튼
$("#btnDsps").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('이행정보를 관리할 단속 건을 선택해주세요.');
return;
}
-
- // 처분사전 팝업 열기
- self.openImpltTaskPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '1'); // 1: 처분사전
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '처분사전', function() {
+ self.openImpltTaskPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '1');
+ });
});
-
+
$("#btnCrcCmd").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('이행정보를 관리할 단속 건을 선택해주세요.');
return;
}
-
- // 시정명령 팝업 열기
- self.openImpltTaskPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '2'); // 2: 시정명령
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '시정명령', function() {
+ self.openImpltTaskPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '2');
+ });
});
-
+
$("#btnCrcUrg").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('이행정보를 관리할 단속 건을 선택해주세요.');
return;
}
-
- // 시정촉구 팝업 열기
- self.openImpltTaskPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '3'); // 3: 시정촉구
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '시정촉구', function() {
+ self.openImpltTaskPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '3');
+ });
});
-
+
$("#btnLevyPrvntc").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('부과예고를 관리할 단속 건을 선택해주세요.');
return;
}
-
- // 부과예고 팝업 열기
- self.openLevyPrvntcPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '4'); // 3: 부과예고
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '부과예고', function() {
+ self.openLevyPrvntcPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '4');
+ });
});
-
+
$("#btnLevy").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('부과를 관리할 단속 건을 선택해주세요.');
return;
}
-
- // 부과예고 팝업 열기
- self.openLevyPrvntcPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '5'); // 5: 부과
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '부과', function() {
+ self.openLevyPrvntcPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '5');
+ });
});
-
+
$("#btnPayUrg").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('납부촉구를 관리할 단속 건을 선택해주세요.');
return;
}
-
- // 부과예고 팝업 열기
- self.openLevyPrvntcPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '6'); // 6: 납부촉구
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '납부촉구', function() {
+ self.openLevyPrvntcPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '6');
+ });
});
// 재부과 버튼 클릭 이벤트
$("#btnRelevy").on('click', function() {
- // 선택된 행 확인
if (!self.selectedRow) {
alert('재부과를 진행할 단속 건을 선택해주세요.');
return;
}
-
- // 재부과 팝업 열기
- self.openRelevyPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo);
+ // 중요로직: 미조치(코드 1) 확인 후 팝업 열기
+ self.checkActCmpltCdAndExecute(self.selectedRow.crdnYr, self.selectedRow.crdnNo, '재부과', function() {
+ self.openRelevyPopup(self.selectedRow.crdnYr, self.selectedRow.crdnNo);
+ });
});
// 엔터키 검색