package com.nq.service.impl;
|
|
|
import com.nq.dao.*;
|
import com.nq.pojo.*;
|
import com.nq.service.*;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.google.common.collect.Lists;
|
import com.nq.common.ServerResponse;
|
import com.nq.utils.timeutil.DateTimeUtil;
|
import com.nq.vo.agent.AgentIncomeVO;
|
import com.nq.vo.futuresposition.AdminFuturesPositionVO;
|
import com.nq.vo.futuresposition.AgentFuturesPositionVO;
|
import com.nq.vo.futuresposition.FuturesPositionProfitVO;
|
import com.nq.vo.futuresposition.FuturesPositionVO;
|
import com.nq.vo.futuresposition.UserFuturesPositionVO;
|
import com.nq.vo.stockfutures.FuturesVO;
|
|
import java.math.BigDecimal;
|
import java.sql.Timestamp;
|
import java.util.Date;
|
import java.util.List;
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service("iUserFuturesPositionService")
|
public class UserFuturesPositionServiceImpl implements IUserFuturesPositionService {
|
private static final Logger log = LoggerFactory.getLogger(UserFuturesPositionServiceImpl.class);
|
|
@Resource
|
UserFuturesPositionMapper userFuturesPositionMapper;
|
|
@Autowired
|
IUserService iUserService;
|
|
@Autowired
|
IStockFuturesService iStockFuturesService;
|
|
@Autowired
|
IAgentUserService iAgentUserService;
|
|
@Resource
|
AgentUserMapper agentUserMapper;
|
@Resource
|
StockFuturesMapper stockFuturesMapper;
|
|
@Transactional(rollbackFor = Exception.class)
|
public ServerResponse buyFutures(Integer futuresId, Integer buyNum, Integer buyType, Integer lever, HttpServletRequest request) throws Exception {
|
|
|
return ServerResponse.createBySuccess("Order successful");
|
}
|
|
@Override
|
public ServerResponse del(Integer positionId) {
|
if (positionId == null) {
|
return ServerResponse.createByErrorMsg("id不能为空");
|
}
|
UserFuturesPosition position = this.userFuturesPositionMapper.selectByPrimaryKey(positionId);
|
if (position == null) {
|
ServerResponse.createByErrorMsg("该持仓不存在");
|
}
|
|
int updateCount = this.userFuturesPositionMapper.deleteByPrimaryKey(positionId);
|
if (updateCount > 0) {
|
return ServerResponse.createBySuccessMsg("删除成功");
|
}
|
return ServerResponse.createByErrorMsg("删除失败");
|
}
|
|
|
public ServerResponse sellFutures(String positionSn, int doType) throws Exception {
|
return ServerResponse.createBySuccessMsg("Closed position successfully!");
|
}
|
|
|
public ServerResponse listByAdmin(Integer agentId, Integer positionType, Integer state, Integer userId, String positionSn, String beginTime, String endTime, int pageNum, int pageSize) {
|
PageHelper.startPage(pageNum, pageSize);
|
|
|
Timestamp begin_time = null;
|
if (StringUtils.isNotBlank(beginTime)) {
|
begin_time = DateTimeUtil.searchStrToTimestamp(beginTime);
|
}
|
Timestamp end_time = null;
|
if (StringUtils.isNotBlank(endTime)) {
|
end_time = DateTimeUtil.searchStrToTimestamp(endTime);
|
}
|
|
|
List<UserFuturesPosition> userFuturesPositions = this.userFuturesPositionMapper.listByAdmin(positionType, state, userId, agentId, positionSn, begin_time, end_time);
|
|
|
List<AdminFuturesPositionVO> adminFuturesPositionVOS = Lists.newArrayList();
|
for (UserFuturesPosition userFuturesPosition : userFuturesPositions) {
|
|
AdminFuturesPositionVO adminFuturesPositionVO = assembleAdminFuturesPositionVO(userFuturesPosition);
|
adminFuturesPositionVOS.add(adminFuturesPositionVO);
|
}
|
|
PageInfo pageInfo = new PageInfo(userFuturesPositions);
|
pageInfo.setList(adminFuturesPositionVOS);
|
|
return ServerResponse.createBySuccess(pageInfo);
|
}
|
|
|
public ServerResponse lock(Integer positionId, Integer state, String lockMsg) {
|
if (positionId == null || state == null) {
|
return ServerResponse.createByErrorMsg("参数不能为空");
|
}
|
|
UserFuturesPosition position = this.userFuturesPositionMapper.selectByPrimaryKey(positionId);
|
if (position == null) {
|
return ServerResponse.createByErrorMsg("持仓不存在");
|
}
|
|
if (position.getSellOrderPrice() != null) {
|
return ServerResponse.createByErrorMsg("平仓单不能锁仓");
|
}
|
|
if (state.intValue() == 1 &&
|
StringUtils.isBlank(lockMsg)) {
|
return ServerResponse.createByErrorMsg("锁仓提示信息必填");
|
}
|
|
|
if (state.intValue() == 1) {
|
position.setIsLock(Integer.valueOf(1));
|
position.setLockMsg(lockMsg);
|
} else {
|
position.setIsLock(Integer.valueOf(0));
|
}
|
|
int updateCount = this.userFuturesPositionMapper.updateByPrimaryKeySelective(position);
|
if (updateCount > 0) {
|
return ServerResponse.createBySuccessMsg("操作成功");
|
}
|
return ServerResponse.createByErrorMsg("操作失败");
|
}
|
|
|
public ServerResponse findMyFuturesPositionByNameAndCode(String fuName, String fuCode, Integer state, HttpServletRequest request, int pageNum, int pageSize) {
|
User user = this.iUserService.getCurrentUser(request);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
|
List<UserFuturesPosition> userFuturesPositions = this.userFuturesPositionMapper.findMyFuturesPositionByNameAndCode(user.getId(), fuName, fuCode, state);
|
|
List<UserFuturesPositionVO> userFuturesPositionVOS = Lists.newArrayList();
|
if (userFuturesPositions.size() > 0) {
|
for (UserFuturesPosition userFuturesPosition : userFuturesPositions) {
|
|
UserFuturesPositionVO userFuturesPositionVO = assembleUserFuturesPositionVO(userFuturesPosition);
|
userFuturesPositionVOS.add(userFuturesPositionVO);
|
}
|
}
|
PageInfo pageInfo = new PageInfo(userFuturesPositions);
|
pageInfo.setList(userFuturesPositionVOS);
|
return ServerResponse.createBySuccess(pageInfo);
|
}
|
|
/*根据期货代码查询用户最早入仓股票*/
|
public ServerResponse findUserFuturesPositionByCode(HttpServletRequest request, String futuresGid) {
|
User user = this.iUserService.getCurrentRefreshUser(request);
|
UserFuturesPosition position = this.userFuturesPositionMapper.findUserFuturesPositionByCode(user.getId(), futuresGid);
|
|
List<UserFuturesPositionVO> userPositionVOS = Lists.newArrayList();
|
UserFuturesPositionVO userPositionVO = null;
|
if(position != null){
|
userPositionVO = assembleUserFuturesPositionVO(position);
|
}
|
userPositionVOS.add(userPositionVO);
|
|
PageInfo pageInfo = new PageInfo();
|
pageInfo.setList(userPositionVOS);
|
|
return ServerResponse.createBySuccess(pageInfo);
|
}
|
|
|
public ServerResponse listByAgent(Integer positionType, Integer state, Integer userId, Integer agentId, String positionSn, String beginTime, String endTime, HttpServletRequest request, int pageNum, int pageSize) {
|
AgentUser currentAgent = this.iAgentUserService.getCurrentAgent(request);
|
|
|
if (agentId != null) {
|
AgentUser agentUser = this.agentUserMapper.selectByPrimaryKey(agentId);
|
if (agentUser.getParentId() != currentAgent.getId()) {
|
return ServerResponse.createByErrorMsg("不能查询非下级代理用户持仓");
|
}
|
}
|
|
Integer searchId = null;
|
if (agentId == null) {
|
searchId = currentAgent.getId();
|
} else {
|
searchId = agentId;
|
}
|
|
|
Timestamp begin_time = null;
|
if (StringUtils.isNotBlank(beginTime)) {
|
begin_time = DateTimeUtil.searchStrToTimestamp(beginTime);
|
}
|
Timestamp end_time = null;
|
if (StringUtils.isNotBlank(endTime)) {
|
end_time = DateTimeUtil.searchStrToTimestamp(endTime);
|
}
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
List<UserFuturesPosition> userFuturesPositions = this.userFuturesPositionMapper.listByAgent(positionType, state, userId, searchId, positionSn, begin_time, end_time);
|
|
List<AgentFuturesPositionVO> agentFuturesPositionVOS = Lists.newArrayList();
|
for (UserFuturesPosition userFuturesPosition : userFuturesPositions) {
|
|
AgentFuturesPositionVO agentFuturesPositionVO = assembleAgentFuturesPositionVO(userFuturesPosition);
|
agentFuturesPositionVOS.add(agentFuturesPositionVO);
|
}
|
|
PageInfo pageInfo = new PageInfo(userFuturesPositions);
|
pageInfo.setList(agentFuturesPositionVOS);
|
|
return ServerResponse.createBySuccess(pageInfo);
|
}
|
|
|
public List<UserFuturesPosition> findPositionByFuturesCodeAndTimes(int minuteTimes, String futuresCode, Integer userId) {
|
Date paramTimes = null;
|
paramTimes = DateTimeUtil.parseToDateByMinute(minuteTimes);
|
return this.userFuturesPositionMapper.findPositionByFuturesCodeAndTimes(paramTimes, futuresCode, userId);
|
}
|
|
|
public Integer findPositionNumByTimes(int minuteTimes, Integer userId) {
|
Date beginDate = DateTimeUtil.parseToDateByMinute(minuteTimes);
|
|
Integer transNum = this.userFuturesPositionMapper.findPositionNumByTimes(beginDate, userId);
|
log.info("用户 {} 在 {} 分钟之内 交易手数 {}", new Object[]{userId, Integer.valueOf(minuteTimes), transNum});
|
return transNum;
|
}
|
|
|
public List<Integer> findDistinctUserIdList() {
|
return this.userFuturesPositionMapper.findDistinctUserIdList();
|
}
|
|
|
public List<UserFuturesPosition> findFuturesPositionByUserIdAndSellPriceIsNull(Integer userId) {
|
return this.userFuturesPositionMapper.findFuturesPositionByUserIdAndSellPriceIsNull(userId);
|
}
|
|
|
public FuturesPositionVO findUserFuturesPositionAllProfitAndLose(Integer userId) {
|
List<UserFuturesPosition> userFuturesPositions = this.userFuturesPositionMapper.findFuturesPositionByUserIdAndSellPriceIsNull(userId);
|
|
BigDecimal allProfitAndLose = new BigDecimal("0");
|
BigDecimal allDepositAmt = new BigDecimal("0");
|
for (UserFuturesPosition userFuturesPosition : userFuturesPositions) {
|
|
|
FuturesVO futuresVO = this.iStockFuturesService.querySingleMarket(userFuturesPosition.getFuturesGid());
|
BigDecimal nowPrice = new BigDecimal(futuresVO.getNowPrice());
|
|
|
if (nowPrice.compareTo(new BigDecimal("0")) != 0) {
|
|
|
FuturesPositionProfitVO futuresPositionProfitVO = getFuturesPositionProfitVO(userFuturesPosition);
|
|
|
allDepositAmt = allDepositAmt.add(userFuturesPosition.getAllDepositAmt());
|
|
|
BigDecimal usd_profit = futuresPositionProfitVO.getAllProfitAndLose();
|
|
ServerResponse serverResponse = this.iStockFuturesService.getExchangeRate(userFuturesPosition.getCoinCode());
|
BigDecimal coinRate = new BigDecimal("0");
|
if (serverResponse.isSuccess()) {
|
coinRate = (BigDecimal) serverResponse.getData();
|
}
|
|
|
usd_profit = usd_profit.multiply(coinRate);
|
|
allProfitAndLose = allProfitAndLose.add(usd_profit);
|
continue;
|
}
|
log.info("查询所有持仓单的总盈亏,现价返回0,当前为集合竞价");
|
}
|
|
|
FuturesPositionVO futuresPositionVO = new FuturesPositionVO();
|
futuresPositionVO.setAllFuturesProfitAndLose(allProfitAndLose);
|
futuresPositionVO.setAllFuturesDepositAmt(allDepositAmt);
|
return futuresPositionVO;
|
}
|
|
|
public ServerResponse getFuturesIncome(Integer agentId, Integer positionType, String beginTime, String endTime) {
|
if (StringUtils.isBlank(beginTime) || StringUtils.isBlank(endTime)) {
|
return ServerResponse.createByErrorMsg("时间不能为空");
|
}
|
|
Timestamp begin_time = null;
|
if (StringUtils.isNotBlank(beginTime)) {
|
begin_time = DateTimeUtil.searchStrToTimestamp(beginTime);
|
}
|
Timestamp end_time = null;
|
if (StringUtils.isNotBlank(endTime)) {
|
end_time = DateTimeUtil.searchStrToTimestamp(endTime);
|
}
|
|
|
List<UserFuturesPosition> userFuturesPositions = this.userFuturesPositionMapper.listByAdmin(positionType, Integer.valueOf(1), null, agentId, null, begin_time, end_time);
|
log.info("查询到反佣周期内 futures 订单数:{}", Integer.valueOf(userFuturesPositions.size()));
|
|
BigDecimal order_fee_amt = new BigDecimal("0");
|
BigDecimal order_profit_and_lose = new BigDecimal("0");
|
BigDecimal order_profit_and_lose_all = new BigDecimal("0");
|
|
for (UserFuturesPosition userFuturesPosition : userFuturesPositions) {
|
order_fee_amt = order_fee_amt.add(userFuturesPosition.getOrderFee());
|
|
order_profit_and_lose = order_profit_and_lose.add(userFuturesPosition.getProfitAndLose());
|
|
order_profit_and_lose_all = order_profit_and_lose_all.add(userFuturesPosition.getAllProfitAndLose());
|
}
|
|
AgentIncomeVO agentIncomeVO = new AgentIncomeVO();
|
agentIncomeVO.setOrderSize(Integer.valueOf(userFuturesPositions.size()));
|
agentIncomeVO.setOrderFeeAmt(order_fee_amt);
|
agentIncomeVO.setOrderProfitAndLose(order_profit_and_lose);
|
agentIncomeVO.setOrderAllAmt(order_profit_and_lose_all);
|
|
return ServerResponse.createBySuccess(agentIncomeVO);
|
}
|
|
|
private UserFuturesPositionVO assembleUserFuturesPositionVO(UserFuturesPosition userFuturesPosition) {
|
UserFuturesPositionVO userFuturesPositionVO = new UserFuturesPositionVO();
|
|
BigDecimal eachPoint = new BigDecimal("1");
|
StockFutures stockFutures = stockFuturesMapper.selectFuturesByCode(userFuturesPosition.getFuturesCode());
|
if(stockFutures != null){
|
eachPoint = stockFutures.getEachPoint();
|
}
|
|
userFuturesPositionVO.setId(userFuturesPosition.getId());
|
userFuturesPositionVO.setPositionType(userFuturesPosition.getPositionType());
|
userFuturesPositionVO.setPositionSn(userFuturesPosition.getPositionSn());
|
userFuturesPositionVO.setUserId(userFuturesPosition.getUserId());
|
userFuturesPositionVO.setRealName(userFuturesPosition.getRealName());
|
userFuturesPositionVO.setAgentId(userFuturesPosition.getAgentId());
|
userFuturesPositionVO.setFuturesName(userFuturesPosition.getFuturesName());
|
userFuturesPositionVO.setFuturesCode(userFuturesPosition.getFuturesCode());
|
userFuturesPositionVO.setFuturesGid(userFuturesPosition.getFuturesGid());
|
userFuturesPositionVO.setBuyOrderTime(userFuturesPosition.getBuyOrderTime());
|
userFuturesPositionVO.setBuyOrderPrice(userFuturesPosition.getBuyOrderPrice());
|
userFuturesPositionVO.setSellOrderTime(userFuturesPosition.getSellOrderTime());
|
userFuturesPositionVO.setSellOrderPrice(userFuturesPosition.getSellOrderPrice());
|
userFuturesPositionVO.setOrderDirection(userFuturesPosition.getOrderDirection());
|
userFuturesPositionVO.setOrderNum(userFuturesPosition.getOrderNum());
|
userFuturesPositionVO.setFuturesStandard(userFuturesPosition.getFuturesStandard());
|
userFuturesPositionVO.setFuturesUnit(userFuturesPosition.getFuturesUnit());
|
userFuturesPositionVO.setAllDepositAmt(userFuturesPosition.getAllDepositAmt());
|
userFuturesPositionVO.setOrderFee(userFuturesPosition.getOrderFee());
|
userFuturesPositionVO.setLockMsg(userFuturesPosition.getLockMsg());
|
userFuturesPositionVO.setIsLock(userFuturesPosition.getIsLock());
|
|
userFuturesPositionVO.setCoinCode(userFuturesPosition.getCoinCode());
|
userFuturesPositionVO.setBuyRate(userFuturesPosition.getBuyRate());
|
userFuturesPositionVO.setSellRate(userFuturesPosition.getSellRate());
|
|
|
FuturesPositionProfitVO futuresPositionProfitVO = getFuturesPositionProfitVO(userFuturesPosition);
|
|
userFuturesPositionVO.setAllProfitAndLose(futuresPositionProfitVO.getAllProfitAndLose());
|
userFuturesPositionVO.setProfitAndLose(futuresPositionProfitVO.getProfitAndLose());
|
|
userFuturesPositionVO.setNowPrice(futuresPositionProfitVO.getNowPrice());
|
|
userFuturesPositionVO.setCoinRate(futuresPositionProfitVO.getCoinRate());
|
userFuturesPositionVO.setEachPoint(eachPoint);
|
|
return userFuturesPositionVO;
|
}
|
|
private AgentFuturesPositionVO assembleAgentFuturesPositionVO(UserFuturesPosition userFuturesPosition) {
|
AgentFuturesPositionVO agentFuturesPositionVO = new AgentFuturesPositionVO();
|
|
agentFuturesPositionVO.setId(userFuturesPosition.getId());
|
agentFuturesPositionVO.setPositionType(userFuturesPosition.getPositionType());
|
agentFuturesPositionVO.setPositionSn(userFuturesPosition.getPositionSn());
|
agentFuturesPositionVO.setUserId(userFuturesPosition.getUserId());
|
agentFuturesPositionVO.setRealName(userFuturesPosition.getRealName());
|
agentFuturesPositionVO.setAgentId(userFuturesPosition.getAgentId());
|
agentFuturesPositionVO.setFuturesName(userFuturesPosition.getFuturesName());
|
agentFuturesPositionVO.setFuturesCode(userFuturesPosition.getFuturesCode());
|
agentFuturesPositionVO.setFuturesGid(userFuturesPosition.getFuturesGid());
|
agentFuturesPositionVO.setBuyOrderTime(userFuturesPosition.getBuyOrderTime());
|
agentFuturesPositionVO.setBuyOrderPrice(userFuturesPosition.getBuyOrderPrice());
|
agentFuturesPositionVO.setSellOrderTime(userFuturesPosition.getSellOrderTime());
|
agentFuturesPositionVO.setSellOrderPrice(userFuturesPosition.getSellOrderPrice());
|
agentFuturesPositionVO.setOrderDirection(userFuturesPosition.getOrderDirection());
|
agentFuturesPositionVO.setOrderNum(userFuturesPosition.getOrderNum());
|
agentFuturesPositionVO.setFuturesStandard(userFuturesPosition.getFuturesStandard());
|
agentFuturesPositionVO.setFuturesUnit(userFuturesPosition.getFuturesUnit());
|
agentFuturesPositionVO.setAllDepositAmt(userFuturesPosition.getAllDepositAmt());
|
agentFuturesPositionVO.setOrderFee(userFuturesPosition.getOrderFee());
|
agentFuturesPositionVO.setLockMsg(userFuturesPosition.getLockMsg());
|
agentFuturesPositionVO.setIsLock(userFuturesPosition.getIsLock());
|
|
agentFuturesPositionVO.setCoinCode(userFuturesPosition.getCoinCode());
|
agentFuturesPositionVO.setBuyRate(userFuturesPosition.getBuyRate());
|
agentFuturesPositionVO.setSellRate(userFuturesPosition.getSellRate());
|
|
FuturesPositionProfitVO futuresPositionProfitVO = getFuturesPositionProfitVO(userFuturesPosition);
|
|
agentFuturesPositionVO.setAllProfitAndLose(futuresPositionProfitVO.getAllProfitAndLose());
|
agentFuturesPositionVO.setProfitAndLose(futuresPositionProfitVO.getProfitAndLose());
|
|
agentFuturesPositionVO.setNowPrice(futuresPositionProfitVO.getNowPrice());
|
agentFuturesPositionVO.setCoinRate(futuresPositionProfitVO.getCoinRate());
|
|
return agentFuturesPositionVO;
|
}
|
|
private AdminFuturesPositionVO assembleAdminFuturesPositionVO(UserFuturesPosition userFuturesPosition) {
|
AdminFuturesPositionVO adminFuturesPositionVO = new AdminFuturesPositionVO();
|
|
adminFuturesPositionVO.setId(userFuturesPosition.getId());
|
adminFuturesPositionVO.setPositionType(userFuturesPosition.getPositionType());
|
adminFuturesPositionVO.setPositionSn(userFuturesPosition.getPositionSn());
|
adminFuturesPositionVO.setUserId(userFuturesPosition.getUserId());
|
adminFuturesPositionVO.setRealName(userFuturesPosition.getRealName());
|
adminFuturesPositionVO.setAgentId(userFuturesPosition.getAgentId());
|
adminFuturesPositionVO.setFuturesName(userFuturesPosition.getFuturesName());
|
adminFuturesPositionVO.setFuturesCode(userFuturesPosition.getFuturesCode());
|
adminFuturesPositionVO.setFuturesGid(userFuturesPosition.getFuturesGid());
|
adminFuturesPositionVO.setBuyOrderTime(userFuturesPosition.getBuyOrderTime());
|
adminFuturesPositionVO.setBuyOrderPrice(userFuturesPosition.getBuyOrderPrice());
|
adminFuturesPositionVO.setSellOrderTime(userFuturesPosition.getSellOrderTime());
|
adminFuturesPositionVO.setSellOrderPrice(userFuturesPosition.getSellOrderPrice());
|
adminFuturesPositionVO.setOrderDirection(userFuturesPosition.getOrderDirection());
|
adminFuturesPositionVO.setOrderNum(userFuturesPosition.getOrderNum());
|
adminFuturesPositionVO.setFuturesStandard(userFuturesPosition.getFuturesStandard());
|
adminFuturesPositionVO.setFuturesUnit(userFuturesPosition.getFuturesUnit());
|
adminFuturesPositionVO.setAllDepositAmt(userFuturesPosition.getAllDepositAmt());
|
adminFuturesPositionVO.setOrderFee(userFuturesPosition.getOrderFee());
|
adminFuturesPositionVO.setLockMsg(userFuturesPosition.getLockMsg());
|
adminFuturesPositionVO.setIsLock(userFuturesPosition.getIsLock());
|
|
adminFuturesPositionVO.setCoinCode(userFuturesPosition.getCoinCode());
|
adminFuturesPositionVO.setBuyRate(userFuturesPosition.getBuyRate());
|
adminFuturesPositionVO.setSellRate(userFuturesPosition.getSellRate());
|
|
|
FuturesPositionProfitVO futuresPositionProfitVO = getFuturesPositionProfitVO(userFuturesPosition);
|
|
adminFuturesPositionVO.setAllProfitAndLose(futuresPositionProfitVO.getAllProfitAndLose());
|
adminFuturesPositionVO.setProfitAndLose(futuresPositionProfitVO.getProfitAndLose());
|
|
adminFuturesPositionVO.setNowPrice(futuresPositionProfitVO.getNowPrice());
|
|
adminFuturesPositionVO.setCoinRate(futuresPositionProfitVO.getCoinRate());
|
|
return adminFuturesPositionVO;
|
}
|
|
|
private FuturesPositionProfitVO getFuturesPositionProfitVO(UserFuturesPosition userFuturesPosition) {
|
BigDecimal profitAndLose = new BigDecimal("0");
|
BigDecimal allProfitAndLose = new BigDecimal("0");
|
String nowPrice = "";
|
BigDecimal coinRate = new BigDecimal("0");
|
|
//每手浮动价格
|
StockFutures stockFutures = stockFuturesMapper.selectFuturesByCode(userFuturesPosition.getFuturesCode());
|
BigDecimal eachPoint = new BigDecimal("1");
|
if(stockFutures!=null && stockFutures.getEachPoint() != null){
|
eachPoint = stockFutures.getEachPoint();
|
}
|
|
if (userFuturesPosition.getSellOrderPrice() != null) {
|
|
BigDecimal subPrice = userFuturesPosition.getSellOrderPrice().subtract(userFuturesPosition.getBuyOrderPrice());
|
|
profitAndLose = subPrice.multiply(eachPoint).multiply(new BigDecimal(userFuturesPosition.getOrderNum().intValue()));
|
if ("买跌".equals(userFuturesPosition.getOrderDirection())) {
|
profitAndLose = profitAndLose.negate();
|
}
|
|
allProfitAndLose = profitAndLose.subtract(userFuturesPosition.getOrderFee());
|
|
coinRate = userFuturesPosition.getSellRate();
|
|
} else {
|
|
FuturesVO futuresVO = this.iStockFuturesService.querySingleMarket(userFuturesPosition.getFuturesGid());
|
nowPrice = futuresVO.getNowPrice();
|
|
BigDecimal subPrice = (new BigDecimal(nowPrice)).subtract(userFuturesPosition.getBuyOrderPrice());
|
|
profitAndLose = subPrice.multiply(eachPoint).multiply(new BigDecimal(userFuturesPosition.getOrderNum().intValue()));
|
if ("买跌".equals(userFuturesPosition.getOrderDirection())) {
|
profitAndLose = profitAndLose.negate();
|
}
|
|
allProfitAndLose = profitAndLose.subtract(userFuturesPosition.getOrderFee());
|
|
|
ServerResponse serverResponse = this.iStockFuturesService.getExchangeRate(userFuturesPosition.getCoinCode());
|
if (serverResponse.isSuccess()) {
|
coinRate = (BigDecimal) serverResponse.getData();
|
}
|
}
|
|
|
FuturesPositionProfitVO futuresPositionProfitVO = new FuturesPositionProfitVO();
|
futuresPositionProfitVO.setProfitAndLose(profitAndLose);
|
futuresPositionProfitVO.setAllProfitAndLose(allProfitAndLose);
|
futuresPositionProfitVO.setNowPrice(nowPrice);
|
futuresPositionProfitVO.setCoinRate(coinRate);
|
|
return futuresPositionProfitVO;
|
}
|
|
|
|
}
|