From a7bd76dfd00efc7b03999c4559cf8554e34c19cb Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 02 Aug 2024 16:56:34 +0800
Subject: [PATCH] 1
---
src/main/java/project/futures/FuturesOrderService.java | 1
src/main/java/project/futures/internal/AdminFuturesOrderServiceImpl.java | 2
src/main/java/project/admin/AdminFuturesOrderController.java | 28 +++++++
src/main/java/project/futures/FuturesOrder.java | 12 +++
src/main/java/project/futures/internal/FuturesOrderServiceImpl.java | 4 +
src/main/java/project/data/job/RealtimeWebsocketServer.java | 8 +-
src/main/java/project/data/internal/DataDBServiceImpl.java | 8 +-
src/main/java/project/data/job/GetDataJob.java | 85 +++++++++++----------
src/main/java/project/project/web/admin/AdminContractOrderController.java | 31 +++++--
src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java | 13 ++
10 files changed, 132 insertions(+), 60 deletions(-)
diff --git a/src/main/java/project/admin/AdminFuturesOrderController.java b/src/main/java/project/admin/AdminFuturesOrderController.java
index 1aa7c05..65d6e54 100644
--- a/src/main/java/project/admin/AdminFuturesOrderController.java
+++ b/src/main/java/project/admin/AdminFuturesOrderController.java
@@ -7,6 +7,7 @@
import javax.servlet.http.HttpServletRequest;
+import kernel.web.ApplicationUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -141,6 +142,33 @@
return modelAndView;
}
+ @RequestMapping(action + "saveRemark.action")
+ public ModelAndView saveRemark(HttpServletRequest request) {
+ String orderNo = request.getParameter("orderNo");
+ String remark = request.getParameter("remark");
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("futures_order_list");
+
+ try {
+ FuturesOrder byOrderNo = futuresOrderService.findByOrderNo(orderNo);
+ if(null != byOrderNo){
+ byOrderNo.setRemark(remark);
+ }
+ ApplicationUtil.executeUpdate(byOrderNo);
+ futuresOrderService.updateCache(byOrderNo.getOrder_no(), byOrderNo);
+ redisHandler.remove(FuturesRedisKeys.FUTURES_SUBMITTED_ORDERNO + byOrderNo.getOrder_no());
+ } catch (BusinessException e) {
+ modelAndView.addObject("error", e.getMessage());
+ return modelAndView;
+ } catch (Throwable t) {
+ logger.error(" error ", t);
+ modelAndView.addObject("error", "[ERROR] " + t.getMessage());
+ return modelAndView;
+ }
+
+ return modelAndView;
+ }
+
/**
* 获取 交割合约单 列表
* <p>
diff --git a/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java b/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
index a423405..23f50cd 100644
--- a/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
+++ b/src/main/java/project/contract/job/ContractOrderCalculationServiceImpl.java
@@ -89,7 +89,12 @@
* @param currentPrice 当前点位
*/
public void settle(ContractOrder order, String profit_loss, double currentPrice) {
-
+// (保证金*杠杆)= 仓位总价
+// (仓位总价/开仓价格)= 数量
+// (当前价格-开仓价格)* 数量 = 盈亏
+// (盈亏/保证金)*100 = 盈亏率
+ logger.info("---------进入盈亏计算----------------");
+ logger.info("---------order_close_line_type----------------"+order_close_line_type);
double mul = Arith.mul(order.getDeposit_open(), order.getLever_rate());//仓位
double div = Arith.div(mul, order.getTrade_avg_price());//持有币的数量
double amount = Arith.mul(div, Arith.sub(currentPrice, order.getTrade_avg_price()));
@@ -210,15 +215,19 @@
}
} else {
+ logger.info("---------进入单个持仓----------------");
+ logger.info("---------order.getProfit()----------------"+order.getProfit());
+ logger.info("---------order.getDeposit()----------------"+order.getDeposit());
+ logger.info("---------order_close_line----------------"+order_close_line);
if (order.getProfit() < 0 && (Arith.div(order.getDeposit(), Math.abs(order.getProfit())) <= Arith
.div(order_close_line, 100))) {
+ logger.info("---------进入强平了----------------");
/**
* 低于系统默认平仓线,进行强平
*/
this.contractOrderService.saveClose(order.getPartyId().toString(), order.getOrder_no());
return;
}
-
}
}
diff --git a/src/main/java/project/data/internal/DataDBServiceImpl.java b/src/main/java/project/data/internal/DataDBServiceImpl.java
index 55fb173..82207c5 100644
--- a/src/main/java/project/data/internal/DataDBServiceImpl.java
+++ b/src/main/java/project/data/internal/DataDBServiceImpl.java
@@ -53,10 +53,10 @@
entity.setLow(low);
}
- Double h24Before = DataCache.getRealtime24HBeforeOpen().get(entity.getSymbol());
- if (h24Before != null) {
- entity.setOpen(h24Before);
- }
+// Double h24Before = DataCache.getRealtime24HBeforeOpen().get(entity.getSymbol());
+// if (h24Before != null) {
+// entity.setOpen(h24Before);
+// }
/**
* 时间有变化,才保存
diff --git a/src/main/java/project/data/job/GetDataJob.java b/src/main/java/project/data/job/GetDataJob.java
index e2ba06a..d63c10a 100644
--- a/src/main/java/project/data/job/GetDataJob.java
+++ b/src/main/java/project/data/job/GetDataJob.java
@@ -132,47 +132,50 @@
}
// 缓存中最新一条Realtime数据
- Realtime realtimeLast = DataCache.getRealtime(symbol);
- if (null != realtimeLast) {
- // 临时处理:正常10秒超过25%也不合理,丢弃
- double rate = Math.abs(Arith.sub(realtime.getClose(), realtimeLast.getClose()));
- if (null == realtimeLast || Arith.div(rate, realtimeLast.getClose()) < 0.25D) {
- Double high = DataCache.getRealtimeHigh().get(symbol);
- Double low = DataCache.getRealtimeLow().get(symbol);
-
- if (high == null || realtime.getClose() > high) {
- DataCache.getRealtimeHigh().put(symbol, realtime.getClose());
- }
- if ((low == null || realtime.getClose() < low) && realtime.getClose() > 0) {
- DataCache.getRealtimeLow().put(symbol, realtime.getClose());
- }
-
- this.dataDBService.saveAsyn(realtime);
- } else {
- Double high = DataCache.getRealtimeHigh().get(symbol);
- Double low = DataCache.getRealtimeLow().get(symbol);
-
- if (high == null || realtime.getClose() > high) {
- DataCache.getRealtimeHigh().put(symbol, realtime.getClose());
- }
- if ((low == null || realtime.getClose() < low) && realtime.getClose() > 0) {
- DataCache.getRealtimeLow().put(symbol, realtime.getClose());
- }
-
- this.dataDBService.saveAsyn(realtime);
- logger.error("当前价格{},超过25%也不合理,丢弃Realtime,不入库", realtime.getClose());
- }
- } else {
- Double high = DataCache.getRealtimeHigh().get(symbol);
- Double low = DataCache.getRealtimeLow().get(symbol);
- if (high == null || realtime.getClose() > high) {
- DataCache.getRealtimeHigh().put(symbol, realtime.getClose());
- }
- if ((low == null || realtime.getClose() < low) && realtime.getClose() > 0) {
- DataCache.getRealtimeLow().put(symbol, realtime.getClose());
- }
- this.dataDBService.saveAsyn(realtime);
- }
+ DataCache.getRealtimeHigh().put(symbol, realtime.getHigh());
+ DataCache.getRealtimeLow().put(symbol, realtime.getLow());
+ this.dataDBService.saveAsyn(realtime);
+// Realtime realtimeLast = DataCache.getRealtime(symbol);
+// if (null != realtimeLast) {
+// // 临时处理:正常10秒超过25%也不合理,丢弃
+// double rate = Math.abs(Arith.sub(realtime.getClose(), realtimeLast.getClose()));
+// if (null == realtimeLast || Arith.div(rate, realtimeLast.getClose()) < 0.25D) {
+// Double high = DataCache.getRealtimeHigh().get(symbol);
+// Double low = DataCache.getRealtimeLow().get(symbol);
+//
+// if (high == null || realtime.getClose() > high) {
+// DataCache.getRealtimeHigh().put(symbol, realtime.getClose());
+// }
+// if ((low == null || realtime.getClose() < low) && realtime.getClose() > 0) {
+// DataCache.getRealtimeLow().put(symbol, realtime.getClose());
+// }
+//
+// this.dataDBService.saveAsyn(realtime);
+// } else {
+// Double high = DataCache.getRealtimeHigh().get(symbol);
+// Double low = DataCache.getRealtimeLow().get(symbol);
+//
+// if (high == null || realtime.getClose() > high) {
+// DataCache.getRealtimeHigh().put(symbol, realtime.getClose());
+// }
+// if ((low == null || realtime.getClose() < low) && realtime.getClose() > 0) {
+// DataCache.getRealtimeLow().put(symbol, realtime.getClose());
+// }
+//
+// this.dataDBService.saveAsyn(realtime);
+// logger.error("当前价格{},超过25%也不合理,丢弃Realtime,不入库", realtime.getClose());
+// }
+// } else {
+// Double high = DataCache.getRealtimeHigh().get(symbol);
+// Double low = DataCache.getRealtimeLow().get(symbol);
+// if (high == null || realtime.getClose() > high) {
+// DataCache.getRealtimeHigh().put(symbol, realtime.getClose());
+// }
+// if ((low == null || realtime.getClose() < low) && realtime.getClose() > 0) {
+// DataCache.getRealtimeLow().put(symbol, realtime.getClose());
+// }
+// this.dataDBService.saveAsyn(realtime);
+// }
} catch (Exception e) {
diff --git a/src/main/java/project/data/job/RealtimeWebsocketServer.java b/src/main/java/project/data/job/RealtimeWebsocketServer.java
index b0becad..d33e249 100644
--- a/src/main/java/project/data/job/RealtimeWebsocketServer.java
+++ b/src/main/java/project/data/job/RealtimeWebsocketServer.java
@@ -130,10 +130,10 @@
realtime.setLow(low);
}
- Double h24Before = DataCache.getRealtime24HBeforeOpen().get(symbol);
- if (h24Before != null) {
- realtime.setOpen(h24Before);
- }
+// Double h24Before = DataCache.getRealtime24HBeforeOpen().get(symbol);
+// if (h24Before != null) {
+// realtime.setOpen(h24Before);
+// }
DataCache.putRealtime(symbol, realtime);
// System.out.println(JSONObject.toJSONString(realtime));
diff --git a/src/main/java/project/futures/FuturesOrder.java b/src/main/java/project/futures/FuturesOrder.java
index 0989537..febcaab 100644
--- a/src/main/java/project/futures/FuturesOrder.java
+++ b/src/main/java/project/futures/FuturesOrder.java
@@ -120,6 +120,18 @@
@Column(name="PROFIT_LOSS")
private String profit_loss;
+ //备注
+ @Column(name="REMARK")
+ private String remark;
+
+ public Serializable getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
public Serializable getPartyId() {
return partyId;
}
diff --git a/src/main/java/project/futures/FuturesOrderService.java b/src/main/java/project/futures/FuturesOrderService.java
index b396544..fc69db4 100644
--- a/src/main/java/project/futures/FuturesOrderService.java
+++ b/src/main/java/project/futures/FuturesOrderService.java
@@ -85,4 +85,5 @@
*/
public void saveCloseAllByPartyId(String partyId);
+ void updateCache(String orderNo, FuturesOrder byOrderNo);
}
diff --git a/src/main/java/project/futures/internal/AdminFuturesOrderServiceImpl.java b/src/main/java/project/futures/internal/AdminFuturesOrderServiceImpl.java
index c36c169..b87795b 100644
--- a/src/main/java/project/futures/internal/AdminFuturesOrderServiceImpl.java
+++ b/src/main/java/project/futures/internal/AdminFuturesOrderServiceImpl.java
@@ -23,7 +23,7 @@
String username,String orderNo,String symbol,String direction,Double volume) {
StringBuffer queryString = new StringBuffer("SELECT party.USERCODE usercode,party.ROLENAME rolename,orders.UUID id,orders.SYMBOL symbol,"
+ "orders.ORDER_NO order_no,orders.TRADE_AVG_PRICE trade_avg_price,orders.DIRECTION direction,orders.PROFIT_LOSS profit_loss,"
- + "orders.UNIT_AMOUNT unit_amount,orders.STATE state,FORMAT(orders.FEE,1) fee," + "orders.PROFIT profit,"
+ + "orders.UNIT_AMOUNT unit_amount,orders.STATE state,orders.REMARK remark,FORMAT(orders.FEE,1) fee," + "orders.PROFIT profit,"
+ "FORMAT(orders.VOLUME,1) volume,item.NAME itemname,orders.TIMENUM timenum,orders.TIMEUNIT timeunit,"
+ "orders.CLOSE_AVG_PRICE close_avg_price,DATE_FORMAT(orders.CREATE_TIME,'%Y-%m-%d %H:%i:%s') create_time,DATE_FORMAT(orders.SETTLEMENT_TIME,'%Y-%m-%d %H:%i:%s') settlement_time,");
// queryString.append(" wallet.MONEY money, ");
diff --git a/src/main/java/project/futures/internal/FuturesOrderServiceImpl.java b/src/main/java/project/futures/internal/FuturesOrderServiceImpl.java
index c3ee262..e623c1a 100644
--- a/src/main/java/project/futures/internal/FuturesOrderServiceImpl.java
+++ b/src/main/java/project/futures/internal/FuturesOrderServiceImpl.java
@@ -950,6 +950,10 @@
}
}
+ public void updateCache(String orderNo, FuturesOrder byOrderNo){
+ cache.put(byOrderNo.getOrder_no(), byOrderNo);
+ }
+
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
diff --git a/src/main/java/project/project/web/admin/AdminContractOrderController.java b/src/main/java/project/project/web/admin/AdminContractOrderController.java
index 0be3d94..29114ab 100644
--- a/src/main/java/project/project/web/admin/AdminContractOrderController.java
+++ b/src/main/java/project/project/web/admin/AdminContractOrderController.java
@@ -9,6 +9,7 @@
import java.util.List;
import java.util.Map;
+import javax.persistence.Column;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.ObjectUtils;
@@ -119,10 +120,17 @@
double quantity = positionValue / currentPrice;
// 得到强平价格
- double liquidationPrice = currentPrice + (110 / quantity);
- DecimalFormat df = new DecimalFormat("#.#####");
- String formattedPrice = df.format(liquidationPrice);
- map.put("qiangPing",formattedPrice);
+ if(null != map.get("direction")){
+ double liquidationPrice;
+ if(map.get("direction").equals("sell")){
+ liquidationPrice = currentPrice + (100 / quantity);
+ }else{
+ liquidationPrice = currentPrice - (100 / quantity);
+ }
+ DecimalFormat df = new DecimalFormat("#.#####");
+ String formattedPrice = df.format(liquidationPrice);
+ map.put("qiangPing",formattedPrice);
+ }
}
List<Item> items = this.itemService.cacheGetAll();
@@ -223,10 +231,17 @@
double quantity = positionValue / currentPrice;
// 得到强平价格
- double liquidationPrice = currentPrice + (110 / quantity);
- DecimalFormat df = new DecimalFormat("#.#####");
- String formattedPrice = df.format(liquidationPrice);
- map.put("qiangPing",formattedPrice);
+ if(null != map.get("direction")){
+ double liquidationPrice;
+ if(map.get("direction").equals("sell")){
+ liquidationPrice = currentPrice + (100 / quantity);
+ }else{
+ liquidationPrice = currentPrice - (100 / quantity);
+ }
+ DecimalFormat df = new DecimalFormat("#.#####");
+ String formattedPrice = df.format(liquidationPrice);
+ map.put("qiangPing",formattedPrice);
+ }
}
} catch (BusinessException e) {
--
Gitblit v1.9.3