충전사업자 소스 정리
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package net.jwsi.jcms.vpp.api;
|
package net.jwsi.jcms.vpp.api;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.jwsi.jcms.vpp.provider.ProviderDto;
|
||||||
import net.jwsi.jcms.vpp.station.StationDto;
|
import net.jwsi.jcms.vpp.station.StationDto;
|
||||||
import org.springframework.core.ParameterizedTypeReference;
|
import org.springframework.core.ParameterizedTypeReference;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -30,4 +31,17 @@ public class ApiClient {
|
|||||||
.retrieve()
|
.retrieve()
|
||||||
.body(new ParameterizedTypeReference<ApiResponse<List<StationDto>>>() {});
|
.body(new ParameterizedTypeReference<ApiResponse<List<StationDto>>>() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ApiResponse<List<ProviderDto>> fetchProviders(String baseUrl, String token) {
|
||||||
|
URI uri = UriComponentsBuilder.fromUriString(baseUrl)
|
||||||
|
.path("/api/provider/list")
|
||||||
|
.build()
|
||||||
|
.toUri();
|
||||||
|
|
||||||
|
return restClient.get()
|
||||||
|
.uri(uri)
|
||||||
|
.header("Authorization", "Bearer " + token)
|
||||||
|
.retrieve()
|
||||||
|
.body(new ParameterizedTypeReference<ApiResponse<List<ProviderDto>>>() {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.jwsi.jcms.vpp.provider;
|
package net.jwsi.jcms.vpp.provider;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
import jakarta.persistence.Id;
|
import jakarta.persistence.Id;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -7,26 +8,51 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import net.jwsi.jcms.base.BaseStEntity;
|
import net.jwsi.jcms.base.BaseStEntity;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Entity(name="vpp_provider")
|
@Entity(name="vpp_provider")
|
||||||
public class Provider extends BaseStEntity {
|
public class Provider extends BaseStEntity {
|
||||||
@Id
|
@Id
|
||||||
|
@Column(name="provider_id")
|
||||||
private String providerId;
|
private String providerId;
|
||||||
|
|
||||||
|
@Column(name="PROVIDER_NM")
|
||||||
private String providerNm;
|
private String providerNm;
|
||||||
|
|
||||||
|
@Column(name="biz_tax_id")
|
||||||
private String bizTaxId;
|
private String bizTaxId;
|
||||||
|
|
||||||
|
@Column(name="CEO")
|
||||||
private String ceo;
|
private String ceo;
|
||||||
|
|
||||||
|
@Column(name="TEL")
|
||||||
private String tel;
|
private String tel;
|
||||||
|
|
||||||
|
@Column(name="FAX")
|
||||||
private String fax;
|
private String fax;
|
||||||
|
|
||||||
|
@Column(name="EMAIL")
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
|
@Column(name="MGR_NM")
|
||||||
private String mgrNm;
|
private String mgrNm;
|
||||||
|
|
||||||
|
@Column(name="MGR_TEL")
|
||||||
private String mgrTel;
|
private String mgrTel;
|
||||||
|
|
||||||
|
@Column(name="EMGNCY_TEL")
|
||||||
private String emgncyTel;
|
private String emgncyTel;
|
||||||
|
|
||||||
|
@Column(name="ZIP_CODE")
|
||||||
private String zipCode;
|
private String zipCode;
|
||||||
|
|
||||||
|
@Column(name = "ADDR_RD_M")
|
||||||
private String addrRdM;
|
private String addrRdM;
|
||||||
|
|
||||||
|
@Column(name = "ADDR_RD_D")
|
||||||
private String addrRdD;
|
private String addrRdD;
|
||||||
|
|
||||||
|
@Column(name="REMARK")
|
||||||
private String remark;
|
private String remark;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,62 @@
|
|||||||
package net.jwsi.jcms.vpp.provider;
|
package net.jwsi.jcms.vpp.provider;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.jwsi.jcms.base.BaseController;
|
import net.jwsi.jcms.base.BaseController;
|
||||||
import net.jwsi.jcms.exception.JsonDataException;
|
import net.jwsi.jcms.exception.JsonDataException;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("/${jcms.manager-path:system}/provider/")
|
||||||
public class ProviderController extends BaseController<Provider, String, ProviderRepository, ProviderService> {
|
public class ProviderController extends BaseController<Provider, String, ProviderRepository, ProviderService> {
|
||||||
public ProviderController(ProviderService service) {
|
private final ProviderService providerService;
|
||||||
|
private final String path = "/system/provider/";
|
||||||
|
|
||||||
|
public ProviderController(ProviderService service, ProviderService providerService) {
|
||||||
super(service);
|
super(service);
|
||||||
|
this.providerService = providerService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("list")
|
||||||
|
public String list() {
|
||||||
|
return path + "list";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("list.json")
|
||||||
|
@ResponseBody
|
||||||
|
public Map<String, Object> list(Provider provider) {
|
||||||
|
return svcSelectList(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("view.json")
|
||||||
|
@ResponseBody
|
||||||
|
public Map<String, Object> viewData(Provider provider) throws JsonDataException {
|
||||||
|
return svcSelectOne(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("insert.json")
|
||||||
|
@ResponseBody
|
||||||
|
public Map<String, Object> insert(Provider provider) throws JsonDataException {
|
||||||
|
return svcInsert(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("update.json")
|
||||||
|
@ResponseBody
|
||||||
|
public Map<String, Object> update(Provider provider) throws JsonDataException {
|
||||||
|
return svcUpdate(provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("delete.json")
|
||||||
|
@ResponseBody
|
||||||
|
public Map<String, Object> delete(Provider provider) throws JsonDataException {
|
||||||
|
return svcDelete(provider.getProviderId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,4 +18,17 @@ public class ProviderDto {
|
|||||||
private String email;
|
private String email;
|
||||||
private String zipCode;
|
private String zipCode;
|
||||||
private String addr;
|
private String addr;
|
||||||
|
|
||||||
|
public Provider toEntity() {
|
||||||
|
Provider provider = new Provider();
|
||||||
|
provider.setProviderId(this.providerId);
|
||||||
|
provider.setProviderNm(this.providerNm);
|
||||||
|
provider.setBizTaxId(this.bizTaxId);
|
||||||
|
provider.setCeo(this.ceo);
|
||||||
|
provider.setTel(this.tel);
|
||||||
|
provider.setFax(this.fax);
|
||||||
|
provider.setEmail(this.email);
|
||||||
|
provider.setZipCode(this.zipCode);
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package net.jwsi.jcms.vpp.provider;
|
package net.jwsi.jcms.vpp.provider;
|
||||||
|
|
||||||
import net.jwsi.jcms.base.BaseRecStRepository;
|
import net.jwsi.jcms.base.BaseRecStRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
public interface ProviderRepository extends BaseRecStRepository<Provider, String> {
|
public interface ProviderRepository extends BaseRecStRepository<Provider, String> {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,24 @@
|
|||||||
package net.jwsi.jcms.vpp.provider;
|
package net.jwsi.jcms.vpp.provider;
|
||||||
|
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.jwsi.jcms.base.BaseService;
|
import net.jwsi.jcms.base.BaseService;
|
||||||
import net.jwsi.jcms.base.EnumSqlType;
|
import net.jwsi.jcms.base.EnumSqlType;
|
||||||
|
import net.jwsi.jcms.utils.HttpUtil;
|
||||||
|
import net.jwsi.jcms.utils.LoginUtil;
|
||||||
import net.jwsi.jcms.vpp.api.ApiClient;
|
import net.jwsi.jcms.vpp.api.ApiClient;
|
||||||
import net.jwsi.jcms.vpp.api.ApiResponse;
|
import net.jwsi.jcms.vpp.api.ApiResponse;
|
||||||
|
import net.jwsi.jcms.vpp.station.Station;
|
||||||
|
import net.jwsi.jcms.vpp.station.StationDto;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@@ -29,29 +37,61 @@ public class ProviderService extends BaseService<Provider, String, ProviderRepos
|
|||||||
this.apiClient = apiClient;
|
this.apiClient = apiClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Scheduled(cron = "0 0 0 * * *")
|
||||||
|
public void getProviders() {
|
||||||
|
ApiResponse<List<ProviderDto>> response = apiClient.fetchProviders(baseUrl, apiToken);
|
||||||
|
|
||||||
|
if (response == null || !Integer.valueOf(200).equals(response.getCode())) {
|
||||||
|
String msg = (response != null) ? response.getMessage() : "응답 없음";
|
||||||
|
throw new RuntimeException("API 호출 실패: " + msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ProviderDto> dtoList = response.getData();
|
||||||
|
if (dtoList == null || dtoList.isEmpty()) {
|
||||||
|
log.info("가져온 충전사업자 데이터가 없습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Provider> entityList = dtoList.stream()
|
||||||
|
.map(ProviderDto::toEntity)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<Provider> savedProviders = super.repository.saveAll(entityList);
|
||||||
|
|
||||||
|
log.info("총 {}건의 충전사업자 데이터가 DB에 동기화되었습니다.", savedProviders.size());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Integer getUserId() {
|
protected Integer getUserId() {
|
||||||
return null;
|
return HttpUtil.getUserId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getUserName(Integer id) {
|
protected String getUserName(Integer id) {
|
||||||
return null;
|
return LoginUtil.getUserName(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Provider newSearchParam(Provider provider) {
|
protected Provider newSearchParam(Provider provider) {
|
||||||
return null;
|
if (provider == null) {
|
||||||
|
provider = new Provider();
|
||||||
|
}
|
||||||
|
return provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected EnumSqlType useSqlTyp() {
|
protected EnumSqlType useSqlTyp() {
|
||||||
return null;
|
return EnumSqlType.SPECIFICATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Specification<Provider> getSpecification(Provider provider) {
|
protected Specification<Provider> getSpecification(Provider srch) {
|
||||||
return null;
|
if (srch == null) return null;
|
||||||
|
Specification<Provider> rst = null;
|
||||||
|
rst = addWhere(rst, srch.getProviderId(), ProviderSpecification.providerId(srch.getProviderId()));
|
||||||
|
return rst;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package net.jwsi.jcms.vpp.provider;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
|
||||||
|
public class ProviderSpecification {
|
||||||
|
|
||||||
|
public static Specification<Provider> providerId(String providerId) {
|
||||||
|
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("providerId"), providerId);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user