|
@@ -0,0 +1,127 @@
|
|
|
+package com.xc.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.jfinal.plugin.activerecord.Record;
|
|
|
+import com.xc.dao.StockMapper;
|
|
|
+import com.xc.pojo.Stock;
|
|
|
+import com.xc.pub.redismessage.util.RedisUtil;
|
|
|
+import com.xc.service.DbStockService;
|
|
|
+import com.xc.service.IStockService;
|
|
|
+import com.xc.service.InitStockListService;
|
|
|
+import com.xc.vo.stock.StockListVO;
|
|
|
+import com.xc.vo.stock.StockVO;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.nio.file.Path;
|
|
|
+import java.nio.file.Paths;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class InitStockListRedisServiceImpl implements InitStockListService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StockMapper stockMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DbStockService dbStockService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IStockService stockService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RedisUtil redisUtil;
|
|
|
+
|
|
|
+ private static Set<String> stockSet = null;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 如果没有发现 data_stock 就 初始化
|
|
|
+ * 初始化列表
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void initStockToRedis() {
|
|
|
+ String redisKey = String.format("data_stock");
|
|
|
+ String redisData = redisUtil.getItem(redisKey);
|
|
|
+ if (StringUtils.isEmpty(redisData) || ("[]".equals(redisData))) {
|
|
|
+ List<StockVO> stockVOList = getStockList();
|
|
|
+ redisUtil.saveItem(redisKey, JSON.toJSONString(stockVOList), 1, TimeUnit.DAYS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新列表
|
|
|
+ * @param stockVOList
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateListInfo(List<StockVO> stockVOList) {
|
|
|
+ if(CollectionUtils.isEmpty(stockVOList)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String redisKey = String.format("data_stock");
|
|
|
+ String redisData = redisUtil.getItem(redisKey);
|
|
|
+ List<StockVO> stockRedisList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotEmpty(redisData) && !("[]".equals(redisData))) {
|
|
|
+ stockRedisList = JSONArray.parseArray(redisData, StockVO.class);
|
|
|
+ }else {
|
|
|
+ initStockToRedis();
|
|
|
+ redisData = redisUtil.getItem(redisKey);
|
|
|
+ if (StringUtils.isNotEmpty(redisData) && !("[]".equals(redisData))) {
|
|
|
+ stockRedisList = JSONArray.parseArray(redisData, StockVO.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Iterator<StockVO> iterator = stockVOList.iterator();
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+ StockVO stock = iterator.next();
|
|
|
+ Iterator<StockVO> iteratorRedis = stockRedisList.iterator();
|
|
|
+ while (iteratorRedis.hasNext()) {
|
|
|
+ StockVO stockRedis = iteratorRedis.next();
|
|
|
+ if(stock.getCode().equals(stockRedis.getCode())){
|
|
|
+ stockRedis.setNowPrice(stock.getNowPrice());
|
|
|
+ stockRedis.setHcrate(stock.getHcrate().multiply(new BigDecimal(100)));
|
|
|
+ stockRedis.setChange(stock.getChange());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.saveItem(redisKey, JSON.toJSONString(stockRedisList), 10, TimeUnit.MINUTES);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateInfo(StockVO stockVOList) {
|
|
|
+ String redisKey = String.format(stockVOList.getCode());
|
|
|
+ redisUtil.saveItem(redisKey, JSON.toJSONString(stockVOList), 10, TimeUnit.MINUTES);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<StockVO> getStockList() {
|
|
|
+ List<Stock> stockList = this.stockMapper.findStockListByKeyWords(null, null, null, 0);
|
|
|
+ List<StockVO> stockListVOS = Lists.newArrayList();
|
|
|
+ Record record = new Record();
|
|
|
+ record.getColumns();
|
|
|
+ int isTransState = 0;
|
|
|
+ if (stockList.size() > 0) {
|
|
|
+ for (Stock stock : stockList) {
|
|
|
+ StockVO stockListVO = dbStockService.getStock(stock.getStockGid());
|
|
|
+ stockListVO.setName(stock.getStockName());
|
|
|
+ stockListVO.setId(stock.getId());
|
|
|
+ stockListVO.setCode(stock.getStockCode());
|
|
|
+ stockListVO.setSpell(stock.getStockSpell());
|
|
|
+ stockListVO.setGid(stock.getStockGid());
|
|
|
+ stockListVOS.add(stockListVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return stockListVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|