Browse Source

feat: 영역(범위) 데이터로 담당부서 반환 기능

develop
지대한 1 week ago
parent
commit
7abb6439cc
  1. 4
      http/server/common.http
  2. 37
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityItemRS.java
  3. 6
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java
  5. 80
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java
  6. 934
      pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java
  7. 42
      pav-server/src/test/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateServiceTest.java

4
http/server/common.http

@ -0,0 +1,4 @@
### 좌표 to 관할지역
GET {{appHost}}/api/comn/coordinate/comptent-authority
?lat=37.5666103&lon=126.978
Authorization: {{accessToken}}

37
pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityItemRS.java

@ -0,0 +1,37 @@
package com.palnet.biz.api.comn.coordinate.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CompotentAuthorityItemRS {
// 관할기관코드
private String cptAuthCode;
// 관할기관명
private String cptAuthNm;
// 관할기관연락처
private String cptAuthTp;
// 관할기관FAX
private String cptAuthFax;
// 비고
private String rm;
// 수정일자
private Instant updateDt;
// 생성일자
private Instant createDt;
}

6
pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java

@ -1,8 +1,14 @@
package com.palnet.biz.api.comn.coordinate.model; package com.palnet.biz.api.comn.coordinate.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CompotentAuthorityRQ { public class CompotentAuthorityRQ {
private Double lat; private Double lat;

2
pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java

@ -13,6 +13,6 @@ public class CompotentAuthorityRS {
private String address; private String address;
private List<FltCptAuthBas> fltCptpAuthBasList; private List<CompotentAuthorityItemRS> fltCptpAuthBasList;
} }

80
pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java

@ -1,20 +1,17 @@
package com.palnet.biz.api.comn.coordinate.service; package com.palnet.biz.api.comn.coordinate.service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.comn.coordinate.model.*; import com.palnet.biz.api.comn.coordinate.model.*;
import com.palnet.biz.jpa.entity.ComAdmDistrictBas; import com.palnet.biz.jpa.entity.ComAdmDistrictBas;
import com.palnet.biz.jpa.entity.FltCptAuthBas;
import com.palnet.biz.jpa.repository.com.ComAdmDistrictBasRepository; import com.palnet.biz.jpa.repository.com.ComAdmDistrictBasRepository;
import com.palnet.biz.jpa.repository.flt.FltCptAuthAdmDistrictRelRepository; import com.palnet.biz.jpa.repository.flt.FltCptAuthAdmDistrictRelRepository;
import com.palnet.biz.jpa.repository.flt.FltCptAuthAdminDistrictBasQueryRepository;
import com.palnet.comn.code.ErrorCode; import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException; import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.CoordUtils;
import com.palnet.comn.utils.DmsUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.parser.ParseException; import org.json.simple.parser.ParseException;
@ -24,12 +21,13 @@ import org.locationtech.jts.geom.GeometryFactory;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.palnet.biz.jpa.entity.FltCptAuthBas; import java.io.IOException;
import com.palnet.biz.jpa.repository.flt.FltCptAuthAdminDistrictBasQueryRepository; import java.util.ArrayList;
import com.palnet.comn.utils.CoordUtils; import java.util.HashSet;
import com.palnet.comn.utils.DmsUtils; import java.util.List;
import java.util.Set;
import lombok.RequiredArgsConstructor; import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -63,13 +61,23 @@ public class ComnCoordinateService {
String[] scope = {"ctprvn", "sig", "emd", "li"}; String[] scope = {"ctprvn", "sig", "emd", "li"};
final String cd = (String) code.get("CD"); final String cd = (String) code.get("CD");
Set<FltCptAuthBas> fltCptAuthBas = new HashSet<>(); Set<CompotentAuthorityItemRS> fltCptAuthBas = new HashSet<>();
for (String s : scope) { for (String s : scope) {
String cdParam = CoordUtils.getInstance().addAdmCd(cd, s); String cdParam = CoordUtils.getInstance().addAdmCd(cd, s);
List<FltCptAuthBas> authList = fltCptAuthAdminDistrictBasQueryRepository.getFltCptAuthBas(cdParam); List<FltCptAuthBas> authList = fltCptAuthAdminDistrictBasQueryRepository.getFltCptAuthBas(cdParam);
fltCptAuthBas.addAll(new HashSet<>(authList)); List<CompotentAuthorityItemRS> itemList = authList.stream().map(item -> CompotentAuthorityItemRS.builder()
.cptAuthCode(item.getCptAuthCode())
.cptAuthNm(item.getCptAuthNm())
.cptAuthTp(item.getCptAuthTp())
.cptAuthFax(item.getCptAuthFax())
.rm(item.getRm())
.updateDt(item.getUpdateDt())
.createDt(item.getCreateDt())
.build()).collect(Collectors.toList());
fltCptAuthBas.addAll(new HashSet<>(itemList));
} }
CompotentAuthorityRS result = new CompotentAuthorityRS(); CompotentAuthorityRS result = new CompotentAuthorityRS();
@ -81,6 +89,46 @@ public class ComnCoordinateService {
return result; return result;
} }
public List<CompotentAuthorityItemRS> getCompetentAuthority(List<CompotentAuthorityRQ> rq) {
CoordUtils utils = CoordUtils.getInstance();
List<Coordinate> coords = rq.stream().map(r -> new Coordinate(r.getLat(), r.getLon())).collect(Collectors.toList());
List<JSONObject> codeList = utils.getPlace(coords);
String[] scope = {"ctprvn", "sig", "emd", "li"};
Set<CompotentAuthorityItemRS> list = new HashSet<>();
for (JSONObject code : codeList) {
final String cd = (String) code.get("CD");
for (String s : scope) {
String cdParam = CoordUtils.getInstance().addAdmCd(cd, s);
List<FltCptAuthBas> authList = fltCptAuthAdminDistrictBasQueryRepository.getFltCptAuthBas(cdParam);
List<CompotentAuthorityItemRS> itemList = authList.stream().map(item -> CompotentAuthorityItemRS.builder()
.cptAuthCode(item.getCptAuthCode())
.cptAuthNm(item.getCptAuthNm())
.cptAuthTp(item.getCptAuthTp())
.cptAuthFax(item.getCptAuthFax())
.rm(item.getRm())
.updateDt(item.getUpdateDt())
.createDt(item.getCreateDt())
.build()).collect(Collectors.toList());
list.addAll(new HashSet<>(itemList));
}
}
log.debug("list : {}", list);
return new ArrayList<>(list);
}
public SearchAddressCoordinateRS getCoordinateByAddress(SearchAddressCoordinateRQ rq) { public SearchAddressCoordinateRS getCoordinateByAddress(SearchAddressCoordinateRQ rq) {
String address = rq.getAddress(); String address = rq.getAddress();

934
pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java

File diff suppressed because it is too large Load Diff

42
pav-server/src/test/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateServiceTest.java

@ -0,0 +1,42 @@
package com.palnet.biz.api.comn.coordinate.service;
import com.palnet.biz.api.comn.coordinate.model.CompotentAuthorityItemRS;
import com.palnet.biz.api.comn.coordinate.model.CompotentAuthorityRQ;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Profile;
import org.springframework.test.context.ActiveProfiles;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@Slf4j
@ActiveProfiles("local")@Profile("local")
@SpringBootTest
class ComnCoordinateServiceTest {
@Autowired
private ComnCoordinateService comnCoordinateService;
@Test
void getCompotentAuthority() {
// given
List<CompotentAuthorityRQ> rq = List.of(
CompotentAuthorityRQ.builder().lat(37.566).lon(126.978).build(),
CompotentAuthorityRQ.builder().lat(37.567).lon(126.978).build(),
CompotentAuthorityRQ.builder().lat(37.567).lon(126.979).build(),
CompotentAuthorityRQ.builder().lat(37.566).lon(126.979).build(),
CompotentAuthorityRQ.builder().lat(37.566).lon(126.978).build()
);
// when
List<CompotentAuthorityItemRS> result = comnCoordinateService.getCompetentAuthority(rq);
// then
log.debug("result: {}", result);
}
}
Loading…
Cancel
Save