package com.nq.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.nq.dao.StockDzMapper;
|
import com.nq.dao.StockMapper;
|
import com.nq.dao.StockSettingMapper;
|
import com.nq.enums.EConfigKey;
|
import com.nq.pojo.*;
|
import com.nq.service.IPriceServices;
|
import com.nq.service.IStockConfigServices;
|
import com.nq.utils.redis.RedisKeyUtil;
|
import com.nq.utils.timeutil.TimeUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
|
|
@Service
|
public class PriceServicesImpl implements IPriceServices {
|
|
|
|
@Resource
|
StockSettingMapper stockSettingMapper;
|
|
|
@Resource
|
StockMapper stockMapper;
|
|
@Autowired
|
IStockConfigServices iStockConfigServices;
|
|
@Resource
|
StockDzMapper stockDZMapper;
|
|
@Override
|
public BigDecimal getNowPrice(String stockCode) {
|
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
|
StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode));
|
if(stockSetting != null){
|
if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){
|
if(stockSetting.getType().equals("0")){
|
return new BigDecimal(stockSetting.getPrice());
|
}else{
|
StockRealTimeBean stockRealTimeBean = RedisKeyUtil.getCacheRealTimeStock(stock);
|
return new BigDecimal(stockRealTimeBean.getLast()).multiply(new BigDecimal(stockSetting.getPrice()));
|
}
|
}
|
}
|
|
StockRealTimeBean stockRealTimeBean = RedisKeyUtil.getCacheRealTimeStock(stock);
|
return new BigDecimal(stockRealTimeBean.getLast());
|
}
|
|
@Override
|
public BigDecimal getNowPrice(String stockCode, String stockType) {
|
BigDecimal nowPrice = getNowPrice(stockCode);
|
if (!stockType.equals("DZ")){
|
return nowPrice;
|
}
|
QueryWrapper queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("stock_code",stockCode);
|
StockDz stockDz = stockDZMapper.selectOne(queryWrapper);
|
if(stockDz == null){
|
return nowPrice;}
|
return nowPrice.multiply(stockDz.getDiscount());
|
}
|
|
@Override
|
public boolean isLimitUpBuy(String stockCode) {
|
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
|
StockRealTimeBean stockRealTimeBean = RedisKeyUtil.getCacheRealTimeStock(stock);
|
BigDecimal pcp = new BigDecimal(stockRealTimeBean.getPcp());
|
StockConfig stockConfig = iStockConfigServices.queryByKey(EConfigKey.LIMIT_UP_POINT.getCode());
|
if(stockConfig == null){
|
return true;
|
}
|
|
|
if(pcp.compareTo(new BigDecimal(0))<0){
|
return true;
|
}
|
|
if(new BigDecimal(stockConfig.getCValue()).compareTo(pcp)<0){
|
StockConfig limitConfig = iStockConfigServices.queryByKey(EConfigKey.LIMIT_UP_IS_BUY.getCode());
|
if(limitConfig.getCValue().equals("1")){
|
return true;
|
}
|
return false;
|
}
|
return true;
|
}
|
|
@Override
|
public boolean isLimitDownSell(String stockCode) {
|
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
|
StockRealTimeBean stockRealTimeBean = RedisKeyUtil.getCacheRealTimeStock(stock);
|
BigDecimal pcp = new BigDecimal(stockRealTimeBean.getPcp());
|
StockConfig stockConfig = iStockConfigServices.queryByKey(EConfigKey.LIMIT_DOWN_POINT.getCode());
|
if(stockConfig == null){
|
return true;
|
}
|
|
if(new BigDecimal(stockConfig.getCValue()).compareTo(pcp)<=0){
|
StockConfig limitConfig = iStockConfigServices.queryByKey(EConfigKey.LIMIT_DOWN_IS_SELL.getCode());
|
if(limitConfig.getCValue().equals("1")){
|
return true;
|
}
|
}
|
return false;
|
}
|
}
|