diff --git a/src/main/java/com/kamco/cd/kamcoback/gukyuin/GukYuinApiController.java b/src/main/java/com/kamco/cd/kamcoback/gukyuin/GukYuinApiController.java index 6ced7900..1dcac152 100644 --- a/src/main/java/com/kamco/cd/kamcoback/gukyuin/GukYuinApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/gukyuin/GukYuinApiController.java @@ -322,4 +322,23 @@ public class GukYuinApiController { @PathVariable String chnDtctObjtId) { return ApiResponseDto.ok(gukYuinApiService.findRlbDtctObject(chnDtctObjtId)); } + + @Operation(summary = "실태조사 적합여부 업데이트", description = "실태조사 적합여부 업데이트") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "201", + description = "등록 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = DetectMastReq.class))), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @PostMapping("/rlb/objt/{chnDtctObjtId}/stblt/{stbltYn}") + public ApiResponseDto updateStbltObjtYn( + @PathVariable String chnDtctObjtId, @PathVariable String stbltYn) { + return ApiResponseDto.ok(gukYuinApiService.updateStbltObjtYn(chnDtctObjtId, stbltYn, "")); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java b/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java index f061c7ec..257c442d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java +++ b/src/main/java/com/kamco/cd/kamcoback/gukyuin/service/GukYuinApiService.java @@ -591,4 +591,41 @@ public class GukYuinApiService { result.body() != null && result.body().getSuccess()); return result.body(); } + + public ChngDetectContDto.ResultLabelDto updateStbltObjtYn( + String chnDtctObjtId, String stbltYn, String batchYn) { + String url = gukyuinCdiUrl + "/rlb/objt/" + chnDtctObjtId + "/stblt/" + stbltYn; + + ReqInfo info = new ReqInfo(); + info.setReqIp(myip); + info.setReqEpno("Y".equals(batchYn) ? "BATCH" : userUtil.getEmployeeNo()); + + ExternalCallResult result = + externalHttpClient.call( + url, + HttpMethod.POST, + info, + netUtils.jsonHeaders(), + ChngDetectContDto.ResultLabelDto.class); + + this.insertGukyuinAuditLog( + EventType.MODIFIED.getId(), + netUtils.getLocalIP(), + userUtil.getId(), + url.replace(gukyuinUrl, ""), + null, + result.body().getSuccess()); + + return result.body(); + } + + public void stbltBulkUpdate(List objectIds) { + for (String objectId : objectIds) { + this.updateStbltObjtYn(objectId, "Y", ""); + } + } + + public List findStbltObjectIds(String uid, String mapSheetNum) { + return gukyuinCoreService.findStbltObjectIds(uid, mapSheetNum); + } } 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 7e742d7e..56844011 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 @@ -59,10 +59,20 @@ public class MapSheetMngService { @Value("${file.sync-file-extention}") private String syncFileExtention; + /** + * 영상데이터관리 > 목록 조회 + * + * @return + */ public List findMapSheetMngList() { return mapSheetMngCoreService.findMapSheetMngList(); } + /** + * 영상데이터관리 > 데이터 등록 > 연도 선택 목록 + * + * @return + */ public List findMapSheetMngYyyyList() { return mapSheetMngCoreService.findMapSheetMngYyyyList(); } @@ -77,6 +87,12 @@ public class MapSheetMngService { .toList(); } + /** + * 영상데이터관리 > 상세 조회 + * + * @param mngYyyy + * @return + */ public MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngCoreService.findMapSheetMng(mngYyyy); } @@ -89,6 +105,12 @@ public class MapSheetMngService { return new DmlReturn("success", "작업완료 처리되었습니다."); } + /** + * 영상데이터관리 > 상세 > 오류 처리 내역 + * + * @param searchReq + * @return + */ public Page findMapSheetErrorList(@Valid ErrorSearchReq searchReq) { return mapSheetMngCoreService.findMapSheetErrorList(searchReq); } @@ -97,12 +119,20 @@ public class MapSheetMngService { return mapSheetMngCoreService.findMapSheetError(hstUid); } + /** + * 영상데이터관리 > 데이터 등록 + * + * @param addReq + * @return + */ @Transactional public DmlReturn mngDataSave(AddReq addReq) { addReq.setCreatedUid(userUtil.getId()); - int execCnt = mapSheetMngCoreService.mngDataSave(addReq); + int execCnt = + mapSheetMngCoreService.mngDataSave(addReq); // tb_map_sheet_mng_hst 테이블에 insert된 개수 리턴됨 + return new MapSheetMngDto.DmlReturn("success", addReq.getMngYyyy() + "년, " + execCnt + "건 생성"); } @@ -110,6 +140,15 @@ public class MapSheetMngService { return mapSheetMngCoreService.updateExceptUseInference(hstUidList); } + /** + * 영상데이터관리 > 상세 > 오류 처리 내역 > 업로드 (페어 파일 저장) + * + * @param tfwFile + * @param tifFile + * @param hstUid + * @param tifFileSize + * @return + */ @Transactional public DmlReturn uploadPair( MultipartFile tfwFile, String tifFile, Long hstUid, Long tifFileSize) { @@ -118,6 +157,7 @@ public class MapSheetMngService { DmlReturn dmlReturn = new DmlReturn("success", "UPLOAD COMPLETE"); + // hst 테이블에 선택한 hstUid row 정보 조회 ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid); if (errDto == null) { @@ -135,33 +175,14 @@ public class MapSheetMngService { return dmlReturn; } - // TODO 삭제? - MngDto mngDto = mapSheetMngCoreService.findMapSheetMng(errDto.getMngYyyy()); - - // 중복체크 -> 도엽50k/uuid 경로에 업로드 할 거라 overwrite 되지 않음 - // if (!overwrite) { - // dmlReturn = - // this.duplicateFile( - // errDto.getMngYyyy(), tfwFile.getOriginalFilename(), tifFile.getOriginalFilename()); - // if (dmlReturn.getFlag().equals("duplicate")) { - // return dmlReturn; - // } - // } - + // ★ tif 파일은 대용량 업로드에서 아래 정보들을 체크하기 때문에 체크 로직에서 제외됨 // 멀티파트 파일 tmp폴더 저장(파일형식 체크를 위해) String tfwTmpPath = tmpPath + tfwFile.getOriginalFilename(); - // String tifTmpPath = tmpPath + tifFile; if (!FIleChecker.multipartSaveTo(tfwFile, tfwTmpPath)) { return new DmlReturn("fail", "UPLOAD ERROR"); } - // if (!FIleChecker.multipartSaveTo(tifFile, tifTmpPath)) { - // return new DmlReturn("fail", "UPLOAD ERROR"); - // } - // if (!FIleChecker.cmmndGdalInfo(tifTmpPath)) { - // return new DmlReturn("fail", "TIF TYPE ERROR"); - // } if (!FIleChecker.checkTfw(tfwTmpPath)) { return new DmlReturn("fail", "TFW TYPE ERROR"); } @@ -175,7 +196,6 @@ public class MapSheetMngService { } Path tfwTmpSavePath = Paths.get(tfwTmpPath); - // Path tifTmpSavePath = Paths.get(tifTmpPath); Path tfwTargetPath = null; Path tifTargetPath = null; @@ -222,7 +242,7 @@ public class MapSheetMngService { try { Files.move(tfwTmpSavePath, tfwTargetPath, StandardCopyOption.REPLACE_EXISTING); - // Files.move(tifTmpSavePath, tifTargetPath, StandardCopyOption.REPLACE_EXISTING); + // tif파일은 대용량 업로드에서 이미 업로드 했기 때문에 완료된 상태 } catch (IOException e) { throw new RuntimeException(e); } @@ -234,7 +254,7 @@ public class MapSheetMngService { updReqSyncCheckState.setFilePath(uploadPath); updReqSyncCheckState.setSyncCheckTfwFileName(tfwFile.getOriginalFilename()); updReqSyncCheckState.setSyncCheckTifFileName(tifFile); - updReqSyncCheckState.setSyncCheckState("DONE"); + updReqSyncCheckState.setSyncCheckState("DONE"); // 오류처리 완료 mapSheetMngCoreService.updateMapSheetMngHstSyncCheckState(updReqSyncCheckState); // 파일정보 업데이트 mapSheetMngCoreService.deleteByHstUidMngFile(hstUid); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/GukYuinCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/GukYuinCoreService.java index 3dd6baec..508c13f1 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/GukYuinCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/GukYuinCoreService.java @@ -77,4 +77,8 @@ public class GukYuinCoreService { public void updateMapSheetInferenceLabelEndStatus(Long learnId) { gukYuinRepository.updateMapSheetInferenceLabelEndStatus(learnId); } + + public List findStbltObjectIds(String uid, String mapSheetNum) { + return gukYuinRepository.findStbltObjectIds(uid, mapSheetNum); + } } 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 4222092f..4611bd30 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 @@ -48,10 +48,20 @@ public class MapSheetMngCoreService { @Value("${file.sync-root-dir}") private String syncRootDir; + /** + * 영상데이터관리 > 목록 조회 + * + * @return + */ public List findMapSheetMngList() { return mapSheetMngRepository.findMapSheetMngList(); } + /** + * 영상데이터관리 > 데이터 등록 > 연도 선택 목록 + * + * @return + */ public List findMapSheetMngYyyyList() { return mapSheetMngRepository.findMapSheetMngYyyyList(); } @@ -68,6 +78,12 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.getYears(req); } + /** + * 영상데이터관리 > 상세 조회 + * + * @param mngYyyy + * @return + */ public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngRepository.findMapSheetMng(mngYyyy); } @@ -95,15 +111,33 @@ public class MapSheetMngCoreService { mapSheetMngRepository.updateMapSheetMngHstSyncCheckState(reqDto); } + /** + * 영상데이터관리 > 상세 > 오류 처리 내역 + * + * @param searchReq 오류 검색 조건 + * @return + */ public Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq) { return mapSheetMngRepository.findMapSheetErrorList(searchReq); } + /** + * hst 테이블에 선택한 hstUid row 정보 조회 + * + * @param hstUid + * @return + */ public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid) { return mapSheetMngRepository.findMapSheetError(hstUid); } + /** + * 파일 목록으로 업로드 경로 확인 + * + * @param hstUid + * @return + */ public List findByHstUidMapSheetFileList(Long hstUid) { return mapSheetMngRepository.findByHstUidMapSheetFileList(hstUid); } @@ -146,12 +180,19 @@ public class MapSheetMngCoreService { entity.setCreatedUid(addReq.getCreatedUid()); entity.setUpdatedUid(addReq.getCreatedUid()); + // 같은 년도로 저장된 데이터가 있다면 삭제 + // tb_map_sheet_mng, tb_map_sheet_hst, tb_map_sheet_mng_files, tb_map_sheet_mng_tile mapSheetMngRepository.deleteByMngYyyyMngAll(addReq.getMngYyyy()); + // tb_map_sheet_mng 엔티티 저장 MapSheetMngEntity saved = mapSheetMngRepository.save(entity); + + // 5k 도엽 기준으로 tb_map_sheet_hst 테이블에 먼저 insert 하기 int hstCnt = mapSheetMngRepository.insertMapSheetOrgDataToMapSheetMngHst( saved.getMngYyyy(), saved.getMngPath()); + + // tb_year 에 해당 년도 완료로 업데이트 mapSheetMngRepository.updateYearState(saved.getMngYyyy(), "DONE"); // 년도별 Tile 정보 등록 diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryCustom.java index 84d92ff5..6193af06 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryCustom.java @@ -45,4 +45,6 @@ public interface GukYuinRepositoryCustom { void updateMapSheetLearnGukyuinEndStatus(Long learnId); void updateMapSheetInferenceLabelEndStatus(Long learnId); + + List findStbltObjectIds(String uid, String mapSheetNum); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryImpl.java index d274d858..cfb61563 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/gukyuin/GukYuinRepositoryImpl.java @@ -1,6 +1,7 @@ package com.kamco.cd.kamcoback.postgres.repository.gukyuin; import static com.kamco.cd.kamcoback.postgres.entity.QLabelingAssignmentEntity.labelingAssignmentEntity; +import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceEntity.mapSheetAnalDataInferenceEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceGeomEntity.mapSheetAnalDataInferenceGeomEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity.mapSheetAnalInferenceEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearnEntity.mapSheetLearnEntity; @@ -318,6 +319,23 @@ public class GukYuinRepositoryImpl implements GukYuinRepositoryCustom { .execute(); } + @Override + public List findStbltObjectIds(String uid, String mapSheetNum) { + return queryFactory + .select(mapSheetAnalDataInferenceGeomEntity.resultUid) + .from(mapSheetLearnEntity) + .innerJoin(mapSheetAnalInferenceEntity) + .on(mapSheetLearnEntity.id.eq(mapSheetAnalInferenceEntity.learnId)) + .innerJoin(mapSheetAnalDataInferenceEntity) + .on(mapSheetAnalInferenceEntity.id.eq(mapSheetAnalDataInferenceEntity.analUid)) + .innerJoin(mapSheetAnalDataInferenceGeomEntity) + .on(mapSheetAnalDataInferenceEntity.id.eq(mapSheetAnalDataInferenceGeomEntity.dataUid)) + .where( + mapSheetLearnEntity.uid.eq(uid), + mapSheetAnalDataInferenceGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum))) + .fetch(); + } + @Override @Transactional public void updateGukYuinApplyStateComplete(Long id, GukYuinStatus status) { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java index a9cbcc15..38bdd9fc 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java @@ -15,16 +15,39 @@ import org.springframework.data.domain.Page; public interface MapSheetMngRepositoryCustom { + /** + * 영상데이터관리 > 목록 조회 + * + * @return + */ List findMapSheetMngList(); + /** + * 영상데이터관리 > 데이터 등록 > 연도 선택 목록 + * + * @return + */ List findMapSheetMngYyyyList(); + /** + * 영상데이터관리 > 상세 조회 + * + * @param mngYyyy + * @return + */ MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy); void MapSheetMngComplete(int mngYyyy); Optional findMapSheetMngHstInfo(Long hstUid); + /** + * 5k 도엽 기준으로 tb_map_sheet_hst 테이블에 먼저 insert 하기 + * + * @param mngYyyy + * @param mngPath + * @return + */ int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy, String mngPath); List findHstUidToMapSheetFileList(Long hstUid); @@ -33,6 +56,11 @@ public interface MapSheetMngRepositoryCustom { MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePathRefer(int mngYyyy); + /** + * 같은 년도로 저장된 데이터가 있다면 삭제 + * + * @param mngYyyy + */ void deleteByMngYyyyMngAll(int mngYyyy); void deleteByMngYyyyMng(int mngYyyy); @@ -53,13 +81,37 @@ public interface MapSheetMngRepositoryCustom { void deleteByNotInFileUidMngFile(Long hstUid, List fileUids); + /** + * tb_year 에 해당 년도 완료로 업데이트 + * + * @param yyyy + * @param status + */ void updateYearState(int yyyy, String status); + /** + * 영상데이터관리 > 상세 > 오류 처리 내역 + * + * @param searchReq 오류 검색 조건 + * @return + */ Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq); + /** + * hst 테이블에 선택한 hstUid row 정보 조회 + * + * @param hstUid + * @return + */ MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid); + /** + * 파일 목록으로 업로드 경로 확인 + * + * @param hstUid + * @return + */ List findByHstUidMapSheetFileList(Long hstUid); MapSheetMngDto.MngFilesDto findByFileUidMapSheetFile(Long fileUid); @@ -81,6 +133,11 @@ public interface MapSheetMngRepositoryCustom { void updateMapSheetMngHstUploadId(Long hstUid, UUID uuid, String uploadId); + /** + * 년도별 Tile 정보 등록 + * + * @param addReq + */ void insertMapSheetMngTile(@Valid AddReq addReq); /** diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index 599900e7..21268197 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -59,16 +59,17 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport this.queryFactory = queryFactory; } + /** + * 영상데이터관리 > 목록 조회 + * + * @return + */ @Override public List findMapSheetMngList() { // Pageable pageable = searchReq.toPageable(); BooleanBuilder whereBuilder = new BooleanBuilder(); - // if (searchReq.getMngYyyy() != null) { - // whereBuilder.and(mapSheetMngEntity.mngYyyy.eq(searchReq.getMngYyyy())); - // } - NumberExpression totalCount = mapSheetMngHstEntity.count().as("syncTotCnt"); NumberExpression doneCount = @@ -227,6 +228,11 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return foundContent; } + /** + * 영상데이터관리 > 데이터 등록 > 연도 선택 목록 + * + * @return List + */ public List findMapSheetMngYyyyList() { List foundContent = @@ -245,6 +251,12 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return foundContent; } + /** + * tb_year 에 해당 년도 완료로 업데이트 + * + * @param yyyy + * @param status + */ public void updateYearState(int yyyy, String status) { long execCount = queryFactory @@ -254,6 +266,12 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .execute(); } + /** + * 영상데이터관리 > 상세 조회 + * + * @param mngYyyy + * @return + */ public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { BooleanBuilder whereBuilder = new BooleanBuilder(); @@ -399,6 +417,12 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return foundContent; } + /** + * 영상데이터관리 > 상세 > 오류 처리 내역 + * + * @param searchReq 오류 검색 조건 + * @return + */ @Override public Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq) { @@ -407,6 +431,10 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport BooleanBuilder whereBuilder = new BooleanBuilder(); whereBuilder.and(mapSheetMngHstEntity.mngYyyy.eq(searchReq.getMngYyyy())); + + // syncState : 동기화 상태 + // hst 테이블의 syncState 가 DONE, NOTYET 이 아닌 것 -> 오류 + // (오류인 상태 SyncStateType : DUPLICATE, NOFILE, NOTPAIR, TYPEERROR) whereBuilder.and( mapSheetMngHstEntity.syncState.ne("DONE").and(mapSheetMngHstEntity.syncState.ne("NOTYET"))); @@ -414,10 +442,12 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport whereBuilder.and(mapSheetMngHstEntity.syncState.eq(searchReq.getSyncState())); } + // syncCheckState : 동기화 이후, 에러 처리 상태 - 처리 DONE / 미처리 NOTYET if (searchReq.getSyncCheckState() != null && !searchReq.getSyncCheckState().isEmpty()) { whereBuilder.and(mapSheetMngHstEntity.syncCheckState.eq(searchReq.getSyncCheckState())); } + // 도엽 검색 조건 있을 때 whereBuilder에 추가 if (searchReq.getSearchValue() != null && !searchReq.getSearchValue().isEmpty()) { whereBuilder.and( mapSheetMngHstEntity @@ -475,7 +505,8 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport mapSheetMngHstEntity .mapSheetNum .eq(mapInkx5kEntity.mapidcdNo) - .and(mapInkx5kEntity.useInference.eq(CommonUseStatus.USE))) + .and( + mapInkx5kEntity.useInference.eq(CommonUseStatus.USE))) // 도엽 사용인 것만 오류 내역 표기 .where(whereBuilder) .orderBy(mapSheetMngHstEntity.createdDate.desc()) .offset(pageable.getOffset()) @@ -491,13 +522,20 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport mapSheetMngHstEntity .mapSheetNum .eq(mapInkx5kEntity.mapidcdNo) - .and(mapInkx5kEntity.useInference.eq(CommonUseStatus.USE))) + .and( + mapInkx5kEntity.useInference.eq(CommonUseStatus.USE))) // 도엽 사용인 것만 오류 내역 표기 .where(whereBuilder) .fetchOne(); return new PageImpl<>(foundContent, pageable, countQuery); } + /** + * hst 테이블에 선택한 hstUid row 정보 조회 + * + * @param hstUid + * @return + */ @Override public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid) { @@ -680,6 +718,11 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .execute(); } + /** + * 같은 년도로 저장된 데이터가 있다면 삭제 + * + * @param mngYyyy + */ @Override public void deleteByMngYyyyMngAll(int mngYyyy) { @@ -700,6 +743,12 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .delete(mapSheetMngEntity) .where(mapSheetMngEntity.mngYyyy.eq(mngYyyy)) .execute(); + + long deletedTileCount = + queryFactory + .delete(mapSheetMngTileEntity) + .where(mapSheetMngTileEntity.mngYyyy.eq(mngYyyy)) + .execute(); } @Override @@ -830,6 +879,13 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .execute(); } + /** + * 5k 도엽 기준으로 tb_map_sheet_hst 테이블에 먼저 insert 하기 + * + * @param mngYyyy + * @param mngPath + * @return + */ @Override public int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy, String mngPath) { @@ -966,6 +1022,11 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .execute(); } + /** + * 년도별 Tile 정보 등록 + * + * @param addReq + */ @Override public void insertMapSheetMngTile(AddReq addReq) { long execute = diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/SchedulerApiController.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/SchedulerApiController.java index c2dfdf8c..ee480e94 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/SchedulerApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/SchedulerApiController.java @@ -2,6 +2,7 @@ package com.kamco.cd.kamcoback.scheduler; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; +import com.kamco.cd.kamcoback.gukyuin.service.GukYuinApiService; import com.kamco.cd.kamcoback.scheduler.service.GukYuinApiLabelJobService; import com.kamco.cd.kamcoback.scheduler.service.GukYuinApiPnuJobService; import com.kamco.cd.kamcoback.scheduler.service.GukYuinApiStatusJobService; @@ -16,9 +17,13 @@ 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 java.time.LocalDate; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -37,6 +42,7 @@ public class SchedulerApiController { private final TrainingDataReviewJobService trainingDataReviewJobService; private final MemberInactiveJobService memberInactiveJobService; private final MapSheetMngFileJobController mapSheetMngFileJobController; + private final GukYuinApiService gukYuinApiService; @Operation(summary = "국유인 탐지객체 조회 PNU 업데이트 스케줄링", description = "국유인 탐지객체 조회 PNU 업데이트 스케줄링") @GetMapping("/gukyuin/pnu") @@ -60,7 +66,21 @@ public class SchedulerApiController { return ApiResponseDto.ok(null); } - @Operation(summary = "국유인 실태조사 적합여부 업데이트 스케줄링", description = "국유인 실태조사 적합여부 업데이트 스케줄링") + @Operation(summary = "국유인 실태조사 적합여부 전송가능한 객체 ids", description = "국유인 실태조사 적합여부 전송가능한 객체 ids") + @GetMapping("/gukyuin/stblt-object-ids/{uid}/{mapSheetNum}") + public ApiResponseDto> findStbltObjectIds( + @PathVariable String uid, @PathVariable String mapSheetNum) { + return ApiResponseDto.ok(gukYuinApiService.findStbltObjectIds(uid, mapSheetNum)); + } + + @Operation(summary = "국유인 라벨 완료 전송 스케줄링", description = "국유인 라벨 완료 전송 스케줄링") + @PostMapping("/gukyuin/stblt-update") + public ApiResponseDto stbltBulkUpdate(@RequestBody List objectIds) { + gukYuinApiService.stbltBulkUpdate(objectIds); + return ApiResponseDto.ok(null); + } + + @Operation(summary = "국유인 실태조사 적합여부 조회 스케줄링", description = "국유인 실태조사 적합여부 조회 스케줄링") @GetMapping("/gukyuin/stblt") public ApiResponseDto findGukYuinEligibleForSurvey( @RequestParam(required = false) LocalDate baseDate) {