package com.yami.trading.admin.task.robot;
|
|
import com.yami.trading.bean.data.domain.Realtime;
|
import com.yami.trading.service.etf.MarketService;
|
import com.yami.trading.service.robot.RobotOrderService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.math.BigDecimal;
|
|
@Component
|
@Slf4j
|
public class RobotOrderTask {
|
|
@Autowired
|
RobotOrderService robotOrderService;
|
|
@Autowired
|
MarketService marketService;
|
|
@Scheduled(cron = "*/20 * * * * ?")
|
public void updateRobotOrder() {
|
robotOrderService.query().eq("status", 1).list().forEach(robotOrder -> {
|
Realtime realtime = marketService.queryRealtime(robotOrder.getSymbol());
|
if (realtime != null && realtime.getTs() != 0) {
|
if (robotOrder.getDirection() == 1 && realtime.getClose().compareTo(BigDecimal.valueOf(robotOrder.getPrice())) <= 0) {
|
robotOrder.setStatus(2);
|
robotOrder.setTurnover(robotOrder.getOrderQuantity());
|
robotOrderService.updateById(robotOrder);
|
} else if (robotOrder.getDirection() == 2 && realtime.getClose().compareTo(BigDecimal.valueOf(robotOrder.getPrice())) >= 0) {
|
robotOrder.setStatus(2);
|
robotOrder.setTurnover(robotOrder.getOrderQuantity());
|
robotOrderService.updateById(robotOrder);
|
}
|
}
|
});
|
}
|
|
}
|