From 476645109d1d36e30d3d48d8fc79b004f5c8d2d9 Mon Sep 17 00:00:00 2001 From: VoGiaHuy2058 <39868777+vogiahuy2058@users.noreply.github.com> Date: Wed, 18 Jun 2025 07:52:49 +0700 Subject: [PATCH] done for stockTemp repository --- .../infrastructure/db/po/QStockTempPO.java | 43 +++++++++++++ .../basic/convert/StockTempConvert.java | 25 ++++++++ .../market/domain/basic/entity/StockTemp.java | 26 ++++++++ .../basic/repository/StockTempRepository.java | 63 +++++++++++++++++++ .../infrastructure/db/po/StockTempPO.java | 39 ++++++++++++ .../infrastructure/db/repo/StockTempRepo.java | 15 +++++ .../infrastructure/job/StockNewTask.java | 26 +++++++- 7 files changed, 234 insertions(+), 3 deletions(-) create mode 100644 src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java create mode 100644 src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java create mode 100644 src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java create mode 100644 src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java create mode 100644 src/main/java/cn/stock/market/infrastructure/db/po/StockTempPO.java create mode 100644 src/main/java/cn/stock/market/infrastructure/db/repo/StockTempRepo.java diff --git a/src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java b/src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java new file mode 100644 index 0000000..c4dd448 --- /dev/null +++ b/src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java @@ -0,0 +1,43 @@ +package cn.stock.market.infrastructure.db.po; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.Generated; +import com.querydsl.core.types.Path; + + +/** + * QStockTempPO is a Querydsl query type for StockTempPO + */ +@Generated("com.querydsl.codegen.EntitySerializer") +public class QStockTempPO extends EntityPathBase { + + private static final long serialVersionUID = 1973569078L; + + public static final QStockTempPO stockTempPO = new QStockTempPO("stockTempPO"); + + public final NumberPath id = createNumber("id", Integer.class); + + public final StringPath stockGid = createString("stockGid"); + + public final StringPath stockLogo = createString("stockLogo"); + + public final StringPath stockType = createString("stockType"); + + public QStockTempPO(String variable) { + super(StockTempPO.class, forVariable(variable)); + } + + public QStockTempPO(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QStockTempPO(PathMetadata metadata) { + super(StockTempPO.class, metadata); + } + +} + diff --git a/src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java b/src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java new file mode 100644 index 0000000..8874d4a --- /dev/null +++ b/src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java @@ -0,0 +1,25 @@ +package cn.stock.market.domain.basic.convert; + +import cn.qutaojing.common.domain.convert.SimpleEntityPOConvert; +import cn.qutaojing.common.utils.SpringUtils; +import cn.stock.market.domain.basic.entity.Stock; +import cn.stock.market.domain.basic.entity.StockTemp; +import cn.stock.market.infrastructure.db.po.StockPO; +import cn.stock.market.infrastructure.db.po.StockTempPO; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +/** + * StockConvert + * + * @author rplees + * @email rplees.i.ly@gmail.com + * @created 2023/06/17 + */ +@Component +@Lazy +public class StockTempConvert extends SimpleEntityPOConvert { + public static StockTempConvert of() { + return SpringUtils.getBean(StockTempConvert.class); + } +} diff --git a/src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java b/src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java new file mode 100644 index 0000000..e81ad33 --- /dev/null +++ b/src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java @@ -0,0 +1,26 @@ +package cn.stock.market.domain.basic.entity; + +import cn.qutaojing.common.utils.Beans; +import cn.stock.market.dto.command.StockCreateCommand; +import cn.stock.market.infrastructure.db.po.StockPO; +import cn.stock.market.infrastructure.db.po.StockTempPO; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * Stock + * + * @author rplees + * @email rplees.i.ly@gmail.com + * @created 2023/06/17 + */ +@Data +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode( + callSuper = false +) +public class StockTemp extends StockTempPO { +} diff --git a/src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java b/src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java new file mode 100644 index 0000000..1742f51 --- /dev/null +++ b/src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java @@ -0,0 +1,63 @@ +package cn.stock.market.domain.basic.repository; + +import cn.qutaojing.common.domain.convert.IEntityPOConvert; +import cn.qutaojing.common.domain.respostory.LocalCacheBean; +import cn.qutaojing.common.domain.respostory.LocalCacheRepository; +import cn.qutaojing.common.jpa.ConditionBuilder; +import cn.qutaojing.common.utils.SpringUtils; +import cn.stock.market.domain.basic.convert.StockConvert; +import cn.stock.market.domain.basic.convert.StockTempConvert; +import cn.stock.market.domain.basic.entity.Stock; +import cn.stock.market.domain.basic.entity.StockTemp; +import cn.stock.market.infrastructure.db.po.QStockPO; +import cn.stock.market.infrastructure.db.po.QStockTempPO; +import cn.stock.market.infrastructure.db.po.StockPO; +import cn.stock.market.infrastructure.db.po.StockTempPO; +import cn.stock.market.infrastructure.db.repo.StockRepo; +import cn.stock.market.infrastructure.db.repo.StockTempRepo; +import com.google.common.cache.CacheBuilder; +import com.rp.spring.jpa.GenericJpaRepository; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * StockRepository + * + * @author rplees + * @email rplees.i.ly@gmail.com + * @created 2023/06/17 + */ +@Repository +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class StockTempRepository extends LocalCacheRepository { + final StockTempRepo repo; + final StockTempConvert convert; + final static QStockTempPO q = QStockTempPO.stockTempPO; + + public List findAllForCheck() { + return findAll(); + } + + @Override + public GenericJpaRepository repo() { + return repo; + } + + @Override + public IEntityPOConvert convert() { + return convert; + } + + public static StockTempRepository of() { + return SpringUtils.getBean(StockTempRepository.class); + } +} diff --git a/src/main/java/cn/stock/market/infrastructure/db/po/StockTempPO.java b/src/main/java/cn/stock/market/infrastructure/db/po/StockTempPO.java new file mode 100644 index 0000000..6801bc8 --- /dev/null +++ b/src/main/java/cn/stock/market/infrastructure/db/po/StockTempPO.java @@ -0,0 +1,39 @@ +package cn.stock.market.infrastructure.db.po; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.util.Date; + +/** + * StockPO + * + * @author rplees + * @email rplees.i.ly@gmail.com + * @created 2023/06/17 + */ +@SuperBuilder +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@DynamicInsert +@DynamicUpdate +@Table(name = "stockTemp") +public class StockTempPO { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + Integer id; + + String stockType; + + String stockGid; + + String stockLogo; +} diff --git a/src/main/java/cn/stock/market/infrastructure/db/repo/StockTempRepo.java b/src/main/java/cn/stock/market/infrastructure/db/repo/StockTempRepo.java new file mode 100644 index 0000000..6ef0ad4 --- /dev/null +++ b/src/main/java/cn/stock/market/infrastructure/db/repo/StockTempRepo.java @@ -0,0 +1,15 @@ +package cn.stock.market.infrastructure.db.repo; + +import cn.stock.market.infrastructure.db.po.StockPO; +import cn.stock.market.infrastructure.db.po.StockTempPO; +import com.rp.spring.jpa.GenericJpaRepository; + +/** + * StockRepo + * + * @author rplees + * @email rplees.i.ly@gmail.com + * @created 2023/06/17 + */ +public interface StockTempRepo extends GenericJpaRepository { +} diff --git a/src/main/java/cn/stock/market/infrastructure/job/StockNewTask.java b/src/main/java/cn/stock/market/infrastructure/job/StockNewTask.java index 7e3a9e9..b724325 100644 --- a/src/main/java/cn/stock/market/infrastructure/job/StockNewTask.java +++ b/src/main/java/cn/stock/market/infrastructure/job/StockNewTask.java @@ -5,8 +5,12 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; +import java.util.stream.Collectors; import cn.stock.market.domain.basic.entity.Stock; +import cn.stock.market.domain.basic.entity.StockTemp; +import cn.stock.market.domain.basic.repository.StockRepository; +import cn.stock.market.domain.basic.repository.StockTempRepository; import cn.stock.market.dto.model.Symbol; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -18,12 +22,16 @@ import javax.annotation.PostConstruct; @Component public class StockNewTask { - + final StockTempRepository repository; private static final OkHttpClient client = new OkHttpClient(); private static final String BASE_URL = "https://symbol-search.tradingview.com/symbol_search/v3/"; private static final String PARAMS = "?start=%d&hl=1&country=DE&lang=en&search_type=stocks&domain=production&sort_by_country=US&promo=true&exchange=XETR"; - @PostConstruct + public StockNewTask(StockTempRepository repository) { + this.repository = repository; + } + + @PostConstruct public void test() throws Exception { List allSymbols = new ArrayList<>(); int start = 0; @@ -71,7 +79,6 @@ public class StockNewTask { symbol.setSourceId(s.optString("source_id")); symbol.setCountry(s.optString("country")); symbol.setPrimaryListing(s.optBoolean("is_primary_listing", false)); -Stock stock = new Stock(); // typespecs array JSONArray typespecsArr = s.optJSONArray("typespecs"); List typespecsList = new ArrayList<>(); @@ -98,5 +105,18 @@ Stock stock = new Stock(); System.out.println(s.getSymbol() + " - " + s.getDescription()); } // Lúc này bạn có thể insert vào DB hoặc return từ service + + allSymbols = allSymbols.stream().filter(x -> x.getType().equals("stock")).collect(Collectors.toList()); + + List stockTemps = repository.findAllForCheck(); + + if(stockTemps != null && !stockTemps.isEmpty()){ + for (Symbol symbol : allSymbols) { + if((symbol.getSymbol() + ":" + symbol.getExchange()).contains()) + } + } + else{ + repository.of().saveAll(stockTemps); + } } }