Commit 3e08bcd1 authored by 刘长帅's avatar 刘长帅

股票年限-980

parent e1f5d8cd
......@@ -145,6 +145,13 @@ public class RedisKeyBeanForTask {
return stockYearDataKey + code + ":" + year + "-" + month + day;
}
//每天下午进行推送数据获取数据时取值为昨天时间
public static String getStockYearDataYesterday(String code){
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DATE)-1;
int month = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);
return stockYearDataKey + code + ":" + year + "-" + month + day;
}
}
package com.zfxftech.telmarket.common.pojo.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description TODO
* @Author Dell
* @Date 2021/10/26 14:25
*
* 示范盘数据
*/
@Data
@TableName(value = "code_year_data")
public class CodeYearData {
/**
* 唯一标记
*/
@TableId(type = IdType.INPUT)
private Long id;
/**
* redis缓存时间
*/
private String code;
/**
* 创建时间
*/
private Date createTime;
/**
* 年线状态
*/
private Integer yearStater;
/**
* 年线价格
*/
private BigDecimal yearPrice;
/**
* 股票价格
*/
private BigDecimal codePrice;
}
\ No newline at end of file
package com.zfxftech.telmarket.mapper.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zfxftech.telmarket.common.pojo.dao.CodeYearData;
import org.springframework.stereotype.Repository;
/**
* 股票年线
*
* @author jianghua
* @version 1.0
* @date 2021-08-24 15:55
*/
@Repository
public interface CodeYearDataMapper extends BaseMapper<CodeYearData> {
}
\ No newline at end of file
package com.zfxftech.telmarket.service.business;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zfxftech.telmarket.common.pojo.dao.CodeYearData;
public interface CodeYearDataService extends IService<CodeYearData> {
}
package com.zfxftech.telmarket.service.impl.business;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zfxftech.telmarket.common.pojo.dao.CodeYearData;
import com.zfxftech.telmarket.common.pojo.dao.asset.AssetSendFromLog;
import com.zfxftech.telmarket.common.pojo.dao.permission.UsTeamUser;
import com.zfxftech.telmarket.mapper.business.CodeYearDataMapper;
import com.zfxftech.telmarket.service.business.CodeYearDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 股票年线
*
* @author jianghua
* @version 1.0
* 股票年线
* @date 2021-08-24 15:55
*/
@Service
public class CodeYearDataServiceImpl extends ServiceImpl<CodeYearDataMapper, CodeYearData> implements CodeYearDataService {
}
package com.zfxftech.telmarket.task.code;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zfxftech.telmarket.common.bean.CommonResult;
import com.zfxftech.telmarket.common.bean.followAccount.RedisKeyBeanForTask;
import com.zfxftech.telmarket.common.pojo.dao.CodeYearData;
import com.zfxftech.telmarket.common.pojo.dao.Quote;
import com.zfxftech.telmarket.common.pojo.dao.StocksCode;
import com.zfxftech.telmarket.common.pojo.dao.asset.AssetAccountProductRelation;
import com.zfxftech.telmarket.common.util.BigDecimalUtil;
import com.zfxftech.telmarket.common.util.ObjectUtil;
import com.zfxftech.telmarket.common.util.StringUtil;
import com.zfxftech.telmarket.common.util.followAccount.RedisUtilNew;
import com.zfxftech.telmarket.service.business.CodeYearDataService;
import com.zfxftech.telmarket.service.business.StockCodeService;
import com.zfxftech.telmarket.service.followAccount.CommunicationRecordStatisticalLogService;
import com.zfxftech.telmarket.task.communication.TimedTaskController;
import com.zfxftech.telmarket.task.followAccount.SmartStockPriceTask;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
/**
* @Description TODO
* @Author Dell
* @Date 2021/11/30 13:16
*/
@Api(value = "定时股票年线任务相关接口", tags = {"定时任务股票年线相关接口"})
@RestController
@RequestMapping("/admin/timedTask/code")
public class CodeYearDataTask {
private static Logger logger = LoggerFactory.getLogger(CodeYearDataTask.class);
@Autowired
private CodeYearDataService codeYearDataService;
@Autowired
private RedisUtilNew redisUtilNew;
@Autowired
private StockCodeService stockCodeService;
@ApiOperation(value = "股票年线", notes = "股票年线 ", httpMethod = "GET")
@GetMapping("syCodeYearStater")
@Scheduled(cron = "0 0/20 * * * ?")
public CommonResult syCodeYearStater() {
AtomicReference<Integer> pageNo = new AtomicReference<>(1);
Integer pageSize = 400;
List<StocksCode> list = stockCodeService.selectAllStockCode();
Integer pageTOtl = list.size() % pageSize == 0 ? list.size() / pageSize : list.size() / pageSize + 1;
for (Integer i = 0; i < pageTOtl; i++) {
List<StocksCode> codeList = this.page(list, pageNo.get(), pageSize);
List<CodeYearData> codeYearDataList = new ArrayList<>();
for (StocksCode stocksCode : codeList) {
try {
CodeYearData codeYearData = new CodeYearData();
//获取
Quote quote = stockCodeService.queryStockPrice(stocksCode.getSymbol());
if (ObjectUtils.isEmpty(quote) || ObjectUtils.isEmpty(quote.getNow())) {
logger.info("查询不到redis股票价格数据:{}",stocksCode.getSymbol());
continue;
}
String codeYearPrice = redisUtilNew.get(RedisKeyBeanForTask.getStockYearDataYesterday(stocksCode.getSymbol()));
if (StringUtil.isEmpty(codeYearPrice)) {
logger.info("查询不到redis年线价格数据:{}",stocksCode.getSymbol());
continue;
}
codeYearData.setCode(stocksCode.getSymbol());
codeYearData.setCreateTime(new Date());
if (BigDecimalUtil.compare( quote.getNow() ,new BigDecimal(codeYearPrice), 1)) {
codeYearData.setYearStater(1);
}
if (BigDecimalUtil.compare( quote.getNow(),new BigDecimal(codeYearPrice), -1)) {
codeYearData.setYearStater(-1);
}
if (BigDecimalUtil.compare( quote.getNow(),new BigDecimal(codeYearPrice), 0)) {
codeYearData.setYearStater(0);
}
codeYearData.setCodePrice(quote.getNow());
codeYearData.setYearPrice(new BigDecimal(codeYearPrice));
LambdaQueryWrapper<CodeYearData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CodeYearData::getCode, stocksCode.getSymbol());
CodeYearData codeYearDataOld = codeYearDataService.getOne(queryWrapper);
if (!ObjectUtils.isEmpty(codeYearDataOld) && !ObjectUtils.isEmpty(codeYearDataOld.getId())) {
codeYearData.setId(codeYearDataOld.getId());
}
codeYearDataList.add(codeYearData);
} catch (Exception e) {
logger.info("更新股票年线错误日志:{}",e);
}
}
pageNo.set(pageNo.get() + 1);
codeYearDataService.saveOrUpdateBatch(codeYearDataList);
}
logger.info("股票年线状态成功");
return CommonResult.success("股票年线状态成功");
}
public List<StocksCode> page(List<StocksCode> list, Integer pageNo, Integer pageSize) {
if (CollectionUtils.isEmpty(list)) {
return list;
}
List<StocksCode> resultList = new ArrayList();
// 所有dataList数据中的第几条
int currIdx = pageNo > 1 ? (pageNo - 1) * pageSize : 0;
for (int i = 0; i < pageSize && i < list.size() - currIdx; i++) {
resultList.add(list.get(currIdx + i));
}
return resultList;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment