단속 > 단속 등록&열람: 불필요한 Grid3, Grid4 관련 JSP 및 JavaScript 코드 제거, 소유자 선택 서비스/매퍼 제거, 불법위반행위정보 관리 컨트롤러/서비스/매퍼 추가, 관련 API 구현 및 주석 보강
parent
9ea7565aa3
commit
09f41802cf
@ -0,0 +1,29 @@
|
||||
create table tb_act_info
|
||||
(
|
||||
ACT_INFO_ID varchar(10) not null comment '행위 정보 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
CRDN_YR char(4) null comment '단속 연도',
|
||||
CRDN_NO varchar(6) null comment '단속 번호',
|
||||
PSTN_INFO_ID varchar(10) not null comment '위치 정보 ID',
|
||||
ACT_BGNG_YMD char(8) null comment '행위 시작 일자',
|
||||
ACT_TYPE_CD varchar(2) null comment '행위 유형 코드',
|
||||
VLTN_LWRG_CD_1 varchar(3) null comment '위반 법규 코드 1',
|
||||
VLTN_LWRG_CD_2 varchar(3) null comment '위반 법규 코드 2',
|
||||
STRCT_IDX_CD varchar(3) null comment '구조 지수 코드',
|
||||
USG_IDX_CD varchar(5) null comment '용도 지수 코드',
|
||||
HGT decimal(10, 2) null comment '높이',
|
||||
WDTH decimal(10, 2) null comment '가로',
|
||||
VRTC decimal(10, 2) null comment '세로',
|
||||
AREA decimal(10, 2) null comment '면적',
|
||||
RMRK varchar(1000) null comment '비고',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
MDFCN_DT datetime null comment '수정 일시',
|
||||
MDFR varchar(11) null comment '수정자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자'
|
||||
)
|
||||
comment '행위 정보';
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
create table tb_actr_info
|
||||
(
|
||||
ACTR_INFO_ID varchar(10) not null comment '행위자 정보 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
CRDN_YR char(4) null comment '단속 연도',
|
||||
CRDN_NO varchar(6) null comment '단속 번호',
|
||||
ACT_INFO_ID varchar(10) not null comment '행위 정보 ID',
|
||||
OWNR_ID varchar(10) not null comment '소유자 ID',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자'
|
||||
)
|
||||
comment '행위자 정보';
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
create table tb_bldg_new_prc_crtr_amt
|
||||
(
|
||||
YR char(4) not null comment '연도',
|
||||
NO char not null comment '번호',
|
||||
BDST_USG varchar(60) null comment '건축물 용도',
|
||||
BLDG_NEW_PRC_CRTR_AMT decimal(13) null comment '건물 신축 가격 기준 액',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
primary key (YR, NO)
|
||||
)
|
||||
comment '건물 신축 가격 기준 액';
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
create table tb_crdn
|
||||
(
|
||||
CRDN_YR char(4) not null comment '단속 연도',
|
||||
CRDN_NO varchar(6) not null comment '단속 번호',
|
||||
SGG_CD varchar(5) null comment '시군구 코드',
|
||||
RGN_SE_CD char not null comment '지역 구분 코드',
|
||||
DSCL_MTHD_CD varchar(2) not null comment '적발 방법 코드',
|
||||
DSCL_YMD char(8) null comment '적발 일자',
|
||||
EXMNR varchar(100) null comment '조사원',
|
||||
RMRK varchar(1000) null comment '비고',
|
||||
DSPS_BFHD_BGNG_YMD varchar(8) null comment '처분 사전 시작 일자',
|
||||
DSPS_BFHD_END_YMD varchar(8) null comment '처분 사전 종료 일자',
|
||||
CRC_CMD_BGNG_YMD varchar(8) null comment '시정 명령 시작 일자',
|
||||
CRC_CMD_END_YMD varchar(8) null comment '시정 명령 종료 일자',
|
||||
CRC_URG_BGNG_YMD varchar(8) null comment '시정 촉구 시작 일자',
|
||||
CRC_URG_END_YMD varchar(8) null comment '시정 촉구 종료 일자',
|
||||
LEVY_PRVNTC_BGNG_YMD varchar(8) null comment '부과 예고 시작 일자',
|
||||
LEVY_PRVNTC_END_YMD varchar(8) null comment '부과 예고 종료 일자',
|
||||
LEVY_BGNG_YMD varchar(8) null comment '부과 시작 일자',
|
||||
LEVY_END_YMD varchar(8) null comment '부과 종료 일자',
|
||||
PAY_URG_BGNG_YMD varchar(8) null comment '납부 촉구 시작 일자',
|
||||
PAY_URG_END_YMD varchar(8) null comment '납부 촉구 종료 일자',
|
||||
FRST_CRDN_YR varchar(4) null comment '최초 단속 연도',
|
||||
FRST_CRDN_NO varchar(6) null comment '최초 단속 번호',
|
||||
AGRVTN_LEVY_TRGT_YN char not null comment '가중 부과 대상 여부',
|
||||
RELEVY_YN char not null comment '재부과 여부',
|
||||
CRDN_PRCS_STTS_CD varchar(2) null comment '단속 처리 상태 코드',
|
||||
CRDN_PRCS_YMD varchar(8) null comment '단속 처리 일자',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자',
|
||||
primary key (CRDN_YR, CRDN_NO)
|
||||
)
|
||||
comment '단속';
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
create table tb_exmnr
|
||||
(
|
||||
EXMNR_ID varchar(10) not null comment '조사원 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자',
|
||||
EXMNR varchar(100) null comment '조사원'
|
||||
)
|
||||
comment '조사원';
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
create table tb_ownr
|
||||
(
|
||||
OWNR_ID varchar(10) not null comment '소유자 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
FLNM varchar(100) null comment '성명',
|
||||
RRNO varchar(100) null comment '주민등록번호',
|
||||
OWNR_SE_CD varchar(1) null comment '소유자 구분 코드',
|
||||
ADDR varchar(320) null comment '주소',
|
||||
DADDR varchar(320) null comment '상세주소',
|
||||
ZIP varchar(6) null comment '우편번호',
|
||||
LOTNO_WHOL_ADDR varchar(2000) null comment '지번 전체 주소',
|
||||
ROAD_NM_WHOL_ADDR varchar(2000) null comment '도로 명 전체 주소',
|
||||
LOTNO_ADDR varchar(320) null comment '지번 주소',
|
||||
ROAD_NM_ADDR varchar(320) null comment '도로 명 주소',
|
||||
DTL_ADDR varchar(320) null comment '상세 주소',
|
||||
REF_ADDR varchar(320) null comment '참고 주소',
|
||||
PBADMS_ZONE_CD varchar(10) not null comment '행정 구역 코드',
|
||||
ROAD_NM_CD varchar(12) null comment '도로 명 코드',
|
||||
LOTNO_MNO varchar(4) null comment '지번 본번',
|
||||
LOTNO_SNO varchar(4) null comment '지번 부번',
|
||||
BLDG_MNO varchar(4) null comment '건물 본번',
|
||||
BLDG_SNO varchar(4) null comment '건물 부번',
|
||||
UDGD_YN_CD varchar(1) null comment '지하 여부 코드',
|
||||
MTN_YN_CD varchar(1) null comment '산 여부 코드',
|
||||
TELNO varchar(11) null comment '전화번호',
|
||||
RMRK varchar(1000) null comment '비고',
|
||||
EML varchar(50) null comment '이메일',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
MDFCN_DT datetime null comment '수정 일시',
|
||||
MDFR varchar(11) null comment '수정자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자'
|
||||
)
|
||||
comment '소유자';
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
create table tb_ownr_info
|
||||
(
|
||||
OWNR_INFO_ID varchar(10) not null comment '소유자 정보 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
CRDN_YR char(4) null comment '단속 연도',
|
||||
CRDN_NO varchar(6) null comment '단속 번호',
|
||||
PSTN_INFO_ID char(18) null comment '위치 정보 ID',
|
||||
OWNR_ID char(18) null comment '소유자 ID',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자'
|
||||
)
|
||||
comment '소유자 정보';
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
create table tb_pstn_info
|
||||
(
|
||||
PSTN_INFO_ID varchar(10) not null comment '위치 정보 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
CRDN_YR char(4) null comment '단속 연도',
|
||||
CRDN_NO varchar(6) null comment '단속 번호',
|
||||
STDG_EMD_CD char(3) not null comment '법정동 읍면동 코드',
|
||||
LDCG_CD char(3) not null comment '지목 코드',
|
||||
PTOUT decimal(22, 2) null comment '지적',
|
||||
OALP decimal(13) null comment '공시지가',
|
||||
LOTNO_WHOL_ADDR varchar(2000) null comment '지번 전체 주소',
|
||||
ROAD_NM_WHOL_ADDR varchar(2000) null comment '도로 명 전체 주소',
|
||||
ZIP varchar(6) null comment '우편번호',
|
||||
LOTNO_ADDR varchar(320) null comment '지번 주소',
|
||||
ROAD_NM_ADDR varchar(320) null comment '도로 명 주소',
|
||||
DTL_ADDR varchar(320) null comment '상세 주소',
|
||||
REF_ADDR varchar(320) null comment '참고 주소',
|
||||
PBADMS_ZONE_CD varchar(10) not null comment '행정 구역 코드',
|
||||
ROAD_NM_CD varchar(12) null comment '도로 명 코드',
|
||||
LOTNO_MNO varchar(4) null comment '지번 본번',
|
||||
LOTNO_SNO varchar(4) null comment '지번 부번',
|
||||
BLDG_MNO varchar(4) null comment '건물 본번',
|
||||
BLDG_SNO varchar(4) null comment '건물 부번',
|
||||
UDGD_YN_CD varchar(1) null comment '지하 여부 코드',
|
||||
MTN_YN_CD varchar(1) null comment '산 여부 코드',
|
||||
RMRK varchar(1000) null comment '비고',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
MDFCN_DT datetime null comment '수정 일시',
|
||||
MDFR varchar(11) null comment '수정자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자'
|
||||
)
|
||||
comment '위치 정보';
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
CREATE SEQUENCE seq_actr_info_id
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 9999999999
|
||||
CACHE 1000
|
||||
NOCYCLE;
|
||||
@ -0,0 +1,222 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActInfo.controller;
|
||||
|
||||
import egovframework.constant.MessageConstants;
|
||||
import egovframework.constant.TilesConstants;
|
||||
import egovframework.util.ApiResponseUtil;
|
||||
import egovframework.util.SessionUtil;
|
||||
import go.kr.project.common.model.CmmnCodeSearchVO;
|
||||
import go.kr.project.common.service.CommonCodeService;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.CrdnActInfoService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 컨트롤러
|
||||
* <pre>
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.crdnActInfo.controller
|
||||
* fileName : CrdnActInfoController
|
||||
* author : 개발자
|
||||
* date : 2025-08-28
|
||||
* description : 불법위반행위정보 관련 컨트롤러
|
||||
* 중요한 로직 주석: 불법위반행위정보의 CRUD 작업과 팝업 화면 제공을 담당한다.
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-08-28 개발자 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/crdn/crndRegistAndView/crdnActInfo")
|
||||
@Tag(name = "불법위반행위정보", description = "불법위반행위정보 관리 API")
|
||||
public class CrdnActInfoController {
|
||||
|
||||
private final CrdnActInfoService service;
|
||||
private final CommonCodeService commonCodeService;
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 목록 조회 (AJAX)
|
||||
* @param vo 검색조건 및 페이징 정보
|
||||
* @return 불법위반행위정보 목록
|
||||
*/
|
||||
@Operation(summary = "불법위반행위정보 목록 조회", description = "불법위반행위정보 목록을 조회합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/list.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> listAjax(@ModelAttribute CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 목록 조회 요청: {}", vo);
|
||||
|
||||
// 1. 총 개수 조회
|
||||
int totalCount = service.selectActInfoListTotalCount(vo);
|
||||
// 2. 응답 데이터 구성
|
||||
vo.setTotalCount(totalCount);
|
||||
// 3. 페이징 처리
|
||||
//vo.setPagingYn("Y");
|
||||
|
||||
List<CrdnActInfoVO> list = service.selectActInfoList(vo);
|
||||
|
||||
return ApiResponseUtil.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 팝업 화면
|
||||
* @param crdnYr 단속연도
|
||||
* @param crdnNo 단속번호
|
||||
* @param mode 화면 모드 (등록: insert, 수정: update)
|
||||
* @param actInfoId 행위정보ID (수정 시)
|
||||
* @param model 모델
|
||||
* @return ModelAndView
|
||||
*/
|
||||
@Operation(summary = "불법위반행위정보 팝업", description = "불법위반행위정보 등록/수정 팝업 화면을 제공합니다.")
|
||||
@GetMapping("/popup.do")
|
||||
public ModelAndView popup(
|
||||
@Parameter(description = "단속연도") @RequestParam(required = false) String crdnYr,
|
||||
@Parameter(description = "단속번호") @RequestParam(required = false) String crdnNo,
|
||||
@Parameter(description = "화면모드") @RequestParam(defaultValue = "insert") String mode,
|
||||
@Parameter(description = "행위정보ID") @RequestParam(required = false) String actInfoId,
|
||||
Model model) {
|
||||
|
||||
log.debug("불법위반행위정보 팝업 요청 - crdnYr: {}, crdnNo: {}, mode: {}, actInfoId: {}", crdnYr, crdnNo, mode, actInfoId);
|
||||
|
||||
try {
|
||||
CrdnActInfoVO data = null;
|
||||
|
||||
// 수정 모드인 경우 기존 데이터 조회
|
||||
if ("update".equals(mode) && actInfoId != null) {
|
||||
data = service.selectActInfoByPk(actInfoId);
|
||||
}
|
||||
|
||||
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/crdnActInfo/crdnActInfoRegistPopup" + TilesConstants.POPUP);
|
||||
mav.addObject("data", data);
|
||||
mav.addObject("mode", mode);
|
||||
mav.addObject("crdnYr", crdnYr);
|
||||
mav.addObject("crdnNo", crdnNo);
|
||||
|
||||
// 필요한 공통코드 조회
|
||||
model.addAttribute("actTypeCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("ACT_TYPE_CD").build()));
|
||||
model.addAttribute("vltnLwrgCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("VLTN_LWRG_CD").build()));
|
||||
model.addAttribute("strctIdxCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("STRCT_IDX_CD").build()));
|
||||
model.addAttribute("usgIdxCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("USG_IDX_CD").build()));
|
||||
|
||||
return mav;
|
||||
} catch (Exception e) {
|
||||
log.error("불법위반행위정보 팝업 처리 중 오류 발생", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 등록 (AJAX)
|
||||
* @param vo 등록할 불법위반행위정보
|
||||
* @return 등록 결과
|
||||
*/
|
||||
@Operation(summary = "불법위반행위정보 등록", description = "불법위반행위정보를 등록합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/insert.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> insertAjax(@ModelAttribute CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 등록 요청: {}", vo);
|
||||
|
||||
// 현재 로그인한 사용자 정보 설정
|
||||
String userId = SessionUtil.getUserId();
|
||||
vo.setRgtr(userId);
|
||||
|
||||
int result = service.insertActInfo(vo);
|
||||
|
||||
if (result > 0) {
|
||||
return ApiResponseUtil.success(MessageConstants.Common.SAVE_SUCCESS);
|
||||
} else {
|
||||
return ApiResponseUtil.error("등록에 실패했습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 수정 (AJAX)
|
||||
* @param vo 수정할 불법위반행위정보
|
||||
* @return 수정 결과
|
||||
*/
|
||||
@Operation(summary = "불법위반행위정보 수정", description = "불법위반행위정보를 수정합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "수정 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/update.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> updateAjax(@ModelAttribute CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 수정 요청: {}", vo);
|
||||
|
||||
// 현재 로그인한 사용자 정보 설정
|
||||
String userId = SessionUtil.getUserId();
|
||||
vo.setMdfr(userId);
|
||||
|
||||
int result = service.updateActInfo(vo);
|
||||
|
||||
if (result > 0) {
|
||||
return ApiResponseUtil.success(MessageConstants.Common.SAVE_SUCCESS);
|
||||
} else {
|
||||
return ApiResponseUtil.error("수정에 실패했습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 삭제 (AJAX)
|
||||
* @param actInfoIds 삭제할 행위정보ID 목록
|
||||
* @return 삭제 결과
|
||||
*/
|
||||
@Operation(summary = "불법위반행위정보 삭제", description = "불법위반행위정보를 삭제합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "삭제 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/delete.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> deleteAjax(@RequestParam("actInfoIds[]") List<String> actInfoIds) {
|
||||
log.debug("불법위반행위정보 삭제 요청: {}", actInfoIds);
|
||||
|
||||
if (actInfoIds == null || actInfoIds.isEmpty()) {
|
||||
return ApiResponseUtil.error("삭제할 항목을 선택해 주세요.");
|
||||
}
|
||||
|
||||
// 현재 로그인한 사용자 정보
|
||||
String userId = SessionUtil.getUserId();
|
||||
|
||||
// 중요한 로직 주석: 각 행위정보 ID에 대해 논리 삭제 수행
|
||||
int deletedCount = 0;
|
||||
for (String actInfoId : actInfoIds) {
|
||||
if (actInfoId != null && !actInfoId.trim().isEmpty()) {
|
||||
CrdnActInfoVO deleteVO = CrdnActInfoVO.builder()
|
||||
.actInfoId(actInfoId)
|
||||
.dltr(userId)
|
||||
.build();
|
||||
int result = service.deleteActInfo(deleteVO);
|
||||
deletedCount += result;
|
||||
}
|
||||
}
|
||||
|
||||
if (deletedCount > 0) {
|
||||
return ApiResponseUtil.success(MessageConstants.Common.SAVE_SUCCESS);
|
||||
} else {
|
||||
return ApiResponseUtil.error("삭제에 실패했습니다.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActInfo.mapper;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 매퍼 인터페이스
|
||||
* 중요한 로직 주석: tb_act_info 테이블에 대한 CRUD 작업과 코드명 조인 조회를 제공한다.
|
||||
*/
|
||||
@Mapper
|
||||
public interface CrdnActInfoMapper {
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 목록 조회
|
||||
* @param vo 검색조건 및 페이징 정보
|
||||
* @return 불법위반행위정보 목록
|
||||
*/
|
||||
List<CrdnActInfoVO> selectActInfoList(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 목록 총 개수 조회
|
||||
* @param vo 검색조건
|
||||
* @return 총 개수
|
||||
*/
|
||||
int selectActInfoListTotalCount(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 등록
|
||||
* @param vo 등록할 불법위반행위정보
|
||||
* @return 등록 결과
|
||||
*/
|
||||
int insertActInfo(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 상세 조회 (PK 기준)
|
||||
* @param actInfoId 행위 정보 ID
|
||||
* @return 불법위반행위정보 상세
|
||||
*/
|
||||
CrdnActInfoVO selectActInfoByPk(String actInfoId);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 수정
|
||||
* @param vo 수정할 불법위반행위정보
|
||||
* @return 수정 결과
|
||||
*/
|
||||
int updateActInfo(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 삭제 (논리삭제)
|
||||
* @param vo 삭제할 불법위반행위정보 (delYn, delDt, dltr 포함)
|
||||
* @return 삭제 결과
|
||||
*/
|
||||
int deleteActInfo(CrdnActInfoVO vo);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActInfo.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import go.kr.project.common.model.PagingVO;
|
||||
import lombok.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 VO
|
||||
* 중요한 로직 주석: tb_act_info 테이블과 매핑되며, 목록 조회 시 코드명(시군구/행위유형/위반법규)을 함께 제공하기 위해 필드를 포함한다.
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CrdnActInfoVO extends PagingVO {
|
||||
|
||||
// ============ 테이블 컬럼 ============
|
||||
private String actInfoId; // 행위 정보 ID
|
||||
private String sggCd; // 시군구 코드
|
||||
private String crdnYr; // 단속 연도
|
||||
private String crdnNo; // 단속 번호
|
||||
private String pstnInfoId; // 위치 정보 ID
|
||||
private String actBgngYmd; // 행위 시작 일자
|
||||
private String actTypeCd; // 행위 유형 코드
|
||||
private String vltnLwrgCd1; // 위반 법규 코드 1
|
||||
private String vltnLwrgCd2; // 위반 법규 코드 2
|
||||
private String strctIdxCd; // 구조 지수 코드
|
||||
private String usgIdxCd; // 용도 지수 코드
|
||||
private BigDecimal hgt; // 높이
|
||||
private BigDecimal wdth; // 가로
|
||||
private BigDecimal vrtc; // 세로
|
||||
private BigDecimal area; // 면적
|
||||
private String rmrk; // 비고
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime regDt; // 등록 일시
|
||||
private String rgtr; // 등록자
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime mdfcnDt; // 수정 일시
|
||||
private String mdfr; // 수정자
|
||||
|
||||
private String delYn; // 삭제 여부
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime delDt; // 삭제 일시
|
||||
private String dltr; // 삭제자
|
||||
|
||||
// ============ 조인 컬럼(코드명) ============
|
||||
private String sggCdNm; // 시군구 코드명
|
||||
private String actTypeCdNm; // 행위 유형 코드명
|
||||
private String vltnLwrgCd1Nm; // 위반 법규 코드 1명
|
||||
private String vltnLwrgCd2Nm; // 위반 법규 코드 2명
|
||||
private String strctIdxCdNm; // 구조 지수 코드명
|
||||
private String usgIdxCdNm; // 용도 지수 코드명
|
||||
|
||||
// ============ 조인 컬럼(사용자정보) ============
|
||||
private String rgtrAcnt; // 등록자 계정
|
||||
private String rgtrNm; // 등록자명
|
||||
private String mdfrAcnt; // 수정자 계정
|
||||
private String mdfrNm; // 수정자명
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActInfo.service;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 서비스 인터페이스
|
||||
* 중요한 로직 주석: tb_act_info 테이블의 CRUD 작업을 위한 비즈니스 로직을 정의한다.
|
||||
*/
|
||||
public interface CrdnActInfoService {
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 목록 조회
|
||||
* @param vo 검색조건 및 페이징 정보
|
||||
* @return 불법위반행위정보 목록
|
||||
*/
|
||||
List<CrdnActInfoVO> selectActInfoList(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 목록 총 개수 조회
|
||||
* @param vo 검색조건
|
||||
* @return 총 개수
|
||||
*/
|
||||
int selectActInfoListTotalCount(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 등록
|
||||
* @param vo 등록할 불법위반행위정보
|
||||
* @return 등록 결과
|
||||
*/
|
||||
int insertActInfo(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 상세 조회 (PK 기준)
|
||||
* @param actInfoId 행위 정보 ID
|
||||
* @return 불법위반행위정보 상세
|
||||
*/
|
||||
CrdnActInfoVO selectActInfoByPk(String actInfoId);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 수정
|
||||
* @param vo 수정할 불법위반행위정보
|
||||
* @return 수정 결과
|
||||
*/
|
||||
int updateActInfo(CrdnActInfoVO vo);
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 삭제 (논리삭제)
|
||||
* @param vo 삭제할 불법위반행위정보 (delYn, delDt, dltr 포함)
|
||||
* @return 삭제 결과
|
||||
*/
|
||||
int deleteActInfo(CrdnActInfoVO vo);
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.impl;
|
||||
|
||||
import egovframework.exception.MessageException;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.mapper.CrdnActInfoMapper;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.CrdnActInfoService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 불법위반행위정보 서비스 구현체
|
||||
* <pre>
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.impl
|
||||
* fileName : CrdnActInfoServiceImpl
|
||||
* author : 개발자
|
||||
* date : 2025-08-28
|
||||
* description : 불법위반행위정보 관련 비즈니스 로직 구현
|
||||
* 중요한 로직 주석: tb_act_info 테이블의 CRUD 작업과 비즈니스 검증 로직을 담당한다.
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-08-28 개발자 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CrdnActInfoServiceImpl extends EgovAbstractServiceImpl implements CrdnActInfoService {
|
||||
|
||||
private final CrdnActInfoMapper mapper;
|
||||
|
||||
@Override
|
||||
public List<CrdnActInfoVO> selectActInfoList(CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 목록 조회: {}", vo);
|
||||
return mapper.selectActInfoList(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int selectActInfoListTotalCount(CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 총 개수 조회: {}", vo);
|
||||
return mapper.selectActInfoListTotalCount(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertActInfo(CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 등록: {}", vo);
|
||||
|
||||
// 중요한 로직 주석: 동일한 단속년도/단속번호/위치정보에 대한 중복 등록 방지
|
||||
CrdnActInfoVO existingRecord = null;
|
||||
if (vo.getCrdnYr() != null && vo.getCrdnNo() != null && vo.getPstnInfoId() != null) {
|
||||
List<CrdnActInfoVO> existingList = mapper.selectActInfoList(CrdnActInfoVO.builder()
|
||||
.crdnYr(vo.getCrdnYr())
|
||||
.crdnNo(vo.getCrdnNo())
|
||||
.pstnInfoId(vo.getPstnInfoId())
|
||||
.build());
|
||||
|
||||
if (!existingList.isEmpty()) {
|
||||
existingRecord = existingList.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (existingRecord != null) {
|
||||
log.warn("이미 등록된 불법위반행위정보가 존재합니다. 단속년도: {}, 단속번호: {}, 위치정보ID: {}",
|
||||
vo.getCrdnYr(), vo.getCrdnNo(), vo.getPstnInfoId());
|
||||
return 0;
|
||||
}
|
||||
|
||||
return mapper.insertActInfo(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrdnActInfoVO selectActInfoByPk(String actInfoId) {
|
||||
log.debug("불법위반행위정보 상세 조회: {}", actInfoId);
|
||||
return mapper.selectActInfoByPk(actInfoId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateActInfo(CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 수정: {}", vo);
|
||||
return mapper.updateActInfo(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteActInfo(CrdnActInfoVO vo) {
|
||||
log.debug("불법위반행위정보 삭제: {}", vo);
|
||||
return mapper.deleteActInfo(vo);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,138 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActrInfo.controller;
|
||||
|
||||
import egovframework.util.ApiResponseUtil;
|
||||
import egovframework.util.SessionUtil;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.model.CrdnActrInfoVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service.CrdnActrInfoService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 위반행위자정보 컨트롤러
|
||||
* <pre>
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.crdnActrInfo.controller
|
||||
* fileName : CrdnActrInfoController
|
||||
* author : 개발자
|
||||
* date : 2025-08-28
|
||||
* description : 위반행위자정보 관련 컨트롤러
|
||||
* 중요한 로직 주석: 위반행위자정보의 CRUD 작업을 담당한다. (수정 기능 없음)
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-08-28 개발자 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/crdn/crndRegistAndView/crdnActrInfo")
|
||||
@Tag(name = "위반행위자정보", description = "위반행위자정보 관리 API")
|
||||
public class CrdnActrInfoController {
|
||||
|
||||
private final CrdnActrInfoService service;
|
||||
|
||||
/**
|
||||
* 위반행위자정보 목록 조회 (AJAX)
|
||||
* @param vo 검색조건 및 페이징 정보
|
||||
* @return 위반행위자정보 목록
|
||||
*/
|
||||
@Operation(summary = "위반행위자정보 목록 조회", description = "위반행위자정보 목록을 조회합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/list.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> listAjax(@ModelAttribute CrdnActrInfoVO vo) {
|
||||
log.debug("위반행위자정보 목록 조회 요청: {}", vo);
|
||||
|
||||
// 1. 총 개수 조회
|
||||
int totalCount = service.selectActrInfoListTotalCount(vo);
|
||||
// 2. 응답 데이터 구성
|
||||
vo.setTotalCount(totalCount);
|
||||
|
||||
List<CrdnActrInfoVO> list = service.selectActrInfoList(vo);
|
||||
|
||||
return ApiResponseUtil.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 위반행위자정보 등록 (AJAX)
|
||||
* @param vo 등록할 위반행위자정보
|
||||
* @return 등록 결과
|
||||
*/
|
||||
@Operation(summary = "위반행위자정보 등록", description = "위반행위자정보를 등록합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/insert.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> insertAjax(@ModelAttribute CrdnActrInfoVO vo) {
|
||||
log.debug("위반행위자정보 등록 요청: {}", vo);
|
||||
|
||||
// 현재 로그인한 사용자 정보 설정
|
||||
String userId = SessionUtil.getUserId();
|
||||
vo.setRgtr(userId);
|
||||
|
||||
int result = service.insertActrInfo(vo);
|
||||
|
||||
if (result > 0) {
|
||||
return ApiResponseUtil.success("등록이 완료되었습니다.");
|
||||
} else {
|
||||
return ApiResponseUtil.error("등록에 실패했습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 위반행위자정보 삭제 (AJAX)
|
||||
* @param actrInfoIds 삭제할 행위자정보ID 목록
|
||||
* @return 삭제 결과
|
||||
*/
|
||||
@Operation(summary = "위반행위자정보 삭제", description = "위반행위자정보를 삭제합니다.")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "삭제 성공"),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류")
|
||||
})
|
||||
@PostMapping("/delete.ajax")
|
||||
@ResponseBody
|
||||
public ResponseEntity<?> deleteAjax(@RequestParam("actrInfoIds[]") List<String> actrInfoIds) {
|
||||
log.debug("위반행위자정보 삭제 요청: {}", actrInfoIds);
|
||||
|
||||
if (actrInfoIds == null || actrInfoIds.isEmpty()) {
|
||||
return ApiResponseUtil.error("삭제할 항목을 선택해 주세요.");
|
||||
}
|
||||
|
||||
// 현재 로그인한 사용자 정보
|
||||
String userId = SessionUtil.getUserId();
|
||||
|
||||
// 중요한 로직 주석: 각 행위자정보 ID에 대해 논리 삭제 수행
|
||||
int deletedCount = 0;
|
||||
for (String actrInfoId : actrInfoIds) {
|
||||
if (actrInfoId != null && !actrInfoId.trim().isEmpty()) {
|
||||
CrdnActrInfoVO deleteVO = CrdnActrInfoVO.builder()
|
||||
.actrInfoId(actrInfoId)
|
||||
.dltr(userId)
|
||||
.build();
|
||||
int result = service.deleteActrInfo(deleteVO);
|
||||
deletedCount += result;
|
||||
}
|
||||
}
|
||||
|
||||
if (deletedCount > 0) {
|
||||
return ApiResponseUtil.success("삭제가 완료되었습니다.");
|
||||
} else {
|
||||
return ApiResponseUtil.error("삭제에 실패했습니다.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActrInfo.mapper;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.model.CrdnActrInfoVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 위반행위자정보 매퍼 인터페이스
|
||||
* 중요한 로직 주석: tb_actr_info 테이블에 대한 CRUD 작업과 소유자 정보 조인 조회를 제공한다.
|
||||
*/
|
||||
@Mapper
|
||||
public interface CrdnActrInfoMapper {
|
||||
|
||||
/**
|
||||
* 위반행위자정보 목록 조회
|
||||
* @param vo 검색조건 및 페이징 정보
|
||||
* @return 위반행위자정보 목록
|
||||
*/
|
||||
List<CrdnActrInfoVO> selectActrInfoList(CrdnActrInfoVO vo);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 목록 총 개수 조회
|
||||
* @param vo 검색조건
|
||||
* @return 총 개수
|
||||
*/
|
||||
int selectActrInfoListTotalCount(CrdnActrInfoVO vo);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 등록
|
||||
* @param vo 등록할 위반행위자정보
|
||||
* @return 등록 결과
|
||||
*/
|
||||
int insertActrInfo(CrdnActrInfoVO vo);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 상세 조회 (PK 기준)
|
||||
* @param actrInfoId 행위자 정보 ID
|
||||
* @return 위반행위자정보 상세
|
||||
*/
|
||||
CrdnActrInfoVO selectActrInfoByPk(String actrInfoId);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 삭제 (논리삭제)
|
||||
* @param vo 삭제할 위반행위자정보 (delYn, delDt, dltr 포함)
|
||||
* @return 삭제 결과
|
||||
*/
|
||||
int deleteActrInfo(CrdnActrInfoVO vo);
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActrInfo.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import go.kr.project.common.model.PagingVO;
|
||||
import lombok.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 위반행위자정보 VO
|
||||
* 중요한 로직 주석: tb_actr_info 테이블과 매핑되며, 목록 조회 시 코드명(시군구)과 소유자 정보를 함께 제공하기 위해 필드를 포함한다.
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CrdnActrInfoVO extends PagingVO {
|
||||
|
||||
// ============ 테이블 컬럼 ============
|
||||
private String actrInfoId; // 행위자 정보 ID
|
||||
private String sggCd; // 시군구 코드
|
||||
private String crdnYr; // 단속 연도
|
||||
private String crdnNo; // 단속 번호
|
||||
private String actInfoId; // 행위 정보 ID
|
||||
private String ownrId; // 소유자 ID
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime regDt; // 등록 일시
|
||||
private String rgtr; // 등록자
|
||||
|
||||
private String delYn; // 삭제 여부
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime delDt; // 삭제 일시
|
||||
private String dltr; // 삭제자
|
||||
|
||||
// ============ 조인 컬럼(코드명) ============
|
||||
private String sggCdNm; // 시군구 코드명
|
||||
|
||||
// ============ 조인 컬럼(소유자정보 - tb_ownr 테이블) ============
|
||||
private String ownrNm; // 소유자명 (FLNM)
|
||||
private String ownrRrno; // 소유자 주민등록번호 (RRNO)
|
||||
private String ownrTelno; // 소유자 전화번호 (TELNO)
|
||||
private String ownrAddr; // 소유자 주소 (LOTNO_ADDR + DTL_ADDR)
|
||||
private String ownrDtlAddr; // 소유자 상세주소 (DTL_ADDR)
|
||||
private String ownrZip; // 소유자 우편번호 (ZIP)
|
||||
|
||||
// ============ 조인 컬럼(사용자정보) ============
|
||||
private String rgtrAcnt; // 등록자 계정
|
||||
private String rgtrNm; // 등록자명
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.model.CrdnActrInfoVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 위반행위자정보 서비스 인터페이스
|
||||
* 중요한 로직 주석: tb_actr_info 테이블의 CRUD 작업을 위한 비즈니스 로직을 정의한다.
|
||||
*/
|
||||
public interface CrdnActrInfoService {
|
||||
|
||||
/**
|
||||
* 위반행위자정보 목록 조회
|
||||
* @param vo 검색조건 및 페이징 정보
|
||||
* @return 위반행위자정보 목록
|
||||
*/
|
||||
List<CrdnActrInfoVO> selectActrInfoList(CrdnActrInfoVO vo);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 목록 총 개수 조회
|
||||
* @param vo 검색조건
|
||||
* @return 총 개수
|
||||
*/
|
||||
int selectActrInfoListTotalCount(CrdnActrInfoVO vo);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 등록
|
||||
* @param vo 등록할 위반행위자정보
|
||||
* @return 등록 결과
|
||||
*/
|
||||
int insertActrInfo(CrdnActrInfoVO vo);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 상세 조회 (PK 기준)
|
||||
* @param actrInfoId 행위자 정보 ID
|
||||
* @return 위반행위자정보 상세
|
||||
*/
|
||||
CrdnActrInfoVO selectActrInfoByPk(String actrInfoId);
|
||||
|
||||
/**
|
||||
* 위반행위자정보 삭제 (논리삭제)
|
||||
* @param vo 삭제할 위반행위자정보 (delYn, delDt, dltr 포함)
|
||||
* @return 삭제 결과
|
||||
*/
|
||||
int deleteActrInfo(CrdnActrInfoVO vo);
|
||||
}
|
||||
@ -0,0 +1,85 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service.impl;
|
||||
|
||||
import egovframework.exception.MessageException;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.mapper.CrdnActrInfoMapper;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.model.CrdnActrInfoVO;
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service.CrdnActrInfoService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 위반행위자정보 서비스 구현체
|
||||
* <pre>
|
||||
* packageName : go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service.impl
|
||||
* fileName : CrdnActrInfoServiceImpl
|
||||
* author : 개발자
|
||||
* date : 2025-08-28
|
||||
* description : 위반행위자정보 관련 비즈니스 로직 구현
|
||||
* 중요한 로직 주석: tb_actr_info 테이블의 CRUD 작업과 비즈니스 검증 로직을 담당한다.
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 2025-08-28 개발자 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CrdnActrInfoServiceImpl extends EgovAbstractServiceImpl implements CrdnActrInfoService {
|
||||
|
||||
private final CrdnActrInfoMapper mapper;
|
||||
|
||||
@Override
|
||||
public List<CrdnActrInfoVO> selectActrInfoList(CrdnActrInfoVO vo) {
|
||||
log.debug("위반행위자정보 목록 조회: {}", vo);
|
||||
return mapper.selectActrInfoList(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int selectActrInfoListTotalCount(CrdnActrInfoVO vo) {
|
||||
log.debug("위반행위자정보 총 개수 조회: {}", vo);
|
||||
return mapper.selectActrInfoListTotalCount(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertActrInfo(CrdnActrInfoVO vo) {
|
||||
log.debug("위반행위자정보 등록: {}", vo);
|
||||
|
||||
// 중요한 로직 주석: 동일한 행위정보ID와 소유자ID에 대한 중복 등록 방지
|
||||
CrdnActrInfoVO existingRecord = null;
|
||||
if (vo.getActInfoId() != null && vo.getOwnrId() != null) {
|
||||
List<CrdnActrInfoVO> existingList = mapper.selectActrInfoList(CrdnActrInfoVO.builder()
|
||||
.actInfoId(vo.getActInfoId())
|
||||
.ownrId(vo.getOwnrId())
|
||||
.build());
|
||||
|
||||
if (!existingList.isEmpty()) {
|
||||
existingRecord = existingList.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (existingRecord != null) {
|
||||
log.warn("이미 등록된 위반행위자정보가 존재합니다. 행위정보ID: {}, 소유자ID: {}",
|
||||
vo.getActInfoId(), vo.getOwnrId());
|
||||
return 0;
|
||||
}
|
||||
|
||||
return mapper.insertActrInfo(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrdnActrInfoVO selectActrInfoByPk(String actrInfoId) {
|
||||
log.debug("위반행위자정보 상세 조회: {}", actrInfoId);
|
||||
return mapper.selectActrInfoByPk(actrInfoId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteActrInfo(CrdnActrInfoVO vo) {
|
||||
log.debug("위반행위자정보 삭제: {}", vo);
|
||||
return mapper.deleteActrInfo(vo);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnOwnrSelect.mapper;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnOwnrSelect.model.CrdnOwnrSelectVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 소유자 선택 MyBatis 매퍼
|
||||
* 중요한 로직 주석: tb_ownr 테이블 조회를 담당한다. 소유자 선택 팝업에서 사용.
|
||||
*/
|
||||
@Mapper
|
||||
public interface CrdnOwnrSelectMapper {
|
||||
|
||||
/** 목록 조회 */
|
||||
List<CrdnOwnrSelectVO> selectOwnrList(CrdnOwnrSelectVO vo);
|
||||
|
||||
/** 총 개수 */
|
||||
int selectOwnrListTotalCount(CrdnOwnrSelectVO vo);
|
||||
|
||||
/** 상세 조회 */
|
||||
CrdnOwnrSelectVO selectOwnrByPk(String ownrId);
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.crdnOwnrSelect.service;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.crdnOwnrSelect.model.CrdnOwnrSelectVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 소유자 선택 서비스 인터페이스
|
||||
*/
|
||||
public interface CrdnOwnrSelectService {
|
||||
|
||||
/** 소유자 목록 조회 */
|
||||
List<CrdnOwnrSelectVO> selectOwnrList(CrdnOwnrSelectVO vo);
|
||||
|
||||
/** 소유자 목록 총 개수 조회 */
|
||||
int selectOwnrListTotalCount(CrdnOwnrSelectVO vo);
|
||||
|
||||
/** 소유자 상세 조회 */
|
||||
CrdnOwnrSelectVO selectOwnrByPk(String ownrId);
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.ownrSelect.mapper;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.ownrSelect.model.OwnrSelectVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 소유자 선택 MyBatis 매퍼
|
||||
* 중요한 로직 주석: tb_ownr 테이블 조회를 담당한다. 소유자 선택 팝업에서 사용.
|
||||
*/
|
||||
@Mapper
|
||||
public interface OwnrSelectMapper {
|
||||
|
||||
/** 목록 조회 */
|
||||
List<OwnrSelectVO> selectOwnrList(OwnrSelectVO vo);
|
||||
|
||||
/** 총 개수 */
|
||||
int selectOwnrListTotalCount(OwnrSelectVO vo);
|
||||
|
||||
/** 상세 조회 */
|
||||
OwnrSelectVO selectOwnrByPk(String ownrId);
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.ownrSelect.service;
|
||||
|
||||
import go.kr.project.crdn.crndRegistAndView.ownrSelect.model.OwnrSelectVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 소유자 선택 서비스 인터페이스
|
||||
*/
|
||||
public interface OwnrSelectService {
|
||||
|
||||
/** 소유자 목록 조회 */
|
||||
List<OwnrSelectVO> selectOwnrList(OwnrSelectVO vo);
|
||||
|
||||
/** 소유자 목록 총 개수 조회 */
|
||||
int selectOwnrListTotalCount(OwnrSelectVO vo);
|
||||
|
||||
/** 소유자 상세 조회 */
|
||||
OwnrSelectVO selectOwnrByPk(String ownrId);
|
||||
}
|
||||
@ -0,0 +1,214 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="go.kr.project.crdn.crndRegistAndView.crdnActInfo.mapper.CrdnActInfoMapper">
|
||||
|
||||
<!-- 불법위반행위정보 목록 조회 -->
|
||||
<select id="selectActInfoList" parameterType="CrdnActInfoVO"
|
||||
resultType="CrdnActInfoVO">
|
||||
/* ActInfoMapper.selectActInfoList : 불법위반행위정보 목록 조회 */
|
||||
SELECT
|
||||
a.ACT_INFO_ID,
|
||||
a.SGG_CD,
|
||||
sgg.CD_NM AS SGG_CD_NM,
|
||||
a.CRDN_YR,
|
||||
a.CRDN_NO,
|
||||
a.PSTN_INFO_ID,
|
||||
a.ACT_BGNG_YMD,
|
||||
a.ACT_TYPE_CD,
|
||||
act.CD_NM AS ACT_TYPE_CD_NM,
|
||||
a.VLTN_LWRG_CD_1,
|
||||
vltn1.CD_NM AS VLTN_LWRG_CD_1_NM,
|
||||
a.VLTN_LWRG_CD_2,
|
||||
vltn2.CD_NM AS VLTN_LWRG_CD_2_NM,
|
||||
a.STRCT_IDX_CD,
|
||||
strct.CD_NM AS STRCT_IDX_CD_NM,
|
||||
a.USG_IDX_CD,
|
||||
usg.CD_NM AS USG_IDX_CD_NM,
|
||||
a.HGT,
|
||||
a.WDTH,
|
||||
a.VRTC,
|
||||
a.AREA,
|
||||
a.RMRK,
|
||||
a.REG_DT,
|
||||
a.RGTR,
|
||||
regUser.USER_ACNT AS RGTR_ACNT,
|
||||
regUser.USER_NM AS RGTR_NM,
|
||||
a.MDFCN_DT,
|
||||
a.MDFR,
|
||||
modUser.USER_ACNT AS MDFR_ACNT,
|
||||
modUser.USER_NM AS MDFR_NM,
|
||||
a.DEL_YN,
|
||||
a.DEL_DT,
|
||||
a.DLTR
|
||||
FROM tb_act_info a
|
||||
LEFT JOIN tb_cd_detail sgg ON sgg.CD_GROUP_ID = 'ORG_CD' AND sgg.CD_ID = a.SGG_CD AND sgg.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail act ON act.CD_GROUP_ID = 'ACT_TYPE_CD' AND act.CD_ID = a.ACT_TYPE_CD AND act.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail vltn1 ON vltn1.CD_GROUP_ID = 'VLTN_LWRG_CD' AND vltn1.CD_ID = a.VLTN_LWRG_CD_1 AND vltn1.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail vltn2 ON vltn2.CD_GROUP_ID = 'VLTN_LWRG_CD' AND vltn2.CD_ID = a.VLTN_LWRG_CD_2 AND vltn2.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail strct ON strct.CD_GROUP_ID = 'STRCT_IDX_CD' AND strct.CD_ID = a.STRCT_IDX_CD AND strct.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail usg ON usg.CD_GROUP_ID = 'USG_IDX_CD' AND usg.CD_ID = a.USG_IDX_CD AND usg.USE_YN = 'Y'
|
||||
LEFT JOIN tb_user regUser ON regUser.USER_ID = a.RGTR
|
||||
LEFT JOIN tb_user modUser ON modUser.USER_ID = a.MDFR
|
||||
WHERE a.DEL_YN = 'N'
|
||||
<if test='crdnYr != null and crdnYr != ""'>
|
||||
AND a.CRDN_YR = #{crdnYr}
|
||||
</if>
|
||||
<if test='crdnNo != null and crdnNo != ""'>
|
||||
AND a.CRDN_NO = #{crdnNo}
|
||||
</if>
|
||||
<if test='pstnInfoId != null and pstnInfoId != ""'>
|
||||
AND a.PSTN_INFO_ID = #{pstnInfoId}
|
||||
</if>
|
||||
ORDER BY a.REG_DT DESC, a.ACT_INFO_ID DESC
|
||||
<if test='pagingYn != null and pagingYn == "Y"'>
|
||||
limit #{startIndex}, #{perPage} /* 서버사이드 페이징 처리 */
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 불법위반행위정보 총 개수 조회 -->
|
||||
<select id="selectActInfoListTotalCount" parameterType="CrdnActInfoVO" resultType="int">
|
||||
/* ActInfoMapper.selectActInfoListTotalCount : 불법위반행위정보 총 개수 조회 */
|
||||
SELECT COUNT(*)
|
||||
FROM tb_act_info a
|
||||
WHERE a.DEL_YN = 'N'
|
||||
<if test='crdnYr != null and crdnYr != ""'>
|
||||
AND a.CRDN_YR = #{crdnYr}
|
||||
</if>
|
||||
<if test='crdnNo != null and crdnNo != ""'>
|
||||
AND a.CRDN_NO = #{crdnNo}
|
||||
</if>
|
||||
<if test='pstnInfoId != null and pstnInfoId != ""'>
|
||||
AND a.PSTN_INFO_ID = #{pstnInfoId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 불법위반행위정보 등록 (시컨스 사용) -->
|
||||
<insert id="insertActInfo" parameterType="CrdnActInfoVO">
|
||||
/* ActInfoMapper.insertActInfo : 불법위반행위정보 등록 */
|
||||
INSERT INTO tb_act_info (
|
||||
ACT_INFO_ID,
|
||||
SGG_CD,
|
||||
CRDN_YR,
|
||||
CRDN_NO,
|
||||
PSTN_INFO_ID,
|
||||
ACT_BGNG_YMD,
|
||||
ACT_TYPE_CD,
|
||||
VLTN_LWRG_CD_1,
|
||||
VLTN_LWRG_CD_2,
|
||||
STRCT_IDX_CD,
|
||||
USG_IDX_CD,
|
||||
HGT,
|
||||
WDTH,
|
||||
VRTC,
|
||||
AREA,
|
||||
RMRK,
|
||||
REG_DT,
|
||||
RGTR,
|
||||
DEL_YN
|
||||
) VALUES (
|
||||
CONCAT('ACTI', LPAD(NEXTVAL(seq_act_info_id), 16, '0')),
|
||||
#{sggCd},
|
||||
#{crdnYr},
|
||||
#{crdnNo},
|
||||
#{pstnInfoId},
|
||||
#{actBgngYmd},
|
||||
#{actTypeCd},
|
||||
#{vltnLwrgCd1},
|
||||
#{vltnLwrgCd2},
|
||||
#{strctIdxCd},
|
||||
#{usgIdxCd},
|
||||
#{hgt},
|
||||
#{wdth},
|
||||
#{vrtc},
|
||||
#{area},
|
||||
#{rmrk},
|
||||
NOW(),
|
||||
#{rgtr},
|
||||
'N'
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 불법위반행위정보 상세 조회 -->
|
||||
<select id="selectActInfoByPk" parameterType="String" resultType="CrdnActInfoVO">
|
||||
/* ActInfoMapper.selectActInfoByPk : 불법위반행위정보 상세 조회 */
|
||||
SELECT
|
||||
a.ACT_INFO_ID,
|
||||
a.SGG_CD,
|
||||
sgg.CD_NM AS SGG_CD_NM,
|
||||
a.CRDN_YR,
|
||||
a.CRDN_NO,
|
||||
a.PSTN_INFO_ID,
|
||||
a.ACT_BGNG_YMD,
|
||||
a.ACT_TYPE_CD,
|
||||
act.CD_NM AS ACT_TYPE_CD_NM,
|
||||
a.VLTN_LWRG_CD_1,
|
||||
vltn1.CD_NM AS VLTN_LWRG_CD_1_NM,
|
||||
a.VLTN_LWRG_CD_2,
|
||||
vltn2.CD_NM AS VLTN_LWRG_CD_2_NM,
|
||||
a.STRCT_IDX_CD,
|
||||
strct.CD_NM AS STRCT_IDX_CD_NM,
|
||||
a.USG_IDX_CD,
|
||||
usg.CD_NM AS USG_IDX_CD_NM,
|
||||
a.HGT,
|
||||
a.WDTH,
|
||||
a.VRTC,
|
||||
a.AREA,
|
||||
a.RMRK,
|
||||
a.REG_DT,
|
||||
a.RGTR,
|
||||
regUser.USER_ACNT AS RGTR_ACNT,
|
||||
regUser.USER_NM AS RGTR_NM,
|
||||
a.MDFCN_DT,
|
||||
a.MDFR,
|
||||
modUser.USER_ACNT AS MDFR_ACNT,
|
||||
modUser.USER_NM AS MDFR_NM,
|
||||
a.DEL_YN,
|
||||
a.DEL_DT,
|
||||
a.DLTR
|
||||
FROM tb_act_info a
|
||||
LEFT JOIN tb_cd_detail sgg ON sgg.CD_GROUP_ID = 'ORG_CD' AND sgg.CD_ID = a.SGG_CD AND sgg.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail act ON act.CD_GROUP_ID = 'ACT_TYPE_CD' AND act.CD_ID = a.ACT_TYPE_CD AND act.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail vltn1 ON vltn1.CD_GROUP_ID = 'VLTN_LWRG_CD' AND vltn1.CD_ID = a.VLTN_LWRG_CD_1 AND vltn1.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail vltn2 ON vltn2.CD_GROUP_ID = 'VLTN_LWRG_CD' AND vltn2.CD_ID = a.VLTN_LWRG_CD_2 AND vltn2.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail strct ON strct.CD_GROUP_ID = 'STRCT_IDX_CD' AND strct.CD_ID = a.STRCT_IDX_CD AND strct.USE_YN = 'Y'
|
||||
LEFT JOIN tb_cd_detail usg ON usg.CD_GROUP_ID = 'USG_IDX_CD' AND usg.CD_ID = a.USG_IDX_CD AND usg.USE_YN = 'Y'
|
||||
LEFT JOIN tb_user regUser ON regUser.USER_ID = a.RGTR
|
||||
LEFT JOIN tb_user modUser ON modUser.USER_ID = a.MDFR
|
||||
WHERE a.ACT_INFO_ID = #{actInfoId}
|
||||
AND a.DEL_YN = 'N'
|
||||
</select>
|
||||
|
||||
<!-- 불법위반행위정보 수정 -->
|
||||
<update id="updateActInfo" parameterType="CrdnActInfoVO">
|
||||
/* ActInfoMapper.updateActInfo : 불법위반행위정보 수정 */
|
||||
UPDATE tb_act_info SET
|
||||
ACT_BGNG_YMD = #{actBgngYmd},
|
||||
ACT_TYPE_CD = #{actTypeCd},
|
||||
VLTN_LWRG_CD_1 = #{vltnLwrgCd1},
|
||||
VLTN_LWRG_CD_2 = #{vltnLwrgCd2},
|
||||
STRCT_IDX_CD = #{strctIdxCd},
|
||||
USG_IDX_CD = #{usgIdxCd},
|
||||
HGT = #{hgt},
|
||||
WDTH = #{wdth},
|
||||
VRTC = #{vrtc},
|
||||
AREA = #{area},
|
||||
RMRK = #{rmrk},
|
||||
MDFCN_DT = NOW(),
|
||||
MDFR = #{mdfr}
|
||||
WHERE ACT_INFO_ID = #{actInfoId}
|
||||
AND DEL_YN = 'N'
|
||||
</update>
|
||||
|
||||
<!-- 불법위반행위정보 삭제 (논리삭제) -->
|
||||
<update id="deleteActInfo" parameterType="CrdnActInfoVO">
|
||||
/* ActInfoMapper.deleteActInfo : 불법위반행위정보 삭제 (논리삭제) */
|
||||
UPDATE tb_act_info SET
|
||||
DEL_YN = 'Y',
|
||||
DEL_DT = NOW(),
|
||||
DLTR = #{dltr}
|
||||
WHERE ACT_INFO_ID = #{actInfoId}
|
||||
AND DEL_YN = 'N'
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="go.kr.project.crdn.crndRegistAndView.crdnActrInfo.mapper.CrdnActrInfoMapper">
|
||||
|
||||
<!-- 위반행위자정보 목록 조회 -->
|
||||
<select id="selectActrInfoList" parameterType="CrdnActrInfoVO"
|
||||
resultType="CrdnActrInfoVO">
|
||||
/* ActrInfoMapper.selectActrInfoList : 위반행위자정보 목록 조회 */
|
||||
SELECT
|
||||
ar.ACTR_INFO_ID,
|
||||
ar.SGG_CD,
|
||||
sgg.CD_NM AS SGG_CD_NM,
|
||||
ar.CRDN_YR,
|
||||
ar.CRDN_NO,
|
||||
ar.ACT_INFO_ID,
|
||||
ar.OWNR_ID,
|
||||
ar.REG_DT,
|
||||
ar.RGTR,
|
||||
regUser.USER_ACNT AS RGTR_ACNT,
|
||||
regUser.USER_NM AS RGTR_NM,
|
||||
ar.DEL_YN,
|
||||
ar.DEL_DT,
|
||||
ar.DLTR,
|
||||
o.FLNM AS OWNR_NM,
|
||||
'' AS OWNR_BRTH_YMD,
|
||||
o.RRNO AS OWNR_RRNO,
|
||||
o.TELNO AS OWNR_TELNO,
|
||||
'' AS OWNR_MBTLNO,
|
||||
CONCAT(IFNULL(o.LOTNO_ADDR, ''), ' ', IFNULL(o.DTL_ADDR, '')) AS OWNR_ADDR,
|
||||
o.DTL_ADDR AS OWNR_DTL_ADDR,
|
||||
o.ZIP AS OWNR_ZIP
|
||||
FROM tb_actr_info ar
|
||||
LEFT JOIN tb_cd_detail sgg ON sgg.CD_GROUP_ID = 'ORG_CD' AND sgg.CD_ID = ar.SGG_CD AND sgg.USE_YN = 'Y'
|
||||
LEFT JOIN tb_user regUser ON regUser.USER_ID = ar.RGTR
|
||||
LEFT JOIN tb_ownr o ON o.OWNR_ID = ar.OWNR_ID AND o.DEL_YN = 'N'
|
||||
WHERE ar.DEL_YN = 'N'
|
||||
<if test='crdnYr != null and crdnYr != ""'>
|
||||
AND ar.CRDN_YR = #{crdnYr}
|
||||
</if>
|
||||
<if test='crdnNo != null and crdnNo != ""'>
|
||||
AND ar.CRDN_NO = #{crdnNo}
|
||||
</if>
|
||||
<if test='actInfoId != null and actInfoId != ""'>
|
||||
AND ar.ACT_INFO_ID = #{actInfoId}
|
||||
</if>
|
||||
ORDER BY ar.REG_DT DESC, ar.ACTR_INFO_ID DESC
|
||||
<if test='pagingYn != null and pagingYn == "Y"'>
|
||||
limit #{startIndex}, #{perPage} /* 서버사이드 페이징 처리 */
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 위반행위자정보 총 개수 조회 -->
|
||||
<select id="selectActrInfoListTotalCount" parameterType="CrdnActrInfoVO" resultType="int">
|
||||
/* ActrInfoMapper.selectActrInfoListTotalCount : 위반행위자정보 총 개수 조회 */
|
||||
SELECT COUNT(*)
|
||||
FROM tb_actr_info ar
|
||||
WHERE ar.DEL_YN = 'N'
|
||||
<if test='crdnYr != null and crdnYr != ""'>
|
||||
AND ar.CRDN_YR = #{crdnYr}
|
||||
</if>
|
||||
<if test='crdnNo != null and crdnNo != ""'>
|
||||
AND ar.CRDN_NO = #{crdnNo}
|
||||
</if>
|
||||
<if test='actInfoId != null and actInfoId != ""'>
|
||||
AND ar.ACT_INFO_ID = #{actInfoId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 위반행위자정보 등록 (시컨스 사용) -->
|
||||
<insert id="insertActrInfo" parameterType="CrdnActrInfoVO">
|
||||
/* ActrInfoMapper.insertActrInfo : 위반행위자정보 등록 */
|
||||
INSERT INTO tb_actr_info (
|
||||
ACTR_INFO_ID,
|
||||
SGG_CD,
|
||||
CRDN_YR,
|
||||
CRDN_NO,
|
||||
ACT_INFO_ID,
|
||||
OWNR_ID,
|
||||
REG_DT,
|
||||
RGTR,
|
||||
DEL_YN
|
||||
) VALUES (
|
||||
CONCAT('ACTR', LPAD(NEXTVAL(seq_actr_info_id), 16, '0')),
|
||||
#{sggCd},
|
||||
#{crdnYr},
|
||||
#{crdnNo},
|
||||
#{actInfoId},
|
||||
#{ownrId},
|
||||
NOW(),
|
||||
#{rgtr},
|
||||
'N'
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 위반행위자정보 상세 조회 -->
|
||||
<select id="selectActrInfoByPk" parameterType="String" resultType="CrdnActrInfoVO">
|
||||
/* ActrInfoMapper.selectActrInfoByPk : 위반행위자정보 상세 조회 */
|
||||
SELECT
|
||||
ar.ACTR_INFO_ID,
|
||||
ar.SGG_CD,
|
||||
sgg.CD_NM AS SGG_CD_NM,
|
||||
ar.CRDN_YR,
|
||||
ar.CRDN_NO,
|
||||
ar.ACT_INFO_ID,
|
||||
ar.OWNR_ID,
|
||||
ar.REG_DT,
|
||||
ar.RGTR,
|
||||
regUser.USER_ACNT AS RGTR_ACNT,
|
||||
regUser.USER_NM AS RGTR_NM,
|
||||
ar.DEL_YN,
|
||||
ar.DEL_DT,
|
||||
ar.DLTR,
|
||||
o.FLNM AS OWNR_NM,
|
||||
'' AS OWNR_BRTH_YMD,
|
||||
o.RRNO AS OWNR_RRNO,
|
||||
o.TELNO AS OWNR_TELNO,
|
||||
'' AS OWNR_MBTLNO,
|
||||
CONCAT(IFNULL(o.LOTNO_ADDR, ''), ' ', IFNULL(o.DTL_ADDR, '')) AS OWNR_ADDR,
|
||||
o.DTL_ADDR AS OWNR_DTL_ADDR,
|
||||
o.ZIP AS OWNR_ZIP
|
||||
FROM tb_actr_info ar
|
||||
LEFT JOIN tb_cd_detail sgg ON sgg.CD_GROUP_ID = 'ORG_CD' AND sgg.CD_ID = ar.SGG_CD AND sgg.USE_YN = 'Y'
|
||||
LEFT JOIN tb_user regUser ON regUser.USER_ID = ar.RGTR
|
||||
LEFT JOIN tb_ownr o ON o.OWNR_ID = ar.OWNR_ID AND o.DEL_YN = 'N'
|
||||
WHERE ar.ACTR_INFO_ID = #{actrInfoId}
|
||||
AND ar.DEL_YN = 'N'
|
||||
</select>
|
||||
|
||||
<!-- 위반행위자정보 삭제 (논리삭제) -->
|
||||
<update id="deleteActrInfo" parameterType="CrdnActrInfoVO">
|
||||
/* ActrInfoMapper.deleteActrInfo : 위반행위자정보 삭제 (논리삭제) */
|
||||
UPDATE tb_actr_info SET
|
||||
DEL_YN = 'Y',
|
||||
DEL_DT = NOW(),
|
||||
DLTR = #{dltr}
|
||||
WHERE ACTR_INFO_ID = #{actrInfoId}
|
||||
AND DEL_YN = 'N'
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue