From 9b166c927b8642afeab1ec1320842982435dc3df Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 19 Jan 2026 15:39:02 +0900 Subject: [PATCH 1/4] =?UTF-8?q?log=20=EA=B0=80=EB=8A=A5=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20ResponseEntity=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java index 72cb50bc..eb18fd88 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java @@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; @@ -45,7 +46,8 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { public boolean supports( MethodParameter returnType, Class> converterType) { // ApiResponseDto를 반환하는 경우에만 적용 - return returnType.getParameterType().equals(ApiResponseDto.class); + return returnType.getParameterType().equals(ApiResponseDto.class) + || returnType.getParameterType().equals(ResponseEntity.class); } @Override From d1809a6969cf495a0f97e81ab71a5382407ffd45 Mon Sep 17 00:00:00 2001 From: Moon Date: Mon, 19 Jan 2026 16:18:19 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapsheet/dto/MapSheetMngDto.java | 3 + .../mapsheet/service/MapSheetMngService.java | 5 + .../postgres/core/MapSheetMngCoreService.java | 11 +++ .../core/MapSheetMngFileJobCoreService.java | 15 +++ .../MapSheetMngFileJobRepositoryCustom.java | 6 ++ .../MapSheetMngFileJobRepositoryImpl.java | 42 ++++++++- .../MapSheetMngFileJobController.java | 91 ++++++++++++------- .../service/MapSheetMngFileJobService.java | 56 +++++++++--- 8 files changed, 181 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java index 4abbd8d0..dafb86f7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java @@ -1,5 +1,6 @@ package com.kamco.cd.kamcoback.mapsheet.dto; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.kamco.cd.kamcoback.common.enums.MngStateType; import com.kamco.cd.kamcoback.common.enums.SyncStateType; import com.kamco.cd.kamcoback.common.utils.enums.EnumType; @@ -53,6 +54,8 @@ public class MapSheetMngDto { @Schema(description = "선택폴더경로", example = "D:\\app\\original-images\\2022") private String mngPath; + + @JsonIgnore private Long createdUid; } @Schema(name = "DeleteFileReq", description = "파일 삭제 요청") diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java index 7b9504fd..744e8707 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java @@ -1,6 +1,7 @@ package com.kamco.cd.kamcoback.mapsheet.service; import com.kamco.cd.kamcoback.common.utils.FIleChecker; +import com.kamco.cd.kamcoback.common.utils.UserUtil; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FoldersDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto; @@ -37,6 +38,7 @@ import org.springframework.web.multipart.MultipartFile; public class MapSheetMngService { private final MapSheetMngCoreService mapSheetMngCoreService; + private final UserUtil userUtil = new UserUtil(); @Value("${file.sync-root-dir}") private String syncRootDir; @@ -87,6 +89,9 @@ public class MapSheetMngService { @Transactional public DmlReturn mngDataSave(AddReq addReq) { + + addReq.setCreatedUid(userUtil.getId()); + int execCnt = mapSheetMngCoreService.mngDataSave(addReq); return new MapSheetMngDto.DmlReturn("success", addReq.getMngYyyy() + "년, " + execCnt + "건 생성"); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java index 7b7a5d23..ca9609df 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java @@ -1,5 +1,6 @@ package com.kamco.cd.kamcoback.postgres.core; +import com.kamco.cd.kamcoback.common.enums.MngStateType; import com.kamco.cd.kamcoback.common.exception.CustomApiException; import com.kamco.cd.kamcoback.common.geometry.GeoJsonFileWriter; import com.kamco.cd.kamcoback.common.geometry.GeoJsonFileWriter.ImageFeature; @@ -20,6 +21,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.ZonedDateTime; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -136,6 +138,15 @@ public class MapSheetMngCoreService { MapSheetMngEntity entity = new MapSheetMngEntity(); entity.setMngYyyy(addReq.getMngYyyy()); entity.setMngPath(addReq.getMngPath()); + entity.setMngState(MngStateType.NOTYET.name()); + entity.setSyncState(MngStateType.NOTYET.name()); + entity.setSyncCheckState(MngStateType.NOTYET.name()); + entity.setMngStateDttm(ZonedDateTime.now()); + entity.setCreatedDttm(ZonedDateTime.now()); + entity.setUpdatedDttm(ZonedDateTime.now()); + entity.setSyncStateDttm(ZonedDateTime.now()); + entity.setCreatedUid(addReq.getCreatedUid()); + entity.setUpdatedUid(addReq.getCreatedUid()); mapSheetMngRepository.deleteByMngYyyyMngAll(addReq.getMngYyyy()); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java index 8d1dbf03..8832f207 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java @@ -51,4 +51,19 @@ public class MapSheetMngFileJobCoreService { return new MapSheetMngDto.DmlReturn("success", saved.getFileUid().toString()); } + + public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy){ + return mapSheetMngFileJobRepository.findByMngYyyyTargetMapSheetNotYetCount(mngYyyy); + } + + public void mngDataState(int mngYyyy, String mngState) + { + mapSheetMngFileJobRepository.mngDataState(mngYyyy, mngState); + } + + public Integer findNotYetMapSheetMng() + { + return mapSheetMngFileJobRepository.findNotYetMapSheetMng(); + } + } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryCustom.java index 5b10eaee..6467d921 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryCustom.java @@ -12,4 +12,10 @@ public interface MapSheetMngFileJobRepositoryCustom { void mngHstDataSyncStateUpdate(MapSheetMngDto.MngHstDto updateReq); List findTargetMapSheetFileList(long targetNum, int pageSize); + + Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy); + + public void mngDataState(int mngYyyy, String mngState); + + public Integer findNotYetMapSheetMng(); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java index 116696e9..e109e2cb 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java @@ -34,6 +34,20 @@ public class MapSheetMngFileJobRepositoryImpl extends QuerydslRepositorySupport this.queryFactory = queryFactory; } + @Override + public Integer findNotYetMapSheetMng(){ + Integer countQuery = + queryFactory + .select(mapSheetMngEntity.mngYyyy) + .from(mapSheetMngEntity) + .where(mapSheetMngEntity.mngState.eq("NOTYET") + .or(mapSheetMngEntity.mngState.eq("PROCESSING"))) + .limit(1) + .fetchOne(); + + return countQuery; + } + @Override public Page findMapSheetMngList(MapSheetMngDto.MngSearchReq searchReq) { @@ -106,6 +120,30 @@ public class MapSheetMngFileJobRepositoryImpl extends QuerydslRepositorySupport return new PageImpl<>(foundContent, pageable, countQuery); } + @Override + public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy){ + Long countQuery = + queryFactory + .select(mapSheetMngHstEntity.mngYyyy.count()) + .from(mapSheetMngHstEntity) + .where(mapSheetMngHstEntity.mngYyyy.eq(mngYyyy) + .and(mapSheetMngHstEntity.syncState.eq("NOTYET"))) + .fetchOne(); + + return countQuery; + } + + public void mngDataState(int mngYyyy, String mngState){ + long updateCount = + queryFactory + .update(mapSheetMngEntity) + .set(mapSheetMngEntity.mngState, mngState) + .set(mapSheetMngEntity.syncState, mngState) + .set(mapSheetMngEntity.syncCheckState, mngState) + .where(mapSheetMngEntity.mngYyyy.eq(mngYyyy)) + .execute(); + } + public void mngHstDataSyncStateUpdate(MapSheetMngDto.MngHstDto updateReq) { ZonedDateTime now = ZonedDateTime.now(); @@ -118,7 +156,7 @@ public class MapSheetMngFileJobRepositoryImpl extends QuerydslRepositorySupport .set(mapSheetMngHstEntity.dataStateDttm, now) .set(mapSheetMngHstEntity.syncState, updateReq.getSyncState()) .set(mapSheetMngHstEntity.syncEndDttm, now) - .set(mapSheetMngHstEntity.syncCheckState, "DONE") + .set(mapSheetMngHstEntity.syncCheckState, "NOTYET") .set(mapSheetMngHstEntity.syncCheckStrtDttm, now) .set(mapSheetMngHstEntity.syncCheckEndDttm, now) .where(mapSheetMngHstEntity.hstUid.eq(updateReq.getHstUid())) @@ -132,7 +170,7 @@ public class MapSheetMngFileJobRepositoryImpl extends QuerydslRepositorySupport .set(mapSheetMngHstEntity.syncState, updateReq.getSyncState()) .set(mapSheetMngHstEntity.syncStrtDttm, now) .set(mapSheetMngHstEntity.syncEndDttm, now) - .set(mapSheetMngHstEntity.syncCheckState, "PROCESSING") + .set(mapSheetMngHstEntity.syncCheckState, "NOTYET") .set(mapSheetMngHstEntity.syncCheckStrtDttm, now) .set(mapSheetMngHstEntity.syncCheckEndDttm, now) .where(mapSheetMngHstEntity.hstUid.eq(updateReq.getHstUid())) diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java index 2c6110e7..99cb09a0 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java @@ -14,93 +14,118 @@ public class MapSheetMngFileJobController { // 현재 상태 확인용 Getter @Getter private boolean isSchedulerEnabled = false; + @Getter private boolean isFileSyncSchedulerEnabled = false; @Getter private int mngSyncPageSize = 20; - // 매일 새벽 3시에 실행 (초 분 시 일 월 요일) - @Scheduled(fixedDelay = 5000) - public void mngFileSyncJob00() { + // 파일싱크 진행여부 확인하기 + @Scheduled(fixedDelay = 1000 * 10) + public void checkMngFileSync() { if (!isSchedulerEnabled) return; - System.out.println("mngFileSyncJob00 === " + System.currentTimeMillis()); + Integer mng = 0; + // isFileSyncSchedulerEnabled = false; + if(mapSheetMngFileJobService.checkMngFileSync() != null) + { + mng = mapSheetMngFileJobService.checkMngFileSync(); + this.isFileSyncSchedulerEnabled = true; + System.out.println("MngFileSyncJob ON --> mngYyyy : "+ mng + ", currentTime : " + System.currentTimeMillis()); + } + else{ + this.isFileSyncSchedulerEnabled = false; + System.out.println("MngFileSyncJob OFF --> mngYyyy : "+ mng + ", currentTime : " + System.currentTimeMillis()); + } + + } + + + @Scheduled(fixedDelay = 1000 * 5) + public void mngFileSyncJob00() { + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; + + System.out.println("mngFileSyncJob 00 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(0, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob01() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob01 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 01 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(1, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) - public void mngFileSyncJob02() { - if (!isSchedulerEnabled) return; - System.out.println("mngFileSyncJob00 === " + System.currentTimeMillis()); + @Scheduled(fixedDelay = 1000 * 5) + public void mngFileSyncJob02() { + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; + + System.out.println("mngFileSyncJob 02 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(2, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob03() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob03 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 03 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(3, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob04() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob04 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 04 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(4, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob05() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob05 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 05 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(5, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob06() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob06 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 06 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(6, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob07() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob07 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 07 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(7, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob08() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob08 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 08 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(8, mngSyncPageSize); } - @Scheduled(fixedDelay = 5000) + @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob09() { - if (!isSchedulerEnabled) return; + if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; - System.out.println("mngFileSyncJob09 === " + System.currentTimeMillis()); + System.out.println("mngFileSyncJob 09 Processing currentTime : " + System.currentTimeMillis()); mapSheetMngFileJobService.checkMapSheetFileProcess(9, mngSyncPageSize); } + + // 3. 외부에서 플래그를 변경할 수 있는 Setter 메서드 public void setSchedulerEnabled(boolean enabled) { this.isSchedulerEnabled = enabled; - System.out.println("스케줄러 상태 변경됨: " + (enabled ? "ON" : "OFF")); + this.isFileSyncSchedulerEnabled = false; + System.out.println("스케줄러 동작 상태 변경됨: " + (enabled ? "ON" : "OFF")); } public void setMngSyncPageSize(int pageSize) { diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java index df1795fb..2bf20cf9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java @@ -45,6 +45,12 @@ public class MapSheetMngFileJobService { @Value("${file.sync-file-extention}") private String syncFileExtention; + + public Integer checkMngFileSync() + { + return mapSheetMngFileJobCoreService.findNotYetMapSheetMng(); + } + @Transactional public void checkMapSheetFileProcess(long targetNum, int mngSyncPageSize) { @@ -55,10 +61,15 @@ public class MapSheetMngFileJobService { String syncCheckState = ""; String fileState = ""; String dataState = ""; + int mngYyyy = 0; SrchFilesDepthDto srchDto = new SrchFilesDepthDto(); List basicList = new ArrayList<>(); + if( mapSheetFileNotYetList.size() >= 1 ){ + mngYyyy = mapSheetFileNotYetList.get(0).getMngYyyy(); + } + for (MngHstDto item : mapSheetFileNotYetList) { // 도엽별 파일 체크 진행중으로 변경 @@ -113,9 +124,9 @@ public class MapSheetMngFileJobService { if (tfwCnt == 0 && tifCnt == 0) syncState = "NOFILE"; for (FIleChecker.Basic item2 : basicList) { - System.out.println("path: " + item2.getParentPath()); - System.out.println("path: " + item2.getFileNm()); - System.out.println("path: " + item2.getFullPath()); + //System.out.println("path: " + item2.getParentPath()); + //System.out.println("path: " + item2.getFileNm()); + //System.out.println("path: " + item2.getFullPath()); MapSheetMngDto.MngFileAddReq addReq = new MapSheetMngDto.MngFileAddReq(); addReq.setMngYyyy(item.getMngYyyy()); @@ -136,7 +147,7 @@ public class MapSheetMngFileJobService { fileState = "DUPLICATE"; syncState = fileState; } else if (item2.getFileSize() == 0) { - fileState = "SIZEERROR"; + fileState = "TYPEERROR"; syncState = fileState; } else if (!FIleChecker.checkTfw(item2.getFullPath())) { fileState = "TYPEERROR"; @@ -150,7 +161,7 @@ public class MapSheetMngFileJobService { fileState = "DUPLICATE"; syncState = fileState; } else if (item2.getFileSize() == 0) { - fileState = "SIZEERROR"; + fileState = "TYPEERROR"; syncState = fileState; } else if (!FIleChecker.cmmndGdalInfo(item2.getFullPath())) { fileState = "TYPEERROR"; @@ -168,15 +179,10 @@ public class MapSheetMngFileJobService { item.setSyncState(syncState); mngHstDataSyncStateUpdate(item); - // srchDto. - - // 2. 출력 - // System.out.println("UID: " + hstUid + ", 상태: " + syncState + ", 관리경로: " + - // item.getSyncMngPath()); - - // 3. (필요하다면) 다른 로직 수행 - // ... } + + Long notyetCnt = this.mngDataStateDoneUpdate(mngYyyy); + } public int checkIsNoFile(List basicList) { @@ -187,10 +193,34 @@ public class MapSheetMngFileJobService { return basicList.size(); } + public Long mngDataStateDoneUpdate(int mngYyyy) { + + Long notyetCnt = 0L; + if( mngYyyy > 0 ) + { + notyetCnt = findByMngYyyyTargetMapSheetNotYetCount(mngYyyy); + if( notyetCnt == 0 ) + { + mapSheetMngFileJobCoreService.mngDataState(mngYyyy,"DONE"); + } + else + { + mapSheetMngFileJobCoreService.mngDataState(mngYyyy,"PROCESSING"); + } + } + + return notyetCnt; + } + public List findTargetMapSheetFileList(long targetNum, int pageSize) { return mapSheetMngFileJobCoreService.findTargetMapSheetFileList(targetNum, pageSize); } + + public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy) { + return mapSheetMngFileJobCoreService.findByMngYyyyTargetMapSheetNotYetCount(mngYyyy); + } + public MapSheetMngDto.DmlReturn mngHstDataSyncStateUpdate(MapSheetMngDto.MngHstDto UpdateReq) { return mapSheetMngFileJobCoreService.mngHstDataSyncStateUpdate(UpdateReq); } From 0ad1929364623477b3277ec295b5d251e69c71e9 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 19 Jan 2026 16:24:53 +0900 Subject: [PATCH 3/4] =?UTF-8?q?advice=20=EB=8B=A4=EC=8B=9C=20=EC=9B=90?= =?UTF-8?q?=EB=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/api/ApiResponseAdvice.java | 65 +++++++++---------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java index eb18fd88..d3d959f5 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java @@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; @@ -35,7 +34,8 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { private final AuditLogRepository auditLogRepository; private final MenuService menuService; - @Autowired private ObjectMapper objectMapper; + @Autowired + private ObjectMapper objectMapper; public ApiResponseAdvice(AuditLogRepository auditLogRepository, MenuService menuService) { this.auditLogRepository = auditLogRepository; @@ -44,20 +44,19 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { @Override public boolean supports( - MethodParameter returnType, Class> converterType) { + MethodParameter returnType, Class> converterType) { // ApiResponseDto를 반환하는 경우에만 적용 - return returnType.getParameterType().equals(ApiResponseDto.class) - || returnType.getParameterType().equals(ResponseEntity.class); + return returnType.getParameterType().equals(ApiResponseDto.class); } @Override public Object beforeBodyWrite( - Object body, - MethodParameter returnType, - MediaType selectedContentType, - Class> selectedConverterType, - ServerHttpRequest request, - ServerHttpResponse response) { + Object body, + MethodParameter returnType, + MediaType selectedContentType, + Class> selectedConverterType, + ServerHttpRequest request, + ServerHttpResponse response) { HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); ContentCachingRequestWrapper contentWrapper = null; @@ -72,7 +71,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { Long userid = null; if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth - && auth.getPrincipal() instanceof CustomUserDetails customUserDetails) { + && auth.getPrincipal() instanceof CustomUserDetails customUserDetails) { userid = customUserDetails.getMember().getId(); } @@ -93,29 +92,29 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { List list = menuService.getFindAll(); List result = - list.stream() - .map( - item -> { - if (item instanceof LinkedHashMap map) { - return objectMapper.convertValue(map, MenuDto.Basic.class); - } else if (item instanceof MenuDto.Basic dto) { - return dto; - } else { - throw new IllegalStateException("Unsupported cache type: " + item.getClass()); - } - }) - .toList(); + list.stream() + .map( + item -> { + if (item instanceof LinkedHashMap map) { + return objectMapper.convertValue(map, MenuDto.Basic.class); + } else if (item instanceof MenuDto.Basic dto) { + return dto; + } else { + throw new IllegalStateException("Unsupported cache type: " + item.getClass()); + } + }) + .toList(); AuditLogEntity log = - new AuditLogEntity( - userid, - ApiLogFunction.getEventType(servletRequest), - ApiLogFunction.isSuccessFail(apiResponse), - ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()), - ip, - servletRequest.getRequestURI(), - ApiLogFunction.cutRequestBody(requestBody), - apiResponse.getErrorLogUid()); + new AuditLogEntity( + userid, + ApiLogFunction.getEventType(servletRequest), + ApiLogFunction.isSuccessFail(apiResponse), + ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()), + ip, + servletRequest.getRequestURI(), + ApiLogFunction.cutRequestBody(requestBody), + apiResponse.getErrorLogUid()); auditLogRepository.save(log); } From 9a080deb317507c6fc714a74e3fdcea57b7c9b4e Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 19 Jan 2026 16:26:45 +0900 Subject: [PATCH 4/4] =?UTF-8?q?spotless=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/api/ApiResponseAdvice.java | 61 +++++++++---------- .../core/MapSheetMngFileJobCoreService.java | 9 +-- .../MapSheetMngFileJobRepositoryImpl.java | 52 +++++++++------- .../MapSheetMngFileJobController.java | 25 ++++---- .../service/MapSheetMngFileJobService.java | 29 +++------ 5 files changed, 85 insertions(+), 91 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java index d3d959f5..72cb50bc 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java @@ -34,8 +34,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { private final AuditLogRepository auditLogRepository; private final MenuService menuService; - @Autowired - private ObjectMapper objectMapper; + @Autowired private ObjectMapper objectMapper; public ApiResponseAdvice(AuditLogRepository auditLogRepository, MenuService menuService) { this.auditLogRepository = auditLogRepository; @@ -44,19 +43,19 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { @Override public boolean supports( - MethodParameter returnType, Class> converterType) { + MethodParameter returnType, Class> converterType) { // ApiResponseDto를 반환하는 경우에만 적용 return returnType.getParameterType().equals(ApiResponseDto.class); } @Override public Object beforeBodyWrite( - Object body, - MethodParameter returnType, - MediaType selectedContentType, - Class> selectedConverterType, - ServerHttpRequest request, - ServerHttpResponse response) { + Object body, + MethodParameter returnType, + MediaType selectedContentType, + Class> selectedConverterType, + ServerHttpRequest request, + ServerHttpResponse response) { HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); ContentCachingRequestWrapper contentWrapper = null; @@ -71,7 +70,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { Long userid = null; if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth - && auth.getPrincipal() instanceof CustomUserDetails customUserDetails) { + && auth.getPrincipal() instanceof CustomUserDetails customUserDetails) { userid = customUserDetails.getMember().getId(); } @@ -92,29 +91,29 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { List list = menuService.getFindAll(); List result = - list.stream() - .map( - item -> { - if (item instanceof LinkedHashMap map) { - return objectMapper.convertValue(map, MenuDto.Basic.class); - } else if (item instanceof MenuDto.Basic dto) { - return dto; - } else { - throw new IllegalStateException("Unsupported cache type: " + item.getClass()); - } - }) - .toList(); + list.stream() + .map( + item -> { + if (item instanceof LinkedHashMap map) { + return objectMapper.convertValue(map, MenuDto.Basic.class); + } else if (item instanceof MenuDto.Basic dto) { + return dto; + } else { + throw new IllegalStateException("Unsupported cache type: " + item.getClass()); + } + }) + .toList(); AuditLogEntity log = - new AuditLogEntity( - userid, - ApiLogFunction.getEventType(servletRequest), - ApiLogFunction.isSuccessFail(apiResponse), - ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()), - ip, - servletRequest.getRequestURI(), - ApiLogFunction.cutRequestBody(requestBody), - apiResponse.getErrorLogUid()); + new AuditLogEntity( + userid, + ApiLogFunction.getEventType(servletRequest), + ApiLogFunction.isSuccessFail(apiResponse), + ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()), + ip, + servletRequest.getRequestURI(), + ApiLogFunction.cutRequestBody(requestBody), + apiResponse.getErrorLogUid()); auditLogRepository.save(log); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java index 8832f207..c9ffa316 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngFileJobCoreService.java @@ -52,18 +52,15 @@ public class MapSheetMngFileJobCoreService { return new MapSheetMngDto.DmlReturn("success", saved.getFileUid().toString()); } - public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy){ + public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy) { return mapSheetMngFileJobRepository.findByMngYyyyTargetMapSheetNotYetCount(mngYyyy); } - public void mngDataState(int mngYyyy, String mngState) - { + public void mngDataState(int mngYyyy, String mngState) { mapSheetMngFileJobRepository.mngDataState(mngYyyy, mngState); } - public Integer findNotYetMapSheetMng() - { + public Integer findNotYetMapSheetMng() { return mapSheetMngFileJobRepository.findNotYetMapSheetMng(); } - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java index e109e2cb..bb96a4ac 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/scheduler/MapSheetMngFileJobRepositoryImpl.java @@ -35,15 +35,18 @@ public class MapSheetMngFileJobRepositoryImpl extends QuerydslRepositorySupport } @Override - public Integer findNotYetMapSheetMng(){ + public Integer findNotYetMapSheetMng() { Integer countQuery = - queryFactory - .select(mapSheetMngEntity.mngYyyy) - .from(mapSheetMngEntity) - .where(mapSheetMngEntity.mngState.eq("NOTYET") - .or(mapSheetMngEntity.mngState.eq("PROCESSING"))) - .limit(1) - .fetchOne(); + queryFactory + .select(mapSheetMngEntity.mngYyyy) + .from(mapSheetMngEntity) + .where( + mapSheetMngEntity + .mngState + .eq("NOTYET") + .or(mapSheetMngEntity.mngState.eq("PROCESSING"))) + .limit(1) + .fetchOne(); return countQuery; } @@ -121,27 +124,30 @@ public class MapSheetMngFileJobRepositoryImpl extends QuerydslRepositorySupport } @Override - public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy){ + public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy) { Long countQuery = - queryFactory - .select(mapSheetMngHstEntity.mngYyyy.count()) - .from(mapSheetMngHstEntity) - .where(mapSheetMngHstEntity.mngYyyy.eq(mngYyyy) - .and(mapSheetMngHstEntity.syncState.eq("NOTYET"))) - .fetchOne(); + queryFactory + .select(mapSheetMngHstEntity.mngYyyy.count()) + .from(mapSheetMngHstEntity) + .where( + mapSheetMngHstEntity + .mngYyyy + .eq(mngYyyy) + .and(mapSheetMngHstEntity.syncState.eq("NOTYET"))) + .fetchOne(); return countQuery; } - public void mngDataState(int mngYyyy, String mngState){ + public void mngDataState(int mngYyyy, String mngState) { long updateCount = - queryFactory - .update(mapSheetMngEntity) - .set(mapSheetMngEntity.mngState, mngState) - .set(mapSheetMngEntity.syncState, mngState) - .set(mapSheetMngEntity.syncCheckState, mngState) - .where(mapSheetMngEntity.mngYyyy.eq(mngYyyy)) - .execute(); + queryFactory + .update(mapSheetMngEntity) + .set(mapSheetMngEntity.mngState, mngState) + .set(mapSheetMngEntity.syncState, mngState) + .set(mapSheetMngEntity.syncCheckState, mngState) + .where(mapSheetMngEntity.mngYyyy.eq(mngYyyy)) + .execute(); } public void mngHstDataSyncStateUpdate(MapSheetMngDto.MngHstDto updateReq) { diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java index 99cb09a0..e2360b88 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/MapSheetMngFileJobController.java @@ -23,21 +23,25 @@ public class MapSheetMngFileJobController { if (!isSchedulerEnabled) return; Integer mng = 0; - // isFileSyncSchedulerEnabled = false; - if(mapSheetMngFileJobService.checkMngFileSync() != null) - { + // isFileSyncSchedulerEnabled = false; + if (mapSheetMngFileJobService.checkMngFileSync() != null) { mng = mapSheetMngFileJobService.checkMngFileSync(); this.isFileSyncSchedulerEnabled = true; - System.out.println("MngFileSyncJob ON --> mngYyyy : "+ mng + ", currentTime : " + System.currentTimeMillis()); - } - else{ + System.out.println( + "MngFileSyncJob ON --> mngYyyy : " + + mng + + ", currentTime : " + + System.currentTimeMillis()); + } else { this.isFileSyncSchedulerEnabled = false; - System.out.println("MngFileSyncJob OFF --> mngYyyy : "+ mng + ", currentTime : " + System.currentTimeMillis()); + System.out.println( + "MngFileSyncJob OFF --> mngYyyy : " + + mng + + ", currentTime : " + + System.currentTimeMillis()); } - } - @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob00() { if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; @@ -54,7 +58,6 @@ public class MapSheetMngFileJobController { mapSheetMngFileJobService.checkMapSheetFileProcess(1, mngSyncPageSize); } - @Scheduled(fixedDelay = 1000 * 5) public void mngFileSyncJob02() { if (!isSchedulerEnabled || !isFileSyncSchedulerEnabled) return; @@ -119,8 +122,6 @@ public class MapSheetMngFileJobController { mapSheetMngFileJobService.checkMapSheetFileProcess(9, mngSyncPageSize); } - - // 3. 외부에서 플래그를 변경할 수 있는 Setter 메서드 public void setSchedulerEnabled(boolean enabled) { this.isSchedulerEnabled = enabled; diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java index 2bf20cf9..72a7e961 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetMngFileJobService.java @@ -45,9 +45,7 @@ public class MapSheetMngFileJobService { @Value("${file.sync-file-extention}") private String syncFileExtention; - - public Integer checkMngFileSync() - { + public Integer checkMngFileSync() { return mapSheetMngFileJobCoreService.findNotYetMapSheetMng(); } @@ -66,7 +64,7 @@ public class MapSheetMngFileJobService { SrchFilesDepthDto srchDto = new SrchFilesDepthDto(); List basicList = new ArrayList<>(); - if( mapSheetFileNotYetList.size() >= 1 ){ + if (mapSheetFileNotYetList.size() >= 1) { mngYyyy = mapSheetFileNotYetList.get(0).getMngYyyy(); } @@ -124,9 +122,9 @@ public class MapSheetMngFileJobService { if (tfwCnt == 0 && tifCnt == 0) syncState = "NOFILE"; for (FIleChecker.Basic item2 : basicList) { - //System.out.println("path: " + item2.getParentPath()); - //System.out.println("path: " + item2.getFileNm()); - //System.out.println("path: " + item2.getFullPath()); + // System.out.println("path: " + item2.getParentPath()); + // System.out.println("path: " + item2.getFileNm()); + // System.out.println("path: " + item2.getFullPath()); MapSheetMngDto.MngFileAddReq addReq = new MapSheetMngDto.MngFileAddReq(); addReq.setMngYyyy(item.getMngYyyy()); @@ -178,11 +176,9 @@ public class MapSheetMngFileJobService { if (syncState.isEmpty()) syncState = "DONE"; item.setSyncState(syncState); mngHstDataSyncStateUpdate(item); - } Long notyetCnt = this.mngDataStateDoneUpdate(mngYyyy); - } public int checkIsNoFile(List basicList) { @@ -196,16 +192,12 @@ public class MapSheetMngFileJobService { public Long mngDataStateDoneUpdate(int mngYyyy) { Long notyetCnt = 0L; - if( mngYyyy > 0 ) - { + if (mngYyyy > 0) { notyetCnt = findByMngYyyyTargetMapSheetNotYetCount(mngYyyy); - if( notyetCnt == 0 ) - { - mapSheetMngFileJobCoreService.mngDataState(mngYyyy,"DONE"); - } - else - { - mapSheetMngFileJobCoreService.mngDataState(mngYyyy,"PROCESSING"); + if (notyetCnt == 0) { + mapSheetMngFileJobCoreService.mngDataState(mngYyyy, "DONE"); + } else { + mapSheetMngFileJobCoreService.mngDataState(mngYyyy, "PROCESSING"); } } @@ -216,7 +208,6 @@ public class MapSheetMngFileJobService { return mapSheetMngFileJobCoreService.findTargetMapSheetFileList(targetNum, pageSize); } - public Long findByMngYyyyTargetMapSheetNotYetCount(int mngYyyy) { return mapSheetMngFileJobCoreService.findByMngYyyyTargetMapSheetNotYetCount(mngYyyy); }