diff --git a/src/main/java/net/jwsi/jcms/vpp/MainController.java b/src/main/java/net/jwsi/jcms/vpp/MainController.java index bf6cd13..be28743 100644 --- a/src/main/java/net/jwsi/jcms/vpp/MainController.java +++ b/src/main/java/net/jwsi/jcms/vpp/MainController.java @@ -40,10 +40,4 @@ public class MainController { return HttpUtil.responseList(bodArtiService.selectList(srch)); } - @GetMapping("/cms/test") - @ResponseBody - public ResponseEntity test() { - List stations = stationService.getStations(); - return ResponseEntity.ok("테스트 ㅇ! 건수: " + stations.size()); - } } \ No newline at end of file diff --git a/src/main/java/net/jwsi/jcms/vpp/station/StationController.java b/src/main/java/net/jwsi/jcms/vpp/station/StationController.java index e20c244..e10592d 100644 --- a/src/main/java/net/jwsi/jcms/vpp/station/StationController.java +++ b/src/main/java/net/jwsi/jcms/vpp/station/StationController.java @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -32,10 +33,31 @@ public class StationController extends BaseController list(Station station){ - stationService.getStations(); return svcSelectList(station); } + @PostMapping("view.json") + @ResponseBody + public Map viewData(Station station) throws JsonDataException { + return svcSelectOne(station); + } + + @PostMapping("insert.json") + @ResponseBody + public Map insert(Station station) throws JsonDataException { + return svcInsert(station); + } + + @PostMapping("update.json") + @ResponseBody + public Map update(Station station) throws JsonDataException { + return svcUpdate(station); + } + @PostMapping("delete.json") + @ResponseBody + public Map delete(Station station) throws JsonDataException { + return svcDelete(station.getStationId()); + } @Override protected void chkSelectList(List list) throws JsonDataException { diff --git a/src/main/java/net/jwsi/jcms/vpp/station/StationDto.java b/src/main/java/net/jwsi/jcms/vpp/station/StationDto.java index 0239f64..01955d0 100644 --- a/src/main/java/net/jwsi/jcms/vpp/station/StationDto.java +++ b/src/main/java/net/jwsi/jcms/vpp/station/StationDto.java @@ -2,6 +2,7 @@ package net.jwsi.jcms.vpp.station; import lombok.Getter; import lombok.Setter; +import org.springframework.util.StringUtils; @Getter @Setter @@ -20,17 +21,63 @@ public class StationDto { public Station toEntity() { Station station = new Station(); - station.setStationId(this.stId); station.setProviderId(this.providerId); + station.setStationId(this.stId); station.setStNm(this.stNm); - station.setAddrRdM(this.addrRd); - station.setAddrLdM(this.addrLd); + + String[] rdParts = splitAddress(this.addrRd); + station.setAddrRdM(rdParts[0]); + station.setAddrRdD(rdParts[1]); + + String[] ldParts = splitAddress(this.addrLd); + station.setAddrLdM(ldParts[0]); + station.setAddrLdD(ldParts[1]); + station.setStFacilTpCd(this.stFacilTp); station.setStFacilDTpCd(this.stFacilDTp); station.setParkingFeeYn(this.parkingFee); - station.setParkingFeeDetl(this.parkingFeeDetl); + + station.setParkingFeeDetl(this.parkingFeeDetl != null ? this.parkingFeeDetl : ""); station.setPnuNo(this.pnuNo); - station.setPnuDoNm(this.pnuNm); + + if (StringUtils.hasText(this.pnuNm)) { + String[] pnuTokens = this.pnuNm.trim().split("\\s+"); + if (pnuTokens.length > 0) station.setPnuDoNm(pnuTokens[0]); + if (pnuTokens.length > 1) station.setPnuSiNm(pnuTokens[1]); + + if (pnuTokens.length > 2) { + StringBuilder dongBuilder = new StringBuilder(); + for (int i = 2; i < pnuTokens.length; i++) { + dongBuilder.append(pnuTokens[i]).append(" "); + } + station.setPnuDongNm(dongBuilder.toString().trim()); + } + } + return station; } + + private String[] splitAddress(String addr) { + if (!StringUtils.hasText(addr)) { + return new String[]{"", ""}; + } + + String[] tokens = addr.trim().split("\\s+"); + StringBuilder main = new StringBuilder(); + StringBuilder detail = new StringBuilder(); + boolean foundNumber = false; + + for (String token : tokens) { + if (!foundNumber) { + main.append(token).append(" "); + if (token.matches(".*\\d+.*")) { + foundNumber = true; + } + } else { + detail.append(token).append(" "); + } + } + + return new String[]{main.toString().trim(), detail.toString().trim()}; + } } \ No newline at end of file diff --git a/src/main/java/net/jwsi/jcms/vpp/station/StationService.java b/src/main/java/net/jwsi/jcms/vpp/station/StationService.java index 94ba851..fdf4eee 100644 --- a/src/main/java/net/jwsi/jcms/vpp/station/StationService.java +++ b/src/main/java/net/jwsi/jcms/vpp/station/StationService.java @@ -34,8 +34,8 @@ public class StationService extends BaseService getStations() { - + @Scheduled(cron = "0 0 0 * * *") + public void getStations() { ApiResponse> response = apiClient.fetchStations(baseUrl, apiToken); if (response == null || !Integer.valueOf(200).equals(response.getCode())) { @@ -46,7 +46,6 @@ public class StationService extends BaseService dtoList = response.getData(); if (dtoList == null || dtoList.isEmpty()) { log.info("가져온 충전소 데이터가 없습니다."); - return Collections.emptyList(); } List entityList = dtoList.stream() @@ -57,7 +56,6 @@ public class StationService extends BaseService getSpecification(Station station) { - return null; + protected Specification getSpecification(Station srch) { + if(srch == null) return null; + Specification rst = null; + rst = addWhere(rst, srch.getStationId(), StationSpecification.stId(srch.getStationId())); + return rst; } @Override diff --git a/src/main/java/net/jwsi/jcms/vpp/station/StationSpecification.java b/src/main/java/net/jwsi/jcms/vpp/station/StationSpecification.java new file mode 100644 index 0000000..d9351c0 --- /dev/null +++ b/src/main/java/net/jwsi/jcms/vpp/station/StationSpecification.java @@ -0,0 +1,11 @@ +package net.jwsi.jcms.vpp.station; + + +import org.springframework.data.jpa.domain.Specification; + +public class StationSpecification { + + public static Specification stId(String stId) { + return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("stId"), stId); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 82c36f6..b8d99f0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -15,7 +15,7 @@ jasypt: bean: jasyptEncryptor jcms: - permitted-pattern: /, /util/** , /error/**, /login/**, /public/** + permitted-pattern: /, /util/**, /error/**, /login/**, /public/** manager-path: cms attr: main-url: /cms/main diff --git a/src/main/resources/templates/system/station/list.html b/src/main/resources/templates/system/station/list.html index 5539a6d..6e6ca6e 100644 --- a/src/main/resources/templates/system/station/list.html +++ b/src/main/resources/templates/system/station/list.html @@ -12,54 +12,12 @@ -
-
- 주소 도로명 메인 - -
-
-
-
- 주소 도로명 상세 - -
-
주소 지번 메인
-
-
- 주소 지번 상세 - -
-
- - - - - - - - - - - - -
-
- 주차비 상세정보 - -
-
-
-
- PNU 코드 - -
-
법정동 도 명 @@ -102,27 +60,18 @@