From e9fad7dd9007980837bb38edb821301f8c769b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Tue, 30 Sep 2025 17:16:38 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=AC=EB=B6=80=EA=B3=BC=20=EC=8B=A0?= =?UTF-8?q?=EA=B7=9C=EB=A1=9C=EC=A7=81=20init...=20=EC=A0=84=EB=A9=B4=20?= =?UTF-8?q?=EC=9E=AC=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/mapper/CrdnRelevyMapper.java | 94 +++-- .../main/model/CrdnRelevyVO.java | 54 ++- .../service/impl/CrdnRelevyServiceImpl.java | 174 +++++---- .../main/CrdnRelevyMapper_maria.xml | 340 +++++++++++------- 4 files changed, 442 insertions(+), 220 deletions(-) diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyMapper.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyMapper.java index 9cddadd..b34dffc 100644 --- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyMapper.java +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyMapper.java @@ -67,52 +67,90 @@ public interface CrdnRelevyMapper { String selectNextActInfoId(); /** - * 불법행위 정보를 복사하여 신규 등록한다. - * 조치완료된 항목은 제외하고 복사한다. + * 신규 조치 ID. + * @return 신규 조치 ID. + */ + String selectNextActnInfoId(); + + /** + * 신규 행위자 ID. + * @return 신규 행위자 ID. + */ + String selectNextActrInfoId(); + + /** + * 단속 상태를 업데이트한다. + * 현재 진행 상태를 시정명령(CRDN_PRCS_STTS_CD_30_CRC_CMD)으로 설정하고 + * 최초단속년도, 최초단속번호를 원본 정보로 설정한다. * @param relevyVO 재부과 정보 - * @return 등록된 행의 수 + * @return 수정된 행의 수 */ - int insertCrdnActInfo(CrdnRelevyVO relevyVO); + int updateCrdnStatus(CrdnRelevyVO relevyVO); + + // ============================================================ + // for문 중첩 방식을 위한 단건 조회/등록 메서드들 + // ============================================================ /** - * 첨부파일 정보를 복사하여 신규 등록한다. - * 조치완료된 항목과 연결된 파일은 제외하고 복사한다. + * 원본 단속의 불법행위 목록을 조회한다 (조치완료 제외). * @param relevyVO 재부과 정보 + * @return 불법행위 목록 + */ + List selectSrcActInfoList(CrdnRelevyVO relevyVO); + + /** + * 불법행위 정보 단건을 신규 등록한다. + * @param relevyVO 재부과 정보 (actInfoId 포함) * @return 등록된 행의 수 */ - int insertCrdnPhotoInfo(CrdnRelevyVO relevyVO); + int insertActInfoOne(CrdnRelevyVO relevyVO); /** - * 행위자 정보를 복사하여 신규 등록한다. - * 조치완료된 항목은 제외하고 복사한다. - * @param relevyVO 재부과 정보 + * 원본 불법행위의 조치 정보 목록을 조회한다. + * @param relevyVO 재부과 정보 (srcActInfoId 포함) + * @return 조치 정보 목록 + */ + List selectSrcActnInfoList(CrdnRelevyVO relevyVO); + + /** + * 조치 정보 단건을 신규 등록한다. + * @param relevyVO 재부과 정보 (actnInfoId, actInfoId 포함) * @return 등록된 행의 수 */ - int insertCrdnActrInfo(CrdnRelevyVO relevyVO); + int insertActnInfoOne(CrdnRelevyVO relevyVO); /** - * 단속 상태를 업데이트한다. - * 현재 진행 상태를 시정명령(CRDN_PRCS_STTS_CD_30_CRC_CMD)으로 설정하고 - * 최초단속년도, 최초단속번호를 원본 정보로 설정한다. - * @param relevyVO 재부과 정보 - * @return 수정된 행의 수 + * 원본 불법행위의 행위사진 목록을 조회한다 (CRDN_PHOTO_SE_CD='1'). + * @param relevyVO 재부과 정보 (srcActInfoId 포함) + * @return 행위사진 목록 */ - int updateCrdnStatus(CrdnRelevyVO relevyVO); + List selectSrcPhotoListByActInfo(CrdnRelevyVO relevyVO); /** - * 원본 단속의 첨부파일 목록을 조회한다. - * 조치완료된 항목은 제외하고 조회한다. - * @param srcCrdnYr 원본 단속 년도 - * @param srcCrdnNo 원본 단속 번호 - * @return 첨부파일 목록 + * 원본 조치정보의 조치사진 목록을 조회한다 (CRDN_PHOTO_SE_CD='2'). + * @param relevyVO 재부과 정보 (srcActnInfoId 포함) + * @return 조치사진 목록 */ - List selectSrcPhotoList(@Param("srcCrdnYr") String srcCrdnYr, @Param("srcCrdnNo") String srcCrdnNo); + List selectSrcPhotoListByActnInfo(CrdnRelevyVO relevyVO); /** - * 재부과 첨부파일 정보를 업데이트한다. - * 물리적 파일 복사 후 새로운 파일명으로 데이터베이스 정보를 갱신한다. - * @param updateParams 업데이트할 파라미터 (newCrdnYr, newCrdnNo, crdnPhotoSn, crdnPhotoNm) - * @return 수정된 행의 수 + * 첨부파일 정보 단건을 신규 등록한다. + * @param photoVO 첨부파일 정보 + * @return 등록된 행의 수 + */ + int insertPhotoInfoOne(CrdnPhotoVO photoVO); + + /** + * 원본 불법행위의 행위자 정보 목록을 조회한다. + * @param relevyVO 재부과 정보 (srcActInfoId 포함) + * @return 행위자 정보 목록 + */ + List selectSrcActrInfoList(CrdnRelevyVO relevyVO); + + /** + * 행위자 정보 단건을 신규 등록한다. + * @param relevyVO 재부과 정보 (actrInfoId, actInfoId 포함) + * @return 등록된 행의 수 */ - int updateRelevyPhotoInfo(java.util.Map updateParams); + int insertActrInfoOne(CrdnRelevyVO relevyVO); } \ No newline at end of file diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyVO.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyVO.java index 67d2a4e..c4188e1 100644 --- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyVO.java +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyVO.java @@ -131,9 +131,59 @@ public class CrdnRelevyVO extends PagingVO { /** 산 여부 코드 */ private String mtnYnCd; - // ==================== 불법행위 정보 ==================== - /** 불법행위정보 ID*/ + // ==================== 불법행위 정보 (tb_act_info) ==================== + /** 원본 불법행위정보 ID */ + private String srcActInfoId; + /** 신규 불법행위정보 ID */ private String actInfoId; + /** 행위 시작 일자 */ + private String actBgngYmd; + /** 행위 유형 코드 */ + private String actTypeCd; + /** 행위 번호 */ + private String actNo; + /** 위반 법규 코드 1 */ + private String vltnLwrgCd1; + /** 위반 법규 코드 2 */ + private String vltnLwrgCd2; + /** 구조 지수 코드 */ + private String strctIdxCd; + /** 용도 지수 코드 */ + private String usgIdxCd; + /** 높이 */ + private String hgt; + /** 가로 */ + private String wdth; + /** 세로 */ + private String vrtc; + /** 면적 */ + private String area; + /** 조치 최종 일자 */ + private String actnLastYmd; + /** 조치 총 면적 */ + private String actnWholArea; + /** 조치 처리 상태 코드 */ + private String actnPrcsStCd; + + // ==================== 조치 정보 (tb_actn_info) ==================== + /** 원본 조치정보 ID */ + private String srcActnInfoId; + /** 신규 조치정보 ID */ + private String actnInfoId; + /** 조치 일자 */ + private String actnYmd; + /** 조치 면적 */ + private String actnArea; + /** 조치 비고 */ + private String actnRmrk; + + // ==================== 행위자 정보 (tb_actr_info) ==================== + /** 원본 행위자정보 ID */ + private String srcActrInfoId; + /** 신규 행위자정보 ID */ + private String actrInfoId; + /** 소유자 ID */ + private String ownrId; // ==================== 등록자 정보 ==================== /** 등록자 계정 */ diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyServiceImpl.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyServiceImpl.java index 427bbf6..ffad627 100644 --- a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyServiceImpl.java +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyServiceImpl.java @@ -68,6 +68,25 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { * 재부과 처리를 수행합니다. * 트랜잭션 처리로 모든 데이터가 정상적으로 복사되거나 모두 롤백됩니다. * + * FK 관계 및 1:N 관계에 따른 복사 순서: + *
+     * 1. tb_crdn (단속 기본 정보) - PK: (CRDN_YR, CRDN_NO)
+     *    │
+     *    ├─> 2. tb_pstn_info (위치 정보) - PK: PSTN_INFO_ID
+     *    │    │
+     *    │    └─> 3. tb_ownr_info (소유자 정보) - FK: PSTN_INFO_ID
+     *    │
+     *    └─> 4. tb_act_info (불법행위 정보) 1:N - PK: ACT_INFO_ID, FK: PSTN_INFO_ID
+     *         │
+     *         ├─> 5. tb_actn_info (조치 정보) 1:N - PK: ACTN_INFO_ID, FK: ACT_INFO_ID
+     *         │
+     *         ├─> 6. tb_crdn_photo (첨부파일) 1:N - PK: (ACT_INFO_ID, CRDN_PHOTO_SN)
+     *         │                                   FK: ACT_INFO_ID (필수)
+     *         │                                   FK: ACTN_INFO_ID (선택 - 조치사진인 경우)
+     *         │
+     *         └─> 7. tb_actr_info (행위자 정보) 1:N - PK: ACTR_INFO_ID, FK: ACT_INFO_ID
+     * 
+ * * @param relevyVO 재부과 정보를 담은 VO 객체 * @return 처리 결과 (신규 단속 번호 등) */ @@ -94,29 +113,98 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { throw new MessageException("기본 단속 정보 복사 실패"); } - // 4. 위치 정보 복사 (tb_crdn_pstn_info) + // 4. 위치 정보 복사 (tb_pstn_info) + // 새로운 PSTN_INFO_ID 생성하여 tb_ownr_info, tb_act_info에서 참조 String nextPstnInfoId = relevyMapper.selectNextPstnInfoId(); relevyVO.setPstnInfoId(nextPstnInfoId); relevyMapper.insertCrdnPstnInfo(relevyVO); - // 5. 소유자 정보 복사 (tb_crdn_ownr_info) + // 5. 소유자 정보 복사 (tb_ownr_info) + // PSTN_INFO_ID를 FK로 참조 relevyMapper.insertCrdnOwnrInfo(relevyVO); - // 6. 불법행위 정보 복사 (조치완료 제외) - // 6-1. 행위 정보 (tb_crdn_act_info) - relevyMapper.insertCrdnActInfo(relevyVO); - - // 6-2. 첨부파일 복사 (조치완료 제외) - 데이터베이스 레코드 복사 - relevyMapper.insertCrdnPhotoInfo(relevyVO); + // 6. 불법행위 목록 조회 및 중첩 for문으로 하위 데이터 복사 + List srcActInfoList = relevyMapper.selectSrcActInfoList(relevyVO); + log.info("복사할 불법행위 개수: {}", srcActInfoList.size()); + + for (CrdnRelevyVO srcActInfo : srcActInfoList) { + // 6-1. 불법행위 정보 단건 등록 (tb_act_info) + String newActInfoId = relevyMapper.selectNextActInfoId(); + log.info("생성된 newActInfoId: {}, 원본 srcActInfoId: {}", newActInfoId, srcActInfo.getSrcActInfoId()); + srcActInfo.setActInfoId(newActInfoId); + srcActInfo.setNewCrdnYr(currentYear); + srcActInfo.setNewCrdnNo(newCrdnNo); + srcActInfo.setPstnInfoId(nextPstnInfoId); + srcActInfo.setRgtr(relevyVO.getRgtr()); + relevyMapper.insertActInfoOne(srcActInfo); + + // 6-2. 행위사진 처리 (1:N) - CRDN_PHOTO_SE_CD='1' + List srcActPhotoList = relevyMapper.selectSrcPhotoListByActInfo(srcActInfo); + log.debug("불법행위 {} 행위사진 개수: {}", srcActInfo.getActNo(), srcActPhotoList.size()); + for (CrdnPhotoVO srcPhoto : srcActPhotoList) { + // 물리적 파일 복사 + String newPhotoNm = copyPhysicalFileAndGetNewName(srcPhoto); + + // DB에 첨부파일 정보 등록 (ACT_INFO_ID만) + log.info("행위사진 insert - newActInfoId: {}, 원본 SN: {}", newActInfoId, srcPhoto.getCrdnPhotoSn()); + srcPhoto.setActInfoId(newActInfoId); + srcPhoto.setCrdnYr(currentYear); + srcPhoto.setCrdnNo(newCrdnNo); + srcPhoto.setCrdnPhotoNm(newPhotoNm); + srcPhoto.setActnInfoId(null); // 행위사진은 ACTN_INFO_ID 없음 + srcPhoto.setRgtr(relevyVO.getRgtr()); + + relevyMapper.insertPhotoInfoOne(srcPhoto); + } - // 6-3. 물리적 파일 복사 - processPhysicalFileCopy(relevyVO); + // 6-3. 조치 정보 및 조치사진 처리 (1:N:N) + List srcActnInfoList = relevyMapper.selectSrcActnInfoList(srcActInfo); + log.debug("불법행위 {} 조치정보 개수: {}", srcActInfo.getActNo(), srcActnInfoList.size()); + for (CrdnRelevyVO srcActnInfo : srcActnInfoList) { + // 6-3-1. 조치 정보 단건 등록 (tb_actn_info) + String newActnInfoId = relevyMapper.selectNextActnInfoId(); + srcActnInfo.setActnInfoId(newActnInfoId); + srcActnInfo.setNewCrdnYr(currentYear); + srcActnInfo.setNewCrdnNo(newCrdnNo); + srcActnInfo.setActInfoId(newActInfoId); + srcActnInfo.setRgtr(relevyVO.getRgtr()); + relevyMapper.insertActnInfoOne(srcActnInfo); + + // 6-3-2. 조치사진 처리 (1:N) - CRDN_PHOTO_SE_CD='2' + List srcActnPhotoList = relevyMapper.selectSrcPhotoListByActnInfo(srcActnInfo); + log.debug("조치정보 {} 조치사진 개수: {}", srcActnInfo.getActnYmd(), srcActnPhotoList.size()); + for (CrdnPhotoVO srcPhoto : srcActnPhotoList) { + // 물리적 파일 복사 + String newPhotoNm = copyPhysicalFileAndGetNewName(srcPhoto); + + // DB에 첨부파일 정보 등록 (ACT_INFO_ID + ACTN_INFO_ID) + log.info("조치사진 insert - newActInfoId: {}, 원본 SN: {}", newActInfoId, srcPhoto.getCrdnPhotoSn()); + srcPhoto.setActInfoId(newActInfoId); + srcPhoto.setCrdnYr(currentYear); + srcPhoto.setCrdnNo(newCrdnNo); + srcPhoto.setCrdnPhotoNm(newPhotoNm); + srcPhoto.setActnInfoId(newActnInfoId); // 조치사진은 ACTN_INFO_ID 필수 + srcPhoto.setRgtr(relevyVO.getRgtr()); + + relevyMapper.insertPhotoInfoOne(srcPhoto); + } + } - // 7. 조치 정보 복사 (조치완료 제외) - // 7-1. 행위자 정보 (tb_crdn_actr_info) - relevyMapper.insertCrdnActrInfo(relevyVO); + // 6-4. 행위자 정보 목록 조회 및 등록 (tb_actr_info) - 1:N + List srcActrInfoList = relevyMapper.selectSrcActrInfoList(srcActInfo); + log.debug("불법행위 {} 행위자 개수: {}", srcActInfo.getActNo(), srcActrInfoList.size()); + for (CrdnRelevyVO srcActrInfo : srcActrInfoList) { + String newActrInfoId = relevyMapper.selectNextActrInfoId(); + srcActrInfo.setActrInfoId(newActrInfoId); + srcActrInfo.setNewCrdnYr(currentYear); + srcActrInfo.setNewCrdnNo(newCrdnNo); + srcActrInfo.setActInfoId(newActInfoId); + srcActrInfo.setRgtr(relevyVO.getRgtr()); + relevyMapper.insertActrInfoOne(srcActrInfo); + } + } - // 8. 현재 진행 상태를 시정명령(30)으로 설정 및 최초단속 정보 업데이트 + // 7. 현재 진행 상태를 시정명령(30)으로 설정 및 최초단속 정보 업데이트 relevyMapper.updateCrdnStatus(relevyVO); log.info("재부과 처리 완료: 신규 단속번호={}", newCrdnNo); @@ -136,51 +224,17 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { } /** - * 물리적 파일 복사를 처리합니다. - * 원본 첨부파일들을 새로운 경로로 복사하고 데이터베이스 정보를 업데이트합니다. - * - * @param relevyVO 재부과 정보 - * @throws MessageException 파일 복사 실패 시 예외 발생 - */ - private void processPhysicalFileCopy(CrdnRelevyVO relevyVO) throws MessageException { - log.info("물리적 파일 복사 시작: srcCrdnYr={}, srcCrdnNo={}", relevyVO.getSrcCrdnYr(), relevyVO.getSrcCrdnNo()); - - try { - // 원본 첨부파일 목록 조회 - List srcPhotoList = relevyMapper.selectSrcPhotoList(relevyVO.getSrcCrdnYr(), relevyVO.getSrcCrdnNo()); - - if (srcPhotoList == null || srcPhotoList.isEmpty()) { - log.info("복사할 첨부파일이 없습니다."); - return; - } - - log.info("복사할 첨부파일 개수: {}", srcPhotoList.size()); - - // 각 파일에 대해 복사 처리 - for (CrdnPhotoVO srcPhoto : srcPhotoList) { - copyPhysicalFile(srcPhoto, relevyVO); - } - - log.info("물리적 파일 복사 완료"); - - } catch (Exception e) { - log.error("물리적 파일 복사 중 오류 발생", e); - throw new MessageException("첨부파일 복사 중 오류가 발생했습니다: " + e.getMessage()); - } - } - - /** - * 개별 첨부파일의 물리적 복사를 처리합니다. + * 개별 첨부파일의 물리적 복사를 처리하고 새로운 파일명을 반환합니다. * * @param srcPhoto 원본 첨부파일 정보 - * @param relevyVO 재부과 정보 + * @return 새로운 저장 파일명 (UUID 기반) */ - private void copyPhysicalFile(CrdnPhotoVO srcPhoto, CrdnRelevyVO relevyVO) { + private String copyPhysicalFileAndGetNewName(CrdnPhotoVO srcPhoto) { try { // 원본 파일 전체 경로 구성 String srcFilePath = srcPhoto.getCrdnPhotoPath() + File.separator + srcPhoto.getCrdnPhotoNm(); - // UUID를 이용한 새로운 저장 파일명 생성 (기존 로직 사용) + // UUID를 이용한 새로운 저장 파일명 생성 String fileExt = ""; String orglFileName = srcPhoto.getOrgnlPhotoNm(); if (orglFileName != null && orglFileName.contains(".")) { @@ -196,20 +250,10 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { boolean copySuccess = fileUtil.copyFile(srcFilePath, uploadDir, targetFilePath); if (copySuccess) { - // 복사된 파일 정보로 데이터베이스 업데이트 - // 재부과된 단속 정보의 첨부파일명을 새로운 UUID 파일명으로 변경 - Map updateParams = new HashMap<>(); - updateParams.put("actInfoId", relevyVO.getActInfoId()); - updateParams.put("newCrdnYr", relevyVO.getNewCrdnYr()); - updateParams.put("newCrdnNo", relevyVO.getNewCrdnNo()); - updateParams.put("crdnPhotoSn", srcPhoto.getCrdnPhotoSn()); - updateParams.put("crdnPhotoNm", newStrgFileNm); - updateParams.put("crdnPhotoPath", uploadDir); - int updateResult = relevyMapper.updateRelevyPhotoInfo(updateParams); - if (updateResult <= 0) { - throw new MessageException("첨부파일 정보 업데이트 실패: " + srcPhoto.getOrgnlPhotoNm()); - } log.debug("파일 복사 성공: {} -> {}", srcFilePath, targetFilePath); + // 새로운 경로로 업데이트 (DB INSERT 전에 사용) + srcPhoto.setCrdnPhotoPath(uploadDir); + return newStrgFileNm; } else { throw new MessageException("파일 복사 실패: " + srcPhoto.getOrgnlPhotoNm()); } diff --git a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyMapper_maria.xml b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyMapper_maria.xml index 278452f..dcf8e94 100644 --- a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyMapper_maria.xml @@ -224,9 +224,73 @@ /* CrdnRelevyMapper.selectNextActInfoId : 불법행위 정보 ID */ SELECT LPAD(NEXTVAL(seq_act_info_id), 10, '0') - - - /* CrdnRelevyMapper.insertCrdnActInfo : 불법행위 정보 복사 (조치완료 제외) */ + + + + + + + + + + + /* CrdnRelevyMapper.updateCrdnStatus : 단속 상태 업데이트 */ + UPDATE tb_crdn + SET CRDN_PRCS_STTS_CD = '30', /* 시정명령 */ + FRST_CRDN_YR = #{srcCrdnYr}, /* 최초 단속 연도 */ + FRST_CRDN_NO = #{srcCrdnNo}, /* 최초 단속 번호 */ + RELEVY_YN = 'Y' /* 재부과 여부 */ + WHERE CRDN_YR = #{newCrdnYr} + AND CRDN_NO = #{newCrdnNo} + AND DEL_YN = 'N' + + + + + + + + + + + + + /* CrdnRelevyMapper.insertActInfoOne : 불법행위 정보 단건 등록 */ INSERT INTO tb_act_info ( ACT_INFO_ID, SGG_CD, @@ -251,41 +315,126 @@ REG_DT, RGTR, DEL_YN + ) VALUES ( + #{actInfoId}, + #{sggCd}, + #{newCrdnYr}, + #{newCrdnNo}, + #{pstnInfoId}, + #{actBgngYmd}, + #{actTypeCd}, + #{actNo}, + #{vltnLwrgCd1}, + #{vltnLwrgCd2}, + #{strctIdxCd}, + #{usgIdxCd}, + #{hgt}, + #{wdth}, + #{vrtc}, + #{area}, + #{rmrk}, + #{actnLastYmd}, + #{actnWholArea}, + #{actnPrcsStCd}, + NOW(), + #{rgtr}, + 'N' ) + + + + + + + + /* CrdnRelevyMapper.insertActnInfoOne : 조치 정보 단건 등록 */ + INSERT INTO tb_actn_info ( + ACTN_INFO_ID, SGG_CD, + CRDN_YR, + CRDN_NO, + ACT_INFO_ID, + ACTN_YMD, + ACTN_AREA, + ACTN_RMRK, + REG_DT, + RGTR, + DEL_YN + ) VALUES ( + #{actnInfoId}, + #{sggCd}, #{newCrdnYr}, #{newCrdnNo}, - #{pstnInfoId}, - ACT_BGNG_YMD, - ACT_TYPE_CD, - ACT_NO, - VLTN_LWRG_CD_1, - VLTN_LWRG_CD_2, - STRCT_IDX_CD, - USG_IDX_CD, - HGT, - WDTH, - VRTC, - AREA, - RMRK, - ACTN_LAST_YMD, - ACTN_WHOL_AREA, - ACTN_PRCS_STTS_CD, + #{actInfoId}, + #{actnYmd}, + #{actnArea}, + #{actnRmrk}, NOW(), #{rgtr}, 'N' - FROM tb_act_info - WHERE CRDN_YR = #{srcCrdnYr} - AND CRDN_NO = #{srcCrdnNo} - AND DEL_YN = 'N' - AND (ACTN_PRCS_STTS_CD != '3' OR ACTN_PRCS_STTS_CD IS NULL) /* 조치완료 제외 */ + ) - - - /* CrdnRelevyMapper.insertCrdnPhotoInfo : 첨부파일 정보 복사 (조치완료 제외) */ + + + + + + + + + /* CrdnRelevyMapper.insertPhotoInfoOne : 첨부파일 정보 단건 등록 */ INSERT INTO tb_crdn_photo ( ACT_INFO_ID, CRDN_PHOTO_SN, @@ -300,39 +449,41 @@ REG_DT, RGTR, DEL_YN - ) - SELECT - a_new.ACT_INFO_ID, /* 새로 생성된 ACT_INFO_ID */ - p.CRDN_PHOTO_SN, - p.SGG_CD, - #{newCrdnYr}, - #{newCrdnNo}, - p.CRDN_PHOTO_PATH, - p.CRDN_PHOTO_NM, /* 물리적 파일 복사 후 서비스에서 업데이트 */ - p.CRDN_PHOTO_SE_CD, - p.ORGNL_PHOTO_NM, - p.ACTN_INFO_ID, + ) VALUES ( + #{actInfoId}, + #{crdnPhotoSn}, + #{sggCd}, + #{crdnYr}, + #{crdnNo}, + #{crdnPhotoPath}, + #{crdnPhotoNm}, + #{crdnPhotoSeCd}, + #{orgnlPhotoNm}, + #{actnInfoId}, NOW(), #{rgtr}, 'N' - FROM tb_crdn_photo p - INNER JOIN tb_act_info a_src ON a_src.CRDN_YR = p.CRDN_YR - AND a_src.CRDN_NO = p.CRDN_NO - AND a_src.ACT_INFO_ID = p.ACT_INFO_ID - AND a_src.DEL_YN = 'N' - INNER JOIN tb_act_info a_new ON a_new.CRDN_YR = #{newCrdnYr} - AND a_new.CRDN_NO = #{newCrdnNo} - AND a_new.ACT_NO = a_src.ACT_NO - AND a_new.DEL_YN = 'N' - WHERE p.CRDN_YR = #{srcCrdnYr} - AND p.CRDN_NO = #{srcCrdnNo} - AND p.DEL_YN = 'N' - AND (a_src.ACTN_PRCS_STTS_CD != '3' OR a_src.ACTN_PRCS_STTS_CD IS NULL) /* 조치완료 제외 */ + ) - - - /* CrdnRelevyMapper.insertCrdnActrInfo : 행위자 정보 복사 (조치완료 제외) */ + + + + + + /* CrdnRelevyMapper.insertActrInfoOne : 행위자 정보 단건 등록 */ INSERT INTO tb_actr_info ( ACTR_INFO_ID, SGG_CD, @@ -343,78 +494,17 @@ REG_DT, RGTR, DEL_YN - ) - SELECT - LPAD(NEXTVAL(seq_actr_info_id), 10, '0'), - a_new.SGG_CD, - a_new.CRDN_YR, - a_new.CRDN_NO, - a_new.ACT_INFO_ID, /* 새로 생성된 ACT_INFO_ID */ - ai.OWNR_ID, + ) VALUES ( + #{actrInfoId}, + #{sggCd}, + #{newCrdnYr}, + #{newCrdnNo}, + #{actInfoId}, + #{ownrId}, NOW(), #{rgtr}, 'N' - FROM tb_actr_info ai - INNER JOIN tb_act_info a_src ON a_src.ACT_INFO_ID = ai.ACT_INFO_ID - AND a_src.DEL_YN = 'N' - INNER JOIN tb_act_info a_new ON a_new.CRDN_YR = #{newCrdnYr} - AND a_new.CRDN_NO = #{newCrdnNo} - AND a_new.ACT_NO = a_src.ACT_NO - AND a_new.DEL_YN = 'N' - WHERE a_src.CRDN_YR = #{srcCrdnYr} - AND a_src.CRDN_NO = #{srcCrdnNo} - AND ai.DEL_YN = 'N' - AND (a_src.ACTN_PRCS_STTS_CD != '3' OR a_src.ACTN_PRCS_STTS_CD IS NULL) /* 조치완료 제외 */ + ) - - - /* CrdnRelevyMapper.updateCrdnStatus : 단속 상태 업데이트 */ - UPDATE tb_crdn - SET CRDN_PRCS_STTS_CD = '30', /* 시정명령 */ - FRST_CRDN_YR = #{srcCrdnYr}, /* 최초 단속 연도 */ - FRST_CRDN_NO = #{srcCrdnNo}, /* 최초 단속 번호 */ - RELEVY_YN = 'Y' /* 재부과 여부 */ - WHERE CRDN_YR = #{newCrdnYr} - AND CRDN_NO = #{newCrdnNo} - AND DEL_YN = 'N' - - - - - - - - /* CrdnRelevyMapper.updateRelevyPhotoInfo : 재부과 첨부파일 정보 업데이트 */ - UPDATE tb_crdn_photo - SET CRDN_PHOTO_NM = #{crdnPhotoNm}, - CRDN_PHOTO_PATH = #{crdnPhotoPath} - WHERE CRDN_YR = #{newCrdnYr} - AND CRDN_NO = #{newCrdnNo} - AND CRDN_PHOTO_SN = #{crdnPhotoSn} - AND ACT_INFO_ID = #{actInfoId} - AND DEL_YN = 'N' - - \ No newline at end of file