diff --git a/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/ChngDetectMastDto.java b/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/ChngDetectMastDto.java new file mode 100644 index 00000000..94ec81c1 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/Innopam/dto/ChngDetectMastDto.java @@ -0,0 +1,155 @@ +package com.kamco.cd.kamcoback.Innopam.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.web.bind.annotation.RequestParam; + +public class ChngDetectMastDto { + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class Basic { + + private String chnDtctMstId; // 탐지마스터아이디 + private String cprsYr; // 비교년도 2023 + private String crtrYr; // 기준년도 2024 + private String chnDtctSno; // 차수 (1 | 2 | ...) + private String chnDtctId; // 탐지아이디. UUID를 기반으로 '-'를 제거하고 대문자/숫자로 구성 + private String chnDtctCnt; // 탐지객체개수 + private String pnuMpngCnt; // PNU매핑개수 + private String lrmYmd; // 지적도일자 + private String pathNm; // 탐지결과 절대경로명 /kamco_nas/export/{chnDtctId} + private List excnList; // 등록진행상태히스토리 (최근것부터 DESC) + private String excnStepCd; // 실행단계코드 + private String excnStep; // 실행단계코드에 해당하는 영문명 + private String excnPgrt; // 실행단계진행율 + private String excnBngnDt; // 실행단계시작시간 + private String excnEndDt; // 실행단계종료시간 + private String rmk; // 비고 + private String crtDt; // 생성일시 + private String crtEpno; // 생성사원번호 + private String crtIp; // 생성사원아이피 + private String chgDt; // 변경일시 + private String chgEpno; // 변경사원번호 + private String chgIp; // 변경사원아이피 + private String delYn; // 삭제여부 + // + private String reqEpno; // 요청사원번호 + private String reqIp; // 요청사원어이피 + } + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ChnDetectMastExcnStepDto { + + private String srno; // 일련번호 + private String chnDtctMstId; // 탐지마스터아이디 + private String excnStepCd; // 실행단계코드 + private String excnStep; // 실행단계코드에 해당하는 영문명 + private String excnPgrt; // 실행단계진행율 + private String excnEndDt; // 실행단계종료시간 + private String errCd; // 오류코드 + private String errMsg; // 오류메세지 + private String crtDt; // 실행단계시작시간 + } + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ChnDetectMastReqDto { + private String cprsYr; // 비교년도 2023 + private String crtrYr; // 기준년도 2024 + private String chnDtctSno; // 차수 (1 | 2 | ...) + private String chnDtctId; // 탐지아이디. UUID를 기반으로 '-'를 제거하고 대문자/숫자로 구성 + private String pathNm; // 탐지결과 절대경로명 /kamco_nas/export/{chnDtctId} + private String reqEpno; // 사원번호 + private String reqIp; // 사원아이피 + } + + + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ChnDetectContDto { + + private String chnDtctMstId; // 탐지콘텐츠아이디 + private String chnDtctContId; // 탐지마스타아이디 + private String cprsYr; // 비교년도 2023 + private String crtrYr; // 기준년도 2024 + private String chnDtctSno; // 차수 (1 | 2 | ...) + private String mpqdNo; // 도엽번호 + private String chnDtctId; // 탐지아이디. UUID를 기반으로 '-'를 제거하고 대문자/숫자로 구성 + private String chnDtctObjtId; // 탐지객체아이디. UUID를 기반으로 '-'를 제거하고 대문자/숫자로 구성 + private String chnDtctPolygon; // 탐지객체폴리곤 + private String chnDtctSqms; // 탐지객체면적 + private String chnCd; // 변화코드 + private String chnDtctJson; // 변화탐지JSON + private String chnDtctProb; // 변화탐지정확도 + private String bfClsCd; // 이전부류코드 + private String bfClsProb; // 이전분류정확도 + private String afClsCd; // 이후분류코드 + private String afClsProb; // 이후분류정확도 + private String crtDt; // 생성일시 + private String crtEpno; // 생성사원번호 + private String crtIp; // 생성사원아이피 + private String delYn; // 삭제여부 + // + private String reqEpno; // 요청사원번호 + private String reqIp; // 요청사원아이피 + } + + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ChnDetectContReqDto { + + private String cprsYr; // 비교년도 2023 + private String crtrYr; // 기준년도 2024 + private String chnDtctSno; // 차수 (1 | 2 | ...) + private String mpqdNo; // 도엽번호 + private String chnDtctId; // 탐지아이디. UUID를 기반으로 '-'를 제거하고 대문자/숫자로 구성 + private String chnDtctObjtId; // 탐지객체아이디. UUID를 기반으로 '-'를 제거하고 대문자/숫자로 구성 + private String reqEpno; // 사원번호 + private String reqIp; + + } + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ChngDetectMastSearchDto { + private String chnDtctId; + private String cprsYr; + private String crtrYr; + private String chnDtctSno; + } + + + @Schema(name = "ResReturn", description = "수행 후 리턴") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ResReturn { + + private String flag; + private String message; + } + +} diff --git a/src/main/java/com/kamco/cd/kamcoback/Innopam/service/InnopamApiService.java b/src/main/java/com/kamco/cd/kamcoback/Innopam/service/InnopamApiService.java new file mode 100644 index 00000000..31773e84 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/Innopam/service/InnopamApiService.java @@ -0,0 +1,134 @@ +package com.kamco.cd.kamcoback.Innopam.service; + +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.kamco.cd.kamcoback.Innopam.dto.ChngDetectMastDto; +import com.kamco.cd.kamcoback.Innopam.dto.ChngDetectMastDto.ChngDetectMastSearchDto; +import com.kamco.cd.kamcoback.Innopam.dto.ChngDetectMastDto.ResReturn; +import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto; +import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.Basic; +import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.DetectMastReq; +import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.DetectMastSearch; +import com.kamco.cd.kamcoback.Innopam.dto.DetectMastDto.FeaturePnuDto; +import com.kamco.cd.kamcoback.Innopam.postgres.core.DetectMastCoreService; +import com.kamco.cd.kamcoback.common.utils.NetUtils; +import com.kamco.cd.kamcoback.common.utils.UserUtil; +import com.kamco.cd.kamcoback.config.api.ApiResponseDto; +import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient; +import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient.ExternalCallResult; +import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.DmlReturn; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.URLEncoder; +import java.net.UnknownHostException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.util.UriComponentsBuilder; + +@Service +@Transactional(readOnly = true) +@RequiredArgsConstructor +public class InnopamApiService { + + @Value("${spring.profiles.active:local}") + private String profile; + + @Value("${innopam.url}") + private String innopamUrl; + + @Value("${innopam.mast}") + private String innopamMastUrl; + + + private final DetectMastCoreService detectMastCoreService; + + private final ExternalHttpClient externalHttpClient; + private final UserUtil userUtil = new UserUtil(); + private final NetUtils netUtils = new NetUtils(); + + private final JsonFactory jsonFactory = new JsonFactory(); + + @Transactional + public ChngDetectMastDto.Basic regist(ChngDetectMastDto.ChnDetectMastReqDto chnDetectMastReq) { + + ChngDetectMastDto.Basic basic = new ChngDetectMastDto.Basic(); + + String url = innopamMastUrl + "/regist"; + //url = "http://localhost:8080/api/kcd/cdi/detect/mast/regist"; + + String myip = netUtils.getLocalIP(); + chnDetectMastReq.setReqIp(myip); + + System.out.println("url == "+ url); + System.out.println("url == "+ myip); + + ExternalCallResult result = + externalHttpClient.call(url, HttpMethod.POST, chnDetectMastReq, netUtils.jsonHeaders(), String.class); + + System.out.println("result == " + result); + + return basic; + } + + @Transactional + public ResReturn remove(ChngDetectMastDto.ChnDetectMastReqDto chnDetectMastReq) { + ChngDetectMastDto.Basic basic = new ChngDetectMastDto.Basic(); + + String url = innopamMastUrl + "/remove"; + //url = "http://localhost:8080/api/kcd/cdi/detect/mast/remove"; + + String myip = netUtils.getLocalIP(); + chnDetectMastReq.setReqIp(myip); + + System.out.println("url == "+ url); + System.out.println("url == "+ myip); + + ExternalCallResult result = + externalHttpClient.call(url, HttpMethod.POST, chnDetectMastReq, netUtils.jsonHeaders(), String.class); + + System.out.println("result == " + result); + + return new ResReturn("success", "탐지결과 삭제 되었습니다."); + } + + @Transactional + public List list(ChngDetectMastDto.ChngDetectMastSearchDto searchDto) { + List masterList = new ArrayList<>(); + + String queryString = netUtils.dtoToQueryString(searchDto, null); + String url = innopamMastUrl+queryString; + + ExternalCallResult result = + externalHttpClient.call(url, HttpMethod.GET, null, netUtils.jsonHeaders(), String.class); + + System.out.println("list result == " + result); + + return masterList; + } + + + + + + +}