From 72557d1c207c76cf63afdaf3f07e7f1a346c371a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Thu, 13 Nov 2025 11:50:08 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=AC=EB=B6=80=EA=B3=BC=20=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80:=20=ED=8C=9D=EC=97=85=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B4=80=EB=A0=A8=20API,=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4,=20DAO=20=EA=B5=AC=ED=98=84=20=EB=B6=80=EA=B3=BC,=20?= =?UTF-8?q?=EC=9E=AC=EB=B6=80=EA=B3=BC=20=EC=8B=9C=20crdn=5Fno=20=EC=8B=9C?= =?UTF-8?q?=EC=BB=A8=EC=8A=A4=20=EA=B8=B0=EB=8A=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB-DDL/maria/ddl/ibmsdb/seq_crdn_no.sql | 7 + src/main/UbiService/bin/ubiservice.bat | 4 +- src/main/UbiService/ubiservice.xml | 4 +- .../CrdnRelevyHistoryController.java | 101 ++++++ .../main/mapper/CrdnRelevyHistoryMapper.java | 38 +++ .../main/mapper/CrdnRelevyMapper.java | 3 +- .../main/model/CrdnRelevyHistoryVO.java | 188 +++++++++++ .../service/CrdnRelevyHistoryService.java | 36 +++ .../impl/CrdnRegistAndViewServiceImpl.java | 2 +- .../impl/CrdnRelevyHistoryServiceImpl.java | 55 ++++ .../service/impl/CrdnRelevyServiceImpl.java | 20 +- src/main/resources/logback-spring.xml | 2 + .../main/CrdnRegistAndViewMapper_maria.xml | 6 +- .../main/CrdnRelevyHistoryMapper_maria.xml | 116 +++++++ .../main/CrdnRelevyMapper_maria.xml | 7 +- .../impltTaskHistoryPopup.jsp | 4 +- .../crdnRelevyHistory/relevyHistoryPopup.jsp | 306 ++++++++++++++++++ .../crdn/crndRegistAndView/main/list.jsp | 31 +- 18 files changed, 904 insertions(+), 26 deletions(-) create mode 100644 DB-DDL/maria/ddl/ibmsdb/seq_crdn_no.sql create mode 100644 src/main/java/go/kr/project/crdn/crndRegistAndView/main/controller/CrdnRelevyHistoryController.java create mode 100644 src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyHistoryMapper.java create mode 100644 src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyHistoryVO.java create mode 100644 src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRelevyHistoryService.java create mode 100644 src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyHistoryServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyHistoryMapper_maria.xml create mode 100644 src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnRelevyHistory/relevyHistoryPopup.jsp diff --git a/DB-DDL/maria/ddl/ibmsdb/seq_crdn_no.sql b/DB-DDL/maria/ddl/ibmsdb/seq_crdn_no.sql new file mode 100644 index 0000000..edd8af0 --- /dev/null +++ b/DB-DDL/maria/ddl/ibmsdb/seq_crdn_no.sql @@ -0,0 +1,7 @@ +CREATE SEQUENCE seq_crdn_no + START WITH 1 + INCREMENT BY 1 + MINVALUE 1 + MAXVALUE 999999 + CACHE 1000 + NOCYCLE; diff --git a/src/main/UbiService/bin/ubiservice.bat b/src/main/UbiService/bin/ubiservice.bat index 4626ee8..80c7651 100644 --- a/src/main/UbiService/bin/ubiservice.bat +++ b/src/main/UbiService/bin/ubiservice.bat @@ -3,8 +3,8 @@ echo ---------------------------------------- echo UbiService.bat echo ---------------------------------------- echo. -set JAVA_DIR=D:\Java\jdk1.8.0_271 -set UBISERVICE_DIR=D:\Work\git\IBMS_NEW\src\main\UbiService +set JAVA_DIR=D:\DEV\.jdks\jdk1.8.0_271 +set UBISERVICE_DIR=D:\workspace\git\IBMS_NEW\src\main\UbiService set PROPERTY_DIR=%UBISERVICE_DIR% set FONT_DIR=%UBISERVICE_DIR%\fonts\ set XMS=512M diff --git a/src/main/UbiService/ubiservice.xml b/src/main/UbiService/ubiservice.xml index 3f2786f..b1a5e42 100644 --- a/src/main/UbiService/ubiservice.xml +++ b/src/main/UbiService/ubiservice.xml @@ -27,8 +27,8 @@ relevyChainAjax(@ModelAttribute CrdnRelevyHistoryVO paramVO) { + log.debug("재부과 chain 목록 조회 - crdnYr: {}, crdnNo: {}, frstCrdnYr: {}, frstCrdnNo: {}", + paramVO.getCrdnYr(), paramVO.getCrdnNo(), paramVO.getFrstCrdnYr(), paramVO.getFrstCrdnNo()); + + // 재부과 chain 목록 조회 + List list = crdnRelevyHistoryService.selectRelevyChainList(paramVO); + + // 총 개수 설정 + paramVO.setTotalCount(list.size()); + + return ApiResponseUtil.successWithGrid(list, paramVO); + } + +} diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyHistoryMapper.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyHistoryMapper.java new file mode 100644 index 0000000..52314b0 --- /dev/null +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/mapper/CrdnRelevyHistoryMapper.java @@ -0,0 +1,38 @@ +package go.kr.project.crdn.crndRegistAndView.main.mapper; + +import go.kr.project.crdn.crndRegistAndView.main.model.CrdnRelevyHistoryVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * packageName : go.kr.project.crdn.crndRegistAndView.main.mapper + * fileName : CrdnRelevyHistMapper + * author : 시스템 관리자 + * date : 2025-01-30 + * description : 재부과 이력 조회를 위한 MyBatis 매퍼 인터페이스 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2025-01-30 시스템 관리자 최초 생성 + */ +@Mapper +public interface CrdnRelevyHistoryMapper { + + /** + * 단속 기본 정보 및 위치 정보를 조회합니다. + * + * @param vo 조회 조건 (단속연도, 단속번호) + * @return 단속 기본 정보 + */ + CrdnRelevyHistoryVO selectCrdnBasicInfo(CrdnRelevyHistoryVO vo); + + /** + * 재부과 chain 목록을 조회합니다. (최초 단속부터 자기 자신 포함한 chain) + * + * @param vo 조회 조건을 담은 VO 객체 (crdnYr, crdnNo, frstCrdnYr, frstCrdnNo 필수) + * @return 재부과 chain 목록 + */ + List selectRelevyChainList(CrdnRelevyHistoryVO vo); + +} 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 22e672b..eb6da6d 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 @@ -38,10 +38,9 @@ public interface CrdnRelevyMapper { /** * 지정된 년도의 다음 단속 번호를 조회한다. - * @param crdnYr 단속 년도 * @return 다음 단속 번호 (10자리 LPAD 형태) */ - String selectNextCrdnNo(@Param("crdnYr") String crdnYr); + String selectNextCrdnNo(); /** * 기본 단속 정보를 복사하여 신규 등록한다. diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyHistoryVO.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyHistoryVO.java new file mode 100644 index 0000000..864549f --- /dev/null +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/model/CrdnRelevyHistoryVO.java @@ -0,0 +1,188 @@ +package go.kr.project.crdn.crndRegistAndView.main.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; + +/** + * packageName : go.kr.project.crdn.crndRegistAndView.main.model + * fileName : CrdnRelevyHistVO + * author : 시스템 관리자 + * date : 2025-01-30 + * description : 재부과 이력 관련 데이터를 담는 Value Object 클래스 + * 중요한 로직 주석: 재부과 이력 조회를 위해 단속 테이블(tb_crdn)과 매핑되는 VO 클래스 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2025-01-30 시스템 관리자 최초 생성 + */ +@EqualsAndHashCode(callSuper=true) +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class CrdnRelevyHistoryVO extends PagingVO { + + // ==================== 기본 테이블 컬럼 ==================== + + /** 단속 연도 */ + private String crdnYr; + + /** 단속 번호 */ + private String crdnNo; + + /** 시군구 코드(그룹코드:ORG_CD, 로그인한 사용자정보에서 ORG_CD 가져온다.) */ + private String sggCd; + + /** 지역 구분 코드 */ + private String rgnSeCd; + + /** 적발 방법 코드 */ + private String dsclMthdCd; + + /** 적발 일자 */ + private String dsclYmd; + + /** 조사원 */ + private String exmnr; + + /** 비고 */ + private String rmrk; + + /** 처분 사전 시작 일자 */ + private String dspsBfhdBgngYmd; + + /** 처분 사전 종료 일자 */ + private String dspsBfhdEndYmd; + + /** 시정 명령 시작 일자 */ + private String crcCmdBgngYmd; + + /** 시정 명령 종료 일자 */ + private String crcCmdEndYmd; + + /** 시정 촉구 시작 일자 */ + private String crcUrgBgngYmd; + + /** 시정 촉구 종료 일자 */ + private String crcUrgEndYmd; + + /** 부과 예고 시작 일자 */ + private String levyPrvntcBgngYmd; + + /** 부과 예고 종료 일자 */ + private String levyPrvntcEndYmd; + + /** 부과 시작 일자 */ + private String levyBgngYmd; + + /** 부과 종료 일자 */ + private String levyEndYmd; + + /** 납부 촉구 시작 일자 */ + private String payUrgBgngYmd; + + /** 납부 촉구 종료 일자 */ + private String payUrgEndYmd; + + /** 최초 단속 연도 */ + private String frstCrdnYr; + + /** 최초 단속 번호 */ + private String frstCrdnNo; + + /** 재부과 여부 */ + private String relevyYn; + + /** 가중 부과 대상 여부 */ + private String agrvtnLevyTrgtYn; + + /** 단속 처리 상태 코드 */ + private String crdnPrcsSttsCd; + + /** 단속 처리 일자 */ + private String crdnPrcsYmd; + + /** 법정동 읍면동 코드 */ + private String stdgEmdCd; + + /** 행위 유형 코드 */ + private String actTypeCd; + + /** 용도 지수 코드 */ + private String usgIdxCd; + + /** 등록 일시 */ + @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 rgtrAcnt; + + /** 등록자 사용자명 */ + private String rgtrNm; + + /** 삭제 여부 */ + 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 rgnSeCdNm; + + /** 적발 방법 코드명 */ + private String dsclMthdCdNm; + + /** 단속 처리 상태 코드명 */ + private String crdnPrcsSttsCdNm; + + /** 소유자명들 (쉼표로 구분) */ + private String ownrNams; + + /** 행위자명들 (쉼표로 구분) */ + private String actrNams; + + /** 법정동 읍면동 코드명 */ + private String stdgEmdCdNm; + + /** 행위 유형 코드명 */ + private String actTypeCdNm; + + /** 용도 지수 코드명 */ + private String usgIdxCdNm; + + /** 지번 전체 주소 */ + private String lotnoWholAddr; + + /** 지번 주소 */ + private String lotnoAddr; + + /** 지번 본번 */ + private String lotnoMno; + + /** 지번 부번 */ + private String lotnoSno; + + /** 우편번호 */ + private String zip; + +} diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRelevyHistoryService.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRelevyHistoryService.java new file mode 100644 index 0000000..7491870 --- /dev/null +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/CrdnRelevyHistoryService.java @@ -0,0 +1,36 @@ +package go.kr.project.crdn.crndRegistAndView.main.service; + +import go.kr.project.crdn.crndRegistAndView.main.model.CrdnRelevyHistoryVO; + +import java.util.List; + +/** + * packageName : go.kr.project.crdn.crndRegistAndView.main.service + * fileName : CrdnRelevyHistService + * author : 시스템 관리자 + * date : 2025-01-30 + * description : 재부과 이력 조회 서비스 인터페이스 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2025-01-30 시스템 관리자 최초 생성 + */ +public interface CrdnRelevyHistoryService { + + /** + * 단속 기본 정보 및 위치 정보를 조회합니다. + * + * @param vo 조회 조건 (단속연도, 단속번호) + * @return 단속 기본 정보 + */ + CrdnRelevyHistoryVO selectCrdnBasicInfo(CrdnRelevyHistoryVO vo); + + /** + * 재부과 chain 목록을 조회합니다. + * + * @param vo 조회 조건 (단속연도, 단속번호, 최초단속연도, 최초단속번호) + * @return 재부과 chain 목록 + */ + List selectRelevyChainList(CrdnRelevyHistoryVO vo); + +} 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 8684717..4b477fb 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 @@ -108,7 +108,7 @@ public class CrdnRegistAndViewServiceImpl extends EgovAbstractServiceImpl implem } // 년도별 시퀀스 존재 여부 확인 및 생성 - ensureSequenceExists(vo.getCrdnYr() == null ? LocalDate.now().getYear() + "" : vo.getCrdnYr()); + //ensureSequenceExists(vo.getCrdnYr() == null ? LocalDate.now().getYear() + "" : vo.getCrdnYr()); vo.setCrdnPrcsSttsCd(CrdnPrcsSttsConstants.CRDN_PRCS_STTS_CD_10_CRDN); // 등록자 정보 설정 및 등록 수행 diff --git a/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyHistoryServiceImpl.java b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyHistoryServiceImpl.java new file mode 100644 index 0000000..e958be5 --- /dev/null +++ b/src/main/java/go/kr/project/crdn/crndRegistAndView/main/service/impl/CrdnRelevyHistoryServiceImpl.java @@ -0,0 +1,55 @@ +package go.kr.project.crdn.crndRegistAndView.main.service.impl; + +import go.kr.project.crdn.crndRegistAndView.main.mapper.CrdnRelevyHistoryMapper; +import go.kr.project.crdn.crndRegistAndView.main.model.CrdnRelevyHistoryVO; +import go.kr.project.crdn.crndRegistAndView.main.service.CrdnRelevyHistoryService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * packageName : go.kr.project.crdn.crndRegistAndView.main.service.impl + * fileName : CrdnRelevyHistServiceImpl + * author : 시스템 관리자 + * date : 2025-01-30 + * description : 재부과 이력 조회 서비스 구현체 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2025-01-30 시스템 관리자 최초 생성 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class CrdnRelevyHistoryServiceImpl implements CrdnRelevyHistoryService { + + private final CrdnRelevyHistoryMapper mapper; + + /** + * 단속 기본 정보 및 위치 정보를 조회합니다. + * + * @param vo 조회 조건 (단속연도, 단속번호) + * @return 단속 기본 정보 + */ + @Override + public CrdnRelevyHistoryVO selectCrdnBasicInfo(CrdnRelevyHistoryVO vo) { + log.debug("단속 기본 정보 조회 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo()); + return mapper.selectCrdnBasicInfo(vo); + } + + /** + * 재부과 chain 목록을 조회합니다. + * + * @param vo 조회 조건 (단속연도, 단속번호, 최초단속연도, 최초단속번호) + * @return 재부과 chain 목록 + */ + @Override + public List selectRelevyChainList(CrdnRelevyHistoryVO vo) { + log.debug("재부과 chain 목록 조회 - 단속연도: {}, 단속번호: {}, 최초단속연도: {}, 최초단속번호: {}", + vo.getCrdnYr(), vo.getCrdnNo(), vo.getFrstCrdnYr(), vo.getFrstCrdnNo()); + return mapper.selectRelevyChainList(vo); + } + +} 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 4281088..fa8c55e 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 @@ -117,12 +117,12 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { String currentYear = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy")); // 년도별 시퀀스 존재 여부 확인 및 생성 - ensureSequenceExists(currentYear); + //ensureSequenceExists(currentYear); // 2. 신규 단속 번호 생성 (현재 년도 기준) relevyVO.setNewCrdnYr(currentYear); - String newCrdnNo = relevyMapper.selectNextCrdnNo(currentYear); - relevyVO.setNewCrdnNo(newCrdnNo); + //String newCrdnNo = relevyMapper.selectNextCrdnNo(); + relevyVO.setNewCrdnNo(relevyVO.getSrcCrdnNo()); //단속번호를 기존번호에서 복사한다. 일관된 번호 유지를 위해 // 3. 기본 단속 정보 복사 (tb_crdn) int result = relevyMapper.insertCrdnBasicInfo(relevyVO); @@ -150,7 +150,7 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { log.info("생성된 newActInfoId: {}, 원본 srcActInfoId: {}", newActInfoId, srcActInfo.getSrcActInfoId()); srcActInfo.setActInfoId(newActInfoId); srcActInfo.setNewCrdnYr(currentYear); - srcActInfo.setNewCrdnNo(newCrdnNo); + srcActInfo.setNewCrdnNo(relevyVO.getSrcCrdnNo()); srcActInfo.setPstnInfoId(nextPstnInfoId); srcActInfo.setRgtr(relevyVO.getRgtr()); relevyMapper.insertActInfoOne(srcActInfo); @@ -166,7 +166,7 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { log.info("행위사진 insert - newActInfoId: {}, 원본 SN: {}", newActInfoId, srcPhoto.getCrdnPhotoSn()); srcPhoto.setActInfoId(newActInfoId); srcPhoto.setCrdnYr(currentYear); - srcPhoto.setCrdnNo(newCrdnNo); + srcPhoto.setCrdnNo(relevyVO.getSrcCrdnNo()); srcPhoto.setCrdnPhotoNm(newPhotoNm); srcPhoto.setActnInfoId(null); // 행위사진은 ACTN_INFO_ID 없음 srcPhoto.setRgtr(relevyVO.getRgtr()); @@ -182,7 +182,7 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { String newActnInfoId = relevyMapper.selectNextActnInfoId(); srcActnInfo.setActnInfoId(newActnInfoId); srcActnInfo.setNewCrdnYr(currentYear); - srcActnInfo.setNewCrdnNo(newCrdnNo); + srcActnInfo.setNewCrdnNo(relevyVO.getSrcCrdnNo()); srcActnInfo.setActInfoId(newActInfoId); srcActnInfo.setRgtr(relevyVO.getRgtr()); relevyMapper.insertActnInfoOne(srcActnInfo); @@ -198,7 +198,7 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { log.info("조치사진 insert - newActInfoId: {}, 원본 SN: {}", newActInfoId, srcPhoto.getCrdnPhotoSn()); srcPhoto.setActInfoId(newActInfoId); srcPhoto.setCrdnYr(currentYear); - srcPhoto.setCrdnNo(newCrdnNo); + srcPhoto.setCrdnNo(relevyVO.getSrcCrdnNo()); srcPhoto.setCrdnPhotoNm(newPhotoNm); srcPhoto.setActnInfoId(newActnInfoId); // 조치사진은 ACTN_INFO_ID 필수 srcPhoto.setRgtr(relevyVO.getRgtr()); @@ -214,19 +214,19 @@ public class CrdnRelevyServiceImpl implements CrdnRelevyService { String newActrInfoId = relevyMapper.selectNextActrInfoId(); srcActrInfo.setActrInfoId(newActrInfoId); srcActrInfo.setNewCrdnYr(currentYear); - srcActrInfo.setNewCrdnNo(newCrdnNo); + srcActrInfo.setNewCrdnNo(relevyVO.getSrcCrdnNo()); srcActrInfo.setActInfoId(newActInfoId); srcActrInfo.setRgtr(relevyVO.getRgtr()); relevyMapper.insertActrInfoOne(srcActrInfo); } } - log.info("재부과 처리 완료: 신규 단속번호={}", newCrdnNo); + log.info("재부과 처리 완료: 신규 단속번호={}", relevyVO.getSrcCrdnNo()); // 결과 반환 Map resultMap = new HashMap<>(); resultMap.put("newCrdnYr", currentYear); - resultMap.put("newCrdnNo", newCrdnNo); + resultMap.put("newCrdnNo", relevyVO.getSrcCrdnNo()); resultMap.put("message", "재부과가 성공적으로 처리되었습니다."); return resultMap; diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 5fbf9af..4da8610 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -35,6 +35,8 @@ ${MAX_HISTORY} true + + 3GB true 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 2e9ae65..390652c 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 @@ -348,7 +348,7 @@ DEL_YN ) VALUES ( #{crdnYr}, - LPAD(NEXTVAL(seq_crdn_no_${crdnYr}), 6, '0'), + LPAD(NEXTVAL(seq_crdn_no), 6, '0'), #{sggCd}, #{rgnSeCd}, #{dsclMthdCd}, @@ -416,13 +416,13 @@ AND CRDN_NO = #{crdnNo} - + - + /* CrdnRegistAndViewMapper.createSequence : 년도별 시퀀스 생성 */ CREATE SEQUENCE IF NOT EXISTS ${sequenceName} diff --git a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyHistoryMapper_maria.xml b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyHistoryMapper_maria.xml new file mode 100644 index 0000000..f50f21c --- /dev/null +++ b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnRelevyHistoryMapper_maria.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + 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 d5bda5a..1e3b468 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 @@ -97,9 +97,10 @@ AND c.CRDN_NO = #{crdnNo} - + /* CrdnRelevyMapper.selectNextCrdnNo : 다음 단속번호 조회, 현재는 년도가 아닌 단일 시컨스 사용!! */ + + SELECT LPAD(NEXTVAL(seq_crdn_no), 6, '0') AS NEXT_CRDN_NO diff --git a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnImpltTaskHistory/impltTaskHistoryPopup.jsp b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnImpltTaskHistory/impltTaskHistoryPopup.jsp index 77add65..c77b451 100644 --- a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnImpltTaskHistory/impltTaskHistoryPopup.jsp +++ b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnImpltTaskHistory/impltTaskHistoryPopup.jsp @@ -40,12 +40,12 @@ ${crdnBasicInfo.stdgEmdCdNm} ${crdnBasicInfo.lotnoAddr} - + <%-- ${crdnBasicInfo.lotnoMno} -${crdnBasicInfo.lotnoSno} - + --%> diff --git a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnRelevyHistory/relevyHistoryPopup.jsp b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnRelevyHistory/relevyHistoryPopup.jsp new file mode 100644 index 0000000..408e0e8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnRelevyHistory/relevyHistoryPopup.jsp @@ -0,0 +1,306 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %> + + + + + diff --git a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/list.jsp b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/list.jsp index 53caf8a..142aac0 100644 --- a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/list.jsp +++ b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/list.jsp @@ -369,7 +369,16 @@ width: 120, align: 'center', formatter: function(value) { - return '이행이력'; + return '이행 이력'; + } + }, + { + header: '재부과 이력', + name: 'relevyHistoryBtn', + width: 120, + align: 'center', + formatter: function(value) { + return '재부과 이력'; } }, { header: '처분사전 일자', name: 'dspsBfhdBgngYmd', align: 'center', width: 120, @@ -494,6 +503,13 @@ CrdnRegistAndViewList.openImpltTaskHistoryPopup(rowData.crdnYr, rowData.crdnNo); } } + if (ev.columnName === 'relevyHistoryBtn') { + var rowKey = ev.rowKey; + var rowData = self.instance.getRow(rowKey); + if (rowData) { + CrdnRegistAndViewList.openRelevyHistoryPopup(rowData.crdnYr, rowData.crdnNo); + } + } }); // 행 더블클릭 이벤트 - detailView 페이지를 새 탭으로 열기 @@ -603,6 +619,19 @@ openPopup(url, 1000, 800, 'impltTaskHistoryPopup'); }, + /** + * 재부과 이력 팝업을 엽니다. + * + * @param crdnYr 단속 연도 + * @param crdnNo 단속 번호 + */ + openRelevyHistoryPopup: function(crdnYr, crdnNo) { + var url = '?crdnYr=' + + encodeURIComponent(crdnYr) + '&crdnNo=' + + encodeURIComponent(crdnNo); + openPopup(url, 1400, 800, 'relevyHistoryPopup'); + }, + /** * 조치처리상태를 확인하고 미조치(코드 1)인 경우에만 콜백 함수를 실행합니다. * 중요로직: 팝업 호출 전 미조치(코드 1) 여부를 확인하는 공통 함수