2
peternameyakj
2024-08-14 9bcf85f8d8f9b503e386a67924f5943cd77bd813
src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
@@ -10,7 +10,10 @@
import kernel.util.Arith;
import kernel.util.ThreadUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.util.ObjectUtils;
import project.contract.ContractLock;
import project.contract.ContractOrder;
@@ -26,12 +29,14 @@
import project.wallet.WalletService;
import project.wallet.consumer.WalletMessage;
public class ContractOrderCalculationServiceImpl implements ContractOrderCalculationService {
public class ContractOrderCalculationServiceImpl implements ContractOrderCalculationService, ApplicationContextAware {
   private ApplicationContext applicationContext;
   private static final Logger logger = LoggerFactory.getLogger(ContractOrderCalculationServiceImpl.class);
   private ContractOrderService contractOrderService;
   private DataService dataService;
   private WalletService walletService;
   private RedisHandler redisHandler;
//   private RedisHandler redisHandler;
   private AssetService assetService;
   public final static String STATE_SUBMITTED = "submitted";
   public final static String STATE_CREATED = "created";
@@ -106,11 +111,13 @@
      double amount = Arith.mul(div, Arith.sub(currentPrice, order.getTrade_avg_price()));
      logger.info("---------盈亏金额:"+amount);
      logger.info("---------盈亏:"+profit_loss);
      RedisHandler redisHandler = getRedisHandler();
      if ("profit".equals(profit_loss)) {
         /**
          * 盈 正数
          */
         order.setProfit(Arith.add(0.0D, Math.abs(amount)));
         redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), 0);
      } else if ("loss".equals(profit_loss)) {
         order.setProfit(Arith.sub(0.0D,Math.abs(amount) ));
@@ -118,12 +125,22 @@
         //定义一个 总浮动亏损的值
         logger.info("----------fffffffffffffff-------"+redisHandler);
         logger.info("----------ssssssssssss-------"+order.getPartyId().toString());
         Double contractAssetsProfit = (Double) this.redisHandler.get(ContractRedisKeys.CONTRACT_ASSETS_PROFIT_PARTY_ID + order.getPartyId().toString());
         Double contractAssetsProfit = (Double) redisHandler.get(ContractRedisKeys.CONTRACT_ASSETS_PROFIT_PARTY_ID + order.getPartyId().toString());
         logger.info("----------bbbbbbbbbbbbbbbbbb-------"+contractAssetsProfit);
         double contractProfit = null == contractAssetsProfit ? 0.000D : contractAssetsProfit;
         logger.info("----------contractProfit-------"+contractProfit);
         if(contractProfit <= 0){
            redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), contractProfit);
         List<ContractOrder> list = contractOrderService.findSubmitted(order.getPartyId().toString(), null, null);
         double deposit = 0;
         for (int i = 0; i < list.size(); i++) {
            ContractOrder close_line = list.get(i);
            deposit = Arith.add(deposit, close_line.getDeposit());
         }
         double profitt = Arith.add(contractProfit,deposit);
         logger.info("----------盈亏除去保证金之后的值-------"+profitt);
         if(profitt <= 0){
            redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), profitt);
         }else{
            redisHandler.setSync("MONEY_CONTRACT_PROFIT_"+order.getPartyId().toString(), 0);
         }
         logger.info("----------1111111111111-------");
         //修改余额,每次修改取平仓前余额减去浮动亏损
@@ -134,7 +151,7 @@
         logger.info("----------money-------"+money);
         logger.info("----------profit-------"+profit);
         if(!ObjectUtils.isEmpty(money) && !ObjectUtils.isEmpty(profit)){
            wallet.setMoney(Arith.sub(Double.parseDouble(money.toString()),Double.parseDouble(profit.toString())));
            wallet.setMoney(Arith.add(Double.parseDouble(money.toString()),Double.parseDouble(profit.toString())));
         }
         logger.info("----------2222222222222-------");
         redisHandler.setSync(WalletRedisKeys.WALLET_PARTY_ID + wallet.getPartyId().toString(), wallet);
@@ -291,13 +308,19 @@
      this.order_close_line_type = order_close_line_type;
   }
   public void setRedisHandler(RedisHandler redisHandler) {
      this.redisHandler = redisHandler;
   public RedisHandler getRedisHandler() {
      return applicationContext.getBean(RedisHandler.class);
   }
   public void setAssetService(AssetService assetService) {
      this.assetService = assetService;
   }
   @Override
   public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
      this.applicationContext = applicationContext;
   }
}